%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/bitrix/www/bitrix/js/report/js/visualconstructor/fields/
Upload File :
Create Path :
Current File : //home/bitrix/www/bitrix/js/report/js/visualconstructor/fields/reporthandlerselect.js

;(function ()
{
	"use strict";

	BX.namespace('BX.Report.VisualConstructor.FieldEventHandlers');

	/**
	 * @param options
	 * @extends {BX.Report.VisualConstructor.Field.BaseHandler}
	 * @constructor
	 */
	BX.Report.VisualConstructor.FieldEventHandlers.ReportHandlerSelect = function (options)
	{
		BX.Report.VisualConstructor.Field.BaseHandler.apply(this, arguments);
	};

	BX.Report.VisualConstructor.FieldEventHandlers.ReportHandlerSelect.prototype = {
		__proto__: BX.Report.VisualConstructor.Field.BaseHandler.prototype,
		constructor: BX.Report.VisualConstructor.FieldEventHandlers.ReportHandlerSelect,
		process: function ()
		{
			switch (this.action)
			{
				case 'categorySelected':
					this.reloadReportHandlerList();
					break;
				case 'reportHandlerSelected':
					this.reportHandlerSelected();
					break;
				case 'removeReportFromConfiguration':
					this.removeReportFromConfiguration();
					break;
			}
		},
		reportHandlerSelected: function ()
		{
			var form = this.currentFieldObject.getForm();
			var reportsConfigurationContainer = form.querySelector('[data-role=reports-configurations-container]');

			var reportConfigurationsContainer = BX.findParent(this.currentFieldObject.fieldScope, {
				attr: {'data-role': 'report-configuration-container'}
			});

			var presetReportHandlerClassName = reportConfigurationsContainer.getAttribute('data-source-report-handler');
			var widgetId = reportsConfigurationContainer.getAttribute('data-widget-id');
			var reportId = reportConfigurationsContainer.getAttribute('data-report-id');
			var viewTypeField = form.querySelector('[data-role=preview-view-type-key]');
			var isCurrentReportPseudo = reportConfigurationsContainer.getAttribute('data-is-pseudo');
			var reportHandlerSelectCurrentValue = this.currentFieldObject.getValue();

			if (presetReportHandlerClassName !== reportHandlerSelectCurrentValue)
			{
				var colorPickerValue = this.getReportConfigurationColorPickerValue(reportConfigurationsContainer);
				BX.Report.VC.Core.ajaxPost('configuration.buildPseudoReportConfiguration', {
					data: {
						params: {
							widgetId: widgetId,
							viewKey: viewTypeField.value,
							reportHandlerClassName: reportHandlerSelectCurrentValue,
							colorFieldValue: colorPickerValue
						}
					},
					onFullSuccess: BX.delegate(function (result)
					{
						var newReportConfigFields = BX.create('div', {
							html: result.data
						});
						if (isCurrentReportPseudo === '1')
						{
							newReportConfigFields.firstChild.setAttribute('data-source-report-handler', reportConfigurationsContainer.getAttribute('data-source-report-handler'));
							newReportConfigFields.firstChild.setAttribute('data-source-report-id', reportConfigurationsContainer.getAttribute('data-source-report-id'));
							newReportConfigFields.firstChild.classList.add('report-configuration-container-visible');
							reportConfigurationsContainer.parentNode.insertBefore(newReportConfigFields.firstChild, reportConfigurationsContainer);
							BX.remove(reportConfigurationsContainer);
						}
						else
						{
							//newReportConfigFields.firstChild.setAttribute('data-source-report-handler', this.handlerCurrentValue);
							newReportConfigFields.firstChild.setAttribute('data-source-report-id', reportId);
							newReportConfigFields.firstChild.classList.add('report-configuration-container-visible');
							reportConfigurationsContainer.parentNode.insertBefore(newReportConfigFields.firstChild, reportConfigurationsContainer);

							var removeReportInput = BX.create('input', {
								props: {
									name: 'deletedReports[]',
									type: 'hidden',
									value: reportId
								},
								attrs: {
									'data-report-id': reportId
								}
							});

							form.appendChild(removeReportInput);
							reportConfigurationsContainer.style.display = "none";
							reportConfigurationsContainer.classList.remove('report-configuration-container-visible');
						}
						BX.html(null, result.data);
					}, this)
				});

			}
		},
		getReportConfigurationColorPickerValue: function (reportConfigurationContainer)
		{
			var colorPickerInputField = reportConfigurationContainer.querySelector('[data-role=visualconstructor-fields-picker] > input');
			if (colorPickerInputField)
			{
				return colorPickerInputField.value;
			}
			else
			{
				return '#ffffff'
			}
		},
		reloadReportHandlerList: function ()
		{
			/**
			 * Remove all options except default options
			 */
			BX.Report.VC.Core.ajaxGet('report.getReportHandlersByCategory', {
				urlParams: {
					categoryKey: this.ownerFieldObject.getValue()
				},
				onFullSuccess: BX.delegate(function (result)
				{
					this.currentFieldObject.setOptions(result.data);
				}, this)
			});
		},
		removeReportFromConfiguration: function ()
		{
			var reportContainer = BX.findParent(this.currentField, {
				className: 'report-configuration-container'
			});
			var reportId = reportContainer.getAttribute('data-report-id');
			var removeReportInput = BX.create('input', {
				props: {
					name: 'deletedReports[]',
					type: 'hidden',
					value: reportId
				}
			});
			BX.remove(reportContainer);
			/*if (this.getConfiguredReportCount() < this.getMaxReportRenderCount())
			{
				this.showAddReportButton();
			}*/
			this.currentFieldObject.getForm().appendChild(removeReportInput);
		}

	}
})();

Zerion Mini Shell 1.0