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 (!empty($variation)) {
$variationHtml = sprintf(
'
%s
',
$variationClass,
$variationIcon,
!empty($variation) ? h($variation) : ''
);
}
$titleHtml = isset($title) ? h($title) : ($titleHtml ?? '');
$leftContent = sprintf(
'%s
<%s class="%s">%s %s%s%s>%s',
$titleHtml,
(!empty($condensed) ? 'h3' : 'h2'),
(!empty($condensed) ? 'my-1' : 'my-2'),
h($number ?? ''),
__('Past {0} days', $statistics_day_number),
empty($allowConfiguration) ? '' : $this->Bootstrap->button([
'variant' => 'link',
'icon' => 'cog',
'size' => 'xs',
'nodeType' => 'a',
'onclick' => '',
'class' => ['btn-statistics-days-configurator-' . $seed],
'params' => [
'data-bs-toggle' => 'popover',
'data-bs-title' => __('Set statistics spanning days'),
]
]),
(!empty($condensed) ? 'h3' : 'h2'),
$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('', $panelClasses ?? '', (!empty($condensed) ? 'max-height: 100px' : ''), $panelStyle ?? '', $leftContent, (!empty($condensed) ? 'p-2' : ''), $rightContent);
echo $this->Bootstrap->card([
'variant' => 'secondary',
'bodyHTML' => $cardContent,
'bodyClass' => (!empty($condensed) ? 'py-1 px-2' : 'p-3'),
'class' => ['shadow-sm', (empty($panelNoGrow) ? 'grow-on-hover' : '')]
]);
?>