FontAwesome->getClass('minus'); } elseif ($variation > 0) { $variationIcon = 'trends-arrow-up-white fs-6'; $variationClass = 'bg-success'; } else { $variationIcon = 'trends-arrow-up-white fs-6 fa-rotate-180 fa-flip-vertical'; $variationClass = 'bg-danger'; } } $series = []; $statistics_day_number = ''; if (!empty($timeline['created']['timeline'])) { $statistics_day_number = $timeline['created']['days']; $i = count($series); $series[$i]['name'] = __('Created'); $series[$i]['type'] = !empty($chartType) ? $chartType : 'column'; foreach ($timeline['created']['timeline'] as $entry) { $series[$i]['data'][] = ['x' => $entry['time'], 'y' => $entry['count']]; } } if (!empty($timeline['modified']['timeline'])) { $statistics_day_number = empty($statistics_day_number) ? $timeline['modified']['days'] : $statistics_day_number; $i = count($series); $series[$i]['name'] = __('Modified'); $series[$i]['type'] = !empty($chartType) ? $chartType : 'line'; foreach ($timeline['modified']['timeline'] as $entry) { $series[$i]['data'][] = ['x' => $entry['time'], 'y' => $entry['count']]; } } $variationHtml = ''; if (!is_null($variation)) { $variationHtml = sprintf( '
%s
', $variationClass, $variationIcon, !is_null($variation) ? h($variation) : '' ); } $titleHtml = isset($title) ? h($title) : ($titleHtml ?? ''); $leftContent = sprintf( '
%s

%s %s

%s', $titleHtml, h($number ?? ''), __('Past {0} days', $statistics_day_number), $variationHtml ); $rightContent = sprintf('
%s
', $this->element('charts/bar', [ 'series' => $series, 'chartOptions' => array_merge( [ 'chart' => [ 'height' => '90px', ], 'stroke' => [ 'width' => [0, 2], 'curve' => 'smooth', ], ], !empty($chartOptions) ? $chartOptions : [] ) ])); $cardContent = sprintf( '
%s
%s
', $panelClasses ?? '', $panelStyle ?? '', $leftContent, $rightContent ); echo $this->Bootstrap->card([ 'variant' => 'secondary', 'bodyHTML' => $cardContent, 'bodyClass' => 'p-3', 'class' => ['shadow-sm', (empty($panelNoGrow) ? 'grow-on-hover' : '')] ]); ?>