• Модуль: report
  • Путь к файлу: ~/bitrix/modules/report/lib/visualconstructor/handler/basereport.php
  • Класс: BitrixReportVisualConstructorHandlerBaseReport
  • Вызов: BaseReport::collectFormElements
protected function collectFormElements()
{
	$mainContainer = new Div();
	$mainContainer->setKey('main_container');
	if ($this->getConfiguration('color'))
	{
		$mainContainer->addInlineStyle('background-color', $this->getConfiguration('color')->getValue() . '5f');
	}
	else
	{
		$reportHandlersCount = count($this->getWidgetHandler()->getReportHandlers());
		$mainContainer->addInlineStyle('background-color', $this->getView()->getReportDefaultColor($reportHandlersCount) . '5f');
	}
	$mainContainer->addClass('report-configuration-main');
	$mainContainer->addAssets(array(
		'css' => array('/bitrix/js/report/css/visualconstructor/configmain.css')
	));
	$this->addFormElement($mainContainer->start());
	$fieldListContainer = new Div();
	$fieldListContainer->setKey('field_list_container');
	$fieldListContainer->addClass('report-configuration-field-list');
	$this->addFormElement($fieldListContainer->start());

	$reportHandlerSelectContainer = new Div();
	$reportHandlerSelectContainer->setKey('report_handler_select_container');
	$reportHandlerSelectContainer->addClass('report-configuration-row');
	$reportHandlerSelectContainer->addClass('report-configuration-no-padding-bottom');
	$categorySelectField = $this->getReportHandlerCategoryField();
	$reportHandlerSelectField = $this->getReportHandlerSelectField($categorySelectField->getValue());

	$reportHandlerSelectField->addJsEventListener($categorySelectField, $categorySelectField::JS_EVENT_ON_CHANGE, array(
		'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.ReportHandlerSelect',
		'action' => 'categorySelected'
	));
	$reportHandlerSelectField->addAssets(array(
		'js' => array('/bitrix/js/report/js/visualconstructor/fields/reporthandlerselect.js')
	));

	$this->addFormElement($reportHandlerSelectContainer->start());
		$this->addFormElement($categorySelectField);
		$this->addFormElement($reportHandlerSelectField);

	$whatWillCalculateField = $this->getCalculateField();

	$viewCompatibleDataType = $this->getView()->getCompatibleDataType();

	if (in_array($viewCompatibleDataType, array(
		Common::MULTIPLE_REPORT_TYPE,
		Common::MULTIPLE_GROUPED_REPORT_TYPE,
		Common::MULTIPLE_BI_GROUPED_REPORT_TYPE,
	)))
	{
		$groupingField = $this->getGroupingField($whatWillCalculateField);
		$this->addFormElement($groupingField);
		$widgetHandler = $this->getWidgetHandler();
		$previewBlock = $widgetHandler->getFormElement('view_type');
		$previewBlock->addJsEventListener($groupingField, $groupingField::JS_EVENT_ON_CHANGE, array(
			'class' => 'BX.Report.VisualConstructor.FieldEventHandlers.PreviewBlock',
			'action' => 'reloadWidgetPreview'
		));
	}

	$this->addFormElement($reportHandlerSelectContainer->end());

	$selectListContainer = new Div();
	$selectListContainer->setKey('report_configuration_select_list');
	$selectListContainer->addClass('report-configuration-row');
	$selectListContainer->addClass('report-configuration-row-list');

	$this->addFormElement($selectListContainer->start());
	$this->addFormElement($whatWillCalculateField);
	$this->addFormElement($selectListContainer->end());
	$this->addFormElement($fieldListContainer->end());
	$this->addFormElement($mainContainer->end());
}