Size: a a a

2020 September 10

v

vladimir in OctoberCMS
Вроде на родном делали.
источник

М

Миша in OctoberCMS
а можно глянуть +- код как примерно сделано?
источник

М

Миша in OctoberCMS
это получается виджет идет
источник

v

vladimir in OctoberCMS
Миша
а можно глянуть +- код как примерно сделано?
Я соврал, это chart.js подключенный в админку 🙁
источник

v

vladimir in OctoberCMS
только перепроверил
источник

М

Миша in OctoberCMS
vladimir
Я соврал, это chart.js подключенный в админку 🙁
ну по сути не важно, мне контроллер интересен
источник

М

Миша in OctoberCMS
есть возможность в личку показать
источник

М

Миша in OctoberCMS
как идет общение между ним и контроллером
источник

A

Alexander in OctoberCMS
Миша
есть возможность в личку показать
class Users extends ReportWidgetBase
{
   public function render()
   {
       try {
           $this->loadData();
       } catch (Exception $ex) {
           $this->vars['error'] = $ex->getMessage();
       }

       return $this->makePartial('widget');
   }

   public function defineProperties()
   {
       return [];
   }

   protected function loadData()
   {
       $this->addCss('/plugins/library/statistics/assets/style.css');

       $startTime = Carbon::now()->subDays(30)->startOfDay();
       $currentTime = Carbon::now();

       $diff = $currentTime->diffInDays($startTime);

       $user = '';
       $total_users = '';
       $total_count = 0;

       for ($i = 0; $i < $diff; $i++) {
           $startTime->startOfDay()->addDay();

           $betweenDate = [
               $startTime->toDateTimeString(),
               $startTime->endOfDay()->toDateTimeString(),
           ];

           // Выполняем подсчет статистики по регистрациям
           $user_count = UserModel::whereBetween('created_at', $betweenDate)->count();
           $total_count += $user_count;

           $user .= '[' . $startTime->startOfDay()->timestamp * 1000 . ',' . $user_count . '],';
           $total_users .= '[' . $startTime->startOfDay()->timestamp * 1000 . ',' . $total_count . '],';
       }

       $this->vars['user'] = rtrim($user, ',');
       $this->vars['total_users'] = rtrim($total_users, ',');
   }
}
источник

М

Миша in OctoberCMS
Alexander
class Users extends ReportWidgetBase
{
   public function render()
   {
       try {
           $this->loadData();
       } catch (Exception $ex) {
           $this->vars['error'] = $ex->getMessage();
       }

       return $this->makePartial('widget');
   }

   public function defineProperties()
   {
       return [];
   }

   protected function loadData()
   {
       $this->addCss('/plugins/library/statistics/assets/style.css');

       $startTime = Carbon::now()->subDays(30)->startOfDay();
       $currentTime = Carbon::now();

       $diff = $currentTime->diffInDays($startTime);

       $user = '';
       $total_users = '';
       $total_count = 0;

       for ($i = 0; $i < $diff; $i++) {
           $startTime->startOfDay()->addDay();

           $betweenDate = [
               $startTime->toDateTimeString(),
               $startTime->endOfDay()->toDateTimeString(),
           ];

           // Выполняем подсчет статистики по регистрациям
           $user_count = UserModel::whereBetween('created_at', $betweenDate)->count();
           $total_count += $user_count;

           $user .= '[' . $startTime->startOfDay()->timestamp * 1000 . ',' . $user_count . '],';
           $total_users .= '[' . $startTime->startOfDay()->timestamp * 1000 . ',' . $total_count . '],';
       }

       $this->vars['user'] = rtrim($user, ',');
       $this->vars['total_users'] = rtrim($total_users, ',');
   }
}
+
источник

A

Axenia in OctoberCMS
Electricaev (356.3) увеличил карму ebashu_on_holidays (1397.48)
источник

A

Alexander in OctoberCMS

<div class="report-widget">
   <h3 style="margin-bottom:5px;"></h3>

   <?php if (!isset($error)): ?>
       <div
               data-control="chart-line"
               data-time-mode="datetime"
               data-chart-options="
                   xaxis: {
                       mode: 'time',
                   },
                   yaxis: {
                       min: 0,
                   },
                   series: {
                       lines: {show: true},
                       points: {show: true},
                   },
                   legend: {
                       show: true
                   },
               "
               class="height-200"
       >
           <span
                   data-chart="dataset"
                   data-set-color="#1A237E"
                   data-set-data="<?=$user; ?>"
                   data-set-label="Регистрация"
           ></span>
       </div>
   <?php else: ?>
       <p class="flash-message static warning"><?= e($error) ?></p>
   <?php endif ?>
