%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/main.user.selector/templates/.default/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/main.user.selector/templates/.default/script.js |
;(function () { BX.namespace('BX.Main.User'); if (BX.Main.User.Selector) { return; } /** * UserSelector. * */ function UserSelector (params) { this.caller = params.caller; this.container = BX(params.containerId); this.id = params.id; this.containerId = params.containerId; this.inputName = params.inputName; this.inputId = params.inputName; this.isInputMultiple = params.isInputMultiple; this.inputNode = this.container.querySelector('input[name="' + params.inputName + '"]'); this.selector = BX.UI.TileSelector.getById(this.id); if (!this.selector) { throw new Error('Tile selector `' + this.id + '` not found.'); } this.searchInputNode = this.selector.getSearchInput(); if (!this.searchInputNode.id) { this.searchInputNode.id = this.inputId + '-search-input' } BX.addCustomEvent(this.selector, this.selector.events.buttonSelect, this.openDialog.bind(this)); BX.addCustomEvent(this.selector, this.selector.events.tileRemove, this.removeTile.bind(this)); BX.Main.User.SelectorController.init(this); } UserSelector.prototype = { openDialog: function() { BX.Main.User.SelectorController.open(this); }, removeTile: function(tile) { this.unsetValue(tile.id); }, setUsers: function(list) { list = list || []; if (this.isInputMultiple) { this.addInputs(list); } else { this.inputNode.value = list.join(','); } }, getUsers: function() { if (!this.inputNode) { return []; } var list; if (this.isInputMultiple) { list = this.getInputs().map(function (inputNode) { return inputNode.value; }); } else { list = this.inputNode.value.split(','); } return list.filter(function (id) { id = parseInt(id); return !!id; }).map(function (id) { return parseInt(id); }); }, setValue: function(value) { if (/^\d+$/.test(value) !== true) { return; } value = parseInt(value); if (this.selectOne) { this.setUsers([value]); } else { var list = this.getUsers(); if (!BX.util.in_array(value, list)) { list.push(value); } this.setUsers(list); } }, unsetValue: function(value) { if (/^\d+$/.test(value) !== true) { return; } value = parseInt(value); if (this.selectOne) { this.setUsers(); } else { var list = this.getUsers().filter(function (id) { return id !== value; }); this.setUsers(list); } }, addInput: function(value) { var inputNode = document.createElement('input'); inputNode.type = 'hidden'; inputNode.name = this.inputName; inputNode.value = value; this.container.insertBefore(inputNode, this.container.firstElementChild); }, addInputs: function(list) { this.removeInputs(); list.forEach(function (value) { this.addInput(value); }, this); }, getInputs: function() { return BX.convert.nodeListToArray(this.container.querySelectorAll('input[name="' + this.inputName + '"]')); }, removeInputs: function() { this.getInputs().forEach(function (inputNode) { BX.remove(inputNode); }); } }; var Controller = { list: [], init: function (userSelector) { this.list.push(userSelector); BX.onCustomEvent(window, 'BX.Main.User.SelectorController::init', [{ id: userSelector.id, inputId: userSelector.searchInputNode.id, containerId: userSelector.containerId, openDialogWhenInit: false }]); }, open: function (userSelector) { if (userSelector.isOpen) { return; } if (BX.SocNetLogDestination && BX.SocNetLogDestination.obItemsSelected) { var name = userSelector.id; BX.SocNetLogDestination.obItemsSelected[name] = {}; userSelector.getUsers().forEach(function (id) { BX.SocNetLogDestination.obItemsSelected[name][id] = 'users'; }); } userSelector.isOpen = true; BX.onCustomEvent(window, 'BX.Main.User.SelectorController::open', [{ id: userSelector.id, inputId: userSelector.searchInputNode.id, containerId: userSelector.containerId, bindNode: userSelector.container }]); }, select: function (params) { var self = BX.Main.User.SelectorController; var userSelector = self.getUserSelector(params.name); if (!userSelector) { return; } userSelector.setValue(params.item.entityId); userSelector.selector.addTile(params.item.name, {}, params.item.entityId); }, unSelect: function (params) { var self = BX.Main.User.SelectorController; var userSelector = self.getUserSelector(params.name); if (!userSelector) { return; } userSelector.unsetValue(params.item.entityId); var tile = userSelector.selector.getTile(params.item.entityId); userSelector.selector.removeTile(tile); }, closeDialog: function (params) { var self = BX.Main.User.SelectorController; var userSelector = self.getUserSelector(params.name); if (!userSelector) { return; } userSelector.isOpen = false; }, openSearch: function (params) { }, getUserSelector: function (id) { var userSelector = this.list.filter(function (selector) { return selector.id === id; }); return userSelector[0]; } }; if (!BX.Main.User.SelectorController) { BX.Main.User.SelectorController = Controller; } BX.Main.User.Selector = UserSelector; })(window);