/** * Generates JSON graph data and returns it. * * @param DataTable|DataTable\Map $dataTable * @return string */ public function generate($dataTable) { $visualization = new Chart(); if ($dataTable->getRowsCount() > 0) { // if addTotalRow was called in GenerateGraphHTML, add a row containing totals of // different metrics if ($this->properties['add_total_row']) { $dataTable->queueFilter('AddSummaryRow', Piwik::translate('General_Total')); } $dataTable->applyQueuedFilters(); $this->initChartObjectData($dataTable, $visualization); } return $visualization->render(); }
/** * Template method called from self::manipulate. * Flatten each data table. * * @param DataTable $dataTable * @return DataTable */ protected function manipulateDataTable($dataTable) { // apply filters now since subtables have their filters applied before generic filters. if we don't do this // now, we'll try to apply filters to rows that have already been manipulated. this results in errors like // 'column ... already exists'. if (Common::getRequestVar('disable_queued_filters', 0, 'int', $this->request) == 0) { $dataTable->applyQueuedFilters(); } $newDataTable = $dataTable->getEmptyClone($keepFilters = false); foreach ($dataTable->getRows() as $row) { $this->flattenRow($row, $newDataTable); } return $newDataTable; }