Your IP : 3.147.195.28


Current Path : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/js/ui/accessrights/
Upload File :
Current File : /var/www/www-root/data/www/www.monolith-realty.ru/bitrix/js/ui/accessrights/column.js

;(function () {

'use strict';

BX.namespace('BX.UI');

BX.UI.AccessRights.Column = function(options) {
	this.layout = {
		container: null
	};
	this.grid = options.grid ? options.grid : null;
	this.items = options.items ? options.items : [];
	this.userGroup = options.userGroup ? options.userGroup : null;
	this.accessCodes = options.accessCodes ? options.accessCodes : null;
	this.section = options.section ? options.section : null;
	this.headSection = options.headSection;
	this.newColumn = options.newColumn ? options.newColumn : null;
	this.openPopupEvent = options.grid.openPopupEvent ? options.grid.openPopupEvent : null;
	this.popupContainer = options.grid.popupContainer ? options.grid.popupContainer : null;
};

BX.UI.AccessRights.Column.prototype = {
	getItem: function(options)
	{
		options = options || {};

		var param = {};

		if (options.type === 'userGroupTitle')
		{
			param = {
				type: options.type,
				text: options.title,
				controller: options.controller
			}
		}

		if (options.type === 'title')
		{
			param = {
				id: options.id,
				type: options.type,
				hint: options.hint,
				text: options.title,
				controller: options.controller
			}
		}

		if (options.type === 'toggler')
		{
			param = {
				type: options.type,
				access: options.access
			}
		}

		if (options.type === 'variables')
		{
			param = {
				type: options.type,
				text: options.title,
				variables: options.variables,
				access: options.access
			}
		}

		if (options.type === 'role')
		{
			param = {
				type: options.type,
				text: options.title
			}
		}

		if (options.type === 'members')
		{
			var accessCodes = [];

			for(var item in options.members)
			{
				accessCodes[item] = options.members[item].type;
			}
			
			param = {
				type: options.type,
				accessCodes: accessCodes
			}
		}

		param.column = this;
		param.userGroup = this.userGroup;
		param.openPopupEvent = this.openPopupEvent;
		param.popupContainer = this.popupContainer;
		param.currentParam = null;

		param.grid = this.grid;

		if(options.type === 'variables' || options.type === 'toggler')
		{
			var accessId = param.access.id;
			var accessRights = param.userGroup.accessRights;

			for (var i = 0; i < accessRights.length; i++)
			{
				if (accessId === accessRights[i].id)
				{
					param.currentParam = accessRights[i].value;
				}
			}
		}

		return new BX.UI.AccessRights.ColumnItem(param);
	},

	getUserGroup: function()
	{
		return this.userGroup;
	},

	remove: function()
	{
		if(this.layout.container.classList.toggle('ui-access-rights-column-new'))
		{
			this.layout.container.classList.remove('ui-access-rights-column-new');
		}

		this.layout.container.classList.add('ui-access-rights-column-remove');
		this.layout.container.style.width = this.layout.container.offsetWidth + 'px';

		BX.bind(this.layout.container, 'animationend', function() {
			this.layout.container.style.minWidth = '0px';
			this.layout.container.style.maxWidth = '0px';
		}.bind(this));

		setTimeout(function() {
			this.layout.container.parentNode.removeChild(this.layout.container);
		}.bind(this), 500);
	},

	resetClassNew: function()
	{
		this.layout.container.classList.remove('ui-access-rights-column-new');
	},

	render: function()
	{
		if (!this.layout.container)
		{
			var itemsFragment = document.createDocumentFragment();

			if(this.headSection)
			{
				this.userGroup.type = 'role';
				itemsFragment.appendChild(this.getItem(this.userGroup).render());

				this.userGroup.type = 'members';
				itemsFragment.appendChild(this.getItem(this.userGroup).render());
			}

			this.items.map(function(data) {
				var item = this.getItem(data);
				itemsFragment.appendChild(item.render());
			}.bind(this));

			this.layout.container = BX.create('div', {
				props: {
					className: this.newColumn ? 'ui-access-rights-column ui-access-rights-column-new' : 'ui-access-rights-column'
				}
			});

			BX.addCustomEvent('BX.UI.AccessRights:refresh', this.resetClassNew.bind(this));

			this.layout.container.appendChild(itemsFragment);

			return this.layout.container;
		}
	}
};

})();