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 = []; if (!empty($timeline['created']['timeline'])) { $series[0]['name'] = __('Created'); $series[0]['type'] = 'column'; foreach ($timeline['created']['timeline'] as $entry) { $series[0]['data'][] = $entry['count']; } } if (!empty($timeline['modified']['timeline'])) { $series[1]['name'] = __('Modified'); $series[1]['type'] = 'line'; foreach ($timeline['modified']['timeline'] as $entry) { $series[1]['data'][] = $entry['count']; } } $variationHtml = sprintf( '
%s
', $variationClass, $variationIcon, !empty($variation) ? h($variation) : '' ); $titleHtml = isset($title) ? h($title) : ($titleHtml ?? ''); $leftContent = sprintf('
%s

%s

%s', $titleHtml, h($number ?? ''), $variationHtml ); $rightContent = sprintf('
%s
', $this->element('charts/bar', [ 'series' => $series, 'chartOptions' => [ // 'colors' => ['var(--bs-light)', 'var(--bs-primary)'], 'stroke' => [ 'width' => [0, 2] ], ] ])); $cardContent = sprintf('
%s
%s
', $leftContent, $rightContent); echo $this->Bootstrap->card([ 'variant' => 'secondary', 'bodyHTML' => $cardContent, 'bodyClass' => 'p-3', 'class' => 'grow-on-hover shadow-sm' ]); ?>