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 */ abstract protected function getWidgetDefinitions(): array; abstract protected function getReportRowLimit(): int; }