Your IP : 3.145.93.203


Current Path : /home/bitrix/ext_www/dev.easy-comfort.com.ua/bitrix/js/sale/admin/
Upload File :
Current File : /home/bitrix/ext_www/dev.easy-comfort.com.ua/bitrix/js/sale/admin/order_basket_settings.js

BX.namespace("BX.Sale.Admin.OrderBasket.SettingsDialog");

BX.Sale.Admin.OrderBasket.SettingsDialog = function(params)
{
	this.basket = params.basket;

	this.idPrefix = this.basket.idPrefix || "sale_order_basket";
	this.formId = this.idPrefix+"_settings_dialog_form";
	this.contentId = this.idPrefix+"columns_form";
	this.dialog = this.create();
	this.form = null;
	this.columnsLimit = 21;
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.getForm = function()
{
	if(!this.form)
		this.form = BX(this.formId);

	return this.form;
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.unselectExcessFields = function(selectNode)
{
	if(!selectNode || !selectNode.options || selectNode.options.length <= this.columnsLimit)
		return false;

	var limit = this.columnsLimit - selectNode.form.columns.options.length;

	var selectedCounter = 0;

	for(var j=0, l1=selectNode.options.length; j<l1; j++)
	{
		if(!selectNode.options[j].selected)
			continue;

		selectNode.options[j].selected = (limit >= selectedCounter++);
	}

	return false;
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.unselectUnRemovableFields = function(selectNode)
{
	if(this.basket.unRemovableFields.length <= 0)
		return false;

	for(var j=0, l1=selectNode.options.length; j<l1; j++)
	{
		if(!selectNode.options[j].selected)
			continue;

		for(var i=0, l2=this.basket.unRemovableFields.length; i<l2; i++)
			if(selectNode.options[j].value == this.basket.unRemovableFields[i])
				selectNode.options[j].selected = false;
	}

	return false;
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.isUnRemovableFieldSelected = function(selectNode)
{
	if(this.basket.unRemovableFields.length <= 0)
		return false;

	for(var j=0, l1=selectNode.options.length; j<l1; j++)
	{
		if(!selectNode.options[j].selected)
			continue;

		for(var i=0, l2=this.basket.unRemovableFields.length; i<l2; i++)
			if(selectNode.options[j].value == this.basket.unRemovableFields[i])
				return true;
	}

	return false;
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.onSelectedChange = function(selectNode)
{
	if(selectNode.selectedIndex == -1)
	{
		selectNode.form.up_btn.disabled = true;
		selectNode.form.down_btn.disabled = true;
		selectNode.form.del_btn.disabled = true;
	}
/*
	else if(this.isUnRemovableFieldSelected(selectNode))
	{
		selectNode.form.up_btn.disabled = false;
		selectNode.form.down_btn.disabled = false;
		selectNode.form.del_btn.disabled = true;
	}
*/
	else
	{
		this.unselectUnRemovableFields(selectNode);
		selectNode.form.up_btn.disabled = false;
		selectNode.form.down_btn.disabled = false;
		selectNode.form.del_btn.disabled = false;
	}
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.onAvailableChange = function(selectNode)
{
	if(selectNode.selectedIndex == -1)
	{
		selectNode.form.add_btn.disabled = true;
	}
	else
	{
		this.unselectExcessFields(selectNode);
		selectNode.form.add_btn.disabled = false;
	}
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.create = function()
{
	var dialog = new BX.CDialog({
		'content':'<form id="'+this.formId+'" name="'+this.formId+'"></form>',
		'title': BX.message("SALE_ORDER_BASKET_JS_SETTINGS_TITLE"),
		'width': 850,
		'height': 350,
		'resizable': false
	});

	this.setButtons(dialog);

	var form = BX(this.formId),
		content = BX(this.contentId);

	if(form && content)
		form.appendChild(content);

	return dialog;
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.show = function()
{
	var sel = BX('adm-sale-basket-sett-all-cols'),
		pos;

	//workaround to prevent scroll up in chrome
	BX.bind(sel, 'mousedown', function(){pos = BX.GetWindowScrollPos();});
	BX.bind(sel, 'focus', function(){window.scrollTo(pos.scrollLeft, pos.scrollTop);});
	this.dialog.Show();
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.setButtons = function(dialog)
{
	var _this = this;
	dialog.ClearButtons();
	dialog.SetButtons([
		{
			'title': BX.message("SALE_ORDER_BASKET_JS_SETTINGS_APPLY"),
			'name': 'apply',
			'action': function() {
				BX.showWait();
				_this.save(
					_this.getVisibleColumns()
				);
				this.parentWindow.Close();
			}
		},
		BX.CDialog.prototype.btnCancel
	]);
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.changeColumns = function()
{
	console.log("changeColumns");
	BX.closeWait();
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.onAddColumn = function()
{
	console.log("addColumn");

	jsSelectUtils.addSelectedOptions(this.form.allColumns, this.form.columns, false);
	jsSelectUtils.deleteSelectedOptions(this.form.allColumns);
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.save = function(columns)
{
	BX.Sale.Admin.OrderEditPage.blockForm();
	BX.Sale.Admin.OrderAjaxer.sendRequest(
		{
			action: "saveBasketVisibleColumns",
			columns: columns,
			idPrefix: this.idPrefix,
			callback: function(result)
			{
				if(result && result.RESULT && result.RESULT == "OK")
				{
					var form = BX.Sale.Admin.OrderEditPage.getForm();
					form.submit();
				}
				else if(result && result.ERROR)
				{
					BX.debug("Error saving settings: " + result.ERROR);
				}
				else
				{
					BX.debug("Error saving settings!");
				}
			}
		}
	);
};

BX.Sale.Admin.OrderBasket.SettingsDialog.prototype.getVisibleColumns = function()
{
	var form = this.getForm(),
		result = [],
		select = form.elements.columns;

	for(var i= 0, l=select.options.length; i<l; i++)
		result.push(select.options[i].value);

	return result;
};