- Модуль: report
- Путь к файлу: ~/bitrix/modules/report/lib/visualconstructor/view.php
- Класс: BitrixReportVisualConstructorView
- Вызов: View::collectReportHandlerFormElements
public function collectReportHandlerFormElements($reportHandler)
{
$headContainer = new Div();
$headContainer->addAssets(array(
'css' => array('/bitrix/js/report/css/visualconstructor/configheader.css')
));
$widgetHandler = $reportHandler->getWidgetHandler();
$previewBlock = $widgetHandler->getFormElement('view_type');
$headContainer->setKey('head_container');
$headContainer->addClass('report-configuration-head');
$labelColorContainer = new Div();
$labelColorContainer->setKey('label_color_container');
$labelColorContainer->addClass('report-configuration-row');
$labelField = new LabelField('label');
$labelField->setDefaultValue(Loc::getMessage('REPORT_DEFAULT_TITLE'));
$labelField->setIsDisplayLabel(false);
$labelField->addAssets(array(
'js' => array('/bitrix/js/report/js/visualconstructor/fields/reporttitle.js')
));
$previewBlock->addJsEventListener($labelField, $labelField::JS_EVENT_ON_CHANGE, array(
'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.PreviewBlock',
'action' => 'reloadWidgetPreview'
));
$colorField = new ColorPicker('color');
$colorField->setDefaultValue('#4fc3f7');
$colorField->addAssets(array(
'js' => array('/bitrix/js/report/js/visualconstructor/fields/colorfield.js')
));
$colorField->addJsEventListener($colorField, $colorField::JS_EVENT_ON_SELECT, array(
'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.ColorField',
'action' => 'selectColorInConfigurationForm'
));
if ($reportHandler->getConfiguration('color'))
{
$headContainer->addInlineStyle('background-color', $reportHandler->getConfiguration('color')->getValue());
}
else
{
$reportHandlersCount = count($reportHandler->getWidgetHandler()->getReportHandlers());
$colorDefaultValue = $this->getReportDefaultColor($reportHandlersCount);
$headContainer->addInlineStyle('background-color', $colorDefaultValue);
$colorField->setValue($colorDefaultValue);
}
$previewBlock->addJsEventListener($colorField, $colorField::JS_EVENT_ON_SELECT, array(
'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.PreviewBlock',
'action' => 'reloadWidgetPreview'
));
$container = new Container();
$container->addDataAttribute('role', 'report-remove-button');
$removeButton = new ComplexHtml('report-remove-button-' . $reportHandler->getReport()->getGId(), '');
$removeButton->addJsEventListener($removeButton, $removeButton::JS_EVENT_ON_CLICK, array(
'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.ReportHandlerSelect',
'action' => 'removeReportFromConfiguration'
));
$previewBlock->addJsEventListener($removeButton, $removeButton::JS_EVENT_ON_CLICK, array(
'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.PreviewBlock',
'action' => 'reloadWidgetPreview'
));
$container->addElement($removeButton);
$headContainerStart = $headContainer->start();
$headContainerEnd = $headContainer->end();
$containerStartElement = $labelColorContainer->start();
$containerEndElement = $labelColorContainer->end();
$reportHandler->addFormElementToStart($headContainerStart);
$reportHandler->addFormElementAfter($containerStartElement, $headContainerStart);
$reportHandler->addFormElementAfter($labelField, $containerStartElement);
$reportHandler->addFormElementAfter($colorField, $labelField);
$reportHandler->addFormElementAfter($container, $colorField);
$reportHandler->addFormElementAfter($containerEndElement, $container);
$reportHandler->addFormElementAfter($headContainerEnd, $containerEndElement);
}