• Модуль: 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); }