/** * @return array */ public function prepareData() { $items = array(); $expressions = array(); $qty = count($this->configs); for ($i = 0; $i < $qty; $i++) { /** @var DealWidgetConfig $config */ $config = $this->configs[$i]; $name = $config->getName(); if ($name === '') { $name = strval($i + 1); } $title = $config->getTitle(); if ($title === '') { $title = $name; } $items[$name] = array('name' => $name, 'title' => $title, 'value' => 0); $source = DataSourceFactory::create($config->getDataSourceSettings(), $this->userID, $this->enablePermissionCheck); $params = array('name' => $name, 'config' => $config, 'source' => $source); //Skip expressions. They will be processed at the end of this function. if ($source instanceof ExpressionDataSource) { $expressions[] = $params; continue; } $this->prepareItem($params, $items); } foreach ($expressions as $params) { $this->prepareItem($params, $items); } return array('items' => array_values($items)); }
/** * @return array */ public function prepareData() { $items = array(); foreach ($this->configs as $config) { /** @var DealWidgetConfig $config */ $name = $config->getName(); if ($name === '') { $name = strval(count($items) + 1); } $title = $config->getTitle(); if ($title === '') { $title = $name; } $this->filter->setExtras($config->getFilterParams()); $sourceSettings = $config->getDataSourceSettings(); $source = DataSourceFactory::checkSettings($sourceSettings) ? DataSourceFactory::create($sourceSettings, $this->userID, $this->enablePermissionCheck) : null; $selectField = $config->getSelectField(); $aggregate = $config->getAggregate(); $groupField = $this->groupField !== '' ? $this->groupField : $config->getGroupField(); $values = $source !== null ? $source->getList(array('filter' => $this->filter, 'select' => array(array('name' => $selectField, 'aggregate' => $aggregate)), 'group' => $groupField, 'sort' => array(array('name' => $selectField, 'order' => 'desc')))) : array(); $positions = array(); $key = "{$groupField}_ID"; $qty = count($values); if ($this->nomineeID > 0) { for ($i = 0; $i < $qty; $i++) { $value = $values[$i]; $curID = isset($value[$key]) ? (int) $value[$key] : 0; if ($curID !== $this->nomineeID) { continue; } if ($i > 0) { $positions[] = $this->preparePosition($values, $i - 1, $key, $selectField, $config); $positions[] = $this->preparePosition($values, $i, $key, $selectField, $config); if ($qty > $i + 1) { $positions[] = $this->preparePosition($values, $i + 1, $key, $selectField, $config); } } else { $positions[] = $this->preparePosition($values, 0, $key, $selectField, $config); if ($qty > 1) { $positions[] = $this->preparePosition($values, 1, $key, $selectField, $config); if ($qty > 2) { $positions[] = $this->preparePosition($values, 2, $key, $selectField, $config); } } } break; } } if ($this->nomineeID <= 0 || empty($positions)) { $qty = min($qty, 3); for ($i = 0; $i < $qty; $i++) { $positions[] = $this->preparePosition($values, $i, $key, $selectField, $config); } } $items[] = array('name' => $name, 'title' => $title, 'nomineeId' => $this->nomineeID, 'positions' => $positions); } return array('items' => $items); }
/** * @return array */ public function prepareData() { $result = array(); $configCount = count($this->configs); if ($this->maxGraphCount > 0 && $configCount > $this->maxGraphCount) { $configCount = $this->maxGraphCount; } for ($i = 0; $i < $configCount; $i++) { $config = $this->configs[$i]; /** @var DealWidgetConfig $config */ $name = $config->getName(); if ($name === '') { $name = strval(count($result) + 1); } $title = $config->getTitle(); if ($title === '') { $title = $name; } $this->filter->setExtras($config->getFilterParams()); $sourceSettings = $config->getDataSourceSettings(); $source = DataSourceFactory::checkSettings($sourceSettings) ? DataSourceFactory::create($sourceSettings, $this->userID, $this->enablePermissionCheck) : null; $selectField = $config->getSelectField(); $aggregate = $config->getAggregate(); $groupField = $config->getGroupField(); if ($groupField === '') { $groupField = $this->groupField; } $values = $source !== null ? $source->getList(array('filter' => $this->filter, 'select' => array(array('name' => $selectField, 'aggregate' => $aggregate)), 'group' => $groupField)) : array(); $item = array('name' => $name, 'title' => $title, 'values' => $values, 'selectField' => $selectField, 'groupField' => $groupField); $displayParams = $config->getDisplayParams(); if (!empty($displayParams)) { $item['display'] = $displayParams; } $result[] = $item; } $merge = array(); $groupField = $this->groupField; $graphs = array(); foreach ($result as $item) { $name = $item['name']; $title = $item['title']; $selectField = $item['selectField']; if ($selectField === '') { continue; } $valueKey = strtoupper($name) . '_' . $selectField; $graph = array('name' => $name, 'title' => $title, 'selectField' => $valueKey); if (isset($item['display'])) { $graph['display'] = $item['display']; } $graphs[] = $graph; $values = $item['values']; $addZeroValues = !$this->skipZeros; foreach ($values as $value) { $key = isset($value[$groupField]) ? $value[$groupField] : ''; if ($key === '') { continue; } if (!isset($merge[$key])) { $merge[$key] = array($groupField => $key); } if (isset($value[$selectField]) && ($addZeroValues || $value[$selectField] != 0)) { $merge[$key][$valueKey] = $value[$selectField]; } } } ksort($merge, SORT_STRING); return array('items' => array(array('graphs' => $graphs, 'groupField' => $groupField, 'values' => array_values($merge))), 'dateFormat' => 'YYYY-MM-DD'); }
echo CUtil::PhpToJSObject($filterFieldInfos); ?> } ); BX.CrmWidgetManager.serviceUrl = "<?php echo '/bitrix/components/bitrix/crm.widget_panel/ajax.php?' . bitrix_sessid_get(); ?> "; BX.CrmWidgetManager.filter = <?php echo CUtil::PhpToJSObject($arResult['WIDGET_FILTER']); ?> ; BX.CrmWidgetDataPreset.items = <?php echo CUtil::PhpToJSObject(Crm\Widget\Data\DataSourceFactory::getPresets()); ?> ; BX.CrmWidgetDataPreset.notSelected = "<?php echo GetMessageJS("CRM_WGT_PRESET_NOT_SELECTED"); ?> "; BX.CrmPhaseSemantics.descriptions = <?php echo CUtil::PhpToJSObject(Crm\PhaseSemantics::getAllDescriptions()); ?> ; BX.CrmWidgetColorScheme.descriptions = { red: "<?php echo GetMessageJS("CRM_WGT_COLOR_RED");