</div>
источник

М

Миша in OctoberCMS
Alexander

<div class="report-widget">
   <h3 style="margin-bottom:5px;"></h3>

   <?php if (!isset($error)): ?>
       <div
               data-control="chart-line"
               data-time-mode="datetime"
               data-chart-options="
                   xaxis: {
                       mode: 'time',
                   },
                   yaxis: {
                       min: 0,
                   },
                   series: {
                       lines: {show: true},
                       points: {show: true},
                   },
                   legend: {
                       show: true
                   },
               "
               class="height-200"
       >
           <span
                   data-chart="dataset"
                   data-set-color="#1A237E"
                   data-set-data="<?=$user; ?>"
                   data-set-label="Регистрация"
           ></span>
       </div>
   <?php else: ?>
       <p class="flash-message static warning"><?= e($error) ?></p>
   <?php endif ?>
</div>
и как выглядит на фронте?
источник

A

Alexander in OctoberCMS
источник

М

Миша in OctoberCMS
идеально
источник

М

Миша in OctoberCMS
+ спасибо рахмет thank you
источник

A

Axenia in OctoberCMS
Electricaev (356.3) увеличил карму ebashu_on_holidays (1416.36)
источник

A

Alexander in OctoberCMS
А не не не. Это код для дашборда. Для контроллера сейчас скину, он там похожий но немного другой
источник

A

Alexander in OctoberCMS
Два метода контроллера, :

public function index()
{
   $this->addCss('/plugins/library/statistics/assets/style.css');

   $data = $this->getStatistics();

   $order = '';
   $total_orders = '';

   foreach ($data as $key => $value) {
       $order .= '[' . $key . ',' . $value['order'] . '],';
       $total_orders .= '[' . $key . ',' . $value['total_order'] . '],';
   }

   $this->vars['order'] = rtrim($order, ','); // Количество в месяц
   $this->vars['total_orders'] = rtrim($total_orders, ','); // Прирост в месяц с учётом предыдущих месяцев
}

private function getStatistics()
{
   $startTime = Carbon::createFromDate(2017, 3)->startOfMonth();
   $currentTime = Carbon::now();

   $total_order_count = 0;

   $count = [];

   $diff = $currentTime->diffInMonths($startTime);
   for ($i = 0; $i < $diff; $i++) {
       $startTime->startOfMonth()->addMonth();

       $betweenDate = [
           $startTime->toDateTimeString(),
           $startTime->endOfMonth()->toDateTimeString(),
       ];

       $month = $startTime->startOfMonth()->timestamp * 1000;

       // Выполняем подсчет статистики по заказам
       $order_count = OrderModel::whereBetween('created_at', $betweenDate)->count();
       $total_order_count += $order_count;

       $count[$month]['order'] = $order_count;
       $count[$month]['total_order'] = $total_order_count;
   }

   return $count;
}
источник

A

Alexander in OctoberCMS
А вот сам вид index.htm

<div class="report-widget">
   <h5>Загальна кількість по місяцях</h5>
   <div
           data-control="chart-line"
           data-time-mode="datetime"
           data-chart-options="
               xaxis: {
                   mode: 'time',
               },
               yaxis: {
                   min: 0,
               },
               series: {
                   lines: {show: true},
                   points: {show: true},
               },
               legend: {
                   show: true
               },
           "
           class="height-200"
   >
       <span
               data-chart="dataset"
               data-set-color="#1A237E"
               data-set-data="<?=$order; ?>"
               data-set-label="Замовлення"
       ></span>
   </div>
</div>

<div class="report-widget">
   <h5>Загальний приріст по місяцях</h5>
   <div
           data-control="chart-line"
           data-time-mode="datetime"
           data-chart-options="
               xaxis: {
                   mode: 'time',
               },
               yaxis: {
                   min: 0,
               },
               series: {
                   lines: {show: true},
                   points: {show: true},
               },
               legend: {
                   show: true
               },
           "
           class="height-200"
   >
       <span
               data-chart="dataset"
               data-set-color="#1A237E"
               data-set-data="<?=$total_orders; ?>"
               data-set-label="Замовлення"
       ></span>
   </div>
</div>
источник