/** * Creates a widget based on the specified report in {@link construct()}. * * It will automatically use the report's name, categoryId, subcategoryId (if specified), * defaultViewDataTable, module, action, order and parameters in order to create the widget. * * @return ReportWidgetConfig */ public function createWidget() { $widget = new ReportWidgetConfig(); $widget->setName($this->report->getName()); $widget->setCategoryId($this->report->getCategoryId()); if ($this->report->getDefaultTypeViewDataTable()) { $widget->setDefaultViewDataTable($this->report->getDefaultTypeViewDataTable()); } if ($this->report->getSubcategoryId()) { $widget->setSubcategoryId($this->report->getSubcategoryId()); } $widget->setModule($this->report->getModule()); $widget->setAction($this->report->getAction()); $orderThatListsReportsAtTheEndOfEachCategory = 100 + $this->report->getOrder(); $widget->setOrder($orderThatListsReportsAtTheEndOfEachCategory); $parameters = $this->report->getParameters(); if (!empty($parameters)) { $widget->setParameters($parameters); } return $widget; }
private function checkSupportedPivot() { $reportId = $this->thisReport->getModule() . '.' . $this->thisReport->getName(); if (!$this->isFetchingBySegmentEnabled) { // if fetching by segment is disabled, then there must be a subtable for the current report and // subtable's dimension must be the pivot dimension if (empty($this->subtableDimension)) { throw new Exception("Unsupported pivot: report '{$reportId}' has no subtable dimension."); } if (!$this->isPivotDimensionSubtable()) { throw new Exception("Unsupported pivot: the subtable dimension for '{$reportId}' does not match the " . "requested pivotBy dimension. [subtable dimension = {$this->subtableDimension->getId()}, " . "pivot by dimension = {$this->pivotByDimension->getId()}]"); } } else { $canFetchBySubtable = !empty($this->subtableDimension) && $this->subtableDimension->getId() === $this->pivotByDimension->getId(); if ($canFetchBySubtable) { return; } // if fetching by segment is enabled, and we cannot fetch by subtable, then there has to be a report // for the pivot dimension (so we can fetch the report), and there has to be a segment for this report's // dimension (so we can use it when fetching) if (empty($this->pivotDimensionReport)) { throw new Exception("Unsupported pivot: No report for pivot dimension '{$this->pivotByDimension->getId()}'" . " (report required for fetching intersected tables by segment)."); } if (empty($this->thisReportDimensionSegment)) { throw new Exception("Unsupported pivot: No segment for dimension of report '{$reportId}'." . " (segment required for fetching intersected tables by segment)."); } } }
public function test_shouldDetectTheModuleOfTheReportAutomatically() { $this->assertEquals('ExampleReport', $this->exampleReport->getModule()); }
private function isAllMetricsReport() { return $this->report->getModule() == 'API' && $this->report->getAction() == 'get'; }