%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/views/jscomponent/ |
Current File : //home/bitrix/www/bitrix/modules/report/lib/visualconstructor/views/jscomponent/activity.php |
<?php namespace Bitrix\Report\VisualConstructor\Views\JsComponent; use Bitrix\Main\Localization\Loc; use Bitrix\Report\VisualConstructor\Config\Common; use Bitrix\Report\VisualConstructor\Fields\Valuable\DropDown; use Bitrix\Report\VisualConstructor\Handler\BaseReport; use Bitrix\Report\VisualConstructor\IReportMultipleGroupedData; /** * Class Activity * @package Bitrix\Report\VisualConstructor\Views\JsComponent */ class Activity extends Base { const VIEW_KEY = 'activity'; const MAX_RENDER_REPORT_COUNT = 1; /** * Activity constructor. */ public function __construct() { $this->setLabel(Loc::getMessage('REPORT_ACTIVITY_VIEW_LABEL')); $this->setLogoUri('/bitrix/images/report/visualconstructor/view-activity.jpg'); $this->setJsClassName('BX.Report.VisualConstructor.Widget.Content.Activity'); $this->setCompatibleDataType(Common::MULTIPLE_BI_GROUPED_REPORT_TYPE); $this->setHeight(380); } /** * Method to modify widget form elements. * * @param BaseReport $reportHandler Widget handler. * @return void */ public function collectReportHandlerFormElements($reportHandler) { parent::collectReportHandlerFormElements($reportHandler); /** @var DropDown $whatWillCalculateField */ $whatWillCalculateField = $reportHandler->getFormElement('calculate'); if ($whatWillCalculateField) { $labelField = $reportHandler->getWidgetHandler()->getFormElement('label'); $labelField->addJsEventListener($whatWillCalculateField, $whatWillCalculateField::JS_EVENT_ON_CHANGE, array( 'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.Title', 'action' => 'whatWillCalculateChange', )); $whatWillCalculateField->addAssets(array( 'js' => array('/bitrix/js/report/js/visualconstructor/fields/reporttitle.js') )); } $removeFormElement = $reportHandler->getFormElementByDataAttribute('role', 'report-remove-button'); if ($removeFormElement) { $removeFormElement->setDisplay(false); } $colorField = $reportHandler->getFormElement('color'); $reportHandler->getFormElement('label_color_container_start')->setDisplay(false); $reportHandler->getFormElement('label_color_container_end')->setDisplay(false); $reportHandler->getFormElement('head_container_start')->setDisplay(false); $reportHandler->getFormElement('head_container_end')->setDisplay(false); if ($colorField) { $colorField->setDisplay(false); } $labelField = $reportHandler->getFormElement('label'); if ($labelField) { $labelField->setDisplay(false); } } /** * Handle all data prepared for this view. * * @see IReportMultipleGroupedData::getMultipleGroupedData(). * @param array $dataFromReport Calculated data from report handler. * @return array */ public function handlerFinallyBeforePassToView($dataFromReport) { if ($dataFromReport['items']) { $items = array(); foreach ($dataFromReport['items'] as $item) { if (!empty($items[$item['firstGroupId']][$item['secondGroupId']])) { $items[$item['firstGroupId']][$item['secondGroupId']]['active'] += (int)$item['value']; } else { $items[$item['firstGroupId']][$item['secondGroupId']] = array( 'labelXid' => (int)$item['firstGroupId'] + 1, 'labelYid' => (int)$item['secondGroupId'], 'active' => (int)$item['value'], ); } } foreach ($items as $firstGroupId => $secondGroup) { foreach ($secondGroup as $secondGroupId => $newItem) { $result['items'][] = $newItem; } } } $result['config']['labelY'] = $this->getWeekDaysMap(); $result['config']['labelX'] = $this->getHourList(); return $result; } /** * Week days labels map. * * @return array */ private function getWeekDaysMap() { return array( array( 'id' => 1, 'name' => Loc::getMessage('MONDAY'), ), array( 'id' => 2, 'name' => Loc::getMessage('TUESDAY'), ), array( 'id' => 3, 'name' => Loc::getMessage('WEDNESDAY'), ), array( 'id' => 4, 'name' => Loc::getMessage('THURSDAY'), ), array( 'id' => 5, 'name' => Loc::getMessage('FRIDAY'), ), array( 'id' => 6, 'name' => Loc::getMessage('SATURDAY'), 'light' => true ), array( 'id' => 0, 'name' => Loc::getMessage('SUNDAY'), 'light' => true ), ); } /** * Get Hour list for grouping data by hour. * * @return array */ private function getHourList() { $result = array(); for ($i = 1; $i <= 24; $i++) { $hour = array( 'id' => $i, 'name' => $i ); if ($i === 0 || $i === 24 || ($i) % 6 == 0) { $hour['show'] = true; } if ($i >= 9 && $i <= 18) { $hour['active'] = true; } $result[] = $hour; } return $result; } /** * Always in activity widget report color should be white. * * @param int $num Number of color which need. * @return string */ public function getReportDefaultColor($num) { return '#ffffff'; } }