Your IP : 3.144.104.189


Current Path : /home/bitrix/ext_www/klimatlend.ua/bitrix/js/scale/
Upload File :
Current File : /home/bitrix/ext_www/klimatlend.ua/bitrix/js/scale/actionparamsdialog.js

/**
 * Class BX.Scale.ActionParamsDialog
 */
;(function(window) {

	if (BX.Scale.ActionParamsDialog) return;

	/**
	 * Class BX.Scale.ActionParamsDialog
	 * @constructor
	 */
	BX.Scale.ActionParamsDialog = function (params)
	{
		this.title = params.title;
		this.userParams = params.userParams;
		this.serverHostname = params.serverHostname;
		//Function wich will be execute after dialog closes
		this.callback = params.callback;
		//outer _this
		this.context = params.context;
		//BX.CDialog
		this.dialogWindow = null;
		this.params = {};
		//Required params wich still empty
		this.requiredParamsEmptyty = {};
		this.startButtonId = 'butt_action_start';
		this.startButtonDisabled = false;
		//Params wich we must confirm (enter twice)
		this.confirmParams = {};
	};

	/**
	 * Shows dialog window
	 */
	BX.Scale.ActionParamsDialog.prototype.show = function()
	{
		var content = this.buildContent();
		BX.Scale.currentActionDialogContext = this;

		this.dialogWindow = new BX.CDialog({
			title: this.title,
			content: content,
			resizable: true,
			buttons: [{
				title: BX.message("SCALE_PANEL_JS_APD_BUT_START"),
				id: this.startButtonId,
				name: this.startButtonId,
				className: 'adm-btn-save',
				action: BX.proxy(this.returnParamsValues, BX.Scale.currentActionDialogContext)
			}, BX.CAdminDialog.btnCancel]
		});

		BX.addCustomEvent(this.dialogWindow, 'onWindowClose', function(obWnd) {
			obWnd.DIV.parentNode.removeChild(obWnd.DIV);
		});


		if(!BX.Scale.isObjEmpty(this.requiredParamsEmptyty))
		{
			this.disableStartButton();
		}

		this.dialogWindow.adjustSizeEx();
		this.dialogWindow.Show();
	};

	/**
	 * Creates HTML inputs from user params description
	 * @returns {string}
	 */
	BX.Scale.ActionParamsDialog.prototype.buildContent = function()
	{
		var content = BX.create('DIV'),
			contentForm = BX.create('form',{
				props:{
					id: 'action_params_dialog_form'
				}
			}),
			contentTable = BX.create('table');

		for(var paramId in this.userParams)
		{
			if(!this.userParams.hasOwnProperty(paramId))
				continue;

			switch(this.userParams[paramId].TYPE)
			{
				case "STRING":
				case "PASSWORD":
					this.params[paramId] = new BX.Scale.ActionsParamsTypes.String(paramId, this.userParams[paramId]);

					if(this.userParams[paramId].VERIFY_TWICE == "Y")
					{
						var confirmParams = {};

						for(var key in  this.userParams[paramId])
							confirmParams[key] =  this.userParams[paramId][key];

						confirmParams.NAME += " ("+BX.message("SCALE_PANEL_JS_APD_2_CONFIRM")+")";
						this.confirmParams[paramId] = new BX.Scale.ActionsParamsTypes.String(paramId+"_confirm", confirmParams);
					}

					break;
				case "CHECKBOX":
					this.params[paramId] = new BX.Scale.ActionsParamsTypes.Checkbox(paramId, this.userParams[paramId]);
					break;
				case "DROPDOWN":
					this.params[paramId] = new BX.Scale.ActionsParamsTypes.Dropdown(paramId, this.userParams[paramId]);
					break;
				case "TEXT":
					this.params[paramId] = new BX.Scale.ActionsParamsTypes.Text(paramId, this.userParams[paramId]);
					break;
				case "FILE":
					this.params[paramId] = new BX.Scale.ActionsParamsTypes.File(paramId, this.userParams[paramId]);
					break;
				case "REMOTE_AND_LOCAL_PATH":
					this.params[paramId] = new BX.Scale.ActionsParamsTypes.RemoteAndLocalPath(paramId, this.userParams[paramId]);
					break;
			}

			if(this.params[paramId])
				contentTable.appendChild(this.createParamNodeRaw(this.params[paramId]));

			if(this.confirmParams[paramId])
				contentTable.appendChild(this.createParamNodeRaw(this.confirmParams[paramId]));
		}

		contentForm.appendChild(contentTable);
		content.appendChild(contentForm);

		BX.addCustomEvent("BXScaleActionParamKeyUp", BX.proxy(this.onParamFieldKeyUp, this));

		return content;
	};

	BX.Scale.ActionParamsDialog.prototype.createParamNodeRaw = function(paramNode)
	{
		if(!BX.type.isElementNode(paramNode.domNode))
			return false;

		var tr = BX.create('tr'),
			name = BX.create('span', {props: { innerHTML: paramNode.name+': '}});

		if(paramNode.required !== undefined	&& paramNode.required == "Y")
		{
			BX.addClass(name,'adm-required-field');

			if(!paramNode.defaultValue || paramNode.defaultValue.length <= 0)
				this.requiredParamsEmptyty[paramNode.id] = true;
			else
				this.requiredParamsEmptyty[paramNode.id] = false;
		}

		var control = paramNode.domNode;

		if(paramNode.domNode.type == 'file')
			control = BX.adminFormTools.modifyFile(control);

		var td = BX.create('td', {style: {'textAlign': 'right', 'width': '40%'}});
		td.appendChild(name);
		tr.appendChild(td);
		td = BX.create('td', {style: {'textAlign': 'left', 'width': '60%'}});
		td.appendChild(control);
		tr.appendChild(td);

		return tr;
	};

	BX.Scale.ActionParamsDialog.prototype.isAllRequiredParamsFilled = function()
	{
		var result = true;

		for(var paramId in this.requiredParamsEmptyty)
		{
			if(this.requiredParamsEmptyty[paramId])
			{
				result = false;
				break;
			}
		}

		return result;
	};

	BX.Scale.ActionParamsDialog.prototype.enableStartButton = function()
	{
		this.disableStartButton(true);
	};

	BX.Scale.ActionParamsDialog.prototype.disableStartButton = function(enable)
	{
		var but = BX(this.startButtonId);

		if(but && but.disabled !== undefined)
		{
			var disable = !(enable);
			but.disabled = disable;
			this.startButtonDisabled = disable;
		}
	};

	BX.Scale.ActionParamsDialog.prototype.onParamFieldKeyUp = function(params)
	{
		if(this.requiredParamsEmptyty[params.paramId] !== undefined)
		{
			this.requiredParamsEmptyty[params.paramId] = params.empty;

			if(this.isAllRequiredParamsFilled() == this.startButtonDisabled)  //if state was changed
				this.disableStartButton(this.startButtonDisabled);
		}

		this.addSitePatch(params);
	};

	/**
	 * Extracts params values entered by user from html inputs,
	 * and calls callback.
	 * @returns {object}
	 */
	BX.Scale.ActionParamsDialog.prototype.returnParamsValues = function()
	{
		var paramsValues = {},
			paramValue,
			confirmParamValue;

		for(var paramId in this.params)
		{
			if(!this.params.hasOwnProperty(paramId))
				continue;

			paramValue = this.params[paramId].getValue();

			if(this.confirmParams[paramId])
			{
				confirmParamValue = this.confirmParams[paramId].getValue();

				if(paramValue != confirmParamValue)
				{
					var message = BX.message("SCALE_PANEL_JS_APD_2_NOT_CONCIDE");
					message = message.replace("##FIELD1##", this.params[paramId].name);
					message = message.replace("##FIELD2##", this.confirmParams[paramId].name);
					BX.Scale.AdminFrame.alert(
						message,
						BX.message("SCALE_PANEL_JS_WARNING")
					);

					return false;
				}
			}

			paramsValues[paramId] = paramValue;
		}

		this.dialogWindow.Close();

		if(typeof this.callback == "function")
			this.callback.call(this.context, {
				userParams: paramsValues,
				serverHostname: this.serverHostname
			});

		return paramsValues;
	};

	BX.Scale.ActionParamsDialog.prototype.addSitePatch = function(params)
	{
		if(params.paramId !== "SITE_NAME")
			return;

		var siteName = BX('action_user_param_SITE_NAME').value;

		/*
		BX('action_user_param_DB_NAME').value = siteName+'db';
		BX('action_user_param_DB_USERNAME').value = siteName+'user';
		*/
		BX('action_user_param_SITE_PATH').value = siteName;
	};

	})(window);