/** * Get the meta data and merge with standard CGridView column elements * to create a column array that fits the CGridView columns API * @return array */ protected function getCGridViewColumns() { $columns = array(); if ($this->rowsAreExpandable()) { $firstColumn = array('class' => 'DrillDownColumn', 'id' => $this->gridId . $this->gridIdSuffix . '-rowDrillDown', 'htmlOptions' => array('class' => 'hasDrillDownLink')); array_push($columns, $firstColumn); } $grandTotals = $this->dataProvider->runQueryAndGrandTotalsData(); $grandTotalsRow = $grandTotals[0]; $isFirstRow = true; foreach ($this->dataProvider->resolveDisplayAttributes() as $key => $displayAttribute) { if (!$displayAttribute->queryOnly) { $columnClassName = $this->resolveColumnClassNameForListViewColumnAdapter($displayAttribute); $attributeName = $displayAttribute->resolveAttributeNameForGridViewColumn($key); $params = $this->resolveParamsForColumnElement($displayAttribute); $columnAdapter = new $columnClassName($attributeName, $this, $params); $column = $columnAdapter->renderGridViewData(); $column['header'] = $displayAttribute->label; if (!isset($column['class'])) { $column['class'] = 'DataColumn'; } if (isset($grandTotalsRow) && $isFirstRow) { $column['footer'] = Zurmo::t('Core', 'Total'); } if (isset($grandTotalsRow[$displayAttribute->columnAliasName])) { $column['footer'] = $columnAdapter->renderValue($grandTotalsRow[$displayAttribute->columnAliasName]); } array_push($columns, $column); $isFirstRow = false; } } return $columns; }
public function __construct(ReportDataProvider $dataProvider, Report $report) { $this->dataProvider = $dataProvider; $this->report = $report; $this->dataForExport = $dataProvider->getData(); $this->dataForGrandTotals = $dataProvider->runQueryAndGrandTotalsData(); $this->makeData(); }