45 protected $controllerId;
55 protected $dataProvider;
60 protected $rowsAreExpandable =
false;
83 protected $emptyText = null;
100 assert(
'is_array($gridViewPagerParams)');
101 $this->controllerId = $controllerId;
102 $this->moduleId = $moduleId;
103 $this->dataProvider = $dataProvider;
106 $this->gridId =
'report-results-grid-view';
124 $shouldRenderMultipleLinks = $this->getShouldRenderMultipleLinksByReportDataProvider($this->dataProvider);
125 $string =
'ReportResultsGridUtil::makeStringForLinkOrLinks("' .
126 $attribute .
'", $data, "' . $shouldRenderMultipleLinks .
'", ' . $attributeString .
')';
130 protected function getShouldRenderMultipleLinksByReportDataProvider(
ReportDataProvider $dataProvider)
144 $preloader =
'<div class="list-preloader"><span class="z-spinner"></span></div>';
145 return "{summary}\n{items}\n{pager}" . $preloader;
153 return 'pager horizontal';
161 return Zurmo::t(
'Core',
'{count} result(s)');
178 if (!$this->isDataProviderValid())
190 $cClipWidget =
new CClipWidget();
191 $cClipWidget->beginClip(
"ReportResultsGridView");
193 $cClipWidget->endClip();
194 $content = $cClipWidget->getController()->clips[
'ReportResultsGridView'] .
"\n";
195 $content .= $this->renderScripts();
204 return 'application.modules.reports.widgets.ReportResultsExtendedGridView';
213 assert(
'is_array($columns)');
216 'htmlOptions' => array(
217 'class' =>
'cgrid-view'
219 'loadingCssClass' =>
'loading',
220 'dataProvider' => $this->dataProvider,
224 'columns' => $columns,
225 'nullDisplay' =>
' ',
226 'pagerCssClass' => static::getPagerCssClass(),
229 'template' => static::getGridTemplate(),
230 'summaryText' => static::getSummaryText(),
231 'summaryCssClass' => static::getSummaryCssClass(),
232 'summaryCloneId' => $this->getSummaryCloneId(),
233 'enableSorting' =>
false,
244 $defaultGridViewPagerParams = array(
245 'firstPageLabel' =>
'<span>first</span>',
246 'prevPageLabel' =>
'<span>previous</span>',
247 'nextPageLabel' =>
'<span>next</span>',
248 'lastPageLabel' =>
'<span>last</span>',
249 'class' =>
'SimpleListLinkPager',
250 'paginationParams' => GetUtil::getData(),
251 'route' =>
'defaultPortlet/details',
262 if (empty($this->gridViewPagerParams))
264 return $defaultGridViewPagerParams;
268 return array_merge($defaultGridViewPagerParams, $this->gridViewPagerParams);
285 return $this->emptyText;
299 $firstColumn = array(
300 'class' =>
'DrillDownColumn',
301 'id' => $this->gridId . $this->gridIdSuffix .
'-rowDrillDown',
302 'htmlOptions' => array(
'class' =>
'hasDrillDownLink')
304 array_push($columns, $firstColumn);
306 $grandTotals = $this->dataProvider->runQueryAndGrandTotalsData();
307 $grandTotalsRow = $grandTotals[0];
309 foreach ($this->dataProvider->resolveDisplayAttributes() as $key => $displayAttribute)
311 if (!$displayAttribute->queryOnly)
314 $attributeName = $displayAttribute->resolveAttributeNameForGridViewColumn($key);
316 $columnAdapter =
new $columnClassName($attributeName, $this, $params);
317 $column = $columnAdapter->renderGridViewData();
318 $column[
'header'] = $displayAttribute->label;
319 if (!isset($column[
'class']))
321 $column[
'class'] =
'DataColumn';
323 if (isset($grandTotalsRow) && $isFirstRow)
325 $column[
'footer'] = Zurmo::t(
'Core',
'Total');
327 if (isset($grandTotalsRow[$displayAttribute->columnAliasName]))
329 $column[
'footer'] = $columnAdapter->renderValue($grandTotalsRow[$displayAttribute->columnAliasName]);
331 array_push($columns, $column);
345 if (@class_exists($displayElementType .
'ForReportListViewColumnAdapter'))
347 return $displayElementType .
'ForReportListViewColumnAdapter';
351 return $displayElementType .
'ListViewColumnAdapter';
364 $params[
'isLink'] =
true;
368 $params[
'currencyValueConversionType'] = $this->dataProvider->getReport()->getCurrencyConversionType();
369 $params[
'spotConversionCurrencyCode'] = $this->dataProvider->getReport()->getSpotConversionCurrencyCode();
370 $params[
'fromBaseToSpotRate'] = $this->dataProvider->getReport()->getFromBaseToSpotRate();
380 return 'js:function(id, options) {$(this).makeSmallLoadingSpinner(true, "#"+id + " > .list-preloader"); }';
391 return 'js:function(id, data) {
392 processAjaxSuccessError(id, data);
397 protected function renderScripts()
399 Yii::app()->clientScript->registerScriptFile(
400 Yii::app()->getAssetManager()->publish(
401 Yii::getPathOfAlias(
'application.core.views.assets')) .
'/ListViewUtils.js');
409 if (count($this->dataProvider->getReport()->getDrillDownDisplayAttributes()) > 0)
423 public function getSummaryCloneId()
getLinkString($attributeString, $attribute)
renderResultsGridContent()
resolveColumnClassNameForListViewColumnAdapter(DisplayAttributeForReportForm $displayAttribute)
getCGridViewPagerParams()
getCGridViewBeforeAjaxUpdate()
static getSummaryCssClass()
getCGridViewAfterAjaxUpdate()
static getPagerCssClass()
resolveParamsForColumnElement(DisplayAttributeForReportForm $displayAttribute)
resolveDefaultGridViewPagerParams($defaultGridViewPagerParams)
__construct($controllerId, $moduleId, ReportDataProvider $dataProvider, $gridIdSuffix=null, $gridViewPagerParams=array())