/** * Adds ratio metrics if possible. * * @param DataTable $dataTable * @return DataTable */ protected function manipulateDataTable($dataTable) { if (!empty($this->report) && !$this->report->getDimension() && !$this->isAllMetricsReport()) { // we currently do not calculate the total value for reports having no dimension return $dataTable; } $this->totals = array(); $firstLevelTable = $this->makeSureToWorkOnFirstLevelDataTable($dataTable); $metricsToCalculate = Metrics::getMetricIdsToProcessReportTotal(); $metricNames = array(); foreach ($metricsToCalculate as $metricId) { $metricNames[$metricId] = Metrics::getReadableColumnName($metricId); } foreach ($firstLevelTable->getRows() as $row) { $columns = $row->getColumns(); foreach ($metricNames as $metricId => $metricName) { $this->sumColumnValueToTotal($columns, $metricId, $metricName); } } $dataTable->setMetadata('totals', $this->totals); return $dataTable; }
/** * Adds ratio metrics if possible. * * @param DataTable $dataTable * @return DataTable */ protected function manipulateDataTable($dataTable) { $report = $this->findCurrentReport(); if (!empty($report) && empty($report['dimension'])) { // we currently do not calculate the total value for reports having no dimension return $dataTable; } // Array [readableMetric] => [summed value] $totalValues = array(); $firstLevelTable = $this->makeSureToWorkOnFirstLevelDataTable($dataTable); $metricsToCalculate = Metrics::getMetricIdsToProcessReportTotal(); foreach ($metricsToCalculate as $metricId) { if (!$this->hasDataTableMetric($firstLevelTable, $metricId)) { continue; } foreach ($firstLevelTable->getRows() as $row) { $totalValues = $this->sumColumnValueToTotal($row, $metricId, $totalValues); } } $dataTable->setMetadata('totals', $totalValues); return $dataTable; }