File size: 2,554 Bytes
78185c4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | <?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
declare(strict_types=1);
namespace Piwik\Plugins\BotTracking\Reports;
use Piwik\Plugin\Report;
use Piwik\Plugin\ViewDataTable;
use Piwik\Piwik;
use Piwik\Plugins\BotTracking\Metrics;
use Piwik\Report\ReportWidgetFactory;
use Piwik\Widget\WidgetsList;
abstract class AbstractAIChatbotsRealTimeReport extends Report
{
protected function init(): void
{
parent::init();
$this->categoryId = 'General_AIAssistants';
$this->subcategoryId = 'BotTracking_AIChatbotsRealtime';
$this->processedMetrics = [];
$this->defaultSortColumn = Metrics::COLUMN_REQUESTS;
}
public function configureReportMetadata(&$availableReports, $infos)
{
return false;
}
public function configureView(ViewDataTable $view): void
{
parent::configureView($view);
$view->requestConfig->filter_sort_column = $this->defaultSortColumn;
$view->requestConfig->filter_sort_order = 'desc';
$view->config->show_footer_message = Piwik::translate(
'BotTracking_AIChatbotsRealTimeReportLimitFooter',
[$this->getReportRowLimit()]
);
$view->config->metrics_documentation = array_merge(
$view->config->metrics_documentation,
$this->getMetricsDocumentation()
);
$view->config->show_table_all_columns = false;
$view->config->show_insights = false;
$view->config->show_bar_chart = false;
$view->config->show_pie_chart = false;
$view->config->show_tag_cloud = false;
$view->config->disable_row_evolution = true;
}
public function configureWidgets(WidgetsList $widgetsList, ReportWidgetFactory $factory): void
{
foreach ($this->getWidgetDefinitions() as $definition) {
$widget = $factory->createWidget()
->setName($definition['name'])
->setOrder($definition['order'])
->setParameters(['lastMinutes' => $definition['lastMinutes']])
->setIsWide();
$widgetsList->addWidgetConfig($widget);
}
}
/**
* @return array<int, array{name: string, documentation: string, lastMinutes: int, order: int}>
*/
abstract protected function getWidgetDefinitions(): array;
abstract protected function getReportRowLimit(): int;
}
|