Пример #1
0
 /**
  * @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));
 }
Пример #2
0
 /**
  * @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);
 }
Пример #3
0
 /**
  * @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');
 }
Пример #4
0
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");