File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/calendar/resourcebookinguserfield/dist/resourcebookinguserfield.bundle.js.map
Back
{"version":3,"file":"resourcebookinguserfield.bundle.js","sources":["../src/formfieldtunnerabstract.js","../src/formfieldtunnerpopupabstract.js","../src/formfieldtunnervaluepopupabstract.js","../src/controls/userselectorfieldtunner.js","../src/controls/resourceselectorfieldtunner.js","../src/controls/serviceselectorfieldtunner.js","../src/controls/durationselectorfieldtunner.js","../src/controls/dateselectorfieldtunner.js","../src/controls/timeselectorfieldtunner.js","../src/adjustfieldcontroller.js","../src/controls/userselectorfieldeditcontrol.js","../src/controls/resourceselectorfieldeditcontrol.js","../src/controls/plannerpopup.js","../src/editfieldcontroller.js","../src/controls/serviceselector.js","../src/controls/timezoneselector.js","../src/controls/modeselector.js","../src/customizecrmentityeditor.js","../src/calendarviewsettingsslider.js","../src/adminsettingsviewer.js","../src/resourcebookinguserfield.js"],"sourcesContent":["import {Dom, Type} from \"calendar.resourcebooking\";\n\nexport class FormFieldTunnerAbstract {\n\tconstructor()\n\t{\n\t\tthis.label = '';\n\t\tthis.formLabel = '';\n\t\tthis.displayed = false;\n\t\tthis.valuePopup = null;\n\t\tthis.statePopup = null;\n\t\tthis.displayCheckboxDisabled = false;\n\t\tthis.DOM = {};\n\t}\n\n\tbuild(params)\n\t{\n\t\tthis.updateConfig(params.params);\n\n\t\tthis.DOM.fieldWrap = Dom.create(\"div\", {props: {className: 'calendar-resbook-webform-settings-popup-item'}});\n\n\t\tthis.DOM.labelWrap = this.DOM.fieldWrap.appendChild(Dom.create(\"div\", {\n\t\t\tprops: {className: 'calendar-resbook-webform-settings-popup-field'}\n\t\t}));\n\t\tthis.DOM.labelNode = this.DOM.labelWrap.appendChild(Dom.create(\"span\", {\n\t\t\tprops: {className: 'calendar-resbook-webform-settings-popup-field-title'}, text: this.getLabel()\n\t\t}));\n\n\t\t// Label in form\n\t\tthis.DOM.formTitleWrap = this.DOM.labelWrap.appendChild(Dom.create(\"span\", {\n\t\t\tprops: {\n\t\t\t\tclassName: 'calendar-resbook-webform-settings-popup-field-subtitle' + (this.isDisplayed() ? ' show' : '')\n\t\t\t}\n\t\t}));\n\t\tthis.DOM.formTitleLabel = this.DOM.formTitleWrap.appendChild(Dom.create(\"span\", {\n\t\t\tprops: {className: 'calendar-resbook-webform-settings-popup-field-subtitle-text'},\n\t\t\ttext: this.getFormLabel(),\n\t\t\tevents: {click: this.enableFormTitleEditMode.bind(this)}\n\t\t}));\n\t\tthis.DOM.formTitleEditIcon = this.DOM.formTitleWrap.appendChild(Dom.create(\"span\", {\n\t\t\tprops: {className: 'calendar-resbook-webform-settings-popup-field-edit'},\n\t\t\tevents: {click: this.enableFormTitleEditMode.bind(this)}\n\t\t}));\n\n\t\t// Display checkbox\n\t\tthis.DOM.checkboxNode = this.DOM.fieldWrap.appendChild(Dom.create(\"div\", {props: {className: 'calendar-resbook-webform-settings-popup-checkbox-container'}})).appendChild(Dom.create(\"input\", {\n\t\t\tattrs: {\n\t\t\t\ttype: \"checkbox\", value: 'Y', checked: this.isDisplayed(), disabled: this.displayCheckboxDisabled\n\t\t\t}, events: {\n\t\t\t\tclick: this.checkDisplayMode.bind(this)\n\t\t\t}\n\t\t}));\n\n\t\t// State popup\n\t\tthis.buildStatePopup({\n\t\t\twrap: this.DOM.fieldWrap, config: params.config || {}\n\t\t});\n\n\t\t// Value popup\n\t\tthis.buildValuePopup({\n\t\t\twrap: this.DOM.fieldWrap,\n\t\t\tconfig: params.config || {}\n\t\t});\n\n\t\tif (Type.isFunction(params.changeSettingsCallback))\n\t\t{\n\t\t\tthis.changeSettingsCallback = params.changeSettingsCallback;\n\t\t}\n\n\t\tparams.wrap.appendChild(this.DOM.fieldWrap);\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.valuePopup && Type.isFunction(this.valuePopup.closePopup))\n\t\t{\n\t\t\tthis.valuePopup.closePopup();\n\t\t}\n\t\tif (this.statePopup && Type.isFunction(this.statePopup.closePopup))\n\t\t{\n\t\t\tthis.statePopup.closePopup();\n\t\t}\n\t}\n\n\tupdateConfig(params = {})\n\t{\n\t\tthis.setFormLabel(params.label || this.formLabel);\n\t\tif (params.show)\n\t\t{\n\t\t\tthis.displayed = params.show !== 'N';\n\t\t}\n\t}\n\n\tbuildStatePopup(params)\n\t{\n\t}\n\n\tbuildValuePopup(params)\n\t{\n\t}\n\n\tgetLabel()\n\t{\n\t\treturn this.label;\n\t}\n\n\tgetFormLabel()\n\t{\n\t\treturn this.formLabel;\n\t}\n\n\tsetFormLabel(formLabel)\n\t{\n\t\tthis.formLabel = formLabel || '';\n\t}\n\n\tisDisplayed()\n\t{\n\t\treturn this.displayed;\n\t}\n\n\tcheckDisplayMode()\n\t{\n\t\tthis.displayed = !!this.DOM.checkboxNode.checked;\n\t\tif (this.displayed)\n\t\t{\n\t\t\tthis.displayInForm();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.hideInForm();\n\t\t}\n\t}\n\n\tdisplayInForm()\n\t{\n\t\tDom.addClass(this.DOM.formTitleWrap, 'show');\n\t\tthis.triggerChangeRefresh();\n\t}\n\n\thideInForm ()\n\t{\n\t\tDom.removeClass(this.DOM.formTitleWrap, 'show');\n\t\tthis.triggerChangeRefresh();\n\t}\n\n\tenableFormTitleEditMode()\n\t{\n\t\tif (!this.DOM.formTitleInputNode)\n\t\t{\n\t\t\tthis.DOM.formTitleInputNode = this.DOM.formTitleWrap.appendChild(Dom.create(\"input\", {\n\t\t\t\tattrs: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tclassName: 'calendar-resbook-webform-settings-popup-field-subtitle-text'\n\t\t\t\t},\n\t\t\t\tevents: {blur: this.finishFormTitleEditMode.bind(this)}\n\t\t\t}));\n\t\t}\n\n\t\tthis.DOM.formTitleInputNode.value = this.getFormLabel();\n\t\tthis.DOM.formTitleInputNode.style.display = '';\n\t\tthis.DOM.formTitleLabel.style.display = 'none';\n\t\tthis.DOM.formTitleEditIcon.style.display = 'none';\n\t\tthis.DOM.formTitleInputNode.focus();\n\t}\n\n\tfinishFormTitleEditMode()\n\t{\n\t\tthis.setFormLabel(this.DOM.formTitleInputNode.value);\n\t\tDom.adjust(this.DOM.formTitleLabel, {text: this.getFormLabel()});\n\t\tthis.DOM.formTitleLabel.style.display = '';\n\t\tthis.DOM.formTitleEditIcon.style.display = '';\n\t\tthis.DOM.formTitleInputNode.style.display = 'none';\n\t\tthis.triggerChangeRefresh();\n\t}\n\n\tgetSettingsValue()\n\t{\n\n\t}\n\n\ttriggerChangeRefresh()\n\t{\n\t\tsetTimeout(function(){BX.onCustomEvent('ResourceBooking.webformSettings:onChanged');}.bind(this), 50);\n\t}\n}\n\n\n\n\n","import {Dom, Event} from \"main.core\";\n\nexport class FormFieldTunnerPopupAbstract {\n\tconstructor(params)\n\t{\n\t\tthis.id = 'resourcebooking-settings-popup-' + Math.round(Math.random() * 100000);\n\t\tthis.menuItems = [];\n\t\tthis.DOM = {\n\t\t\touterWrap: params.wrap\n\t\t};\n\t\tthis.handleClickFunc = this.handleClick.bind(this);\n\t}\n\n\tbuild()\n\t{\n\t\tthis.DOM.innerWrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {props:{className:'calendar-resbook-webform-settings-popup-select'}}));\n\n\t\tthis.DOM.currentStateLink = this.DOM.innerWrap.appendChild(\n\t\t\tDom.create(\"span\",\n\t\t\t\t{\n\t\t\t\t\tprops : { className : 'calendar-resbook-webform-settings-popup-select-value'},\n\t\t\t\t\ttext: this.getCurrentModeState(),\n\t\t\t\t\tevents: {click: this.showPopup.bind(this)}\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t}\n\n\tshowPopup()\n\t{\n\t\tif (this.isPopupShown() || this.disabled)\n\t\t{\n\t\t\treturn this.closePopup();\n\t\t}\n\n\t\tthis.menuItems = this.getMenuItems();\n\n\t\tEvent.unbind(document, 'click', this.handleClickFunc);\n\t\tthis.popup = BX.PopupMenu.create(\n\t\t\tthis.id,\n\t\t\tthis.DOM.currentStateLink,\n\t\t\tthis.menuItems,\n\t\t\t{\n\t\t\t\tclassName: 'popup-window-resource-select',\n\t\t\t\tcloseByEsc : true,\n\t\t\t\tautoHide : false,\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 0,\n\t\t\t\tcacheable: false\n\t\t\t}\n\t\t);\n\n\t\tthis.popup.popupWindow.setAngle({offset: 30, position: 'top'});\n\t\tthis.popup.show(true);\n\t\tthis.popupContainer = this.popup.popupWindow.popupContainer;\n\n\t\t//this.popupContainer.style.width = parseInt(this.DOM.blocksWrap.offsetWidth) + 'px';\n\n\t\t// BX.addCustomEvent(this.popup.popupWindow, 'onPopupClose', function()\n\t\t// {\n\t\t// \tBX.PopupMenu.destroy(this.id);\n\t\t// \tthis.popup = null;\n\t\t// }.bind(this));\n\n\t\tthis.popup.menuItems.forEach(function(menuItem)\n\t\t{\n\t\t\tlet inputType = false, className, checked, inputNameStr = '';\n\t\t\tif (menuItem.dataset && menuItem.dataset.type)\n\t\t\t{\n\t\t\t\tchecked = menuItem.dataset.checked;\n\n\t\t\t\tlet menuItemClassName = 'menu-popup-item';\n\t\t\t\tif (menuItem.dataset.type === 'radio')\n\t\t\t\t{\n\t\t\t\t\tinputType = 'radio';\n\t\t\t\t\tclassName = 'menu-popup-item-resource-radio';\n\t\t\t\t\tif (menuItem.dataset.inputName)\n\t\t\t\t\t{\n\t\t\t\t\t\tinputNameStr = ' name=\"' + menuItem.dataset.inputName + '\" ';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (menuItem.dataset.type === 'checkbox')\n\t\t\t\t{\n\t\t\t\t\tinputType = 'checkbox';\n\t\t\t\t\tclassName = 'menu-popup-item-resource-checkbox';\n\t\t\t\t}\n\n\t\t\t\tlet innerHtml = '<div class=\"menu-popup-item-inner\">';\n\t\t\t\tif (menuItem.dataset.type === 'submenu-list')\n\t\t\t\t{\n\t\t\t\t\tmenuItemClassName += ' menu-popup-item-submenu';\n\t\t\t\t\tinnerHtml += '<div class=\"menu-popup-item-resource menu-popup-item-resource-wide\">' +\n\t\t\t\t\t\t'<span class=\"menu-popup-item-text\">' +\n\t\t\t\t\t\t'<span>' + menuItem.text + '</span>' +\n\t\t\t\t\t\t'<span class=\"menu-popup-item-resource-subvalue\">' + (menuItem.dataset.textValue || menuItem.dataset.value) + '</span>' +\n\t\t\t\t\t\t'</span>' +\n\t\t\t\t\t\t'</div>';\n\t\t\t\t}\n\t\t\t\telse if (inputType)\n\t\t\t\t{\n\t\t\t\t\tinnerHtml += '<div class=\"menu-popup-item-resource\">';\n\t\t\t\t\tif (inputType)\n\t\t\t\t\t{\n\t\t\t\t\t\tinnerHtml += '<input class=\"' + className + '\" type=\"' + inputType + '\"' + (checked ? 'checked=\"checked\"' : '') + ' id=\"' + menuItem.id + '\" ' + inputNameStr + '>' +\n\t\t\t\t\t\t\t'<label class=\"menu-popup-item-text\" for=\"' + menuItem.id + '\">' + menuItem.text + '</label>';\n\t\t\t\t\t}\n\t\t\t\t\tinnerHtml += '</div>';\n\t\t\t\t}\n\n\t\t\t\tinnerHtml += '</div>';\n\n\t\t\t\tmenuItem.layout.item.className = menuItemClassName;\n\t\t\t\tmenuItem.layout.item.innerHTML = innerHtml;\n\t\t\t}\n\t\t}, this);\n\n\t\tsetTimeout(()=>{Event.bind(document, 'click', this.handleClickFunc);}, 50);\n\t}\n\n\tclosePopup()\n\t{\n\t\tif (this.isPopupShown())\n\t\t{\n\t\t\tthis.popup.close();\n\t\t\tthis.popupContainer.style.maxHeight = '';\n\t\t}\n\t}\n\n\tisPopupShown()\n\t{\n\t\treturn this.popup && this.popup.popupWindow &&\n\t\t\tthis.popup.popupWindow.isShown && this.popup.popupWindow.isShown() &&\n\t\t\tthis.popup.popupWindow.popupContainer &&\n\t\t\tBX.isNodeInDom(this.popup.popupWindow.popupContainer)\n\t}\n\n\tgetCurrentModeState()\n\t{\n\t\treturn '';\n\t}\n\n\tgetMenuItems()\n\t{\n\t\treturn [];\n\t}\n\n\tgetPopupContent()\n\t{\n\t\tthis.DOM.innerWrap = Dom.create(\"div\", {props : {className : ''}});\n\t\treturn this.DOM.innerWrap;\n\t}\n\n\thandlePopupClick(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (target.hasAttribute('data-bx-resbook-control-node') ||\n\t\t\tBX.findParent(target, {attribute: 'data-bx-resbook-control-node'}, this.DOM.innerWrap)\n\t\t)\n\t\t{\n\t\t\tthis.handleControlChanges();\n\t\t}\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tif (this.changesTimeout)\n\t\t{\n\t\t\tthis.changesTimeout = clearTimeout(this.changesTimeout);\n\t\t}\n\t\tthis.changesTimeout = setTimeout(BX.delegate(function(){BX.onCustomEvent('ResourceBooking.webformSettings:onChanged');}, this), 50);\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\n\t}\n\n\thandleClick(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (this.isPopupShown() && !BX.isParentForNode(this.popupContainer, target))\n\t\t{\n\t\t\treturn this.closePopup({animation: true});\n\t\t}\n\t}\n\n\tsetDisabled()\n\t{\n\t\tthis.disabled = true;\n\t\tif (this.isPopupShown())\n\t\t{\n\t\t\tthis.closePopup();\n\t\t}\n\t\tDom.addClass(this.DOM.innerWrap, 'disabled');\n\t}\n\n\tsetEnabled()\n\t{\n\t\tthis.disabled = false;\n\t\tDom.removeClass(this.DOM.innerWrap, 'disabled');\n\t}\n}","import {BookingUtil, Dom} from \"calendar.resourcebooking\";\n\nexport class FormFieldTunnerValuePopupAbstract\n{\n\tconstructor(params)\n\t{\n\t\tthis.id = 'resourcebooking-settings-value-popup-' + Math.round(Math.random() * 100000);\n\t\tthis.selectedValues = [];\n\t\tthis.DOM = {\n\t\t\touterWrap: params.wrap\n\t\t};\n\t}\n\n\tbuild()\n\t{\n\t\tthis.DOM.innerWrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {props: {className: 'calendar-resbook-webform-settings-popup-select-result'}}));\n\n\t\tthis.DOM.valueLink = this.DOM.innerWrap.appendChild(Dom.create(\"span\", {\n\t\t\tprops: {className: 'calendar-resbook-webform-settings-popup-select-value'},\n\t\t\ttext: this.getCurrentValueState(),\n\t\t\tevents: {\n\t\t\t\tclick: this.showPopup.bind(this),\n\t\t\t\tmouseover: this.showHoverPopup.bind(this),\n\t\t\t\tmouseout: this.hideHoverPopup.bind(this)\n\t\t\t}\n\t\t}));\n\t}\n\n\tshowPopup()\n\t{\n\t\tif (this.popup && this.popup.isShown())\n\t\t{\n\t\t\treturn this.popup.close();\n\t\t}\n\n\t\tthis.popup = new BX.PopupWindow(\n\t\t\tthis.id,\n\t\t\tthis.DOM.valueLink,\n\t\t\t{\n\t\t\t\tautoHide: true,\n\t\t\t\tloseByEsc: true,\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 0,\n\t\t\t\twidth: this.getPopupWidth(),\n\t\t\t\tlightShadow: true,\n\t\t\t\tcontent: this.getPopupContent()\n\t\t\t});\n\t\tthis.popup.setAngle({offset: 60, position: 'top'});\n\t\tthis.popup.show(true);\n\n\t\tBX.unbind(this.DOM.innerWrap, 'click', BX.proxy(this.handlePopupClick, this));\n\t\tBX.bind(this.DOM.innerWrap, 'click', BX.proxy(this.handlePopupClick, this));\n\n\t\tBX.addCustomEvent(this.popup, 'onPopupClose', BX.delegate(function ()\n\t\t{\n\t\t\tthis.handlePopupCloose();\n\t\t\tthis.popup.destroy(this.id);\n\t\t\tthis.popup = null;\n\t\t}, this));\n\t}\n\n\tclosePopup()\n\t{\n\t\tif (this.isPopupShown())\n\t\t{\n\t\t\tthis.popup.close();\n\t\t}\n\t}\n\n\tisPopupShown()\n\t{\n\t\treturn this.popup && this.popup.popupWindow &&\n\t\t\tthis.popup.popupWindow.isShown && this.popup.popupWindow.isShown() &&\n\t\t\tthis.popup.popupWindow.popupContainer &&\n\t\t\tBX.isNodeInDom(this.popup.popupWindow.popupContainer)\n\t}\n\n\tshowHoverPopup()\n\t{\n\t}\n\n\thideHoverPopup()\n\t{\n\t}\n\n\thandlePopupCloose()\n\t{\n\t}\n\n\tgetCurrentValueState()\n\t{\n\t\treturn BX.message('WEBF_RES_NO_VALUE');\n\t}\n\n\tgetPopupContent()\n\t{\n\t\tthis.DOM.innerWrap = Dom.create(\"div\", {props: {className: ''}});\n\n\t\tthis.DOM.innerWrap.style.minWidth = '500px';\n\t\tthis.DOM.innerWrap.style.minHeight = '30px';\n\t\treturn this.DOM.innerWrap;\n\t}\n\n\tgetPopupWidth()\n\t{\n\t\treturn null;\n\t}\n\n\thandlePopupClick(e)\n\t{\n\t\tvar target = e.target || e.srcElement;\n\t\tif (target.hasAttribute('data-bx-resbook-control-node') || BX.findParent(target, {attribute: 'data-bx-resbook-control-node'}, this.DOM.innerWrap))\n\t\t{\n\t\t\tthis.handleControlChanges();\n\t\t}\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tsetTimeout(BX.delegate(function(){BX.onCustomEvent('ResourceBooking.webformSettings:onChanged');}, this), 50);\n\t}\n\n\tshowPopupLoader()\n\t{\n\t\tif (this.DOM.innerWrap)\n\t\t{\n\t\t\tthis.hidePopupLoader();\n\t\t\tthis.DOM.popupLoader = this.DOM.innerWrap.appendChild(BookingUtil.getLoader(50));\n\t\t}\n\t}\n\n\thidePopupLoader()\n\t{\n\t\tDom.remove(this.DOM.popupLoader);\n\t}\n}\n\n\texport class FormFieldTunnerMultipleChecknoxPopupAbstract extends FormFieldTunnerValuePopupAbstract{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.id = 'resourcebooking-settings-multiple-checknox-' + Math.round(Math.random() * 100000);\n\t}\n\n\tshowPopup()\n\t{\n\t\tif (this.isPopupShown())\n\t\t{\n\t\t\treturn this.closePopup();\n\t\t}\n\n\t\tvar menuItems = [];\n\n\t\tthis.values.forEach(function(item)\n\t\t{\n\t\t\tmenuItems.push({\n\t\t\t\tid: item.id,\n\t\t\t\ttext: BX.util.htmlspecialchars(item.title),\n\t\t\t\tdataset: item.dataset,\n\t\t\t\tonclick: BX.proxy(this.menuItemClick, this)\n\t\t\t});\n\t\t}, this);\n\n\t\tif (menuItems.length > 1)\n\t\t{\n\t\t\tthis.selectAllMessage = this.selectAllMessage || 'select all';\n\t\t\tmenuItems.push({\n\t\t\t\ttext: this.selectAllMessage,\n\t\t\t\tonclick: BX.proxy(this.selectAllItemClick, this)\n\t\t\t});\n\t\t}\n\n\t\tthis.popup = BX.PopupMenu.create(\n\t\t\tthis.id,\n\t\t\tthis.DOM.valueLink,\n\t\t\tmenuItems,\n\t\t\t{\n\t\t\t\tclassName: 'popup-window-resource-select',\n\t\t\t\tcloseByEsc : true,\n\t\t\t\tautoHide : false,\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 0\n\t\t\t}\n\t\t);\n\n\t\tthis.popup.popupWindow.setAngle({offset: 60, position: 'top'});\n\t\tthis.popup.show(true);\n\t\tthis.popupContainer = this.popup.popupWindow.popupContainer;\n\n\t\tBX.addCustomEvent(this.popup.popupWindow, 'onPopupClose', BX.proxy(function()\n\t\t{\n\t\t\tthis.handlePopupCloose();\n\t\t\tBX.PopupMenu.destroy(this.id);\n\t\t\tthis.popup = null;\n\t\t}, this));\n\n\t\tthis.popup.menuItems.forEach(function(menuItem)\n\t\t{\n\t\t\tvar checked;\n\t\t\tif (menuItem.dataset && menuItem.dataset.id)\n\t\t\t{\n\t\t\t\tchecked = this.selectedValues.find(function(itemId){return itemId === menuItem.id});\n\n\t\t\t\tmenuItem.layout.item.className = 'menu-popup-item';\n\t\t\t\tmenuItem.layout.item.innerHTML = '<div class=\"menu-popup-item-inner\">' +\n\t\t\t\t\t'<div class=\"menu-popup-item-resource\">' +\n\t\t\t\t\t'<input class=\"menu-popup-item-resource-checkbox\" type=\"checkbox\"' + (checked ? 'checked=\"checked\"' : '') + ' id=\"' + menuItem.id + '\">' +\n\t\t\t\t\t'<label class=\"menu-popup-item-text\" for=\"' + menuItem.id + '\">' + menuItem.text + '</label>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'</div>';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.selectAllChecked = !this.values.find(function(value){\n\t\t\t\t\treturn !this.selectedValues.find(function(itemId){return itemId === value.id});\n\t\t\t\t},this);\n\n\t\t\t\tmenuItem.layout.item.className = 'menu-popup-item menu-popup-item-resource-all';\n\t\t\t\tmenuItem.layout.item.innerHTML = '<div class=\"menu-popup-item-inner\">' +\n\t\t\t\t\t'<div class=\"menu-popup-item-resource\">' +\n\t\t\t\t\t'<input class=\"menu-popup-item-resource-checkbox menu-popup-item-all-resources-checkbox\" type=\"checkbox\"' + (this.selectAllChecked ? 'checked=\"checked\"' : '') + ' id=\"' + menuItem.id + '\">' +\n\t\t\t\t\t'<label class=\"menu-popup-item-text\" for=\"' + menuItem.id + '\">' + menuItem.text + '</label>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'</div>';\n\t\t\t}\n\t\t}, this);\n\n\t\tsetTimeout(BX.delegate(function(){\n\t\t\tBX.bind(document, 'click', BX.proxy(this.handleClick, this));\n\t\t}, this), 50);\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\t\tvar\n\t\t\tselectAllcheckbox,\n\t\t\ttarget = e.target || e.srcElement,\n\t\t\tcheckbox = menuItem.layout.item.querySelector('.menu-popup-item-resource-checkbox'),\n\t\t\tfoundValue = this.values.find(function(value){return value.id === menuItem.id;});\n\n\t\tif (foundValue)\n\t\t{\n\t\t\tif (target && (Dom.hasClass(target, \"menu-popup-item\") || Dom.hasClass(target, \"menu-popup-item-resource-checkbox\") || Dom.hasClass(target, \"menu-popup-item-inner\") ))\n\t\t\t{\n\t\t\t\tif (!Dom.hasClass(target, \"menu-popup-item-resource-checkbox\"))\n\t\t\t\t{\n\t\t\t\t\tcheckbox.checked = !checkbox.checked;\n\t\t\t\t}\n\n\t\t\t\tif (checkbox.checked)\n\t\t\t\t{\n\t\t\t\t\tthis.selectItem(foundValue);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.deselectItem(foundValue);\n\t\t\t\t\tselectAllcheckbox = this.popupContainer.querySelector('.menu-popup-item-all-resources-checkbox');\n\t\t\t\t\tthis.selectAllChecked = false;\n\t\t\t\t\tif (selectAllcheckbox)\n\t\t\t\t\t{\n\t\t\t\t\t\tselectAllcheckbox.checked = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.handleControlChanges();\n\t\t}\n\t}\n\n\tselectItem(value)\n\t{\n\t\tif (!BX.util.in_array(value.id, this.selectedValues))\n\t\t{\n\t\t\tthis.selectedValues.push(value.id);\n\t\t}\n\t}\n\tdeselectItem(value)\n\t{\n\t\tvar index = BX.util.array_search(value.id, this.selectedValues);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tthis.selectedValues = BX.util.deleteFromArray(this.selectedValues, index);\n\t\t}\n\t}\n\n\tselectAllItemClick(e, menuItem)\n\t{\n\t\tvar target = e.target || e.srcElement;\n\t\tif (target && (Dom.hasClass(target, \"menu-popup-item\") || Dom.hasClass(target, \"menu-popup-item-resource-checkbox\")))\n\t\t{\n\t\t\tvar checkbox = menuItem.layout.item.querySelector('.menu-popup-item-resource-checkbox');\n\n\t\t\tif (Dom.hasClass(target, \"menu-popup-item\"))\n\t\t\t{\n\t\t\t\tcheckbox.checked = !checkbox.checked;\n\t\t\t}\n\n\t\t\tvar i, checkboxes = this.popupContainer.querySelectorAll('input.menu-popup-item-resource-checkbox');\n\t\t\tthis.selectAllChecked = checkbox.checked;\n\n\t\t\tfor (i = 0; i < checkboxes.length; i++)\n\t\t\t{\n\t\t\t\tcheckboxes[i].checked = this.selectAllChecked;\n\t\t\t}\n\t\t\tthis.selectedValues = [];\n\t\t\tif (this.selectAllChecked)\n\t\t\t{\n\t\t\t\tthis.values.forEach(function(value){this.selectedValues.push(value.id);}, this);\n\t\t\t}\n\t\t\tthis.handleControlChanges();\n\t\t}\n\t}\n\n\thandleClick(e)\n\t{\n\t\tvar target = e.target || e.srcElement;\n\t\tif (this.isPopupShown() && !BX.isParentForNode(this.popupContainer, target))\n\t\t{\n\t\t\tthis.closePopup({animation: true});\n\t\t}\n\n\t\tthis.handleControlChanges();\n\t}\n\n\tclosePopup()\n\t{\n\t\tif (this.isPopupShown())\n\t\t{\n\t\t\tthis.popup.close();\n\t\t\tthis.popupContainer.style.maxHeight = '';\n\t\t\tBX.unbind(document, 'click', BX.proxy(this.handleClick, this));\n\t\t}\n\t}\n\n\tgetSelectedValues()\n\t{\n\t\treturn this.selectedValues;\n\t}\n}","import {FormFieldTunnerAbstract} from \"../formfieldtunnerabstract\";\nimport {FormFieldTunnerPopupAbstract} from \"../formfieldtunnerpopupabstract\";\nimport {FormFieldTunnerValuePopupAbstract} from \"../formfieldtunnervaluepopupabstract\";\nimport {ResourcebookingUserfield} from \"../resourcebookinguserfield\";\nimport {BookingUtil} from \"calendar.resourcebooking\";\nimport {Loc, Type, Dom, Tag, Text} from \"main.core\";\nimport {MenuItem} from \"main.popup\";\nimport { Dialog as EntitySelectorDialog } from 'ui.entity-selector';\nimport {EventEmitter} from 'main.core.events';\n\n\nexport class UserSelectorFieldTunner extends FormFieldTunnerAbstract {\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.label = Loc.getMessage('WEBF_RES_USERS');\n\t\tthis.formLabel = Loc.getMessage('WEBF_RES_USERS_LABEL');\n\t\tthis.displayed = true;\n\t\tthis.selectedUsers = [];\n\t}\n\n\tupdateConfig(params)\n\t{\n\t\tsuper.updateConfig(params);\n\t\tthis.defaultMode = params.defaultMode;\n\t}\n\n\tbuildStatePopup(params)\n\t{\n\t\tparams.isDisplayed = this.isDisplayed.bind(this);\n\t\tparams.defaultMode = params.defaultMode || this.defaultMode;\n\t\tthis.statePopup = new UsersStatePopup(params);\n\t}\n\n\tbuildValuePopup(params)\n\t{\n\t\tthis.selectedUsers = Type.isArray(params.config.selected)\n\t\t\t? params.config.selected\n\t\t\t: params.config.selected.split('|');\n\n\t\tthis.DOM.valueWrap = params.wrap;\n\n\t\tthis.DOM.valueWrap.appendChild(\n\t\t\tTag.render`\n\t\t\t\t<div class=\"calendar-resbook-webform-settings-popup-select-result\">\n\t\t\t\t\t${this.DOM.usersValueLink = Tag.render`\n\t\t\t\t\t\t<span \n\t\t\t\t\t\t\tclass=\"calendar-resbook-webform-settings-popup-select-value\"\n\t\t\t\t\t\t\tonclick=\"${this.showUserSelectorDialog.bind(this)}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${this.getCurrentUsersValueText()}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t`}\n\t\t\t\t</div>\n\t\t\t`\n\t\t);\n\t}\n\n\tgetCurrentUsersValueText()\n\t{\n\t\tconst count = this.selectedUsers.length;\n\t\treturn count\n\t\t\t? (count + ' ' + ResourcebookingUserfield.getPluralMessage('WEBF_RES_USER', count))\n\t\t\t: Loc.getMessage('WEBF_RES_NO_VALUE');\n\t}\n\n\tshowUserSelectorDialog()\n\t{\n\t\tif (!(this.userSelectorDialog instanceof EntitySelectorDialog))\n\t\t{\n\t\t\tthis.userSelectorDialog = new EntitySelectorDialog({\n\t\t\t\ttargetNode: this.DOM.usersValueLink,\n\t\t\t\tcontext: 'RESOURCEBOOKING',\n\t\t\t\tpreselectedItems: this.selectedUsers.map((userId) => {return ['user', userId]}),\n\t\t\t\tenableSearch: true,\n\t\t\t\tzIndex: this.zIndex + 10,\n\t\t\t\tevents: {\n\t\t\t\t\t'Item:onSelect': this.handleUserSelectorChanges.bind(this),\n\t\t\t\t\t'Item:onDeselect': this.handleUserSelectorChanges.bind(this),\n\t\t\t\t},\n\t\t\t\tentities: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'user',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tinviteGuestLink: false,\n\t\t\t\t\t\t\temailUsers: false,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t});\n\t\t}\n\n\t\tthis.userSelectorDialog.show();\n\t}\n\n\thandleUserSelectorChanges()\n\t{\n\t\tthis.selectedUsers = [];\n\n\t\tthis.userSelectorDialog.getSelectedItems().forEach((item) => {\n\t\t\tif (item.entityId === \"user\")\n\t\t\t{\n\t\t\t\tthis.selectedUsers.push(item.id);\n\t\t\t}\n\t\t});\n\n\t\tthis.DOM.usersValueLink.innerHTML = this.getCurrentUsersValueText();\n\n\t\tEventEmitter.emit('ResourceBooking.settingsUserSelector:onChanged');\n\t\tsetTimeout(() => {EventEmitter.emit('ResourceBooking.webformSettings:onChanged')}, 50);\n\t}\n\n\tdisplayInForm()\n\t{\n\t\tsuper.displayInForm();\n\t\tthis.statePopup.handleControlChanges();\n\t\tthis.statePopup.setEnabled();\n\t}\n\n\thideInForm()\n\t{\n\t\tsuper.hideInForm();\n\t\tthis.statePopup.handleControlChanges();\n\t\tthis.statePopup.setDisabled();\n\t}\n\n\tgetValue()\n\t{\n\t\treturn {\n\t\t\tshow: this.isDisplayed() ? 'Y' : 'N',\n\t\t\tlabel: this.getFormLabel(),\n\t\t\tdefaultMode: this.statePopup.getDefaultMode(),\n\t\t\tvalue: this.selectedUsers\n\t\t};\n\t}\n}\n\nclass UsersStatePopup extends FormFieldTunnerPopupAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'usersStatePopup';\n\t\tthis.inputName = 'user-select-mode';\n\t\tthis.id = 'users-state-' + Math.round(Math.random() * 1000);\n\t\tthis.defaultMode = params.defaultMode === 'none' ? 'none' : 'auto';\n\t\tthis.isDisplayed = Type.isFunction(params.isDisplayed) ? params.isDisplayed : function(){return false};\n\t\tthis.build();\n\t}\n\n\tbuild()\n\t{\n\t\tsuper.build();\n\t\tthis.handleControlChanges();\n\t}\n\n\tgetMenuItems()\n\t{\n\t\treturn [\n\t\t\tnew MenuItem({\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_SELECT_DEFAULT_TITLE'),\n\t\t\t\tdelimiter: true\n\t\t\t}),\n\t\t\t{\n\t\t\t\tid: 'users-state-list',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_SELECT_DEFAULT_EMPTY'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'none',\n\t\t\t\t\tinputName: this.inputName,\n\t\t\t\t\tchecked: this.defaultMode === 'none'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'users-state-auto',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_SELECT_DEFAULT_FREE_USER'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'auto',\n\t\t\t\t\tinputName: this.inputName,\n\t\t\t\t\tchecked: this.defaultMode === 'auto'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t}\n\t\t];\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\t\tvar target = e.target || e.srcElement;\n\t\tif (Type.isDomNode(target) && target.nodeName.toLowerCase() === 'input'\n\t\t\t&& menuItem.dataset && menuItem.dataset.inputName === this.inputName\n\t\t)\n\t\t{\n\t\t\tthis.defaultMode = menuItem.dataset.value;\n\t\t}\n\t\tthis.handleControlChanges();\n\t\tsetTimeout(this.closePopup.bind(this), 50);\n\t}\n\n\tgetCurrentModeState()\n\t{\n\t\treturn this.isDisplayed()\n\t\t\t?\n\t\t\t(Loc.getMessage('WEBF_RES_SELECT_USER_FROM_LIST_SHORT') +\n\t\t\t\t(this.defaultMode === 'none'\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: (',<br>' + Loc.getMessage('WEBF_RES_AUTO_SELECT_USER_SHORT'))\n\t\t\t\t))\n\t\t\t:\n\t\t\tLoc.getMessage('WEBF_RES_SELECT_USER_FROM_LIST_AUTO');\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tsuper.handleControlChanges();\n\t\tthis.DOM.currentStateLink.innerHTML = this.getCurrentModeState();\n\t\tBX.onCustomEvent(this, \"ResourceBooking.userSettingsField:onControlChanged\", []);\n\t}\n\n\tgetDefaultMode()\n\t{\n\t\treturn this.defaultMode;\n\t}\n}","import {FormFieldTunnerAbstract} from \"../formfieldtunnerabstract\";\nimport {FormFieldTunnerPopupAbstract} from \"../formfieldtunnerpopupabstract\";\nimport {FormFieldTunnerMultipleChecknoxPopupAbstract} from \"../formfieldtunnervaluepopupabstract\";\nimport {ResourcebookingUserfield} from \"../resourcebookinguserfield\";\nimport {Loc, Type, Dom} from \"main.core\";\nimport {MenuItem} from \"main.popup\";\n\nexport class ResourceSelectorFieldTunner extends FormFieldTunnerAbstract {\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.label = Loc.getMessage('WEBF_RES_RESOURCES');\n\t\tthis.formLabel = Loc.getMessage('WEBF_RES_RESOURCES_LABEL');\n\t\tthis.displayed = true;\n\t}\n\n\tupdateConfig(params)\n\t{\n\t\tsuper.updateConfig(params);\n\t\tthis.defaultMode = params.defaultMode;\n\t\tthis.multiple = params.multiple === 'Y';\n\t}\n\n\tbuildStatePopup(params)\n\t{\n\t\tparams.isDisplayed = this.isDisplayed.bind(this);\n\t\tparams.defaultMode = params.defaultMode || this.defaultMode;\n\t\tparams.multiple = params.multiple == null ? this.multiple : params.multiple;\n\t\tthis.statePopup = new ResourcesStatePopup(params);\n\t}\n\n\tbuildValuePopup (params)\n\t{\n\t\tthis.valuePopup = new ResourcesValuePopup(params);\n\t}\n\n\tdisplayInForm ()\n\t{\n\t\tsuper.displayInForm();\n\t\tthis.statePopup.handleControlChanges();\n\t\tthis.statePopup.setEnabled();\n\t}\n\n\thideInForm ()\n\t{\n\t\tsuper.hideInForm();\n\t\tthis.statePopup.handleControlChanges();\n\t\tthis.statePopup.setDisabled();\n\t}\n\n\tgetValue ()\n\t{\n\t\treturn {\n\t\t\tshow: this.isDisplayed() ? 'Y' : 'N',\n\t\t\tlabel: this.getFormLabel(),\n\t\t\tdefaultMode: this.statePopup.getDefaultMode(),\n\t\t\tmultiple: this.statePopup.getMultiple() ? 'Y' : 'N',\n\t\t\tvalue: this.valuePopup.getSelectedId()\n\t\t};\n\t}\n}\n\n\nclass ResourcesStatePopup extends FormFieldTunnerPopupAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'resourcesStatePopup';\n\t\tthis.inputName = 'resource-select-mode';\n\t\tthis.defaultMode = params.defaultMode === 'none' ? 'none' : 'auto';\n\t\tthis.multiple = !!params.multiple;\n\t\tthis.isDisplayed = Type.isFunction(params.isDisplayed) ? params.isDisplayed : function(){return false;};\n\t\tthis.build();\n\t}\n\n\tbuild()\n\t{\n\t\tsuper.build();\n\t\tthis.handleControlChanges();\n\t}\n\n\tgetMenuItems()\n\t{\n\t\treturn [\n\t\t\tnew MenuItem({\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_SELECT_DEFAULT_TITLE'),\n\t\t\t\tdelimiter: true\n\t\t\t}),\n\t\t\t{\n\t\t\t\tid: 'resources-state-list',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_SELECT_DEFAULT_EMPTY'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'none',\n\t\t\t\t\tinputName: this.inputName,\n\t\t\t\t\tchecked: this.defaultMode === 'none'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'resources-state-auto',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_AUTO_SELECT_RES'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'auto',\n\t\t\t\t\tinputName: this.inputName,\n\t\t\t\t\tchecked: this.defaultMode === 'auto'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\t{\n\t\t\t\tdelimiter: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'resources-state-multiple',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_MULTIPLE'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tvalue: 'Y',\n\t\t\t\t\tchecked: this.multiple\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t}\n\t\t];\n\t}\n\n\tgetCurrentModeState()\n\t{\n\t\treturn this.isDisplayed()\n\t\t\t?\n\t\t\t(Loc.getMessage('WEBF_RES_SELECT_RES_FROM_LIST_SHORT') +\n\t\t\t\t(this.defaultMode === 'none'\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: (',<br>' + Loc.getMessage('WEBF_RES_AUTO_SELECT_RES_SHORT'))\n\t\t\t\t))\n\t\t\t:\n\t\t\tLoc.getMessage('WEBF_RES_SELECT_RES_FROM_LIST_AUTO');\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tsuper.handleControlChanges();\n\t\tthis.DOM.currentStateLink.innerHTML = this.getCurrentModeState();\n\t\tBX.onCustomEvent(this, \"ResourceBooking.userSettingsField:onControlChanged\", []);\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (Type.isDomNode(target) && target.nodeName.toLowerCase() === 'input'\n\t\t\t&& menuItem.dataset)\n\t\t{\n\t\t\tif (menuItem.dataset.inputName === this.inputName)\n\t\t\t{\n\t\t\t\tthis.defaultMode = menuItem.dataset.value;\n\t\t\t}\n\t\t\telse if (menuItem.id === 'resources-state-multiple')\n\t\t\t{\n\t\t\t\tthis.multiple = !!target.checked;\n\t\t\t}\n\t\t}\n\t\tthis.handleControlChanges();\n\t}\n\n\tgetDefaultMode()\n\t{\n\t\treturn this.defaultMode;\n\t}\n\n\tgetMultiple()\n\t{\n\t\treturn this.multiple;\n\t}\n}\n\n\nclass ResourcesValuePopup extends FormFieldTunnerMultipleChecknoxPopupAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'resourcesValuePopup';\n\t\tthis.selectAllMessage = Loc.getMessage('USER_TYPE_RESOURCE_SELECT_ALL');\n\n\t\tlet\n\t\t\tselectedItems, selectedIndex = {},\n\t\t\tselectAll = params.config.selected === null;\n\n\t\tif (Type.isArray(params.config.selected))\n\t\t{\n\t\t\tselectedItems = params.config.selected;\n\t\t}\n\t\telse if (Type.isString(params.config.selected))\n\t\t{\n\t\t\tselectedItems = params.config.selected.split('|');\n\t\t}\n\n\t\tif (Type.isArray(selectedItems))\n\t\t{\n\t\t\tfor(let i = 0; i < selectedItems.length; i++)\n\t\t\t{\n\t\t\t\tselectedIndex[selectedItems[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\tthis.values = [];\n\t\tthis.selectedValues = [];\n\t\tif (Type.isArray(params.config.resources))\n\t\t{\n\t\t\tparams.config.resources.forEach(function(resource)\n\t\t\t{\n\t\t\t\tlet valueId = this.prepareValueId(resource);\n\t\t\t\tthis.values.push({\n\t\t\t\t\tid: valueId,\n\t\t\t\t\ttitle: resource.title,\n\t\t\t\t\tdataset: resource\n\t\t\t\t});\n\n\t\t\t\tif (selectAll || selectedIndex[resource.id])\n\t\t\t\t{\n\t\t\t\t\tthis.selectedValues.push(valueId);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.build();\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tsuper.handleControlChanges();\n\t\tDom.adjust(this.DOM.valueLink, {text: this.getCurrentValueState()});\n\t}\n\n\tgetCurrentValueState()\n\t{\n\t\tlet count = this.selectedValues.length;\n\t\treturn count ? (count + ' ' + ResourcebookingUserfield.getPluralMessage('WEBF_RES_RESOURCE', count)) : Loc.getMessage('WEBF_RES_NO_VALUE');\n\t}\n\n\tprepareValueId(resource)\n\t{\n\t\treturn resource.type + '|' + resource.id;\n\t}\n\n\tgetSelectedId()\n\t{\n\t\tlet result = [];\n\t\tthis.getSelectedValues().forEach(function(value)\n\t\t{\n\t\t\tlet val = value.split('|');\n\t\t\tif (val && val[1])\n\t\t\t{\n\t\t\t\tresult.push(parseInt(val[1]));\n\t\t\t}\n\t\t});\n\t\treturn result;\n\t}\n}\n\n\n\n\n","import {FormFieldTunnerAbstract} from \"../formfieldtunnerabstract\";\nimport {FormFieldTunnerMultipleChecknoxPopupAbstract} from \"../formfieldtunnervaluepopupabstract\";\nimport {ResourcebookingUserfield} from \"../resourcebookinguserfield\";\nimport {BookingUtil} from \"calendar.resourcebooking\";\nimport {Loc, Type, Dom} from \"main.core\";\n\nexport class ServiceSelectorFieldTunner extends FormFieldTunnerAbstract {\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.label = Loc.getMessage('WEBF_RES_SERVICES');\n\t\tthis.formLabel = Loc.getMessage('WEBF_RES_SERVICE_LABEL');\n\t\tthis.displayed = true;\n\t}\n\n\tbuildStatePopup(params)\n\t{\n\t\tif (params && Type.isDomNode(params.wrap))\n\t\t{\n\t\t\tparams.wrap.appendChild(Dom.create(\"div\", {\n\t\t\t\tprops: {className:'calendar-resbook-webform-settings-popup-select disabled'},\n\t\t\t\thtml: '<span class=\"calendar-resbook-webform-settings-popup-select-value\">' + Loc.getMessage('WEBF_RES_FROM_LIST') + '</span>'\n\t\t\t}));\n\t\t}\n\t}\n\n\tbuildValuePopup (params)\n\t{\n\t\tthis.valuePopup = new ServiceValuePopup(params);\n\t}\n\n\tgetValue ()\n\t{\n\t\treturn {\n\t\t\tshow: this.isDisplayed() ? 'Y' : 'N',\n\t\t\tlabel: this.getFormLabel(),\n\t\t\tvalue: this.valuePopup.getSelectedValues()\n\t\t};\n\t}\n}\n\n\nclass ServiceValuePopup extends FormFieldTunnerMultipleChecknoxPopupAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'ServiceValuePopup';\n\t\tthis.selectAllMessage = Loc.getMessage('WEBF_RES_SELECT_ALL_SERVICES');\n\n\t\tlet selectAll = params.config.selected === null || params.config.selected === '' || params.config.selected === undefined;\n\t\tthis.values = [];\n\t\tthis.selectedValues = [];\n\n\t\tlet selectedItems, selectedIndex = {};\n\t\tif (Type.isArray(params.config.selected))\n\t\t{\n\t\t\tselectedItems = params.config.selected;\n\t\t}\n\t\telse if (Type.isString(params.config.selected))\n\t\t{\n\t\t\tselectedItems = params.config.selected.split('|');\n\t\t}\n\n\t\tif (Type.isArray(selectedItems))\n\t\t{\n\t\t\tfor(let i = 0; i < selectedItems.length; i++)\n\t\t\t{\n\t\t\t\tselectedIndex[BookingUtil.translit(selectedItems[i])] = true;\n\t\t\t}\n\t\t}\n\n\t\tif (Type.isArray(params.config.services))\n\t\t{\n\t\t\tparams.config.services.forEach(function(service)\n\t\t\t{\n\t\t\t\tservice.id = BookingUtil.translit(service.name);\n\t\t\t\tif (service.id !== '')\n\t\t\t\t{\n\t\t\t\t\tthis.values.push({\n\t\t\t\t\t\tid: service.id,\n\t\t\t\t\t\ttitle: service.name + ' - ' + BookingUtil.getDurationLabel(service.duration),\n\t\t\t\t\t\tdataset: service\n\t\t\t\t\t});\n\n\t\t\t\t\tif (selectAll || selectedIndex[BookingUtil.translit(service.name)])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.selectedValues.push(service.id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.config = {};\n\t\tthis.build();\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tsuper.handleControlChanges();\n\t\tDom.adjust(this.DOM.valueLink, {text: this.getCurrentValueState()});\n\t}\n\n\tgetSelectedValues()\n\t{\n\t\treturn this.selectedValues.length ? this.selectedValues : '#EMPTY-SERVICE-LIST#';\n\t}\n\n\tgetCurrentValueState()\n\t{\n\t\tlet count = this.selectedValues.length;\n\t\treturn count ? (count + ' ' + ResourcebookingUserfield.getPluralMessage('WEBF_RES_SERVICE', count)) : Loc.getMessage('WEBF_RES_NO_VALUE');\n\t}\n}\n\n\n","import {FormFieldTunnerAbstract} from \"../formfieldtunnerabstract\";\nimport {FormFieldTunnerPopupAbstract} from \"../formfieldtunnerpopupabstract\";\nimport {BookingUtil} from \"calendar.resourcebooking\";\nimport {Loc, Type} from \"main.core\";\n\nexport class DurationSelectorFieldTunner extends FormFieldTunnerAbstract {\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.label = Loc.getMessage('WEBF_RES_DURATION');\n\t\tthis.formLabel = Loc.getMessage('WEBF_RES_DURATION_LABEL');\n\t}\n\n\tupdateConfig(params)\n\t{\n\t\tsuper.updateConfig();\n\t\tthis.defaultValue = params.defaultValue;\n\t\tthis.manualInput = params.manualInput === 'Y';\n\t}\n\n\tbuildStatePopup(params)\n\t{\n\t\tparams.isDisplayed = this.isDisplayed.bind(this);\n\t\tparams.defaultValue = this.defaultValue;\n\t\tparams.manualInput = this.manualInput;\n\t\tthis.statePopup = new DurationStatePopup(params);\n\t}\n\n\tdisplayInForm ()\n\t{\n\t\tsuper.displayInForm();\n\t\tthis.statePopup.handleControlChanges();\n\t}\n\n\thideInForm ()\n\t{\n\t\tsuper.hideInForm();\n\t\tthis.statePopup.handleControlChanges();\n\t}\n\n\tgetValue ()\n\t{\n\t\treturn {\n\t\t\tshow: this.isDisplayed() ? 'Y' : 'N',\n\t\t\tlabel: this.getFormLabel(),\n\t\t\tdefaultValue: this.statePopup.getDefaultValue(),\n\t\t\tmanualInput: this.statePopup.getManualInput() ? 'Y' : 'N'\n\t\t};\n\t}\n}\n\n\nclass DurationStatePopup extends FormFieldTunnerPopupAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'durationStatePopup';\n\t\tthis.inputName = 'duration-select-mode';\n\t\tthis.manualInput = !!params.manualInput;\n\t\tthis.defaultValue = params.defaultValue || 60;\n\t\tthis.isDisplayed = Type.isFunction(params.isDisplayed) ? params.isDisplayed : function(){return false;};\n\t\tthis.durationList = BookingUtil.getDurationList(params.fullDay);\n\t\tthis.build();\n\t}\n\n\tbuild()\n\t{\n\t\tsuper.build();\n\t\tthis.handleControlChanges();\n\t}\n\n\tgetMenuItems()\n\t{\n\t\treturn [\n\t\t\t{\n\t\t\t\tid: 'duration-default-value',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_SELECT_DURATION_AUTO'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'submenu-list',\n\t\t\t\t\tvalue: this.defaultValue,\n\t\t\t\t\ttextValue: this.getDurationLabelByValue(this.defaultValue)\n\t\t\t\t},\n\t\t\t\titems: this.getDefaultMenuItems()\n\t\t\t}].concat((this.isDisplayed()\n\t\t\t? [\n\t\t\t\t{\n\t\t\t\t\tdelimiter: true\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: 'duration-manual-input',\n\t\t\t\t\ttext: Loc.getMessage('WEBF_RES_SELECT_MANUAL_INPUT'),\n\t\t\t\t\tdataset: {\n\t\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\t\tvalue: 'Y',\n\t\t\t\t\t\tchecked: this.manualInput\n\t\t\t\t\t},\n\t\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t\t}\n\t\t\t]\n\t\t\t: []));\n\t}\n\n\tgetDefaultMenuItems()\n\t{\n\t\tlet menuItems = [];\n\n\t\tif (Type.isArray(this.durationList))\n\t\t{\n\t\t\tthis.durationList.forEach(function(item)\n\t\t\t{\n\t\t\t\tmenuItems.push({\n\t\t\t\t\tid: 'duration-' + item.value,\n\t\t\t\t\tdataset: {\n\t\t\t\t\t\ttype: 'duration',\n\t\t\t\t\t\tvalue: item.value\n\t\t\t\t\t},\n\t\t\t\t\ttext: item.label,\n\t\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t\t});\n\t\t\t}, this);\n\t\t}\n\n\t\treturn menuItems;\n\t}\n\n\tgetDurationLabelByValue(duration)\n\t{\n\t\tlet foundDuration = this.durationList.find(function(item){return parseInt(item.value) === parseInt(duration)});\n\t\treturn foundDuration ? foundDuration.label : null;\n\t}\n\n\tgetCurrentModeState()\n\t{\n\t\treturn this.isDisplayed()\n\t\t\t?\n\t\t\t(Loc.getMessage('WEBF_RES_SELECT_DURATION_FROM_LIST_SHORT')\n\t\t\t\t+ (',<br>' + Loc.getMessage('WEBF_RES_SELECT_DURATION_BY_DEFAULT') + ' ' + this.getDurationLabelByValue(this.defaultValue)))\n\t\t\t:\n\t\t\tLoc.getMessage('WEBF_RES_SELECT_DURATION_AUTO') + ' ' + this.getDurationLabelByValue(this.defaultValue);\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tsuper.handleControlChanges();\n\t\tthis.DOM.currentStateLink.innerHTML = this.getCurrentModeState();\n\t\tBX.onCustomEvent(this, \"ResourceBooking.userSettingsField:onControlChanged\", []);\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (Type.isDomNode(target) && target.nodeName.toLowerCase() === 'input'\n\t\t\t&& menuItem.dataset)\n\t\t{\n\t\t\tif (menuItem.id === 'duration-manual-input')\n\t\t\t{\n\t\t\t\tthis.manualInput = !!target.checked;\n\t\t\t}\n\t\t}\n\t\telse if (menuItem.dataset && menuItem.dataset.type === 'duration')\n\t\t{\n\t\t\tthis.defaultValue = parseInt(menuItem.dataset.value);\n\t\t}\n\n\t\tthis.handleControlChanges();\n\t}\n\n\tgetManualInput()\n\t{\n\t\treturn this.manualInput;\n\t}\n\n\tgetDefaultValue()\n\t{\n\t\treturn this.defaultValue;\n\t}\n}","import {FormFieldTunnerAbstract} from \"../formfieldtunnerabstract\";\nimport {FormFieldTunnerPopupAbstract} from \"../formfieldtunnerpopupabstract\";\nimport {Loc, Type, Dom} from \"main.core\";\nimport { MenuItem } from 'main.popup';\n\nexport class DateSelectorFieldTunner extends FormFieldTunnerAbstract {\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.label = Loc.getMessage('WEBF_RES_DATE');\n\t\tthis.formLabel = Loc.getMessage('WEBF_RES_DATE_LABEL');\n\t\tthis.displayed = true;\n\t\tthis.displayCheckboxDisabled = true;\n\t}\n\n\tupdateConfig(params)\n\t{\n\t\tsuper.updateConfig();\n\t\tthis.style = params.style;\n\t\tthis.start = params.start;\n\t}\n\n\tbuildStatePopup(params)\n\t{\n\t\tparams.style = params.style || this.style;\n\t\tparams.start = params.start || this.start;\n\t\tthis.statePopup = new DateStatePopup(params);\n\t}\n\n\tgetValue ()\n\t{\n\t\treturn {\n\t\t\tlabel: this.getFormLabel(),\n\t\t\tstyle: this.statePopup.getStyle(),\n\t\t\tstart: this.statePopup.getStart()\n\t\t};\n\t}\n}\n\n\nclass DateStatePopup extends FormFieldTunnerPopupAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'dateStatePopup';\n\t\tthis.styleInputName = 'date-select-style';\n\t\tthis.startInputName = 'date-select-start';\n\t\tthis.style = params.style === 'popup' ? 'popup' : 'line'; // popup|line\n\t\tthis.start = params.start === 'today' ? 'today' : 'free'; // today|free\n\t\tthis.build();\n\t}\n\n\tgetMenuItems()\n\t{\n\t\treturn [\n\t\t\tnew MenuItem({\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_CALENDAR_STYLE'),\n\t\t\t\tdelimiter: true\n\t\t\t}),\n\t\t\t{\n\t\t\t\tid: 'date-state-style-popup',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_CALENDAR_STYLE_POPUP'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'popup',\n\t\t\t\t\tinputName: this.styleInputName,\n\t\t\t\t\tchecked: this.style === 'popup'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'date-state-style-line',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_CALENDAR_STYLE_LINE'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'line',\n\t\t\t\t\tinputName: this.styleInputName,\n\t\t\t\t\tchecked: this.style === 'line'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\tnew MenuItem({\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_CALENDAR_START_FROM'),\n\t\t\t\tdelimiter: true\n\t\t\t}),\n\t\t\t{\n\t\t\t\tid: 'date-state-start-from-today',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_CALENDAR_START_FROM_TODAY'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'today',\n\t\t\t\t\tinputName: this.startInputName,\n\t\t\t\t\tchecked: this.start === 'today'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'date-state-start-from-free',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_CALENDAR_START_FROM_FREE'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'free',\n\t\t\t\t\tinputName: this.startInputName,\n\t\t\t\t\tchecked: this.start === 'free'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t}\n\t\t];\n\t}\n\n\tgetCurrentModeState()\n\t{\n\t\treturn (this.style === 'popup'\n\t\t\t? Loc.getMessage('WEBF_RES_CALENDAR_STYLE_POPUP')\n\t\t\t: Loc.getMessage('WEBF_RES_CALENDAR_STYLE_LINE'))\n\t\t\t+ ', '\n\t\t\t+ (this.start === 'today'\n\t\t\t\t? Loc.getMessage('WEBF_RES_CALENDAR_START_FROM_TODAY_SHORT')\n\t\t\t\t: Loc.getMessage('WEBF_RES_CALENDAR_START_FROM_FREE_SHORT'));\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tsuper.handleControlChanges();\n\t\tDom.adjust(this.DOM.currentStateLink, {text: this.getCurrentModeState()});\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (Type.isDomNode(target) && target.nodeName.toLowerCase() === 'input'\n\t\t\t&& menuItem.dataset)\n\t\t{\n\t\t\tif (menuItem.dataset.inputName === this.styleInputName)\n\t\t\t{\n\t\t\t\tthis.style = menuItem.dataset.value;\n\t\t\t}\n\t\t\telse if (menuItem.dataset.inputName === this.startInputName)\n\t\t\t{\n\t\t\t\tthis.start = menuItem.dataset.value;\n\t\t\t}\n\t\t}\n\t\tthis.handleControlChanges();\n\t}\n\n\tgetStyle()\n\t{\n\t\treturn this.style;\n\t}\n\n\tgetStart()\n\t{\n\t\treturn this.start;\n\t}\n}\n\n","import {FormFieldTunnerAbstract} from \"../formfieldtunnerabstract\";\nimport {FormFieldTunnerPopupAbstract} from \"../formfieldtunnerpopupabstract\";\nimport {BookingUtil} from \"calendar.resourcebooking\";\nimport {Loc, Type} from \"main.core\";\nimport {MenuItem} from \"main.popup\";\n\nexport class TimeSelectorFieldTunner extends FormFieldTunnerAbstract {\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.label = Loc.getMessage('WEBF_RES_TIME');\n\t\tthis.formLabel = Loc.getMessage('WEBF_RES_TIME_LABEL');\n\t\tthis.displayed = true;\n\t\tthis.displayCheckboxDisabled = true;\n\t}\n\n\tupdateConfig(params)\n\t{\n\t\tsuper.updateConfig();\n\t\tthis.style = params.style;\n\t\tthis.showOnlyFree = params.showOnlyFree === 'Y';\n\t\tthis.showFinishTime = params.showFinishTime === 'Y';\n\t\tthis.scale = parseInt(params.scale);\n\t}\n\n\tbuildStatePopup(params)\n\t{\n\t\tparams.style = params.style || this.style;\n\t\tparams.showOnlyFree = this.showOnlyFree;\n\t\tparams.showFinishTime = this.showFinishTime;\n\t\tparams.scale = this.scale;\n\t\tthis.statePopup = new TimeStatePopup(params);\n\t}\n\n\tgetValue()\n\t{\n\t\treturn {\n\t\t\tlabel: this.getFormLabel(),\n\t\t\tstyle: this.statePopup.getStyle(),\n\t\t\tshowFinishTime: this.statePopup.getShowFinishTime(),\n\t\t\tshowOnlyFree: this.statePopup.getShowOnlyFree(),\n\t\t\tscale: this.statePopup.getScale()\n\t\t};\n\t}\n}\n\n\nclass TimeStatePopup extends FormFieldTunnerPopupAbstract\n{\n\tconstructor(params)\n\t{\n\t\tsuper(params);\n\t\tthis.name = 'timeStatePopup';\n\t\tthis.styleInputName = 'date-select-style';\n\n\t\tthis.showOnlyFree = params.showOnlyFree;\n\t\tthis.showFinishTime = params.showFinishTime;\n\t\tthis.scale = params.scale;\n\t\tthis.stateShowFreeId = 'time-state-show-free';\n\t\tthis.stateShowFinishId = 'time-state-show-finish';\n\t\tthis.style = params.style === 'select' ? 'select' : 'slots'; // select|slots\n\n\t\tthis.build();\n\t}\n\n\tbuild()\n\t{\n\t\tsuper.build();\n\t\tthis.handleControlChanges();\n\t}\n\n\tgetMenuItems()\n\t{\n\t\treturn [\n\t\t\tnew MenuItem({\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_TIME_STYLE'),\n\t\t\t\tdelimiter: true\n\t\t\t}),\n\t\t\t{\n\t\t\t\tid: 'time-state-style-select',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_TIME_STYLE_SELECT'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'select',\n\t\t\t\t\tinputName: this.styleInputName,\n\t\t\t\t\tchecked: this.style === 'select'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'time-state-style-slots',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_TIME_STYLE_SLOT'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tvalue: 'slots',\n\t\t\t\t\tinputName: this.styleInputName,\n\t\t\t\t\tchecked: this.style === 'slots'\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\t{\n\t\t\t\tdelimiter: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'time-state-scale',\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_TIME_BOOKING_SIZE'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'submenu-list',\n\t\t\t\t\tvalue: this.scale,\n\t\t\t\t\ttextValue: this.getDurationLabelByValue(this.scale)\n\t\t\t\t},\n\t\t\t\titems: this.getDurationMenuItems()\n\t\t\t},\n\t\t\t{\n\t\t\t\tdelimiter: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: this.stateShowFreeId,\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_TIME_SHOW_FREE_ONLY'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tvalue: 'Y',\n\t\t\t\t\tchecked: this.showOnlyFree\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: this.stateShowFinishId,\n\t\t\t\ttext: Loc.getMessage('WEBF_RES_TIME_SHOW_FINISH_TIME'),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tvalue: 'Y',\n\t\t\t\t\tchecked: this.showFinishTime\n\t\t\t\t},\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t}\n\t\t];\n\t}\n\n\tgetCurrentModeState()\n\t{\n\t\treturn (this.style === 'select'\n\t\t\t? Loc.getMessage('WEBF_RES_TIME_STYLE_SELECT')\n\t\t\t: Loc.getMessage('WEBF_RES_TIME_STYLE_SLOT'))\n\t\t\t+ ',<br>'\n\t\t\t+ Loc.getMessage('WEBF_RES_TIME_BOOKING_SIZE') + ': '\n\t\t\t+ this.getDurationLabelByValue(this.scale);\n\t}\n\n\thandleControlChanges()\n\t{\n\t\tsuper.handleControlChanges();\n\t\tthis.DOM.currentStateLink.innerHTML = this.getCurrentModeState();\n\t}\n\n\tmenuItemClick(e, menuItem)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (Type.isDomNode(target) && target.nodeName.toLowerCase() === 'input'\n\t\t\t&& menuItem.dataset)\n\t\t{\n\t\t\tif (menuItem.dataset.inputName === this.styleInputName)\n\t\t\t{\n\t\t\t\tthis.style = menuItem.dataset.value;\n\t\t\t}\n\t\t\telse if (menuItem.id === this.stateShowFreeId)\n\t\t\t{\n\t\t\t\tthis.showOnlyFree = !!target.checked;\n\t\t\t}\n\t\t\telse if (menuItem.id === this.stateShowFinishId)\n\t\t\t{\n\t\t\t\tthis.showFinishTime = !!target.checked;\n\t\t\t}\n\t\t}\n\t\telse if (menuItem.dataset && menuItem.dataset.type === 'scale')\n\t\t{\n\t\t\tthis.scale = parseInt(menuItem.dataset.value);\n\t\t}\n\n\t\tthis.handleControlChanges();\n\t}\n\n\n\tgetDurationMenuItems()\n\t{\n\t\tlet\n\t\t\tdurationList = this.getDurationList(),\n\t\t\tmenuItems = [];\n\n\t\tdurationList.forEach(function(duration){\n\t\t\tmenuItems.push({\n\t\t\t\tid: 'duration-' + duration.value,\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: 'scale',\n\t\t\t\t\tvalue: duration.value\n\t\t\t\t},\n\t\t\t\ttext: duration.label,\n\t\t\t\tonclick: this.menuItemClick.bind(this)\n\t\t\t});\n\t\t}, this);\n\n\t\treturn menuItems;\n\t}\n\n\n\tgetDurationList()\n\t{\n\t\tif (!this.durationList)\n\t\t{\n\t\t\tthis.durationList = BookingUtil.getDurationList(false);\n\t\t\tthis.durationList = this.durationList.filter(function(duration)\n\t\t\t{\n\t\t\t\treturn duration.value && duration.value >= 15 && duration.value <= 240;\n\t\t\t});\n\t\t}\n\t\treturn this.durationList;\n\t}\n\n\tgetDurationLabelByValue(duration)\n\t{\n\t\tlet foundDuration = this.getDurationList().find(function(item){return item.value === duration});\n\t\treturn foundDuration ? foundDuration.label : null;\n\t}\n\n\tgetStyle()\n\t{\n\t\treturn this.style;\n\t}\n\n\tgetScale()\n\t{\n\t\treturn this.scale;\n\t}\n\n\tgetShowOnlyFree()\n\t{\n\t\treturn this.showOnlyFree ? 'Y' : 'N';\n\t}\n\n\tgetShowFinishTime()\n\t{\n\t\treturn this.showFinishTime ? 'Y' : 'N';\n\t}\n}\n\n\n","import {BookingUtil, FieldViewControllerEdit, FieldViewControllerPreview, Dom, Loc, Type, BaseEvent, EventEmitter, Runtime} from \"calendar.resourcebooking\";\nimport {ResourcebookingUserfield} from \"./resourcebookinguserfield\";\nimport {UserSelectorFieldTunner} from \"./controls/userselectorfieldtunner\";\nimport {ResourceSelectorFieldTunner} from \"./controls/resourceselectorfieldtunner\";\nimport {ServiceSelectorFieldTunner} from \"./controls/serviceselectorfieldtunner\";\nimport {DurationSelectorFieldTunner} from \"./controls/durationselectorfieldtunner\";\nimport {DateSelectorFieldTunner} from \"./controls/dateselectorfieldtunner\";\nimport {TimeSelectorFieldTunner} from \"./controls/timeselectorfieldtunner\";\nimport 'helper';\n\nexport class AdjustFieldController extends EventEmitter\n{\n\tconstructor(params)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.ResourcebookingUserfield.AdjustFieldController');\n\n\t\tthis.params = params;\n\t\tthis.complexFields = {};\n\t\tthis.userFieldParams = null;\n\t\tthis.id = 'resbook-settings-popup-' + Math.round(Math.random() * 100000);\n\n\t\tthis.settingsData = AdjustFieldController.getSettingsData(this.params.settings.data);\n\t\tthis.params.settings.data = this.settingsData;\n\n\t\tthis.DOM = {\n\t\t\tinnerWrap: this.params.innerWrap,\n\t\t\tsettingsWrap: this.params.innerWrap.appendChild(Dom.create(\"div\", {attrs: {'data-bx-resource-field-settings': 'Y'}})),\n\t\t\tcaptionNode: this.params.captionNode,\n\t\t\tsettingsInputs: {}\n\t\t};\n\t}\n\n\tinit()\n\t{\n\t\t// Request field params\n\t\tthis.showFieldLoader();\n\n\t\tResourcebookingUserfield.getUserFieldParams({\n\t\t\tfieldName: this.params.entityName,\n\t\t\tselectedUsers: this.getSelectedUsers()\n\t\t}).then(\n\t\t\t(fieldParams) => {\n\t\t\t\tthis.hideFieldLoader();\n\t\t\t\tthis.userFieldParams = fieldParams;\n\n\t\t\t\tthis.fieldLayout = new FieldViewControllerEdit({\n\t\t\t\t\twrap: this.DOM.innerWrap,\n\t\t\t\t\tdisplayTitle: false,\n\t\t\t\t\ttitle: this.getCaption(),\n\t\t\t\t\tsettings: this.getSettings()\n\t\t\t\t});\n\t\t\t\tthis.fieldLayout.build();\n\t\t\t\tthis.updateSettingsDataInputs();\n\n\t\t\t\tthis.emit('afterInit', new BaseEvent({\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfieldName: this.params.entityName,\n\t\t\t\t\t\tsettings: this.getSettings()\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t}\n\t\t);\n\t}\n\n\tshowSettingsPopup()\n\t{\n\t\tResourcebookingUserfield.getUserFieldParams(\n\t\t{\n\t\t\tfieldName: this.params.entityName,\n\t\t\tselectedUsers: this.getSelectedUsers()\n\t\t}).then(\n\t\t\tfunction(fieldParams)\n\t\t\t{\n\t\t\t\tthis.userFieldParams = fieldParams;\n\t\t\t\tthis.settingsPopupId = 'calendar-resourcebooking-settings-popup-' + Math.round(Math.random() * 100000);\n\t\t\t\tthis.settingsPopup = new BX.PopupWindow(\n\t\t\t\t\tthis.settingsPopupId,\n\t\t\t\t\tnull,\n\t\t\t\t\t{\n\t\t\t\t\t\tcontent: this.getSettingsContentNode(),\n\t\t\t\t\t\tclassName: 'calendar-resbook-webform-settings-popup-window',\n\t\t\t\t\t\tautoHide: false,\n\t\t\t\t\t\tlightShadow: true,\n\t\t\t\t\t\tcloseByEsc: true,\n\t\t\t\t\t\toverlay: {backgroundColor: 'black', opacity: 500},\n\t\t\t\t\t\tzIndex: -400,\n\t\t\t\t\t\ttitleBar: Loc.getMessage('WEBF_RES_SETTINGS'),\n\t\t\t\t\t\tcloseIcon: true,\n\t\t\t\t\t\tbuttons : [new BX.PopupWindowButton({})]\n\t\t\t\t\t});\n\n\t\t\t\tlet buttonNodeWrap = this.settingsPopup.buttons[0].buttonNode.parentNode;\n\t\t\t\tDom.remove(this.settingsPopup.buttons[0].buttonNode);\n\t\t\t\tthis.settingsPopup.buttons[0].buttonNode = buttonNodeWrap.appendChild(Dom.create(\n\t\t\t\t\t\"button\",\n\t\t\t\t\t{\n\t\t\t\t\t\tprops : { className : 'ui-btn ui-btn-success'},\n\t\t\t\t\t\tevents: {click: function(){this.settingsPopup.close();}.bind(this)},\n\t\t\t\t\t\ttext : Loc.getMessage('WEBF_RES_CLOSE_SETTINGS_POPUP')\n\t\t\t\t\t}\n\t\t\t\t));\n\n\t\t\t\tBX.removeClass(this.settingsPopup.buttons[0].buttonNode, 'popup-window-button');\n\t\t\t\tthis.settingsPopup.show();\n\n\t\t\t\tBX.addCustomEvent(this.settingsPopup, 'onPopupClose', function(popup)\n\t\t\t\t{\n\t\t\t\t\tthis.destroyControls();\n\t\t\t\t\tthis.settingsPopup.destroy(this.id);\n\t\t\t\t\tthis.settingsPopup = null;\n\t\t\t\t\tif (this.previewFieldLayout)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.previewFieldLayout.destroy();\n\t\t\t\t\t}\n\t\t\t\t}.bind(this));\n\t\t\t}.bind(this)\n\t\t);\n\t}\n\n\tgetSettingsContentNode()\n\t{\n\t\tlet outerWrap = Dom.create(\"div\", {props : { className : 'calendar-resbook-webform-settings-popup'}});\n\n\t\tlet leftWrap = outerWrap.appendChild(Dom.create(\"div\", {props : { className : 'calendar-resbook-webform-settings-popup-inner'}}));\n\t\tthis.buildSettingsForm({wrap: leftWrap});\n\n\t\tlet previewWrap = outerWrap.appendChild(Dom.create(\"div\", {props : { className : 'calendar-resbook-webform-settings-popup-preview'}}));\n\n\t\tthis.previewFieldLayout = new FieldViewControllerPreview({\n\t\t\twrap: previewWrap,\n\t\t\ttitle: this.getCaption(),\n\t\t\tsettings: this.getSettings()\n\t\t});\n\t\tthis.previewFieldLayout.build();\n\n\t\tBX.addCustomEvent('ResourceBooking.webformSettings:onChanged', this.handleWebformSettingsChanges.bind(this));\n\n\t\treturn outerWrap;\n\t}\n\n\tbuildSettingsForm(params)\n\t{\n\t\tlet\n\t\t\tsettings = this.getSettings(),\n\t\t\twrap = params.wrap,\n\t\t\ttitleId = 'title-' + this.id;\n\n\t\tthis.DOM.captionWrap = wrap.appendChild(Dom.create(\"div\", {\n\t\t\tprops : { className : 'calendar-resbook-webform-settings-popup-title'},\n\t\t\thtml: '<label for=\"' + titleId + '\" class=\"calendar-resbook-webform-settings-popup-label\">' + Loc.getMessage('WEBF_RES_NAME_LABEL') + '</label>'\n\t\t}));\n\t\tthis.DOM.captionInput = this.DOM.captionWrap.appendChild(Dom.create(\"input\", {\n\t\t\tattrs: {\n\t\t\t\tid: titleId,\n\t\t\t\tclassName: 'calendar-resbook-webform-settings-popup-input',\n\t\t\t\ttype: 'text',\n\t\t\t\tvalue: this.getCaption()\n\t\t\t},\n\t\t\tevents: {\n\t\t\t\tchange: this.updateCaption.bind(this),\n\t\t\t\tblur: this.updateCaption.bind(this),\n\t\t\t\tkeyup: this.updateCaption.bind(this)\n\t\t\t}\n\t\t}));\n\t\tthis.updateCaption();\n\n\t\tthis.DOM.fieldsOuterWrap = wrap.appendChild(Dom.create('div', {\n\t\t\tprops : { className : 'calendar-resbook-webform-settings-popup-content'},\n\t\t\thtml: '<div class=\"calendar-resbook-webform-settings-popup-head\">' +\n\t\t\t\t'<div class=\"calendar-resbook-webform-settings-popup-head-inner\">' +\n\t\t\t\t'<span class=\"calendar-resbook-webform-settings-popup-head-text\">' + Loc.getMessage('WEBF_RES_FIELD_NAME') + '</span>' +\n\t\t\t\t'<span class=\"calendar-resbook-webform-settings-popup-head-decs\">' + Loc.getMessage('WEBF_RES_FIELD_NAME_IN_FORM') + '</span>' +\n\t\t\t\t'</div>' +\n\t\t\t\t'<div class=\"calendar-resbook-webform-settings-popup-head-inner\">' +\n\t\t\t\t'<span class=\"calendar-resbook-webform-settings-popup-head-text\">' + Loc.getMessage('WEBF_RES_FIELD_SHOW_IN_FORM') + '</span>' +\n\t\t\t\t'</div>' +\n\t\t\t\t'</div>'\n\t\t}));\n\n\t\tthis.DOM.fieldsWrap = this.DOM.fieldsOuterWrap.appendChild(Dom.create('div', {\n\t\t\tprops : { className : 'calendar-resbook-webform-settings-popup-list'}\n\t\t}));\n\n\t\tif (settings.userfieldSettings.useUsers)\n\t\t{\n\t\t\tthis.buildComplexField('users', {\n\t\t\t\twrap: this.DOM.fieldsWrap,\n\t\t\t\tchangeSettingsCallback: this.updateSettings.bind(this),\n\t\t\t\tparams: settings.data.users,\n\t\t\t\tconfig: {\n\t\t\t\t\tusers: settings.userfieldSettings.users,\n\t\t\t\t\tselected: settings.data.users.value\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tBX.addCustomEvent('ResourceBooking.settingsUserSelector:onChanged', this.checkBitrix24Limitation.bind(this));\n\t\t}\n\n\t\tif (settings.userfieldSettings.useResources)\n\t\t{\n\t\t\tthis.buildComplexField('resources', {\n\t\t\t\twrap: this.DOM.fieldsWrap,\n\t\t\t\tchangeSettingsCallback: this.updateSettings.bind(this),\n\t\t\t\tparams: settings.data.resources,\n\t\t\t\tconfig: {\n\t\t\t\t\tresources: settings.userfieldSettings.resources,\n\t\t\t\t\tselected: settings.data.resources.value\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (settings.userfieldSettings.useServices)\n\t\t{\n\t\t\tthis.buildComplexField('services', {\n\t\t\t\twrap: this.DOM.fieldsWrap,\n\t\t\t\tchangeSettingsCallback: this.updateSettings.bind(this),\n\t\t\t\tparams: settings.data.services,\n\t\t\t\tconfig: {\n\t\t\t\t\tservices: settings.userfieldSettings.services,\n\t\t\t\t\tselected: settings.data.services.value\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.buildComplexField('duration', {\n\t\t\t\twrap: this.DOM.fieldsWrap,\n\t\t\t\tchangeSettingsCallback: this.updateSettings.bind(this),\n\t\t\t\tparams: settings.data.duration\n\t\t\t});\n\t\t}\n\n\t\tthis.buildComplexField('date', {\n\t\t\twrap: this.DOM.fieldsWrap,\n\t\t\tchangeSettingsCallback: this.updateSettings.bind(this),\n\t\t\tparams: settings.data.date\n\t\t});\n\n\t\tif (!settings.userfieldSettings.fullDay)\n\t\t{\n\t\t\tthis.buildComplexField('time', {\n\t\t\t\twrap: this.DOM.fieldsWrap,\n\t\t\t\tchangeSettingsCallback: this.updateSettings.bind(this),\n\t\t\t\tparams: settings.data.time\n\t\t\t});\n\t\t}\n\n\t\tthis.DOM.fieldsWrap.appendChild(Dom.create('div', {\n\t\t\tprops : { className : 'calendar-resbook-webform-settings-popup-item'},\n\t\t\thtml: '<div class=\"calendar-resbook-webform-settings-popup-decs\">' +\n\t\t\t\t(Loc.getMessage('WEBF_RES_BOOKING_SETTINGS_HELP')\n\t\t\t\t\t.replace('#START_LINK#', '<a href=\"javascript:void(0);\"' +\n\t\t\t\t\t\t' onclick=\"if (top.BX.Helper){top.BX.Helper.show(\\'redirect=detail&code=8366733\\');}\">')\n\t\t\t\t\t.replace('#END_LINK#', '</a>')) +\n\t\t\t\t'</div>'\n\t\t}));\n\t}\n\n\tdestroyControls()\n\t{\n\t\tfor (let k in this.complexFields)\n\t\t{\n\t\t\tif (this.complexFields.hasOwnProperty(k) && Type.isFunction(this.complexFields[k].destroy))\n\t\t\t{\n\t\t\t\tthis.complexFields[k].destroy();\n\t\t\t}\n\t\t}\n\t}\n\n\thandleWebformSettingsChanges()\n\t{\n\t\tif (this.refreshLayoutTimeout)\n\t\t{\n\t\t\tthis.refreshLayoutTimeout = clearTimeout(this.refreshLayoutTimeout);\n\t\t}\n\n\t\tthis.refreshLayoutTimeout = setTimeout(function()\n\t\t{\n\t\t\t// Update settings and inputs\n\t\t\tfor (let k in this.complexFields)\n\t\t\t{\n\t\t\t\tif (this.complexFields.hasOwnProperty(k) && Type.isFunction(this.complexFields[k].getValue))\n\t\t\t\t{\n\t\t\t\t\tthis.settingsData[k] = this.complexFields[k].getValue();\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateSettingsDataInputs();\n\n\t\t\t// Refresh preview\n\t\t\tthis.previewFieldLayout.refreshLayout(this.settingsData);\n\t\t\t// Refresh form layout (behind the settings popup)\n\t\t\tthis.fieldLayout.refreshLayout(this.settingsData);\n\n\t\t\t// Small Hack to make form look better - height adjusment\n\t\t\tthis.previewFieldLayout.getOuterWrap().style.maxHeight = Math.round(this.previewFieldLayout.getInnerWrap().offsetHeight * 0.73) + 'px';\n\t\t}.bind(this), 100);\n\t}\n\n\tbuildComplexField(type, params)\n\t{\n\t\tswitch(type)\n\t\t{\n\t\t\tcase 'users':\n\t\t\t\tthis.complexFields[type] = new UserSelectorFieldTunner();\n\t\t\t\tbreak;\n\t\t\tcase 'resources':\n\t\t\t\tthis.complexFields[type] = new ResourceSelectorFieldTunner();\n\t\t\t\tbreak;\n\t\t\tcase 'services':\n\t\t\t\tthis.complexFields[type] = new ServiceSelectorFieldTunner();\n\t\t\t\tbreak;\n\t\t\tcase 'duration':\n\t\t\t\tthis.complexFields[type] = new DurationSelectorFieldTunner();\n\t\t\t\tbreak;\n\t\t\tcase 'date':\n\t\t\t \tthis.complexFields[type] = new DateSelectorFieldTunner();\n\t\t\t \tbreak;\n\t\t\tcase 'time':\n\t\t\t\tthis.complexFields[type] = new TimeSelectorFieldTunner();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (Type.isObject(this.complexFields[type]))\n\t\t{\n\t\t\tthis.complexFields[type].build(params);\n\t\t}\n\t}\n\n\tstatic getSettingsData(data)\n\t{\n\t\tlet\n\t\t\tfield, option,\n\t\t\tsettingsData = BX.clone(AdjustFieldController.getDefaultSettingsData(), true);\n\n\t\tif (Type.isPlainObject(data))\n\t\t{\n\t\t\tfor (field in data)\n\t\t\t{\n\t\t\t\tif (data.hasOwnProperty(field) && settingsData[field])\n\t\t\t\t{\n\t\t\t\t\tif (Type.isPlainObject(data[field]))\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (option in data[field])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (data[field].hasOwnProperty(option))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsettingsData[field][option] = data[field][option];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tsettingsData[field] = data[field];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn settingsData;\n\t}\n\n\tstatic getDefaultSettingsData()\n\t{\n\t\treturn {\n\t\t\tusers : {\n\t\t\t\tshow: 'Y',\n\t\t\t\tlabel: Loc.getMessage('WEBF_RES_USERS_LABEL'),\n\t\t\t\tdefaultMode: 'auto', // none|auto\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tshow: 'Y',\n\t\t\t\tlabel: Loc.getMessage('WEBF_RES_RESOURCES_LABEL'),\n\t\t\t\tdefaultMode: 'auto', // none|auto\n\t\t\t\tmultiple: 'N',\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tservices: {\n\t\t\t\tshow: 'Y',\n\t\t\t\tlabel: Loc.getMessage('WEBF_RES_SERVICE_LABEL'),\n\t\t\t\tvalue: null\n\t\t\t},\n\t\t\tduration: {\n\t\t\t\tshow: 'Y',\n\t\t\t\tlabel: Loc.getMessage('WEBF_RES_DURATION_LABEL'),\n\t\t\t\tdefaultValue: 60,\n\t\t\t\tmanualInput: 'N'\n\t\t\t},\n\t\t\tdate: {\n\t\t\t\tlabel: Loc.getMessage('WEBF_RES_DATE_LABEL'),\n\t\t\t\tstyle: 'line', // line|popup\n\t\t\t\tstart: 'today'\n\t\t\t},\n\t\t\ttime: {\n\t\t\t\tlabel: Loc.getMessage('WEBF_RES_TIME_LABEL'),\n\t\t\t\tstyle: 'slots',\n\t\t\t\tshowOnlyFree: 'Y',\n\t\t\t\tshowFinishTime: 'N',\n\t\t\t\tscale: 60\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSelectedUsers()\n\t{\n\t\treturn this.settingsData && this.settingsData.users && Type.isString(this.settingsData.users.value) ? this.settingsData.users.value.split('|') : [];\n\t}\n\n\tupdateSettingsDataInputs()\n\t{\n\t\tlet field, option;\n\t\tfor (field in this.settingsData)\n\t\t{\n\t\t\tif (this.settingsData.hasOwnProperty(field))\n\t\t\t{\n\t\t\t\tif (Type.isPlainObject(this.settingsData[field]))\n\t\t\t\t{\n\t\t\t\t\tfor (option in this.settingsData[field])\n\t\t\t\t\t{\n\t\t\t\t\t\tif (this.settingsData[field].hasOwnProperty(option))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.updateSettingsInputValue([field, option], this.settingsData[field][option]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.updateSettingsInputValue([field], this.settingsData[field]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateSettingsInputValue(key, value)\n\t{\n\t\tlet uniKey = key.join('-');\n\t\tif (!this.DOM.settingsInputs[uniKey])\n\t\t{\n\t\t\tthis.DOM.settingsInputs[uniKey] = this.DOM.settingsWrap.appendChild(Dom.create('input', {\n\t\t\t\tattrs: {\n\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\tname: this.params.formName + '[SETTINGS_DATA][' + key.join('][') + ']'\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\n\t\tif (Type.isArray(value))\n\t\t{\n\t\t\tvalue = value.join('|');\n\t\t}\n\n\t\tthis.DOM.settingsInputs[uniKey].value = value;\n\t}\n\n\tshowFieldLoader()\n\t{\n\t\tif (this.DOM.innerWrap)\n\t\t{\n\t\t\tthis.hideFieldLoader();\n\t\t\tthis.DOM.fieldLoader = this.DOM.innerWrap.appendChild(BookingUtil.getLoader(100));\n\t\t}\n\t}\n\n\thideFieldLoader()\n\t{\n\t\tDom.remove(this.DOM.fieldLoader);\n\t}\n\n\tgetSettings()\n\t{\n\t\tif (!this.params.settings.userfieldSettings)\n\t\t{\n\t\t\tthis.params.settings.userfieldSettings = {\n\t\t\t\tresources: this.userFieldParams.SETTINGS.SELECTED_RESOURCES,\n\t\t\t\tusers: this.userFieldParams.SETTINGS.SELECTED_USERS,\n\t\t\t\tservices: this.userFieldParams.SETTINGS.SERVICE_LIST,\n\t\t\t\tfullDay: this.userFieldParams.SETTINGS.FULL_DAY === 'Y',\n\t\t\t\tuseResources: this.userFieldParams.SETTINGS.USE_RESOURCES === 'Y'\n\t\t\t\t\t&& this.userFieldParams.SETTINGS.SELECTED_RESOURCES.length,\n\t\t\t\tuseUsers: this.userFieldParams.SETTINGS.USE_USERS === 'Y',\n\t\t\t\tuseServices: this.userFieldParams.SETTINGS.USE_SERVICES === 'Y',\n\t\t\t\tresourceLimit: this.userFieldParams.SETTINGS.RESOURCE_LIMIT,\n\t\t\t\tuserIndex: this.userFieldParams.SETTINGS.USER_INDEX\n\t\t\t}\n\t\t}\n\n\t\treturn this.params.settings;\n\t}\n\n\tupdateSettings(settings)\n\t{\n\t}\n\n\tgetCaption()\n\t{\n\t\treturn this.params.settings.caption;\n\t}\n\n\tupdateCaption()\n\t{\n\t\tlet caption = this.DOM.captionInput.value;\n\t\tif (this.params.settings.caption !== caption || !this.DOM.settingsInputs.caption)\n\t\t{\n\t\t\tthis.params.settings.caption = caption;\n\t\t\tif (this.previewFieldLayout)\n\t\t\t{\n\t\t\t\tthis.previewFieldLayout.updateTitle(this.params.settings.caption);\n\t\t\t}\n\n\t\t\t// Update title\n\t\t\tif (!this.DOM.settingsInputs.caption)\n\t\t\t{\n\t\t\t\tthis.DOM.settingsInputs.caption = this.DOM.settingsWrap.appendChild(Dom.create(\"input\", {\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\ttype: \"hidden\",\n\t\t\t\t\t\tname: this.params.formName + '[CAPTION]'\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t}\n\t\t\tthis.DOM.settingsInputs.caption.value = this.params.settings.caption;\n\n\t\t\tif (this.DOM.captionNode)\n\t\t\t{\n\t\t\t\tDom.adjust(this.DOM.captionNode, {text: this.params.settings.caption});\n\t\t\t}\n\t\t}\n\t}\n\n\tisRequired()\n\t{\n\t\treturn this.params.settings.required === 'Y';\n\t}\n\n\tupdateRequiredValue()\n\t{\n\t\tthis.params.settings.required = this.DOM.requiredCheckbox.checked ? 'Y' : 'N';\n\t\tif (!this.DOM.settingsInputs.required)\n\t\t{\n\t\t\tthis.DOM.settingsInputs.required = this.DOM.settingsWrap.appendChild(Dom.create(\"input\", {\n\t\t\t\tattrs: {\n\t\t\t\t\ttype: \"hidden\",\n\t\t\t\t\tname: this.params.formName + '[REQUIRED]'\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\t\tthis.DOM.settingsInputs.required.value = this.params.settings.required;\n\t}\n\n\tcheckBitrix24Limitation()\n\t{\n\t\tlet\n\t\t\tcount = 0,\n\t\t\tsettings = this.getSettings();\n\n\t\tif (Type.isArray(this.params.settings.userfieldSettings.resources))\n\t\t{\n\t\t\tcount += this.params.settings.userfieldSettings.resources.length;\n\t\t}\n\n\t\tif (settings.userfieldSettings.useUsers && this.complexFields.users)\n\t\t{\n\t\t\tlet usersValue = this.complexFields.users.getValue();\n\t\t\tif (usersValue && Type.isArray(usersValue.value))\n\t\t\t{\n\t\t\t\tcount += usersValue.value.length;\n\t\t\t}\n\t\t}\n\n\t\tif (settings.userfieldSettings.resourceLimit > 0 && count > settings.userfieldSettings.resourceLimit)\n\t\t{\n\t\t\tBookingUtil.showLimitationPopup();\n\t\t}\n\t}\n}","import { BookingUtil, Event, Loc, Dom } from 'calendar.resourcebooking';\n\nexport class UserSelectorFieldEditControl\n{\n\tconstructor(params)\n\t{\n\t\tthis.params = params || {};\n\t\tthis.id = this.params.id || 'user-selector-' + Math.round(Math.random() * 100000);\n\t\tthis.wrapNode = this.params.wrapNode;\n\t\tthis.destinationInputName = this.params.inputName || 'EVENT_DESTINATION';\n\t\tthis.params.selectGroups = false;\n\t\tthis.addMessage = this.params.addMessage || BX.message('USER_TYPE_RESOURCE_ADD_USER');\n\t\tthis.checkLimit = BX.type.isFunction(params.checkLimitCallback) ? params.checkLimitCallback : false;\n\n\t\tif (!this.params.itemsSelected)\n\t\t{\n\t\t\tthis.params.itemsSelected = this.getSocnetDestinationConfig('itemsSelected');\n\t\t}\n\n\t\tthis.DOM = {\n\t\t\touterWrap: this.params.outerWrap,\n\t\t\twrapNode: this.params.wrapNode\n\t\t};\n\n\t\tthis.create();\n\t}\n\n\tcreate ()\n\t{\n\t\tif (this.DOM.outerWrap)\n\t\t{\n\t\t\tDom.addClass(this.DOM.outerWrap, 'calendar-resourcebook-folding-block' + (this.params.shown !== false ? ' shown' : ''));\n\t\t}\n\n\t\tlet id = this.id;\n\n\t\tBX.bind(this.wrapNode, 'click', BX.delegate(function (e)\n\t\t{\n\t\t\tlet target = e.target || e.srcElement;\n\t\t\tif (target.className === 'calendar-resourcebook-content-block-control-delete') // Delete button\n\t\t\t{\n\t\t\t\tBX.SocNetLogDestination.deleteItem(target.getAttribute('data-item-id'), target.getAttribute('data-item-type'), id);\n\t\t\t\tlet block = BX.findParent(target, {className: 'calendar-resourcebook-content-block-control-inner'});\n\t\t\t\tif (block && BX.hasClass(block, 'shown'))\n\t\t\t\t{\n\t\t\t\t\tBX.removeClass(block, 'shown');\n\t\t\t\t\tsetTimeout(function(){BX.remove(block);}, 300);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.SocNetLogDestination.openDialog(id);\n\t\t\t}\n\t\t}, this));\n\n\t\tthis.socnetDestinationInputWrap = this.wrapNode.appendChild(BX.create('SPAN', {props: {className: 'calendar-resourcebook-destination-input-box'}}));\n\t\tthis.socnetDestinationInput = this.socnetDestinationInputWrap.appendChild(BX.create('INPUT', {\n\t\t\tprops: {\n\t\t\t\tid: id + '-inp',\n\t\t\t\tclassName: 'calendar-resourcebook-destination-input'\n\t\t\t},\n\t\t\tattrs: {\n\t\t\t\tvalue: '',\n\t\t\t\ttype: 'text'\n\t\t\t},\n\t\t\tevents: {\n\t\t\t\tkeydown: function (e)\n\t\t\t\t{\n\t\t\t\t\treturn BX.SocNetLogDestination.searchBeforeHandler(e, {\n\t\t\t\t\t\tformName: id, inputId: id + '-inp'\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tkeyup: function (e)\n\t\t\t\t{\n\t\t\t\t\treturn BX.SocNetLogDestination.searchHandler(e, {\n\t\t\t\t\t\tformName: id,\n\t\t\t\t\t\tinputId: id + '-inp',\n\t\t\t\t\t\tlinkId: 'event-grid-dest-add-link',\n\t\t\t\t\t\tsendAjax: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tthis.socnetDestinationLink = this.wrapNode.appendChild(BX.create('DIV', {\n\t\t\tprops: {className: 'calendar-resourcebook-content-block-control-text calendar-resourcebook-content-block-control-text-add'},\n\t\t\ttext: this.addMessage\n\t\t}));\n\n\t\tthis.init();\n\t}\n\n\tshow ()\n\t{\n\t\tif (this.DOM.outerWrap)\n\t\t{\n\t\t\tDom.addClass(this.DOM.outerWrap, 'shown');\n\t\t}\n\t}\n\n\thide ()\n\t{\n\t\tif (this.DOM.outerWrap)\n\t\t{\n\t\t\tBX.removeClass(this.DOM.outerWrap, 'shown');\n\t\t}\n\t}\n\n\tisShown ()\n\t{\n\t\tif (this.DOM.outerWrap)\n\t\t{\n\t\t\treturn BX.hasClass(this.DOM.outerWrap, 'shown');\n\t\t}\n\t}\n\n\tinit ()\n\t{\n\t\tif (!this.socnetDestinationInput || !this.wrapNode)\n\t\t\treturn;\n\n\t\tlet _this = this;\n\n\t\tthis.params.items = this.getSocnetDestinationConfig('items');\n\t\tthis.params.itemsLast = this.getSocnetDestinationConfig('itemsLast');\n\n\t\tif (this.params.selectGroups === false)\n\t\t{\n\t\t\tthis.params.items.groups = {};\n\t\t\tthis.params.items.department = {};\n\t\t\tthis.params.items.sonetgroups = {};\n\t\t}\n\n\t\tBX.SocNetLogDestination.init({\n\t\t\tname: this.id,\n\t\t\tsearchInput: this.socnetDestinationInput,\n\t\t\textranetUser: false,\n\t\t\tuserSearchArea: 'I',\n\t\t\tbindMainPopup: {\n\t\t\t\tnode: this.wrapNode, offsetTop: '5px', offsetLeft: '15px'\n\t\t\t},\n\t\t\tbindSearchPopup: {\n\t\t\t\tnode: this.wrapNode, offsetTop: '5px', offsetLeft: '15px'\n\t\t\t},\n\t\t\tcallback: {\n\t\t\t\tselect: BX.proxy(this.selectCallback, this),\n\t\t\t\tunSelect: BX.proxy(this.unSelectCallback, this),\n\t\t\t\topenDialog: BX.proxy(this.openDialogCallback, this),\n\t\t\t\tcloseDialog: BX.proxy(this.closeDialogCallback, this),\n\t\t\t\topenSearch: BX.proxy(this.openDialogCallback, this),\n\t\t\t\tcloseSearch: function ()\n\t\t\t\t{\n\t\t\t\t\t_this.closeDialogCallback(true);\n\t\t\t\t}\n\t\t\t},\n\t\t\titems: this.params.items,\n\t\t\titemsLast: this.params.itemsLast,\n\t\t\titemsSelected: this.params.itemsSelected,\n\t\t\tdepartmentSelectDisable: this.params.selectGroups === false\n\t\t});\n\t}\n\n\tcloseAll ()\n\t{\n\t\tif (BX.SocNetLogDestination.isOpenDialog())\n\t\t{\n\t\t\tBX.SocNetLogDestination.closeDialog();\n\t\t}\n\t\tBX.SocNetLogDestination.closeSearch();\n\t}\n\n\tselectCallback(item, type)\n\t{\n\t\tif (type === 'users')\n\t\t{\n\t\t\tthis.addUserBlock(item);\n\t\t\tBX.onCustomEvent('OnResourceBookDestinationAddNewItem', [item, this.id]);\n\t\t\tthis.socnetDestinationInput.value = '';\n\t\t}\n\t}\n\n\taddUserBlock(item, animation)\n\t{\n\t\tif (this.checkLimit && !this.checkLimit())\n\t\t{\n\t\t\treturn BookingUtil.showLimitationPopup();\n\t\t}\n\n\t\tif (this.getAttendeesCodesList().includes(item.id))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst blocks = this.wrapNode.querySelectorAll(`calendar-resourcebook-content-block-control-inner[data-id='${item.id}']`);\n\t\tfor (let i = 0; i < blocks.length; i++)\n\t\t{\n\t\t\tBX.remove(blocks[i]);\n\t\t}\n\n\t\tconst itemWrap = this.wrapNode.appendChild(BX.create(\"DIV\", {\n\t\t\tattrs: {\n\t\t\t\t'data-id': item.id, className: \"calendar-resourcebook-content-block-control-inner green\"\n\t\t\t},\n\t\t\thtml: '<div class=\"calendar-resourcebook-content-block-control-text\">' + item.name + '</div>' + '<div data-item-id=\"' + item.id + '\" data-item-type=\"users\" class=\"calendar-resourcebook-content-block-control-delete\"></div>' + '<input type=\"hidden\" name=\"' + this.destinationInputName + '[U][]' + '\" value=\"' + item.id + '\">'\n\t\t}));\n\n\t\tif (animation !== false)\n\t\t{\n\t\t\tsetTimeout(BX.delegate(function (){Dom.addClass(itemWrap, 'shown');}, this), 1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(itemWrap, 'shown');\n\t\t}\n\n\t\tthis.wrapNode.appendChild(this.socnetDestinationInputWrap);\n\t\tthis.wrapNode.appendChild(this.socnetDestinationLink);\n\t}\n\n\tunSelectCallback(item)\n\t{\n\t\tlet elements = BX.findChildren(this.wrapNode, {attribute: {'data-id': item.id}}, true);\n\t\tif (elements != null)\n\t\t{\n\t\t\tfor (let j = 0; j < elements.length; j++)\n\t\t\t{\n\t\t\t\tBX.remove(elements[j]);\n\t\t\t}\n\t\t}\n\n\t\tBX.onCustomEvent('OnResourceBookDestinationUnselect', [item, this.id]);\n\t\tthis.socnetDestinationInput.value = '';\n\t\tthis.socnetDestinationLink.innerHTML = this.addMessage;\n\t}\n\n\topenDialogCallback ()\n\t{\n\t\tBX.style(this.socnetDestinationInputWrap, 'display', 'inline-block');\n\t\tBX.style(this.socnetDestinationLink, 'display', 'none');\n\t\tBX.focus(this.socnetDestinationInput);\n\t}\n\n\tcloseDialogCallback(cleanInputValue)\n\t{\n\t\tif (!BX.SocNetLogDestination.isOpenSearch() && this.socnetDestinationInput.value.length <= 0)\n\t\t{\n\t\t\tBX.style(this.socnetDestinationInputWrap, 'display', 'none');\n\t\t\tBX.style(this.socnetDestinationLink, 'display', 'inline-block');\n\t\t\tif (cleanInputValue === true)\n\t\t\t\tthis.socnetDestinationInput.value = '';\n\n\t\t\t// Disable backspace\n\t\t\tif (BX.SocNetLogDestination.backspaceDisable || BX.SocNetLogDestination.backspaceDisable != null)\n\t\t\t\tBX.unbind(window, 'keydown', BX.SocNetLogDestination.backspaceDisable);\n\n\t\t\tBX.bind(window, 'keydown', BX.SocNetLogDestination.backspaceDisable = function(e)\n\t\t\t{\n\t\t\t\tif (e.keyCode === 8)\n\t\t\t\t{\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetTimeout(function()\n\t\t\t{\n\t\t\t\tBX.unbind(window, 'keydown', BX.SocNetLogDestination.backspaceDisable);\n\t\t\t\tBX.SocNetLogDestination.backspaceDisable = null;\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\tgetCodes()\n\t{\n\t\tlet\n\t\t\tinputsList = this.wrapNode.getElementsByTagName('INPUT'),\n\t\t\tcodes = [], i, value;\n\n\t\tfor (i = 0; i < inputsList.length; i++)\n\t\t{\n\t\t\tvalue = BX.util.trim(inputsList[i].value);\n\t\t\tif (value)\n\t\t\t{\n\t\t\t\tcodes.push(inputsList[i].value);\n\t\t\t}\n\t\t}\n\t\treturn codes;\n\t}\n\n\tgetAttendeesCodes()\n\t{\n\t\tlet\n\t\t\tinputsList = this.wrapNode.getElementsByTagName('INPUT'),\n\t\t\tvalues = [],\n\t\t\ti;\n\n\t\tfor (i = 0; i < inputsList.length; i++)\n\t\t{\n\t\t\tvalues.push(inputsList[i].value);\n\t\t}\n\n\t\treturn this.convertAttendeesCodes(values);\n\t}\n\n\tconvertAttendeesCodes(values)\n\t{\n\t\tlet attendeesCodes = {};\n\n\t\tif (BX.type.isArray(values))\n\t\t{\n\t\t\tvalues.forEach(function(code){\n\t\t\t\tif (code.substr(0, 2) === 'DR')\n\t\t\t\t{\n\t\t\t\t\tattendeesCodes[code] = \"department\";\n\t\t\t\t}\n\t\t\t\telse if (code.substr(0, 2) === 'UA')\n\t\t\t\t{\n\t\t\t\t\tattendeesCodes[code] = \"groups\";\n\t\t\t\t}\n\t\t\t\telse if (code.substr(0, 2) === 'SG')\n\t\t\t\t{\n\t\t\t\t\tattendeesCodes[code] = \"sonetgroups\";\n\t\t\t\t}\n\t\t\t\telse if (code.substr(0, 1) === 'U')\n\t\t\t\t{\n\t\t\t\t\tattendeesCodes[code] = \"users\";\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn attendeesCodes;\n\t}\n\n\tgetAttendeesCodesList(codes)\n\t{\n\t\tlet result = [];\n\t\tif (!codes)\n\t\t\tcodes = this.getAttendeesCodes();\n\t\tfor (let i in codes)\n\t\t{\n\t\t\tif (codes.hasOwnProperty(i))\n\t\t\t{\n\t\t\t\tresult.push(i);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tgetSocnetDestinationConfig(key)\n\t{\n\t\tlet\n\t\t\tres,\n\t\t\tsocnetDestination = this.params.socnetDestination || {};\n\n\t\tif (key === 'items')\n\t\t{\n\t\t\tres = {\n\t\t\t\tusers: socnetDestination.USERS || {},\n\t\t\t\tgroups: socnetDestination.EXTRANET_USER === 'Y' || socnetDestination.DENY_TOALL\n\t\t\t\t\t? {}\n\t\t\t\t\t: {UA: {id: 'UA', name: BX.message('USER_TYPE_RESOURCE_TO_ALL_USERS')}},\n\t\t\t\tsonetgroups: socnetDestination.SONETGROUPS || {},\n\t\t\t\tdepartment: socnetDestination.DEPARTMENT || {},\n\t\t\t\tdepartmentRelation: socnetDestination.DEPARTMENT_RELATION || {}\n\t\t\t};\n\t\t}\n\t\telse if (key === 'itemsLast' && socnetDestination.LAST)\n\t\t{\n\t\t\tres = {\n\t\t\t\tusers: socnetDestination.LAST.USERS || {},\n\t\t\t\tgroups: socnetDestination.EXTRANET_USER === 'Y' ? {} : {UA: true},\n\t\t\t\tsonetgroups: socnetDestination.LAST.SONETGROUPS || {},\n\t\t\t\tdepartment: socnetDestination.LAST.DEPARTMENT || {}\n\t\t\t};\n\t\t}\n\t\telse if (key === 'itemsSelected')\n\t\t{\n\t\t\tres = socnetDestination.SELECTED || {};\n\t\t}\n\t\treturn res || {};\n\t}\n\n\tgetSelectedValues()\n\t{\n\t\tlet\n\t\t\tresult = [], i,\n\t\t\tinputs = this.wrapNode.querySelectorAll('input');\n\n\t\tfor (i = 0; i < inputs.length; i++)\n\t\t{\n\t\t\tif (inputs[i].type === 'hidden' && inputs[i].value)\n\t\t\t{\n\t\t\t\tif (inputs[i].value.substr(0, 1) === 'U')\n\t\t\t\t{\n\t\t\t\t\tresult.push(parseInt(inputs[i].value.substr(1)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tsetValues(userList, trigerOnChange)\n\t{\n\t\tlet i, user;\n\t\tconst blocks = this.wrapNode.querySelectorAll('.calendar-resourcebook-content-block-control-inner');\n\t\tfor (i = 0; i < blocks.length; i++)\n\t\t{\n\t\t\tBX.remove(blocks[i]);\n\t\t}\n\n\t\tfor (i = 0; i < userList.length; i++)\n\t\t{\n\t\t\tif (BX.SocNetLogDestination.obItems[this.id]['users'])\n\t\t\t{\n\t\t\t\tuser = BX.SocNetLogDestination.obItems[this.id]['users']['U' + userList[i]];\n\t\t\t\tif (user)\n\t\t\t\t{\n\t\t\t\t\tthis.addUserBlock({\n\t\t\t\t\t\tid: 'U' + userList[i],\n\t\t\t\t\t\tname: user.name\n\t\t\t\t\t}, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (trigerOnChange !== false && this.onChangeCallback && BX.type.isFunction(this.onChangeCallback))\n\t\t{\n\t\t\tsetTimeout(BX.proxy(this.onChangeCallback, this), 100);\n\t\t}\n\t}\n\n\tgetId()\n\t{\n\t\treturn this.id;\n\t}\n}","import {BookingUtil} from \"calendar.resourcebooking\";\n\nexport class ResourceSelectorFieldEditControl\n{\n\tconstructor(params)\n\t{\n\t\tthis.params = params || {};\n\t\tthis.editMode = !!this.params.editMode;\n\t\tthis.id = this.params.id || 'resource-selector-' + Math.round(Math.random() * 100000);\n\t\tthis.resourceList = BX.type.isArray(params.resourceList) ? params.resourceList : [];\n\t\tthis.checkLimit = BX.type.isFunction(params.checkLimitCallback) ? params.checkLimitCallback : false;\n\t\tthis.checkLimitForNew = BX.type.isFunction(params.checkLimitCallbackForNew) ? params.checkLimitCallbackForNew : false;\n\n\t\tthis.selectedValues = [];\n\t\tthis.selectedValuesIndex = {};\n\n\t\tthis.selectedBlocks = [];\n\t\tthis.newValues = [];\n\n\t\tthis.DOM = {\n\t\t\touterWrap: this.params.outerWrap,\n\t\t\tblocksWrap: this.params.blocksWrap || false,\n\t\t\tlistWrap: this.params.listWrap\n\t\t};\n\n\t\tif (this.editMode)\n\t\t{\n\t\t\tthis.DOM.controlsWrap = this.params.controlsWrap;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.DOM.arrowNode = BX.create(\"span\", {props: {className: \"calendar-resourcebook-content-block-detail-icon calendar-resourcebook-content-block-detail-icon-arrow\"}});\n\t\t}\n\n\t\tthis.onChangeCallback = this.params.onChangeCallback || null;\n\n\t\tthis.create();\n\t\tthis.setValues(params.values);\n\t}\n\n\n\tcreate ()\n\t{\n\t\tBX.addClass(this.DOM.outerWrap, 'calendar-resourcebook-resource-list-wrap calendar-resourcebook-folding-block' + (this.params.shown !== false ? ' shown' : ''));\n\n\t\tif (this.editMode)\n\t\t{\n\t\t\tthis.DOM.addButton = this.DOM.controlsWrap.appendChild(BX.create(\"span\", {\n\t\t\t\tprops: {className: \"calendar-resource-content-block-add-link\"},\n\t\t\t\ttext: BX.message('USER_TYPE_RESOURCE_ADD'),\n\t\t\t\tevents: {click: BX.delegate(this.addResourceBlock, this)}\n\t\t\t}));\n\n\t\t\tif (this.resourceList.length > 0)\n\t\t\t{\n\t\t\t\tthis.DOM.selectButton = this.DOM.controlsWrap.appendChild(BX.create(\"span\", {\n\t\t\t\t\tprops: {className: \"calendar-resource-content-block-add-link\"},\n\t\t\t\t\ttext: BX.message('USER_TYPE_RESOURCE_SELECT'),\n\t\t\t\t\tevents: {click: BX.delegate(this.openResourcesPopup, this)}\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tBX.bind(this.DOM.blocksWrap, 'click', BX.delegate(this.handleBlockClick, this));\n\t\t}\n\t}\n\n\tshow ()\n\t{\n\t\tBX.addClass(this.DOM.outerWrap, 'shown');\n\t}\n\n\thide ()\n\t{\n\t\tthis.DOM.outerWrap.style.maxHeight = '';\n\t\tBX.removeClass(this.DOM.outerWrap, 'shown');\n\t}\n\n\tisShown ()\n\t{\n\t\treturn BX.hasClass(this.DOM.outerWrap, 'shown');\n\t}\n\n\thandleBlockClick (e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\n\t\tif (target)\n\t\t{\n\t\t\tlet blockValue = target.getAttribute('data-bx-remove-block');\n\t\t\tif (blockValue)\n\t\t\t{\n\t\t\t\t// Remove from blocks\n\t\t\t\tthis.selectedBlocks.find(function(element, index)\n\t\t\t\t{\n\t\t\t\t\tif (element.value === blockValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.removeClass(element.wrap, 'shown');\n\t\t\t\t\t\tsetTimeout(BX.delegate(function ()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.remove(element.wrap)\n\t\t\t\t\t\t}, this), 300);\n\n\t\t\t\t\t\tthis.selectedBlocks = BX.util.deleteFromArray(this.selectedBlocks, index);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\t// Remove from values\n\t\t\t\tthis.selectedValues.find(function(element, index)\n\t\t\t\t{\n\t\t\t\t\tif (element.title === blockValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.selectedValues = BX.util.deleteFromArray(this.selectedValues, index);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\n\t\t\t\tif (BX.type.isFunction(this.onChangeCallback))\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(BX.proxy(this.onChangeCallback, this), 100);\n\t\t\t\t}\n\n\t\t\t\tthis.checkBlockWrapState();\n\t\t\t}\n\n\t\t\tif (!blockValue)\n\t\t\t{\n\t\t\t\tthis.openResourcesPopup();\n\t\t\t}\n\t\t}\n\t}\n\n\topenResourcesPopup ()\n\t{\n\t\tif (!this.resourceList.length)\n\t\t{\n\t\t\treturn this.addResourceBlock();\n\t\t}\n\n\t\tif (this.isResourcesPopupShown())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet menuItems = [];\n\n\t\tthis.resourceList.forEach(function(resource)\n\t\t{\n\t\t\tif (resource.deleted)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmenuItems.push({\n\t\t\t\ttext: BX.util.htmlspecialchars(resource.title),\n\t\t\t\tdataset: {\n\t\t\t\t\ttype: resource.type,\n\t\t\t\t\tid: resource.id,\n\t\t\t\t\ttitle: resource.title\n\t\t\t\t},\n\t\t\t\tonclick: BX.delegate(function(e, menuItem)\n\t\t\t\t{\n\t\t\t\t\tlet\n\t\t\t\t\t\tselectAllcheckbox,\n\t\t\t\t\t\ttarget = e.target || e.srcElement,\n\t\t\t\t\t\tcheckbox = menuItem.layout.item.querySelector('.menu-popup-item-resource-checkbox'),\n\t\t\t\t\t\tfoundResource = this.resourceList.find(function(resource)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn parseInt(resource.id) === parseInt(menuItem.dataset.id)\n\t\t\t\t\t\t\t\t&& resource.type === menuItem.dataset.type;\n\t\t\t\t\t\t}, this);\n\n\t\t\t\t\tif (foundResource)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Complete removing of the resource\n\t\t\t\t\t\tif (target && BX.hasClass(target, \"calendar-resourcebook-content-block-control-delete\"))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.removeResourceBlock({\n\t\t\t\t\t\t\t\tresource: foundResource,\n\t\t\t\t\t\t\t\ttrigerOnChange: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tthis.selectedValues = this.getSelectedValues();\n\t\t\t\t\t\t\tthis.checkResourceInputs();\n\n\t\t\t\t\t\t\tselectAllcheckbox = this.popupContainer.querySelector('.menu-popup-item-all-resources-checkbox');\n\t\t\t\t\t\t\tthis.selectAllChecked = false;\n\t\t\t\t\t\t\tif (selectAllcheckbox)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tselectAllcheckbox.checked = false;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet menuItemNode = BX.findParent(target, {className: 'menu-popup-item'});\n\t\t\t\t\t\t\tif (menuItemNode)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tBX.addClass(menuItemNode, 'menu-popup-item-resource-remove-loader');\n\n\t\t\t\t\t\t\t\tmenuItemNode.appendChild(BookingUtil.getLoader(25));\n\t\t\t\t\t\t\t\tlet textNode = menuItemNode.querySelector('.menu-popup-item-text');\n\t\t\t\t\t\t\t\tif (textNode)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttextNode.innerHTML = BX.message('USER_TYPE_RESOURCE_DELETING');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfoundResource.deleted = true;\n\t\t\t\t\t\t\tsetTimeout(BX.delegate(function()\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (menuItemNode)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmenuItemNode.style.maxHeight = '0';\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (!this.resourceList.find(function(resource){return !resource.deleted;}))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tBX.PopupMenu.destroy(this.id);\n\t\t\t\t\t\t\t\t\tthis.DOM.selectButton.style.opacity = 0;\n\n\t\t\t\t\t\t\t\t\tsetTimeout(BX.delegate(function(){BX.remove(this.DOM.selectButton);}, this), 500);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, this), 500);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (target && (BX.hasClass(target, \"menu-popup-item\") || BX.hasClass(target, \"menu-popup-item-resource-checkbox\") || BX.hasClass(target, \"menu-popup-item-inner\") ))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (!BX.hasClass(target, \"menu-popup-item-resource-checkbox\"))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcheckbox.checked = !checkbox.checked;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (checkbox.checked)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.addResourceBlock({\n\t\t\t\t\t\t\t\t\tresource: foundResource,\n\t\t\t\t\t\t\t\t\tvalue: foundResource.title,\n\t\t\t\t\t\t\t\t\ttrigerOnChange: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.selectedValues = this.getSelectedValues();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.removeResourceBlock({\n\t\t\t\t\t\t\t\t\tresource: foundResource,\n\t\t\t\t\t\t\t\t\ttrigerOnChange: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.selectedValues = this.getSelectedValues();\n\t\t\t\t\t\t\t\tthis.checkResourceInputs();\n\n\t\t\t\t\t\t\t\tselectAllcheckbox = this.popupContainer.querySelector('.menu-popup-item-all-resources-checkbox');\n\t\t\t\t\t\t\t\tthis.selectAllChecked = false;\n\t\t\t\t\t\t\t\tif (selectAllcheckbox)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tselectAllcheckbox.checked = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}, this);\n\n\t\tif (menuItems.length > 1)\n\t\t{\n\t\t\tmenuItems.push({\n\t\t\t\ttext: BX.message('USER_TYPE_RESOURCE_SELECT_ALL'),\n\t\t\t\tonclick: BX.delegate(function(e, menuItem)\n\t\t\t\t{\n\t\t\t\t\tlet target = e.target || e.srcElement;\n\t\t\t\t\tif (target && (BX.hasClass(target, \"menu-popup-item\") || BX.hasClass(target, \"menu-popup-item-resource-checkbox\")))\n\t\t\t\t\t{\n\t\t\t\t\t\tlet checkbox = menuItem.layout.item.querySelector('.menu-popup-item-resource-checkbox');\n\n\t\t\t\t\t\tif (BX.hasClass(target, \"menu-popup-item\"))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcheckbox.checked = !checkbox.checked;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet i, checkboxes = this.popupContainer.querySelectorAll('input.menu-popup-item-resource-checkbox');\n\t\t\t\t\t\tthis.selectAllChecked = checkbox.checked;\n\n\t\t\t\t\t\tfor (i = 0; i < checkboxes.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcheckboxes[i].checked = this.selectAllChecked;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.resourceList.forEach(function(resource){\n\t\t\t\t\t\t\tif (resource.deleted)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (this.selectAllChecked)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.addResourceBlock({\n\t\t\t\t\t\t\t\t\tresource: resource,\n\t\t\t\t\t\t\t\t\tvalue: resource.title,\n\t\t\t\t\t\t\t\t\ttrigerOnChange: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.removeResourceBlock({\n\t\t\t\t\t\t\t\t\tresource: resource,\n\t\t\t\t\t\t\t\t\ttrigerOnChange: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\n\t\t\t\t\t\tthis.selectedValues = this.getSelectedValues();\n\t\t\t\t\t\tthis.checkResourceInputs();\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\n\t\tthis.popup = BX.PopupMenu.create(\n\t\t\tthis.id,\n\t\t\tthis.DOM.selectButton || this.DOM.blocksWrap,\n\t\t\tmenuItems,\n\t\t\t{\n\t\t\t\tclassName: 'popup-window-resource-select',\n\t\t\t\tcloseByEsc : true,\n\t\t\t\tautoHide : false,\n\t\t\t\toffsetTop: 0,\n\t\t\t\toffsetLeft: 0\n\t\t\t}\n\t\t);\n\n\t\tthis.popup.show(true);\n\t\tthis.popupContainer = this.popup.popupWindow.popupContainer;\n\t\tif (!this.editMode)\n\t\t{\n\t\t\tthis.popupContainer.style.width = parseInt(this.DOM.blocksWrap.offsetWidth) + 'px';\n\t\t}\n\n\t\tBX.addCustomEvent(this.popup.popupWindow, 'onPopupClose', BX.proxy(function(){BX.PopupMenu.destroy(this.id);}, this));\n\n\t\tthis.popup.menuItems.forEach(function(menuItem)\n\t\t{\n\t\t\tlet checked;\n\t\t\tif (menuItem.dataset && menuItem.dataset.type)\n\t\t\t{\n\t\t\t\tchecked = this.selectedValues.find(function(item)\n\t\t\t\t{\n\t\t\t\t\treturn parseInt(item.id) === parseInt(menuItem.dataset.id)\n\t\t\t\t\t\t&& item.type === menuItem.dataset.type;\n\t\t\t\t});\n\t\t\t\tmenuItem.layout.item.className = 'menu-popup-item';\n\t\t\t\tmenuItem.layout.item.innerHTML = '<div class=\"menu-popup-item-inner\">' +\n\t\t\t\t\t'<div class=\"menu-popup-item-resource\">' +\n\t\t\t\t\t'<input class=\"menu-popup-item-resource-checkbox\" type=\"checkbox\"' + (checked ? 'checked=\"checked\"' : '') + ' id=\"' + menuItem.id + '\">' +\n\t\t\t\t\t'<label class=\"menu-popup-item-text\" for=\"' + menuItem.id + '\">' + BX.util.htmlspecialchars(menuItem.dataset.title) + '</label>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t(this.editMode ? '<div class=\"calendar-resourcebook-content-block-control-delete\"></div>' : '') +\n\t\t\t\t\t'</div>';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.selectAllChecked = !this.resourceList.find(function(resource){\n\t\t\t\t\treturn !this.selectedValues.find(function(item)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn parseInt(item.id) === parseInt(resource.id)\n\t\t\t\t\t\t\t&& item.type === resource.type\n\t\t\t\t\t});\n\t\t\t\t},this);\n\n\t\t\t\tmenuItem.layout.item.className = 'menu-popup-item menu-popup-item-resource-all';\n\t\t\t\tmenuItem.layout.item.innerHTML = '<div class=\"menu-popup-item-inner\">' +\n\t\t\t\t\t'<div class=\"menu-popup-item-resource\">' +\n\t\t\t\t\t'<input class=\"menu-popup-item-resource-checkbox menu-popup-item-all-resources-checkbox\" type=\"checkbox\"' + (this.selectAllChecked ? 'checked=\"checked\"' : '') + ' id=\"' + menuItem.id + '\">' +\n\t\t\t\t\t'<label class=\"menu-popup-item-text\" for=\"' + menuItem.id + '\">' + BX.message('USER_TYPE_RESOURCE_SELECT_ALL') + '</label>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'</div>';\n\t\t\t}\n\t\t}, this);\n\n\t\tsetTimeout(BX.delegate(function(){\n\t\t\tBX.bind(document, 'click', BX.proxy(this.handleClick, this));\n\t\t}, this), 50);\n\t}\n\n\taddResourceBlock(params)\n\t{\n\t\tif (!BX.type.isPlainObject(params))\n\t\t{\n\t\t\tparams = {};\n\t\t}\n\n\t\tif ((params.resource && (this.checkLimit && !this.checkLimit() && window.B24))\n\t\t\t||\n\t\t\t(!params.resource && (this.checkLimitForNew && !this.checkLimitForNew() && window.B24)))\n\t\t{\n\t\t\treturn BookingUtil.showLimitationPopup();\n\t\t}\n\n\t\tlet\n\t\t\t_this = this,\n\t\t\tblockEntry;\n\n\t\tif (this.editMode)\n\t\t{\n\t\t\tif (params.resource && this.selectedValues.find(function(val)\n\t\t\t{\n\t\t\t\treturn val.id && parseInt(val.id) === parseInt(params.resource.id)\n\t\t\t\t\t&& val.type === params.resource.type;\n\t\t\t}))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!params.value)\n\t\t\t{\n\t\t\t\tparams.value = '';\n\t\t\t}\n\n\t\t\tblockEntry = {\n\t\t\t\tvalue: params.value,\n\t\t\t\twrap : this.DOM.listWrap\n\t\t\t\t\t.appendChild(BX.create(\"div\", {props:{className: \"calendar-resourcebook-content-block-detail calendar-resourcebook-outer-resource-wrap\"}}))\n\t\t\t\t\t.appendChild(BX.create(\"div\", {props:{className: \"calendar-resourcebook-content-block-detail-resource\"}}))\n\t\t\t\t\t.appendChild(BX.create(\"div\", {props:{className: \"calendar-resourcebook-content-block-detail-resource-inner calendar-resourcebook-content-block-detail-resource-inner-wide\"}}))\n\t\t\t};\n\n\t\t\tblockEntry.input = blockEntry.wrap.appendChild(BX.create(\"input\", {\n\t\t\t\tprops:{\n\t\t\t\t\tclassName: \"calendar-resourcebook-content-input\",\n\t\t\t\t\tvalue: params.value,\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tplaceholder: BX.message('USER_TYPE_RESOURCE_NAME')\n\t\t\t\t},\n\t\t\t\tdataset: {\n\t\t\t\t\tresourceType: params.resource ? params.resource.type : '',\n\t\t\t\t\tresourceId: params.resource ? params.resource.id : ''\n\t\t\t\t}\n\t\t\t}));\n\t\t\tblockEntry.delButton = blockEntry.wrap.appendChild(BX.create(\"div\", {\n\t\t\t\tprops:{className: \"calendar-resourcebook-content-block-control-delete\"},\n\t\t\t\tevents: {click(){\n\t\t\t\t\t\tBX.remove(BX.findParent(this, {className: 'calendar-resourcebook-outer-resource-wrap'}));\n\t\t\t\t\t\t_this.selectedValues = _this.getSelectedValues();\n\t\t\t\t\t\t_this.checkResourceInputs();\n\t\t\t\t\t}}\n\t\t\t}));\n\n\t\t\tif (params.focusInput !== false)\n\t\t\t{\n\t\t\t\tBX.focus(blockEntry.input);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (params.value && this.selectedBlocks.find(function(val){return val.value && val.value === params.value;}))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tblockEntry = {\n\t\t\t\tvalue: params.value,\n\t\t\t\tresource: params.resource || false,\n\t\t\t\twrap : this.DOM.blocksWrap.appendChild(BX.create(\"div\", {\n\t\t\t\t\tprops:{\n\t\t\t\t\t\tclassName: \"calendar-resourcebook-content-block-control-inner\"\n\t\t\t\t\t\t\t+ (params.animation ? '' : ' shown')\n\t\t\t\t\t\t\t+ (params.transparent ? ' transparent' : '')\n\t\t\t\t\t},\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\tBX.create(\"div\", {\n\t\t\t\t\t\t\tprops: {className: \"calendar-resourcebook-content-block-control-text\"},\n\t\t\t\t\t\t\ttext: params.value || ''\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tBX.create(\"div\", {\n\t\t\t\t\t\t\tattrs: {'data-bx-remove-block': params.value},\n\t\t\t\t\t\t\tprops: {className: \"calendar-resourcebook-content-block-control-delete\"}\n\t\t\t\t\t\t})\n\t\t\t\t\t]\n\t\t\t\t}))\n\t\t\t};\n\n\t\t\tthis.selectedBlocks.push(blockEntry);\n\n\t\t\t// Show it with animation\n\t\t\tif (params.animation)\n\t\t\t{\n\t\t\t\tsetTimeout(BX.delegate(function ()\n\t\t\t\t{\n\t\t\t\t\tBX.addClass(blockEntry.wrap, 'shown');\n\t\t\t\t}, this), 1);\n\t\t\t}\n\n\t\t\tif (params.trigerOnChange !== false && this.onChangeCallback && BX.type.isFunction(this.onChangeCallback))\n\t\t\t{\n\t\t\t\tsetTimeout(BX.proxy(this.onChangeCallback, this), 100);\n\t\t\t}\n\n\t\t\tthis.checkBlockWrapState();\n\t\t}\n\n\t\t// Adjust outer wrap max height\n\t\tif (this.DOM.listWrap && this.DOM.outerWrap)\n\t\t{\n\t\t\tif (BX.hasClass(this.DOM.outerWrap, 'shown'))\n\t\t\t{\n\t\t\t\tthis.DOM.outerWrap.style.maxHeight = Math.max(10000, this.DOM.listWrap.childNodes.length * 45 + 100) + 'px';\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.outerWrap.style.maxHeight = '';\n\t\t\t}\n\t\t}\n\n\t\treturn blockEntry;\n\t}\n\n\tremoveResourceBlock(params)\n\t{\n\t\tif (this.editMode)\n\t\t{\n\t\t\tlet\n\t\t\t\tresourceType, resourceId,\n\t\t\t\ti, inputs = this.DOM.listWrap.querySelectorAll('.calendar-resourcebook-content-input');\n\n\t\t\tfor (i = 0; i < inputs.length; i++)\n\t\t\t{\n\t\t\t\tresourceType = inputs[i].getAttribute('data-resource-type');\n\t\t\t\tresourceId = inputs[i].getAttribute('data-resource-id');\n\t\t\t\tif (resourceType === params.resource.type && parseInt(resourceId) === parseInt(params.resource.id))\n\t\t\t\t{\n\t\t\t\t\tBX.remove(BX.findParent(inputs[i], {className: 'calendar-resourcebook-outer-resource-wrap'}));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (params.resource)\n\t\t\t{\n\t\t\t\tthis.selectedBlocks.find(function(element, index)\n\t\t\t\t{\n\t\t\t\t\tif (element.value === params.resource.title)\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.removeClass(element.wrap, 'shown');\n\t\t\t\t\t\tsetTimeout(BX.delegate(function ()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tBX.remove(element.wrap)\n\t\t\t\t\t\t}, this), 300);\n\n\t\t\t\t\t\tthis.selectedBlocks = BX.util.deleteFromArray(this.selectedBlocks, index);\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\t\t\tthis.checkBlockWrapState();\n\n\t\t\tif (params.trigerOnChange !== false && this.onChangeCallback && BX.type.isFunction(this.onChangeCallback))\n\t\t\t{\n\t\t\t\tsetTimeout(BX.proxy(this.onChangeCallback, this), 100);\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckResourceInputs()\n\t{\n\t\tif (this.editMode)\n\t\t{\n\t\t\tif (!this.selectedValues.length)\n\t\t\t{\n\t\t\t\tthis.addResourceBlock({animation: true});\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckBlockWrapState()\n\t{\n\t\tif (!this.editMode)\n\t\t{\n\t\t\tif (!this.selectedBlocks.length)\n\t\t\t{\n\t\t\t\tif (!this.DOM.emptyPlaceholder)\n\t\t\t\t{\n\t\t\t\t\tthis.DOM.emptyPlaceholder = this.DOM.blocksWrap.appendChild(\n\t\t\t\t\t\tBX.create(\"DIV\", {\n\t\t\t\t\t\t\tprops : {className : \"calendar-resourcebook-content-block-control-empty\"},\n\t\t\t\t\t\t\thtml: '<span class=\"calendar-resourcebook-content-block-control-text\">' + BX.message('USER_TYPE_RESOURCE_LIST_PLACEHOLDER') + '</span>'\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.DOM.emptyPlaceholder.className = \"calendar-resourcebook-content-block-control-empty\";\n\t\t\t\t\tthis.DOM.blocksWrap.appendChild(this.DOM.emptyPlaceholder);\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(BX.delegate(function(){\n\t\t\t\t\tif (BX.isNodeInDom(this.DOM.emptyPlaceholder))\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.addClass(this.DOM.emptyPlaceholder, 'show');\n\t\t\t\t\t}\n\t\t\t\t}, this), 50);\n\t\t\t}\n\t\t\telse if (this.DOM.emptyPlaceholder)\n\t\t\t{\n\t\t\t\tBX.remove(this.DOM.emptyPlaceholder);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleClick(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (this.isResourcesPopupShown() && !BX.isParentForNode(this.popupContainer, target)\n\t\t)\n\t\t{\n\t\t\tthis.closeResourcesPopup({animation: true});\n\t\t}\n\t}\n\n\tisResourcesPopupShown()\n\t{\n\t\treturn this.popup && this.popup.popupWindow &&\n\t\t\tthis.popup.popupWindow.isShown && this.popup.popupWindow.isShown() &&\n\t\t\tthis.popup.popupWindow.popupContainer &&\n\t\t\tBX.isNodeInDom(this.popup.popupWindow.popupContainer)\n\t}\n\n\tcloseResourcesPopup(params)\n\t{\n\t\tif (this.popup)\n\t\t{\n\t\t\tthis.popup.close();\n\t\t\tthis.popupContainer.style.maxHeight = '';\n\t\t\tBX.unbind(document, 'click', BX.proxy(this.handleClick, this));\n\t\t}\n\t}\n\n\tgetValues()\n\t{\n\t\treturn this.resourceList;\n\t}\n\n\taddToSelectedValues(value)\n\t{\n\t\tif (!this.selectedValues.find(function(val){return parseInt(val.id) === parseInt(value.id) && val.type === value.type;}))\n\t\t{\n\t\t\tthis.selectedValues.push(value);\n\t\t}\n\t}\n\n\tgetSelectedValues()\n\t{\n\t\tthis.selectedValues = [];\n\t\tif (this.editMode)\n\t\t{\n\t\t\tlet\n\t\t\t\tresourceType, resourceId, i,\n\t\t\t\tinputs = this.DOM.listWrap.querySelectorAll('.calendar-resourcebook-content-input');\n\n\t\t\tfor (i = 0; i < inputs.length; i++)\n\t\t\t{\n\t\t\t\tresourceType = inputs[i].getAttribute('data-resource-type');\n\t\t\t\tresourceId = inputs[i].getAttribute('data-resource-id');\n\t\t\t\tif (resourceType && resourceId)\n\t\t\t\t{\n\t\t\t\t\tthis.selectedValues.push({type: resourceType, id: resourceId, title: inputs[i].value});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.selectedValues.push({type: 'resource', title: inputs[i].value});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.selectedBlocks.forEach(function(element){\n\t\t\t\tthis.selectedValues.push({type: element.resource.type, id: element.resource.id});\n\t\t\t}, this);\n\t\t}\n\n\t\treturn this.selectedValues;\n\t}\n\n\tgetDeletedValues()\n\t{\n\t\treturn this.resourceList.filter(function(resource){return resource.deleted;});\n\t}\n\n\tsetValues(values, trigerOnChange)\n\t{\n\t\tthis.selectedBlocks.forEach(function(element){BX.remove(element.wrap);});\n\t\tthis.selectedBlocks = [];\n\t\ttrigerOnChange = trigerOnChange !== false;\n\n\t\tif (BX.type.isArray(values))\n\t\t{\n\t\t\tvalues.forEach(function(value)\n\t\t\t{\n\t\t\t\tlet foundResource = this.resourceList.find(function(resource)\n\t\t\t\t{\n\t\t\t\t\treturn parseInt(resource.id) === parseInt(value.id) && resource.type === value.type;\n\t\t\t\t}, this);\n\n\t\t\t\tif (foundResource)\n\t\t\t\t{\n\t\t\t\t\tthis.addResourceBlock({\n\t\t\t\t\t\tresource: foundResource,\n\t\t\t\t\t\tvalue: foundResource.title,\n\t\t\t\t\t\ttrigerOnChange: trigerOnChange\n\t\t\t\t\t});\n\t\t\t\t\tthis.addToSelectedValues(foundResource);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\n\t\tif (this.editMode)\n\t\t{\n\t\t\tthis.selectedValues = this.getSelectedValues();\n\t\t\tthis.checkResourceInputs();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (this.DOM.arrowNode)\n\t\t\t{\n\t\t\t\tthis.DOM.blocksWrap.appendChild(this.DOM.arrowNode);\n\t\t\t}\n\t\t}\n\n\t\tthis.checkBlockWrapState();\n\t}\n}","import { Type, Dom, Event, BookingUtil } from \"calendar.resourcebooking\";\nimport { Popup } from 'main.popup';\n\nexport class PlannerPopup\n{\n\tconstructor(params)\n\t{\n\t}\n\n\tshow(params)\n\t{\n\t\tif (!params)\n\t\t{\n\t\t\tparams = {};\n\t\t}\n\t\tthis.params = params;\n\t\tthis.bindNode = params.bindNode;\n\t\tthis.plannerId = this.params.plannerId;\n\t\tthis.config = this.params.plannerConfig;\n\n\t\tif (this.isShown() || !this.bindNode)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.lastPlannerIdShown && this.lastPlannerIdShown !== this.plannerId)\n\t\t{\n\t\t\tthis.close({animation: false});\n\t\t}\n\n\t\tthis.currentEntries = [];\n\n\t\tthis.plannerWrap = Dom.create('DIV', {\n\t\t\tattrs: {\n\t\t\t\tid: this.plannerId,\n\t\t\t\tclassName: 'calendar-planner-wrapper'\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis.popup = new Popup(this.plannerId + \"_popup\",\n\t\t\tthis.bindNode,\n\t\t\t{\n\t\t\t\tautoHide: false,\n\t\t\t\tcloseByEsc: true,\n\t\t\t\toffsetTop: - parseInt(this.bindNode.offsetHeight) - 20,\n\t\t\t\toffsetLeft: this.bindNode.offsetWidth + 38,\n\t\t\t\tlightShadow: true,\n\t\t\t\tcontent: this.plannerWrap\n\t\t\t})\n\n\t\tthis.popup.setAngle({offset: 100, position: 'left'});\n\t\tthis.popup.show();\n\t\t\n\t\tthis.lastPlannerIdShown = this.plannerId;\n\n\t\tlet\n\t\t\tbindPos = BX.pos(this.bindNode),\n\t\t\twinSize = BX.GetWindowSize();\n\n\t\tthis.plannerWidth = winSize.innerWidth - bindPos.right - 160;\n\t\tthis.config.width = this.plannerWidth;\n\t\t\n\t\tif (this.popup && this.popup.popupContainer)\n\t\t{\n\t\t\tDom.addClass(this.popup.popupContainer, 'calendar-resbook-planner-popup');\n\t\t\tDom.addClass(this.popup.popupContainer, 'show');\n\t\t\tthis.popup.popupContainer.style.width = (this.plannerWidth + 40) + 'px';\n\t\t\tEvent.bind(document, 'click', this.handleClick.bind(this));\n\t\t}\n\t\tthis.showPlanner();\n\n\t\tBX.addCustomEvent(this.popup, 'onPopupClose', this.close.bind(this));\n\t}\n\n\tupdate(params, refreshParams)\n\t{\n\t\tif (!this.isShown())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet\n\t\t\tcodes = [], i, k, code,\n\t\t\tcodeIndex = {},\n\t\t\tplannerConfig = BX.clone(this.config, true),\n\t\t\tfromTimestamp, toTimestamp,\n\t\t\tdateFrom, dateTo;\n\n\t\tif (Type.isPlainObject(this.lastUpdateParams) && Type.isPlainObject(params) && refreshParams !== true)\n\t\t{\n\t\t\tfor (k in params)\n\t\t\t{\n\t\t\t\tif (params.hasOwnProperty(k))\n\t\t\t\t{\n\t\t\t\t\tthis.lastUpdateParams[k] = params[k];\n\t\t\t\t}\n\t\t\t}\n\t\t\tparams = this.lastUpdateParams;\n\t\t}\n\n\t\t// Save selector information\n\t\tif (Type.isPlainObject(params))\n\t\t{\n\t\t\tthis.lastUpdateParams = params;\n\t\t}\n\n\t\tparams.focusSelector = params.focusSelector !== false;\n\n\t\tif (params.from && params.to)\n\t\t{\n\t\t\tdateFrom = BookingUtil.parseDate(params.from);\n\t\t\tdateTo = BookingUtil.parseDate(params.to);\n\t\t\tfromTimestamp = dateFrom.getTime();\n\t\t\ttoTimestamp = dateTo.getTime();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (params.selector.fullDay)\n\t\t\t{\n\t\t\t\tfromTimestamp = params.selector.from.getTime() - BookingUtil.getDayLength() * 12;\n\t\t\t\ttoTimestamp = params.selector.from.getTime() + BookingUtil.getDayLength() * 14;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfromTimestamp = params.selector.from.getTime() - BookingUtil.getDayLength() * 3;\n\t\t\t\ttoTimestamp = params.selector.from.getTime() + BookingUtil.getDayLength() * 5;\n\t\t\t}\n\n\t\t\tdateFrom = new Date(fromTimestamp);\n\t\t\tdateTo = new Date(toTimestamp);\n\n\t\t\tplannerConfig.scaleDateFrom = dateFrom;\n\t\t\tplannerConfig.scaleDateTo = dateTo;\n\t\t}\n\n\t\tif (Type.isArray(params.userList))\n\t\t{\n\t\t\tfor (i = 0; i < params.userList.length; i++)\n\t\t\t{\n\t\t\t\tcode = 'U' + params.userList[i].id;\n\t\t\t\tif (!codeIndex[code])\n\t\t\t\t{\n\t\t\t\t\tcodes.push(code);\n\t\t\t\t\tcodeIndex[code] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (Type.isArray(params.selectedUsers))\n\t\t{\n\t\t\tfor (i = 0; i < params.selectedUsers.length; i++)\n\t\t\t{\n\t\t\t\tcode = 'U' + params.selectedUsers[i];\n\t\t\t\tif (!codeIndex[code])\n\t\t\t\t{\n\t\t\t\t\tcodes.push(code);\n\t\t\t\t\tcodeIndex[code] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet requestData = {\n\t\t\tcodes: codes,\n\t\t\tresources: params.resourceList,\n\t\t\tfrom: BookingUtil.formatDate(null, fromTimestamp / 1000),\n\t\t\tto: BookingUtil.formatDate(null, toTimestamp / 1000),\n\t\t\tcurrentEventList: this.params.currentEventList || []\n\t\t};\n\n\t\tif (this.checkUpdateParams(requestData) && this.isShown())\n\t\t{\n\t\t\tthis.showPlannerLoader();\n\t\t\tBX.ajax.runAction('calendar.api.resourcebookingajax.getplannerdata', {\n\t\t\t\tdata: requestData\n\t\t\t}).then(function (response)\n\t\t\t\t{\n\t\t\t\t\tthis.hidePlannerLoader();\n\n\t\t\t\t\tif (this.lastRequestData)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.lastRequestData.response = response;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.currentEntries = response.data.entries;\n\t\t\t\t\tthis.currentAccessibility = response.data.accessibility;\n\t\t\t\t\tthis.currentLoadedDataFrom = dateFrom;\n\t\t\t\t\tthis.currentLoadedDataTo = dateTo;\n\n\t\t\t\t\tif (Type.isArray(response.data.entries))\n\t\t\t\t\t{\n\t\t\t\t\t\tresponse.data.entries.forEach(function(entry)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tentry.selected = ((entry.type === 'user'\n\t\t\t\t\t\t\t\t&& params.selectedUsers.find(function(userId){return parseInt(entry.id) === parseInt(userId);}))\n\t\t\t\t\t\t\t\t||\n\t\t\t\t\t\t\t\t(entry.type === 'resource'\n\t\t\t\t\t\t\t\t\t&& params.selectedResources.find(function(item){return entry.type === item.type && parseInt(entry.id) === parseInt(item.id);}))\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.isShown())\n\t\t\t\t\t{\n\t\t\t\t\t\tBX.onCustomEvent('OnCalendarPlannerDoUpdate', [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tplannerId: this.plannerId,\n\t\t\t\t\t\t\t\tconfig: plannerConfig,\n\t\t\t\t\t\t\t\tfocusSelector: params.focusSelector,\n\t\t\t\t\t\t\t\tselector: {\n\t\t\t\t\t\t\t\t\tfrom: params.selector.from,\n\t\t\t\t\t\t\t\t\tto: params.selector.to,\n\t\t\t\t\t\t\t\t\tfullDay: params.selector.fullDay,\n\t\t\t\t\t\t\t\t\tanimation: params.focusSelector,\n\t\t\t\t\t\t\t\t\tupdateScaleLimits: params.focusSelector\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\tentries: response.data.entries,\n\t\t\t\t\t\t\t\t\taccessibility: response.data.accessibility\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tloadedDataFrom: dateFrom,\n\t\t\t\t\t\t\t\tloadedDataTo: dateTo,\n\t\t\t\t\t\t\t\tshow: false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}.bind(this));\n\t\t}\n\t\telse if (Type.isPlainObject(this.lastRequestData.response))\n\t\t{\n\t\t\tlet response = this.lastRequestData.response;\n\t\t\tthis.currentEntries = response.data.entries;\n\t\t\tthis.currentAccessibility = response.data.accessibility;\n\t\t\tthis.currentLoadedDataFrom = dateFrom;\n\t\t\tthis.currentLoadedDataTo = dateTo;\n\n\t\t\tif (Type.isArray(response.data.entries))\n\t\t\t{\n\t\t\t\tresponse.data.entries.forEach(function(entry)\n\t\t\t\t{\n\t\t\t\t\tentry.selected = ((entry.type === 'user'\n\t\t\t\t\t\t&& params.selectedUsers.find(function(userId){return parseInt(entry.id) === parseInt(userId);}))\n\t\t\t\t\t\t||\n\t\t\t\t\t\t(entry.type === 'resource'\n\t\t\t\t\t\t\t&& params.selectedResources.find(function(item){return entry.type === item.type && parseInt(entry.id) === parseInt(item.id);}))\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.isShown())\n\t\t\t{\n\t\t\t\tBX.onCustomEvent('OnCalendarPlannerDoUpdate', [\n\t\t\t\t\t{\n\t\t\t\t\t\tplannerId: this.plannerId,\n\t\t\t\t\t\tconfig: plannerConfig,\n\t\t\t\t\t\tfocusSelector: params.focusSelector,\n\t\t\t\t\t\tselector: {\n\t\t\t\t\t\t\tfrom: params.selector.from,\n\t\t\t\t\t\t\tto: params.selector.to,\n\t\t\t\t\t\t\tfullDay: params.selector.fullDay,\n\t\t\t\t\t\t\tanimation: params.focusSelector,\n\t\t\t\t\t\t\tupdateScaleLimits: params.focusSelector\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tentries: response.data.entries,\n\t\t\t\t\t\t\taccessibility: response.data.accessibility\n\t\t\t\t\t\t},\n\t\t\t\t\t\tloadedDataFrom: dateFrom,\n\t\t\t\t\t\tloadedDataTo: dateTo,\n\t\t\t\t\t\tshow: false\n\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckUpdateParams (requestData)\n\t{\n\t\tlet requestPlannerUpdate = false;\n\t\tif (!this.lastRequestData || this.lastRequestPlannerId !== this.plannerId)\n\t\t{\n\t\t\trequestPlannerUpdate = true;\n\t\t}\n\n\t\t// 1. Compare dates\n\t\tif (!requestPlannerUpdate && requestData.from !== this.lastRequestData.from)\n\t\t{\n\t\t\trequestPlannerUpdate = true;\n\t\t}\n\t\t// 2. Compare users\n\t\tif (\n\t\t\t!requestPlannerUpdate\n\t\t\t&& Type.isArray(requestData.codes) && Type.isArray(this.lastRequestData.codes)\n\t\t\t&& BX.util.array_diff(requestData.codes, this.lastRequestData.codes).length > 0\n\t\t)\n\t\t{\n\t\t\trequestPlannerUpdate = true;\n\t\t}\n\n\t\t// 3. Compare resources\n\t\tif (!requestPlannerUpdate && Type.isArray(requestData.resources) && Type.isArray(this.lastRequestData.resources))\n\t\t{\n\t\t\tif (requestData.resources.length !== this.lastRequestData.resources.length)\n\t\t\t{\n\t\t\t\trequestPlannerUpdate = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet resIndex = {};\n\t\t\t\trequestData.resources.forEach(function (res)\n\t\t\t\t{\n\t\t\t\t\tresIndex[res.type + '_' + res.id] = true\n\t\t\t\t});\n\n\t\t\t\tthis.lastRequestData.resources.forEach(function(res)\n\t\t\t\t{\n\t\t\t\t\tif (!resIndex[res.type + '_' + res.id])\n\t\t\t\t\t{\n\t\t\t\t\t\trequestPlannerUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Save request data for future comparing\n\t\tif (requestPlannerUpdate)\n\t\t{\n\t\t\tthis.lastRequestData = requestData;\n\t\t\tthis.lastRequestPlannerId = this.plannerId;\n\t\t}\n\n\t\treturn requestPlannerUpdate;\n\t}\n\n\tshowPlanner()\n\t{\n\t\tthis.planner = new CalendarPlanner(\n\t\t\tthis.params.plannerConfig,\n\t\t\t{\n\t\t\t\tconfig: this.config,\n\t\t\t\tdata: {\n\t\t\t\t\taccessibility: this.currentAccessibility || {},\n\t\t\t\t\tentries: this.currentEntries\n\t\t\t\t},\n\t\t\t\tselector: {\n\t\t\t\t\tfrom: this.params.selector.from,\n\t\t\t\t\tto: this.params.selector.to,\n\t\t\t\t\tfullDay: this.params.selector.fullDay,\n\t\t\t\t\tupdateScaleLimits: true,\n\t\t\t\t\tupdateScaleType: false,\n\t\t\t\t\tfocus: true,\n\t\t\t\t\tRRULE: false,\n\t\t\t\t\tanimation: false\n\t\t\t\t},\n\t\t\t\tloadedDataFrom: this.currentLoadedDataFrom,\n\t\t\t\tloadedDataTo: this.currentLoadedDataTo,\n\t\t\t\tfocusSelector: true,\n\t\t\t\tplannerId: this.plannerId,\n\t\t\t\tshow: true\n\t\t\t}\n\t\t);\n\n\t\t// planner events\n\t\tif (Type.isFunction(this.params.selectorOnChangeCallback))\n\t\t{\n\t\t\tBX.addCustomEvent('OnCalendarPlannerSelectorChanged', this.params.selectorOnChangeCallback);\n\t\t}\n\t\tif (Type.isFunction(this.params.selectEntriesOnChangeCallback))\n\t\t{\n\t\t\tBX.addCustomEvent('OnCalendarPlannerSelectedEntriesOnChange', this.params.selectEntriesOnChangeCallback);\n\t\t}\n\t\tif (Type.isFunction(this.params.checkSelectorStatusCallback))\n\t\t{\n\t\t\tBX.addCustomEvent('OnCalendarPlannerSelectorStatusOnChange', this.params.checkSelectorStatusCallback);\n\t\t}\n\n\t\tBX.addCustomEvent('OnCalendarPlannerScaleChanged', BX.proxy(function(params)\n\t\t{\n\t\t\tthis.update({\n\t\t\t\tfrom: params.from,\n\t\t\t\tto: params.to,\n\t\t\t\tfocusSelector: params.focusSelector === true\n\t\t\t});\n\t\t}, this));\n\n\t}\n\n\tshowPlannerLoader()\n\t{\n\t\tif (this.planner && this.planner.outerWrap)\n\t\t{\n\t\t\tif (this.loader)\n\t\t\t{\n\t\t\t\tDom.remove(this.loader);\n\t\t\t}\n\t\t\tthis.loader = this.planner.outerWrap.appendChild(BookingUtil.getLoader(150));\n\t\t}\n\t}\n\n\thidePlannerLoader()\n\t{\n\t\tif (this.loader)\n\t\t{\n\t\t\tDom.remove(this.loader);\n\t\t\tthis.loader = false;\n\t\t}\n\t}\n\n\tclose(params)\n\t{\n\t\tif (this.popup)\n\t\t{\n\t\t\tif (params && params.animation)\n\t\t\t{\n\t\t\t\tDom.removeClass(this.popup.popupContainer, 'show');\n\t\t\t\tsetTimeout(BX.delegate(function()\n\t\t\t\t{\n\t\t\t\t\tparams.animation = false;\n\t\t\t\t\tthis.close(params);\n\t\t\t\t}, this), 300);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tBX.unbind(document, 'click', BX.proxy(this.handleClick, this));\n\t\t\t\tBX.removeCustomEvent(this.popup, 'onPopupClose', BX.proxy(this.close, this));\n\t\t\t\tthis.popup.destroy();\n\t\t\t\tthis.planner = null;\n\t\t\t\tthis.popup = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tisShown()\n\t{\n\t\treturn this.lastPlannerIdShown === this.plannerId\n\t\t\t&& this.popup\n\t\t\t&& this.popup.isShown()\n\t\t;\n\t}\n\n\tgetPlannerId()\n\t{\n\t\tif (typeof this.plannerId === 'undefined')\n\t\t{\n\t\t\tthis.plannerId = 'calendar-planner-' + Math.round(Math.random() * 100000);\n\t\t}\n\t\treturn this.plannerId;\n\t}\n\n\thandleClick(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (\n\t\t\tthis.isShown()\n\t\t\t&& !BX.isParentForNode(this.bindNode, target)\n\t\t\t&& !BX.isParentForNode(BX('BXSocNetLogDestination'), target)\n\t\t\t&& !BX.isParentForNode(this.popup.popupContainer, target)\n\t\t\t&& !Dom.hasClass(target, 'calendar-resourcebook-content-block-control-delete')\n\t\t)\n\t\t{\n\t\t\tif (!document.querySelector('div.popup-window-resource-select'))\n\t\t\t{\n\t\t\t\tthis.close({animation: true});\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n\n\n\n","import {BookingUtil, Dom, Loc, Event, Type, SelectInput} from \"calendar.resourcebooking\";\nimport {UserSelectorFieldEditControl} from \"./controls/userselectorfieldeditcontrol\";\nimport {ResourceSelectorFieldEditControl} from \"./controls/resourceselectorfieldeditcontrol\";\nimport {ResourcebookingUserfield} from \"calendar.resourcebookinguserfield\";\nimport {PlannerPopup} from \"./controls/plannerpopup\";\n\nexport class EditFieldController\n{\n\tconstructor(params)\n\t{\n\t\tthis.params = params;\n\t\tthis.plannerPopup = null;\n\n\t\tthis.DOM = {\n\t\t\touterWrap: BX(params.controlId),\n\t\t\tvalueInputs: []\n\t\t};\n\n\t\tthis.isNew = !this.params.value || !this.params.value.DATE_FROM;\n\n\t\tif (this.params.socnetDestination)\n\t\t{\n\t\t\tResourcebookingUserfield.setSocnetDestination(this.params.socnetDestination);\n\t\t}\n\t}\n\n\tinit()\n\t{\n\t\tthis.buildUserfieldWrap();\n\t\tthis.createEventHandlers();\n\t\tthis.setControlValues();\n\t}\n\n\tbuildUserfieldWrap()\n\t{\n\t\tthis.buildDateControl();\n\t\tthis.buildTimeControl();\n\t\tthis.buildServiceControl();\n\t\tthis.buildDurationControl();\n\t\tthis.buildUserSelectorControl();\n\t\tthis.buildResourceSelectorControl();\n\t}\n\n\tcreateEventHandlers()\n\t{\n\t\tEvent.bind(this.DOM.outerWrap, 'click',this.showPlannerPopup.bind(this));\n\t\tEvent.bind(this.DOM.fromInput, 'focus',this.showPlannerPopup.bind(this));\n\t\tEvent.bind(this.DOM.durationInput, 'focus',this.showPlannerPopup.bind(this));\n\n\t\tsetTimeout(function(){\n\t\t\tBX.onCustomEvent(window, 'onCrmEntityEditorUserFieldSetValidator',\n\t\t\t[\n\t\t\t\tthis.params.controlId,\n\t\t\t\tfunction(result)\n\t\t\t\t{\n\t\t\t\t\tif (!this.params.allowOverbooking && this.isOverbooked())\n\t\t\t\t\t{\n\t\t\t\t\t\tif (result && result.addError && BX.Crm && BX.Crm.EntityValidationError)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresult.addError(BX.Crm.EntityValidationError.create({field: this}));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn new Promise((resolve) => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t});\n\t\t\t\t}.bind(this)\n\t\t\t]);\n\t\t}.bind(this), 100);\n\n\t\tsetTimeout(this.onChangeValues.bind(this), 100);\n\t}\n\n\tsetControlValues()\n\t{\n\t\tthis.allValuesValue = null;\n\n\t\tlet\n\t\t\tdateFrom,\n\t\t\tduration,\n\t\t\tdefaultDuration = this.params.fullDay ? 1440 : 60, // One day or one hour as default\n\t\t\tdateTo;\n\n\t\tif (this.isNew)\n\t\t{\n\t\t\tlet params = ResourcebookingUserfield.getParamsFromHash(this.params.userfieldId);\n\t\t\tif (params && params.length > 1)\n\t\t\t{\n\t\t\t\tdateFrom = BX.parseDate(params[0]);\n\t\t\t\tdateTo = BX.parseDate(params[1]);\n\t\t\t\tif (dateFrom && dateTo)\n\t\t\t\t{\n\t\t\t\t\tduration = Math.round(Math.max((dateTo.getTime() - dateFrom.getTime()) / 60000, 0));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!dateFrom)\n\t\t\t{\n\t\t\t\tdateFrom = new Date();\n\t\t\t\tlet\n\t\t\t\t\troundMin = 30,\n\t\t\t\t\tr = (roundMin || 10) * 60 * 1000,\n\t\t\t\t\ttimestamp = Math.ceil(dateFrom.getTime() / r) * r;\n\t\t\t\tdateFrom = new Date(timestamp);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdateFrom = BX.parseDate(this.params.value.DATE_FROM);\n\t\t\tdateTo = BX.parseDate(this.params.value.DATE_TO);\n\t\t\tduration = Math.round(Math.max((dateTo.getTime() - dateFrom.getTime()) / 60000, 0));\n\t\t}\n\n\t\tif (!duration)\n\t\t{\n\t\t\tduration = defaultDuration;\n\t\t}\n\n\t\tthis.DOM.fromInput.value = BookingUtil.formatDate(BookingUtil.getDateFormat(), dateFrom);\n\t\tif (this.DOM.timeFromInput)\n\t\t{\n\t\t\tthis.DOM.timeFromInput.value = BookingUtil.formatDate(BookingUtil.getTimeFormatShort(), dateFrom);\n\t\t}\n\n\t\tif (this.durationList)\n\t\t{\n\t\t\tthis.durationList.setValue(duration);\n\t\t}\n\n\t\tif (this.serviceList)\n\t\t{\n\t\t\tthis.serviceList.setValue(this.params.value.SERVICE_NAME || '');\n\t\t}\n\n\t\tlet selectedUsers = [];\n\t\tlet selectedResources = [];\n\t\tif (this.params.value && Type.isArray(this.params.value.ENTRIES))\n\t\t{\n\t\t\tthis.params.value.ENTRIES.forEach(function(entry)\n\t\t\t{\n\t\t\t\tif (entry.TYPE === 'user')\n\t\t\t\t{\n\t\t\t\t\tselectedUsers.push(parseInt(entry.RESOURCE_ID));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tselectedResources.push({\n\t\t\t\t\t\tid: parseInt(entry.RESOURCE_ID),\n\t\t\t\t\t\ttype: entry.TYPE\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.resourceSelector)\n\t\t{\n\t\t\tthis.resourceSelector.setValues(selectedResources, false);\n\t\t}\n\n\t\tif (this.userSelector)\n\t\t{\n\t\t\tthis.userSelector.setValues(selectedUsers, false);\n\t\t}\n\t}\n\n\tbuildDateControl()\n\t{\n\t\tthis.DOM.dateTimeWrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-detail-wrap calendar-resourcebook-content-block-detail-wrap-flex\"}}));\n\n\t\tthis.DOM.dateWrap = this.DOM.dateTimeWrap\n\t\t\t.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-detail-inner calendar-resourcebook-content-block-detail-wrap-down\"}}))\n\t\t\t.appendChild(Dom.create(\"div\", {\n\t\t\t\tprops: { className: \"calendar-resourcebook-content-block-detail\"},\n\t\t\t\thtml: '<div class=\"calendar-resourcebook-content-block-title\"><span class=\"calendar-resourcebook-content-block-title-text\">' + Loc.getMessage('USER_TYPE_RESOURCE_DATE_LABEL') + '</span></div>'\n\t\t\t}));\n\n\t\tthis.DOM.fromInput = this.DOM.dateWrap.appendChild(Dom.create('INPUT', {\n\t\t\tattrs: {\n\t\t\t\tvalue: '',\n\t\t\t\tplaceholder: Loc.getMessage('USER_TYPE_RESOURCE_DATE_LABEL'),\n\t\t\t\ttype: 'text'\n\t\t\t},\n\t\t\tevents: {\n\t\t\t\tclick: EditFieldController.showCalendarPicker,\n\t\t\t\tchange: this.triggerUpdatePlanner.bind(this)\n\t\t\t},\n\t\t\tprops: {className: 'calendar-resbook-date-input calendar-resbook-field-datetime'}\n\t\t}));\n\n\t\tthis.DOM.emptyInput = this.DOM.dateWrap.appendChild(Dom.create('INPUT', {attrs: {value: '',type: 'text'}, props: {className: 'calendar-resbook-empty-input'}}));\n\t}\n\n\tbuildTimeControl()\n\t{\n\t\tif (!this.params.fullDay)\n\t\t{\n\t\t\tthis.DOM.timeWrap = this.DOM.dateTimeWrap\n\t\t\t\t.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-detail-inner calendar-resourcebook-content-block-detail-wrap-down\"}}))\n\t\t\t\t.appendChild(Dom.create(\"div\", {\n\t\t\t\t\tprops: {className: \"calendar-resourcebook-content-block-detail\"},\n\t\t\t\t\thtml: '<div class=\"calendar-resourcebook-content-block-title\"><span class=\"calendar-resourcebook-content-block-title-text\">' + Loc.getMessage('USER_TYPE_RESOURCE_TIME_LABEL') + '</span></div>'\n\t\t\t\t}));\n\n\t\t\tthis.DOM.timeFromInput = this.DOM.timeWrap.appendChild(Dom.create('INPUT', {\n\t\t\t\tattrs: {\n\t\t\t\t\tvalue: '',\n\t\t\t\t\tplaceholder: Loc.getMessage('USER_TYPE_RESOURCE_TIME_LABEL'),\n\t\t\t\t\ttype: 'text'\n\t\t\t\t},\n\t\t\t\tstyle: {width: '100px'},\n\t\t\t\tprops: {className: 'calendar-resbook-date-input calendar-resbook-field-datetime-menu'}\n\t\t\t}));\n\n\t\t\tthis.fromTime = new SelectInput({\n\t\t\t\tinput: this.DOM.timeFromInput,\n\t\t\t\tvalues: BookingUtil.getSimpleTimeList(),\n\t\t\t\tonChangeCallback: this.triggerUpdatePlanner.bind(this),\n\t\t\t\tonAfterMenuOpen: (ind, popupMenu) => {\n\t\t\t\t\tif (!ind && popupMenu)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst formatDatetime = BX.isAmPmMode()\n\t\t\t\t\t\t\t? Loc.getMessage(\"FORMAT_DATETIME\").replace(':SS', '')\n\t\t\t\t\t\t\t: Loc.getMessage(\"FORMAT_DATETIME\");\n\t\t\t\t\t\tconst dateFrom = BookingUtil.parseDate(\n\t\t\t\t\t\t\tthis.DOM.fromInput.value + ' ' + this.DOM.timeFromInput.value,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tformatDatetime\n\t\t\t\t\t\t);\n\t\t\t\t\t\tlet i, menuItem;\n\t\t\t\t\t\tconst nearestTimeValue = BookingUtil.adaptTimeValue({\n\t\t\t\t\t\t\th: dateFrom.getHours(),\n\t\t\t\t\t\t\tm: dateFrom.getMinutes()\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (nearestTimeValue && nearestTimeValue.label)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (i = 0; i < popupMenu.menuItems.length; i++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmenuItem = popupMenu.menuItems[i];\n\t\t\t\t\t\t\t\tif (menuItem\n\t\t\t\t\t\t\t\t\t&& nearestTimeValue.label === menuItem.text\n\t\t\t\t\t\t\t\t\t&& menuItem.layout)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpopupMenu.layout.menuContainer.scrollTop = menuItem.layout.item.offsetTop - 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tbuildServiceControl()\n\t{\n\t\tif (this.params.useServices && Type.isArray(this.params.serviceList) && this.params.serviceList.length > 0)\n\t\t{\n\t\t\tif (this.params.fullDay)\n\t\t\t{\n\t\t\t\tthis.DOM.durationWrap = this.DOM.dateTimeWrap;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.durationWrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-detail-wrap calendar-resourcebook-content-block-detail-wrap-flex\"}}));\n\t\t\t}\n\n\t\t\tthis.DOM.servicesWrap = this.DOM.durationWrap\n\t\t\t\t.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-detail-inner calendar-resourcebook-content-block-detail-wrap-down\"}}))\n\t\t\t\t.appendChild(Dom.create(\"div\", {\n\t\t\t\t\tprops: { className: \"calendar-resourcebook-content-block-detail\"},\n\t\t\t\t\thtml: '<div class=\"calendar-resourcebook-content-block-title\"><span class=\"calendar-resourcebook-content-block-title-text\">' + Loc.getMessage('USER_TYPE_RESOURCE_SERVICE_LABEL') + '</span></div>'\n\t\t\t\t}));\n\n\t\t\tthis.DOM.serviceInput = this.DOM.servicesWrap.appendChild(Dom.create('INPUT', {\n\t\t\t\tattrs: {\n\t\t\t\t\tvalue: '',\n\t\t\t\t\t//value: this.params.value.SERVICE_NAME || '',\n\t\t\t\t\tplaceholder: Loc.getMessage('USER_TYPE_RESOURCE_SERVICE_LABEL'),\n\t\t\t\t\ttype: 'text'\n\t\t\t\t},\n\t\t\t\tstyle: {width: '200px'},\n\t\t\t\tprops: {className: 'calendar-resbook-date-input calendar-resbook-field-datetime-menu'}\n\t\t\t}));\n\n\t\t\tlet serviceListValues = [];\n\t\t\tthis.params.serviceList.forEach(function(service)\n\t\t\t{\n\t\t\t\tif (service.name !== '')\n\t\t\t\t{\n\t\t\t\t\tserviceListValues.push({value: service.duration, label: service.name});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.isNew && serviceListValues.length >= 1)\n\t\t\t{\n\t\t\t\tthis.DOM.serviceInput.value = serviceListValues[0].label;\n\t\t\t\t//duration = parseInt(serviceListValues[0].value);\n\t\t\t}\n\n\t\t\tthis.serviceList = new SelectInput({\n\t\t\t\tinput: this.DOM.serviceInput,\n\t\t\t\tvalues: serviceListValues,\n\t\t\t\tonChangeCallback: function(state)\n\t\t\t\t{\n\t\t\t\t\tif (Type.isPlainObject(state) && state.realValue)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.durationList.setValue(parseInt(state.realValue));\n\t\t\t\t\t\tthis.duration = BookingUtil.parseDuration(this.DOM.durationInput.value);\n\t\t\t\t\t\tthis.triggerUpdatePlanner();\n\t\t\t\t\t}\n\t\t\t\t}.bind(this)\n\t\t\t});\n\t\t}\n\t}\n\n\tbuildDurationControl()\n\t{\n\t\tif (!this.DOM.durationWrap)\n\t\t{\n\t\t\tthis.DOM.durationWrap = this.DOM.dateTimeWrap;\n\t\t}\n\n\t\t// region Duration\n\t\tthis.DOM.durationControlWrap = this.DOM.durationWrap\n\t\t\t.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-detail-inner calendar-resourcebook-content-block-detail-wrap-down\"}}))\n\t\t\t.appendChild(Dom.create(\"div\", {\n\t\t\t\tprops: { className: \"calendar-resourcebook-content-block-detail\"},\n\t\t\t\thtml: '<div class=\"calendar-resourcebook-content-block-title\"><span class=\"calendar-resourcebook-content-block-title-text\">' + Loc.getMessage('USER_TYPE_RESOURCE_DURATION_LABEL') + '</span></div>'\n\t\t\t}));\n\n\t\tthis.DOM.durationInput = this.DOM.durationControlWrap.appendChild(Dom.create('INPUT', {\n\t\t\tattrs: {\n\t\t\t\t//value: duration,\n\t\t\t\tplaceholder: Loc.getMessage('USER_TYPE_RESOURCE_DURATION_LABEL'),\n\t\t\t\ttype: 'text'\n\t\t\t},\n\t\t\tstyle: {width: '90px'},\n\t\t\tprops: {className: 'calendar-resbook-date-input calendar-resbook-field-datetime-menu'}\n\t\t}));\n\n\t\t//this.duration = parseInt(duration);\n\t\tthis.durationList = new SelectInput({\n\t\t\tinput: this.DOM.durationInput,\n\t\t\tvalues: BookingUtil.getDurationList(this.params.fullDay),\n\t\t\t//value: duration,\n\t\t\tonChangeCallback: function()\n\t\t\t{\n\t\t\t\tthis.duration = BookingUtil.parseDuration(this.DOM.durationInput.value);\n\t\t\t\tthis.triggerUpdatePlanner();\n\t\t\t}.bind(this)\n\t\t});\n\t}\n\n\tbuildUserSelectorControl()\n\t{\n\t\tif (this.params.useUsers)\n\t\t{\n\t\t\tthis.DOM.userSelectorWrap = this.DOM.outerWrap.appendChild(Dom.create('DIV', {\n\t\t\t\tprops: {className: 'calendar-resbook-users-selector-wrap'}\n\t\t\t}));\n\n\t\t\tthis.DOM.userSelectorWrap = this.DOM.outerWrap.appendChild(Dom.create('DIV', {props: {className: 'calendar-resourcebook-content-block-control-field'}}));\n\t\t\t\n\t\t\tlet userSelectorTitle = Loc.getMessage('USER_TYPE_RESOURCE_USERS_CONTROL_DEFAULT_NAME');\n\t\t\tthis.DOM.userSelectorWrap\n\t\t\t\t.appendChild(Dom.create('DIV', {props: {className: 'calendar-resourcebook-content-block-title'}}))\n\t\t\t\t.appendChild(Dom.create('SPAN', {props: {className: 'calendar-resourcebook-content-block-title-text'}, text: userSelectorTitle}));\n\t\t\tthis.DOM.userListWrap = this.DOM.userSelectorWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-control custom-field-item\"}}));\n\n\t\t\tlet itemsSelected = {};\n\t\t\tif (this.params.value && Type.isArray(this.params.value.ENTRIES))\n\t\t\t{\n\t\t\t\tthis.params.value.ENTRIES.forEach(function(entry)\n\t\t\t\t{\n\t\t\t\t\tif (entry.TYPE === 'user')\n\t\t\t\t\t{\n\t\t\t\t\t\tconst userKey = 'U' + parseInt(entry.RESOURCE_ID);\n\t\t\t\t\t\titemsSelected[userKey] = 'users';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.userSelector = new UserSelectorFieldEditControl({\n\t\t\t\twrapNode: this.DOM.userListWrap,\n\t\t\t\tsocnetDestination: ResourcebookingUserfield.getSocnetDestination(),\n\t\t\t\taddMessage: Loc.getMessage('USER_TYPE_RESOURCE_SELECT_USER'),\n\t\t\t\tcheckLimitCallback: this.checkResourceCountLimit.bind(this),\n\t\t\t\titemsSelected: itemsSelected,\n\t\t\t});\n\n\t\t\tBX.addCustomEvent('OnResourceBookDestinationAddNewItem', this.triggerUpdatePlanner.bind(this));\n\t\t\tBX.addCustomEvent('OnResourceBookDestinationUnselect', this.triggerUpdatePlanner.bind(this));\n\t\t}\n\t}\n\n\tbuildResourceSelectorControl()\n\t{\n\t\tif (this.params.useResources)\n\t\t{\n\t\t\tthis.DOM.resourcesWrap = this.DOM.outerWrap.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-control-field calendar-resourcebook-content-block-control-field-add\" }}));\n\n\t\t\tlet resSelectorTitle = Loc.getMessage('USER_TYPE_RESOURCE_RESOURCE_CONTROL_DEFAULT_NAME');\n\t\t\tthis.DOM.resourcesWrap\n\t\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title\"}}))\n\t\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title-text\"}, text: resSelectorTitle}));\n\t\t\tthis.DOM.resourcesListWrap = this.DOM.resourcesWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-control custom-field-item\"}}));\n\n\t\t\tthis.resourceSelector = new ResourceSelectorFieldEditControl({\n\t\t\t\touterWrap: this.DOM.resourcesWrap,\n\t\t\t\tblocksWrap: this.DOM.resourcesListWrap,\n\t\t\t\tvalues: [],\n\t\t\t\tresourceList: this.params.resourceList,\n\t\t\t\tonChangeCallback: this.triggerUpdatePlanner.bind(this),\n\t\t\t\tcheckLimitCallback: this.checkResourceCountLimit.bind(this)\n\t\t\t});\n\t\t}\n\t}\n\n\tstatic showCalendarPicker(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tBX.calendar({node: target, field: target, bTime: false});\n\t\tBX.focus(target);\n\t}\n\n\tonChangeValues()\n\t{\n\t\tthis.duration = this.duration || BookingUtil.parseDuration(this.DOM.durationInput.value);\n\t\tconst duration = this.duration * 60;\n\t\tlet\n\t\t\tallValuesValue = '',\n\t\t\tformatDatetime = BX.isAmPmMode() ? Loc.getMessage(\"FORMAT_DATETIME\").replace(':SS', '') : Loc.getMessage(\"FORMAT_DATETIME\"),\n\t\t\tdateFrom,\n\t\t\tdateFromValue = '',\n\t\t\tserviceName = this.DOM.serviceInput ? this.DOM.serviceInput.value : '',\n\t\t\tentries = [];\n\n\t\tdateFrom = this.params.fullDay ? BookingUtil.parseDate(this.DOM.fromInput.value) : BookingUtil.parseDate(this.DOM.fromInput.value + ' ' + this.DOM.timeFromInput.value, false, false, formatDatetime);\n\n\t\tif (Type.isDate(dateFrom))\n\t\t{\n\t\t\tif (this.params.useResources)\n\t\t\t{\n\t\t\t\tentries = entries.concat(this.getSelectedResourceList());\n\t\t\t}\n\n\t\t\tif (this.params.useUsers)\n\t\t\t{\n\t\t\t\tentries = entries.concat(this.getSelectedUserList());\n\t\t\t}\n\t\t\tdateFromValue = BookingUtil.formatDate(BookingUtil.getDateTimeFormat(), dateFrom.getTime() / 1000);\n\t\t}\n\n\t\t// Clear inputs\n\t\tthis.DOM.valueInputs.forEach(function(input){BX.remove(input);});\n\t\tthis.DOM.valueInputs = [];\n\n\t\tentries.forEach(function(entry)\n\t\t{\n\t\t\tlet value = entry.type + '|' + entry.id + '|' + dateFromValue + '|' + duration + '|' + serviceName;\n\t\t\tallValuesValue += value + '#';\n\n\t\t\tthis.DOM.valueInputs.push(this.DOM.outerWrap.appendChild(\n\t\t\t\tDom.create('INPUT', {\n\t\t\t\t\tattrs:{\n\t\t\t\t\t\tname: this.params.inputName,\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\ttype: 'hidden'\n\t\t\t\t\t}})));\n\t\t}, this);\n\n\n\t\tif (!entries.length)\n\t\t{\n\t\t\tthis.DOM.valueInputs.push(this.DOM.outerWrap.appendChild(\n\t\t\t\tDom.create('INPUT', {\n\t\t\t\t\tattrs:{\n\t\t\t\t\t\tname: this.params.inputName,\n\t\t\t\t\t\tvalue: 'empty',\n\t\t\t\t\t\ttype: 'hidden'\n\t\t\t\t\t}})));\n\t\t}\n\n\t\tif (this.allValuesValue !== null && this.allValuesValue !== allValuesValue)\n\t\t{\n\t\t\tBX.onCustomEvent(window, 'onCrmEntityEditorUserFieldExternalChanged', [this.params.controlId]);\n\t\t\tBX.fireEvent(this.DOM.emptyInput, 'change');\n\t\t}\n\t\tthis.allValuesValue = allValuesValue;\n\t}\n\n\tshowPlannerPopup()\n\t{\n\t\tlet currentEventList = [];\n\t\tif (this.params.value && Type.isArray(this.params.value.ENTRIES))\n\t\t{\n\t\t\tthis.params.value.ENTRIES.forEach(function(entry)\n\t\t\t{\n\t\t\t\tcurrentEventList.push(entry.EVENT_ID);\n\t\t\t});\n\t\t}\n\n\t\tif (Type.isNull(this.plannerPopup))\n\t\t{\n\t\t\tthis.plannerPopup = new PlannerPopup();\n\t\t}\n\n\t\tthis.plannerPopup.show({\n\t\t\tplannerId: this.params.plannerId,\n\t\t\tbindNode: this.DOM.outerWrap,\n\t\t\tplannerConfig: this.getPlannerConfig(),\n\t\t\tselector: this.getSelectorData(),\n\t\t\tselectorOnChangeCallback: this.plannerSelectorOnChange.bind(this),\n\t\t\tselectEntriesOnChangeCallback: this.plannerSelectedEntriesOnChange.bind(this),\n\t\t\tcheckSelectorStatusCallback: this.checkSelectorStatusCallback.bind(this),\n\t\t\tcurrentEventList: currentEventList\n\t\t});\n\n\t\tthis.triggerUpdatePlanner();\n\t}\n\n\ttriggerUpdatePlanner()\n\t{\n\t\tif (!Type.isNull(this.plannerPopup)\n\t\t\t&& this.plannerPopup.plannerId === this.params.plannerId\n\t\t\t&& this.plannerPopup.isShown())\n\t\t{\n\t\t\tthis.plannerPopup.update({\n\t\t\t\tplannerId: this.params.plannerId,\n\t\t\t\tplannerConfig: this.getPlannerConfig(),\n\t\t\t\tselector: this.getSelectorData(),\n\t\t\t\tresourceList: this.getResourceList(),\n\t\t\t\tselectedResources: this.resourceSelector ? this.resourceSelector.getSelectedValues() : false,\n\t\t\t\tuserList: this.getUserList(),\n\t\t\t\tselectedUsers: this.userSelector ? this.userSelector.getSelectedValues() : false\n\t\t\t},\n\t\t\ttrue);\n\t\t}\n\n\t\tthis.onChangeValues();\n\t}\n\n\tgetPlannerConfig()\n\t{\n\t\tif (!this.params.plannerConfig)\n\t\t{\n\t\t\tthis.params.plannerConfig = {\n\t\t\t\tid: this.params.plannerId,\n\t\t\t\tselectEntriesMode: true,\n\t\t\t\tscaleLimitOffsetLeft: 2,\n\t\t\t\tscaleLimitOffsetRight: 2,\n\t\t\t\tmaxTimelineSize: 300,\n\t\t\t\tminEntryRows: 300,\n\t\t\t\tentriesListWidth: 120,\n\t\t\t\ttimelineCellWidth: 49,\n\t\t\t\tminWidth: 300,\n\t\t\t\taccuracy: 300,\n\t\t\t\tworkTime: [parseInt(this.params.workTime[0]), parseInt(this.params.workTime[1])]\n\t\t\t};\n\t\t}\n\n\t\tthis.params.plannerConfig.clickSelectorScaleAccuracy = Math.max((this.duration * 60) || 300, 3600);\n\n\t\treturn this.params.plannerConfig;\n\t}\n\n\tplannerSelectorOnChange(params)\n\t{\n\t\tif (params.plannerId === this.params.plannerId\n\t\t\t&& Type.isDate(params.dateFrom)\n\t\t\t&& Type.isDate(params.dateTo)\n\t\t)\n\t\t{\n\t\t\tlet\n\t\t\t\tdateFrom = params.dateFrom,\n\t\t\t\tdateTo = params.dateTo;\n\n\t\t\tthis.DOM.fromInput.value = BookingUtil.formatDate(BookingUtil.getDateFormat(), dateFrom);\n\n\t\t\tif (this.DOM.timeFromInput)\n\t\t\t{\n\t\t\t\tthis.DOM.timeFromInput.value = BookingUtil.formatDate(BookingUtil.getTimeFormatShort(), dateFrom);\n\t\t\t}\n\n\t\t\t// Duration in minutes\n\t\t\tthis.duration = (dateTo.getTime() - dateFrom.getTime() + (this.params.fullDay ? BookingUtil.getDayLength() : 0)) / 60000;\n\t\t\tthis.duration = Math.round(Math.max(this.duration, 0));\n\t\t\tthis.durationList.setValue(this.duration);\n\n\t\t\tthis.onChangeValues();\n\t\t}\n\t}\n\n\tplannerSelectedEntriesOnChange(params)\n\t{\n\t\tif (params.plannerId === this.params.plannerId && Type.isArray(params.entries))\n\t\t{\n\t\t\tlet\n\t\t\t\tselectedResources = [],\n\t\t\t\tselectedUsers = [];\n\n\t\t\tparams.entries.forEach(function(entry)\n\t\t\t{\n\t\t\t\tif (entry.selected)\n\t\t\t\t{\n\t\t\t\t\tif (entry.type === 'user')\n\t\t\t\t\t{\n\t\t\t\t\t\tselectedUsers.push(entry.id);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tselectedResources.push({\n\t\t\t\t\t\t\tid: entry.id,\n\t\t\t\t\t\t\ttype: entry.type\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.resourceSelector)\n\t\t\t{\n\t\t\t\tthis.resourceSelector.setValues(selectedResources, false);\n\t\t\t}\n\t\t\tif (this.userSelector)\n\t\t\t{\n\t\t\t\tthis.userSelector.setValues(selectedUsers, false);\n\t\t\t}\n\n\t\t\tthis.onChangeValues();\n\t\t}\n\t}\n\n\tcheckSelectorStatusCallback(params)\n\t{\n\t\tif (params.plannerId === this.params.plannerId && !this.params.allowOverbooking)\n\t\t{\n\t\t\tlet errorClass = 'calendar-resbook-error';\n\t\t\tthis.overbooked = params.status === 'busy';\n\n\t\t\tif (this.overbooked)\n\t\t\t{\n\t\t\t\tif (!this.DOM.errorNode)\n\t\t\t\t{\n\t\t\t\t\tthis.DOM.errorNode = this.DOM.dateTimeWrap.appendChild(Dom.create(\"div\", {\n\t\t\t\t\t\tprops: {className: \"calendar-resbook-content-error-text\"},\n\t\t\t\t\t\ttext: Loc.getMessage('USER_TYPE_RESOURCE_BOOKED_ERROR')\n\t\t\t\t\t}));\n\t\t\t\t}\n\n\t\t\t\tif (this.DOM.fromInput)\n\t\t\t\t{\n\t\t\t\t\tBX.addClass(this.DOM.fromInput, errorClass);\n\t\t\t\t}\n\t\t\t\tif (this.DOM.timeFromInput)\n\t\t\t\t{\n\t\t\t\t\tBX.addClass(this.DOM.timeFromInput, errorClass);\n\t\t\t\t}\n\t\t\t\tsetTimeout(BX.delegate(function(){BX.focus(this.DOM.fromInput)}, this), 50);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.DOM.errorNode)\n\t\t\t\t{\n\t\t\t\t\tBX.remove(this.DOM.errorNode);\n\t\t\t\t\tthis.DOM.errorNode = null;\n\t\t\t\t}\n\n\t\t\t\tif (this.DOM.fromInput)\n\t\t\t\t{\n\t\t\t\t\tBX.removeClass(this.DOM.fromInput, errorClass);\n\t\t\t\t}\n\t\t\t\tif (this.DOM.timeFromInput)\n\t\t\t\t{\n\t\t\t\t\tBX.removeClass(this.DOM.timeFromInput, errorClass);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSelectorData()\n\t{\n\t\tlet\n\t\t\tformatDatetime = BX.isAmPmMode() ? Loc.getMessage(\"FORMAT_DATETIME\").replace(':SS', '') : Loc.getMessage(\"FORMAT_DATETIME\"),\n\t\t\tselector, dateTo,\n\t\t\tduration = this.duration,\n\t\t\tdateFrom = BookingUtil.parseDate(this.DOM.fromInput.value + (this.DOM.timeFromInput ? ' ' + this.DOM.timeFromInput.value : ''), false, false, formatDatetime);\n\n\t\tif (!duration)\n\t\t{\n\t\t\tduration = this.params.fullDay ? 1440 : 60;\n\t\t}\n\n\t\tif (!Type.isDate(dateFrom))\n\t\t{\n\t\t\tdateFrom = new Date();\n\t\t}\n\n\t\tdateTo = new Date(dateFrom.getTime() + duration * 60000 - (this.params.fullDay ? BookingUtil.getDayLength() : 0));\n\n\t\tselector = {\n\t\t\tfrom: dateFrom,\n\t\t\tto: dateTo,\n\t\t\tfullDay: this.params.fullDay,\n\t\t\tupdateScaleLimits: true\n\t\t};\n\n\t\treturn selector;\n\t}\n\n\tgetResourceList()\n\t{\n\t\tlet entries = [];\n\t\tif (this.resourceSelector)\n\t\t{\n\t\t\tthis.resourceSelector.getValues().forEach(function(value)\n\t\t\t{\n\t\t\t\tentries.push(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: parseInt(value.id),\n\t\t\t\t\t\ttype : value.type,\n\t\t\t\t\t\tname : value.title\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\treturn entries;\n\t}\n\tgetSelectedResourceList()\n\t{\n\t\tlet entries = [];\n\t\tif (this.resourceSelector)\n\t\t{\n\t\t\tthis.resourceSelector.getSelectedValues().forEach(function(value)\n\t\t\t{\n\t\t\t\tentries.push(\n\t\t\t\t\t{\n\t\t\t\t\t\tid: parseInt(value.id),\n\t\t\t\t\t\ttype : value.type,\n\t\t\t\t\t\tname : value.title\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\treturn entries;\n\t}\n\n\tgetUserList()\n\t{\n\t\tlet entries = [], index = {}, userId;\n\t\tif (this.userSelector)\n\t\t{\n\t\t\tif (Type.isArray(this.params.userList))\n\t\t\t{\n\t\t\t\tthis.params.userList.forEach(function(userId){\n\t\t\t\t\tif (!index[userId])\n\t\t\t\t\t{\n\t\t\t\t\t\tentries.push({id: userId, type : 'user'});\n\t\t\t\t\t\tindex[userId] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.userSelector.getAttendeesCodesList().forEach(function(code)\n\t\t\t{\n\t\t\t\tif (code.substr(0, 1) === 'U')\n\t\t\t\t{\n\t\t\t\t\tuserId = parseInt(code.substr(1));\n\t\t\t\t\tif (!index[userId])\n\t\t\t\t\t{\n\t\t\t\t\t\tentries.push({id: userId, type : 'user'});\n\t\t\t\t\t\tindex[userId] = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn entries;\n\t}\n\n\tgetSelectedUserList()\n\t{\n\t\tlet entries = [];\n\t\tif (this.userSelector)\n\t\t{\n\t\t\tthis.userSelector.getAttendeesCodesList().forEach(function(code)\n\t\t\t{\n\t\t\t\tif (code.substr(0, 1) === 'U')\n\t\t\t\t{\n\t\t\t\t\tentries.push(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: parseInt(code.substr(1)),\n\t\t\t\t\t\t\ttype : 'user'\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn entries;\n\t}\n\n\tcheckResourceCountLimit()\n\t{\n\t\treturn this.params.resourceLimit <= 0 || this.getTotalResourceCount() <= this.params.resourceLimit;\n\t}\n\n\tgetTotalResourceCount()\n\t{\n\t\tlet result = 0;\n\t\tif (this.params.useResources && this.resourceSelector)\n\t\t{\n\t\t\tresult += this.resourceSelector.getValues().length;\n\t\t}\n\n\t\tif (this.params.useUsers)\n\t\t{\n\t\t\tresult += this.getSelectedUserList().length;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tisOverbooked()\n\t{\n\t\treturn this.overbooked;\n\t}\n}\n","import {BookingUtil, Type, Dom, Loc, SelectInput} from \"calendar.resourcebooking\";\n\nexport class ServiceSelector\n{\n\tconstructor(params)\n\t{\n\t\tthis.params = Type.isPlainObject(params) ? params : {};\n\t\tthis.outerCont = this.params.outerCont;\n\t\tthis.fieldSettings = this.params.fieldSettings || {};\n\t\tthis.create();\n\t}\n\n\tcreate()\n\t{\n\t\tthis.serviceListOuterWrap = this.outerCont.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-detail-wrap calendar-resourcebook-service-list-wrap\"}}));\n\n\t\tthis.durationTitleId = 'duration-title-wrap-' + Math.round(Math.random() * 100000);\n\t\tthis.servicesTitleWrap = this.serviceListOuterWrap\n\t\t\t.appendChild(Dom.create(\"div\", {\n\t\t\t\tprops: {className: \"calendar-resourcebook-content-block-detail-inner\"},\n\t\t\t\thtml: '<div class=\"calendar-resourcebook-content-block-detail-resource\">' +\n\t\t\t\t\t'<div class=\"calendar-resourcebook-content-block-title\">' +\n\t\t\t\t\t'<span class=\"calendar-resourcebook-content-block-title-text\">' + Loc.getMessage('USER_TYPE_RESOURCE_SERVICE_LABEL') + '</span>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'<div id=\"' + this.durationTitleId + '\" class=\"calendar-resourcebook-content-block-title calendar-resourcebook-content-block-duration-title\">' +\n\t\t\t\t\t'<span class=\"calendar-resourcebook-content-block-title-text\">' + Loc.getMessage('USER_TYPE_RESOURCE_DURATION_LABEL') + '</span>' +\n\t\t\t\t\t'</div>' +\n\t\t\t\t\t'</div>'\n\t\t\t}));\n\n\t\tthis.serviceListRowsWrap = this.serviceListOuterWrap\n\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-detail-inner\"}}))\n\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-detail\"}}));\n\n\t\tBX.bind(this.serviceListRowsWrap, 'click', this.handlePopupClick.bind(this));\n\t\tif (Type.isArray(this.fieldSettings.SERVICE_LIST) && this.fieldSettings.SERVICE_LIST.length > 0)\n\t\t{\n\t\t\tthis.fieldSettings.SERVICE_LIST.forEach(function(service)\n\t\t\t{\n\t\t\t\tthis.addRow(service, false);\n\t\t\t}, this);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.addRow(false, false);\n\t\t}\n\n\t\tthis.serviceListAddWrap = this.serviceListOuterWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resource-content-block-add-field\"}}));\n\n\t\tthis.serviceAddButton = this.serviceListAddWrap.appendChild(Dom.create(\"span\", {\n\t\t\tprops: {className: \"calendar-resource-content-block-add-link calendar-resource-content-block-add-link-icon\"},\n\t\t\ttext: Loc.getMessage('USER_TYPE_RESOURCE_ADD_SERVICE'),\n\t\t\tevents: {click: this.addRow.bind(this)}\n\t\t}));\n\t\tBX.bind(window, 'resize', this.checkDurationTitlePosition.bind(this));\n\t\tthis.checkDurationTitlePosition();\n\n\t\tthis.show(this.fieldSettings.USE_SERVICES === 'Y');\n\t}\n\n\tshow(show)\n\t{\n\t\tif (show)\n\t\t{\n\t\t\tthis.serviceListOuterWrap.style.display = '';\n\t\t\tDom.addClass(this.serviceListOuterWrap, 'show');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.serviceListOuterWrap.style.display = 'none';\n\t\t\tDom.removeClass(this.serviceListOuterWrap, 'show');\n\t\t}\n\t}\n\n\taddRow(row, animation)\n\t{\n\t\tanimation = animation !== false;\n\n\t\tif (!Type.isPlainObject(row))\n\t\t{\n\t\t\trow = {name: '', duration: this.getDefaultDuration()}\n\t\t}\n\n\t\tlet service = {\n\t\t\touterWrap: this.serviceListRowsWrap\n\t\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-detail-resource calendar-resourcebook-service-row\"}}))\n\t\t};\n\n\t\tif (animation)\n\t\t{\n\t\t\tsetTimeout(function(){\n\t\t\t\tDom.addClass(service.outerWrap, 'show');\n\t\t\t}, 1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(service.outerWrap, 'show');\n\t\t}\n\n\t\tservice.wrap = service.outerWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-detail-resource-inner\"}}));\n\n\t\tservice.nameInput = service.wrap.appendChild(Dom.create(\"input\", {\n\t\t\tprops: {\n\t\t\t\tclassName: \"calendar-resourcebook-content-input calendar-resourcebook-service-input\",\n\t\t\t\tplaceholder: Loc.getMessage('USER_TYPE_RESOURCE_SERVICE_PLACEHOLDER'),\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: row.name\n\t\t\t},\n\t\t\tattrs: {}\n\t\t}));\n\n\t\tservice.durationInput = service.wrap.appendChild(Dom.create(\"input\", {\n\t\t\tprops: {\n\t\t\t\tclassName: \"calendar-resbook-duration-input calendar-resbook-field-datetime-menu\",\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: row.duration\n\t\t\t},\n\t\t\tattrs: {}\n\t\t}));\n\n\t\tservice.durationList = new SelectInput({\n\t\t\tinput: service.durationInput,\n\t\t\tgetValues: function(){\n\t\t\t\tlet fullday = false;\n\t\t\t\tif (Type.isFunction(this.params.getFullDayValue))\n\t\t\t\t{\n\t\t\t\t\tfullday = this.params.getFullDayValue();\n\t\t\t\t}\n\t\t\t\treturn BookingUtil.getDurationList(fullday);\n\t\t\t}.bind(this),\n\t\t\tvalue: row.duration\n\t\t});\n\n\t\tservice.deleteWrap = service.wrap.appendChild(Dom.create(\"DIV\", {\n\t\t\tprops: {className: \"calendar-resourcebook-content-block-detail-delete\"},\n\t\t\thtml: '<span class=\"calendar-resourcebook-content-block-control-delete calendar-resourcebook-content-block-control-delete-detail\"></span>'\n\t\t}));\n\n\t\t// Adjust outer wrap max height\n\t\tthis.serviceListOuterWrap.style.maxHeight = Math.max(500, this.serviceListRowsWrap.childNodes.length * 45 + 100) + 'px';\n\t}\n\n\tcheckDurationTitlePosition(timeout)\n\t{\n\t\tif (timeout !== false)\n\t\t{\n\t\t\tif (this.checkDurationTitlePositionTimeout)\n\t\t\t{\n\t\t\t\tclearTimeout(this.checkDurationTitlePositionTimeout);\n\t\t\t}\n\n\t\t\tthis.checkDurationTitlePositionTimeout = setTimeout(function(){\n\n\t\t\t\tthis.checkDurationTitlePosition(false);\n\t\t\t}.bind(this), 100);\n\t\t\treturn;\n\t\t}\n\n\t\tlet durationInput = this.serviceListOuterWrap.querySelector('input.calendar-resbook-duration-input');\n\t\tif (this.durationTitleId && BX(this.durationTitleId) && durationInput)\n\t\t{\n\t\t\tBX(this.durationTitleId).style.left = (durationInput.offsetLeft + 15) + 'px';\n\t\t}\n\t}\n\n\tgetDefaultDuration()\n\t{\n\t\tlet fullday = false;\n\t\tif (Type.isFunction(this.params.getFullDayValue))\n\t\t{\n\t\t\tfullday = this.params.getFullDayValue();\n\t\t}\n\t\treturn fullday ? 1440 : 30;\n\t}\n\n\tclickHandler(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (Dom.hasClass(target, 'calendar-resourcebook-content-block-control-delete')\n\t\t\t|| Dom.hasClass(target, 'calendar-resourcebook-content-block-detail-delete')) // Delete button\n\t\t{\n\t\t\tlet resWrap = BX.findParent(target, {className: 'calendar-resourcebook-service-row'});\n\t\t\tif (resWrap)\n\t\t\t{\n\t\t\t\tDom.removeClass(resWrap, 'show');\n\t\t\t\tsetTimeout(function(){Dom.remove(resWrap);}, 500);\n\t\t\t\tthis.checkRows();\n\t\t\t}\n\t\t}\n\t}\n\n\tgetValues(e)\n\t{\n\t\tlet\n\t\t\tserviceList = [],\n\t\t\tnameInput, durationInput,\n\t\t\ti, rows = this.serviceListRowsWrap.querySelectorAll('.calendar-resourcebook-service-row');\n\n\t\tfor (i = 0; i < rows.length; i++)\n\t\t{\n\t\t\tif (Dom.hasClass(rows[i], 'show'))\n\t\t\t{\n\t\t\t\tnameInput = rows[i].querySelector('input.calendar-resourcebook-service-input');\n\t\t\t\tdurationInput = rows[i].querySelector('input.calendar-resbook-duration-input');\n\n\t\t\t\tif (nameInput && durationInput)\n\t\t\t\t{\n\t\t\t\t\tserviceList.push({\n\t\t\t\t\t\tname: nameInput.value,\n\t\t\t\t\t\tduration: BookingUtil.parseDuration(durationInput.value)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn serviceList;\n\t}\n\n\tcheckRows()\n\t{\n\t\tlet serviceList = this.getValues();\n\t\tif (!serviceList.length)\n\t\t{\n\t\t\tthis.show(false);\n\t\t\tif (Type.isFunction(this.params.onFullClearHandler))\n\t\t\t{\n\t\t\t\tthis.params.onFullClearHandler();\n\t\t\t}\n\t\t\tthis.addRow(false, false);\n\t\t}\n\t}\n\n\n\thandlePopupClick(e)\n\t{\n\t\tlet target = e.target || e.srcElement;\n\t\tif (Dom.hasClass(target, 'calendar-resourcebook-content-block-control-delete')\n\t\t\t|| Dom.hasClass(target, 'calendar-resourcebook-content-block-detail-delete')) // Delete button\n\t\t{\n\t\t\tlet resWrap = BX.findParent(target, {className: 'calendar-resourcebook-service-row'});\n\t\t\tif (resWrap)\n\t\t\t{\n\t\t\t\tBX.removeClass(resWrap, 'show');\n\t\t\t\tsetTimeout(function(){BX.remove(resWrap);}, 500);\n\t\t\t\tthis.checkRows();\n\t\t\t}\n\t\t}\n\t}\n}","import {Type, Dom, Loc} from \"calendar.resourcebooking\";\nexport class TimezoneSelector\n{\n\tstatic timezoneList;\n\n\tconstructor(params)\n\t{\n\t\tthis.params = Type.isPlainObject(params) ? params : {};\n\t\tthis.DOM = {\n\t\t\touterWrap: this.params.outerWrap\n\t\t};\n\t\tDom.addClass(this.DOM.outerWrap, 'fields enumeration field-item');\n\t\tthis.create();\n\t}\n\n\tcreate()\n\t{\n\t\tthis.DOM.select = this.DOM.outerWrap.appendChild(Dom.create('select'));\n\t\tthis.DOM.select.options.add(\n\t\t\tnew Option(\n\t\t\t\tLoc.getMessage('USER_TYPE_LOADING_TIMEZONE_LIST'),\n\t\t\t\tthis.params.selectedValue || '',\n\t\t\t\ttrue,\n\t\t\t\ttrue)\n\t\t);\n\n\t\tthis.getTimezoneList().then(\n\t\t\tfunction(timezoneList)\n\t\t\t{\n\t\t\t\tDom.remove(this.DOM.select.options[0]);\n\t\t\t\ttimezoneList.forEach(function(timezone)\n\t\t\t\t{\n\t\t\t\t\tlet selected = this.params.selectedValue ? this.params.selectedValue === timezone.value : timezone.selected;\n\n\t\t\t\t\tthis.DOM.select.options.add(\n\t\t\t\t\t\tnew Option(\n\t\t\t\t\t\t\ttimezone.label,\n\t\t\t\t\t\t\ttimezone.value,\n\t\t\t\t\t\t\tselected,\n\t\t\t\t\t\t\tselected));\n\t\t\t\t}, this);\n\t\t\t}.bind(this)\n\t\t);\n\t}\n\n\tgetTimezoneList(params)\n\t{\n\t\tparams = params || {};\n\n\t\treturn new Promise((resolve) => {\n\t\t\tif (!TimezoneSelector.timezoneList || params.clearCache)\n\t\t\t{\n\t\t\t\tBX.ajax.runAction('calendar.api.calendarajax.getTimezoneList')\n\t\t\t\t\t.then(function (response)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tTimezoneSelector.timezoneList = [];\n\t\t\t\t\t\t\tfor (let key in response.data)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (response.data.hasOwnProperty(key))\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tTimezoneSelector.timezoneList.push({\n\t\t\t\t\t\t\t\t\t\tvalue: response.data[key].timezone_id,\n\t\t\t\t\t\t\t\t\t\tlabel: response.data[key].title,\n\t\t\t\t\t\t\t\t\t\tselected: response.data[key].default\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve(TimezoneSelector.timezoneList);\n\t\t\t\t\t\t}.bind(this),\n\t\t\t\t\t\tfunction (response)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresolve(TimezoneSelector.timezoneList);\n\t\t\t}\n\t\t});\n\t}\n\n\tgetValue()\n\t{\n\t\treturn this.DOM.select.value;\n\t}\n}\n\n\n\n\n\n\n\n","import {Type, Dom, Loc, Event} from \"calendar.resourcebooking\";\n\nexport class ModeSelector\n{\n\tconstructor(params)\n\t{\n\t\tthis.params = params;\n\t\tthis.outerWrap = this.create();\n\t}\n\n\tcreate()\n\t{\n\t\tlet\n\t\t\twrapNode = Dom.create(\"span\",\n\t\t\t\t{\n\t\t\t\t\tprops:{className: \"calendar-resourcebook-content-block-select calendar-resourcebook-mode-selector\"}\n\t\t\t\t}\n\t\t\t),\n\t\t\tmenuItems = [\n\t\t\t\t{\n\t\t\t\t\ttext: Loc.getMessage('USER_TYPE_RESOURCE_CHOOSE_RESOURCES'),\n\t\t\t\t\tonclick: function(e, item){\n\t\t\t\t\t\tif (Type.isFunction(this.params.showResources))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.params.showResources();\n\t\t\t\t\t\t}\n\t\t\t\t\t\twrapNode.innerHTML = item.text;\n\t\t\t\t\t\tthis.modeSwitcherPopup.close();\n\t\t\t\t\t}.bind(this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: Loc.getMessage('USER_TYPE_RESOURCE_CHOOSE_USERS'),\n\t\t\t\t\tonclick: function(e, item){\n\t\t\t\t\t\tif (Type.isFunction(this.params.showUsers))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.params.showUsers();\n\t\t\t\t\t\t}\n\t\t\t\t\t\twrapNode.innerHTML = item.text;\n\t\t\t\t\t\tthis.modeSwitcherPopup.close();\n\t\t\t\t\t}.bind(this)\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: Loc.getMessage('USER_TYPE_RESOURCE_CHOOSE_RESOURCES_AND_USERS'),\n\t\t\t\t\tonclick: function(e, item){\n\t\t\t\t\t\tif (Type.isFunction(this.params.showResourcesAndUsers))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.params.showResourcesAndUsers();\n\t\t\t\t\t\t}\n\t\t\t\t\t\twrapNode.innerHTML = item.text;\n\t\t\t\t\t\tthis.modeSwitcherPopup.close();\n\t\t\t\t\t}.bind(this)\n\t\t\t\t}\n\t\t\t],\n\t\t\tswitcherId = 'mode-switcher-' + Math.round(Math.random() * 100000);\n\n\n\t\tEvent.bind(wrapNode, 'click', function(){\n\t\t\tif (this.modeSwitcherPopup && this.modeSwitcherPopup.popupWindow && this.modeSwitcherPopup.popupWindow.isShown())\n\t\t\t{\n\t\t\t\treturn this.modeSwitcherPopup.close();\n\t\t\t}\n\n\t\t\tthis.modeSwitcherPopup = BX.PopupMenu.create(\n\t\t\t\tswitcherId,\n\t\t\t\twrapNode,\n\t\t\t\tmenuItems,\n\t\t\t\t{\n\t\t\t\t\tcloseByEsc : true,\n\t\t\t\t\tautoHide : true,\n\t\t\t\t\toffsetTop: 0,\n\t\t\t\t\toffsetLeft: 20,\n\t\t\t\t\tangle: true\n\t\t\t\t}\n\t\t\t);\n\t\t\tthis.modeSwitcherPopup.show();\n\n\t\t\tBX.addCustomEvent(this.modeSwitcherPopup.popupWindow, 'onPopupClose', function()\n\t\t\t{\n\t\t\t\tBX.PopupMenu.destroy(switcherId);\n\t\t\t\tthis.modeSwitcherPopup = null;\n\t\t\t}.bind(this));\n\t\t}.bind(this));\n\n\t\tif (this.params.useUsers && !this.params.useResources)\n\t\t{\n\t\t\twrapNode.innerHTML = Loc.getMessage('USER_TYPE_RESOURCE_CHOOSE_USERS');\n\t\t}\n\t\telse if (this.params.useUsers && this.params.useResources)\n\t\t{\n\t\t\twrapNode.innerHTML = Loc.getMessage('USER_TYPE_RESOURCE_CHOOSE_RESOURCES_AND_USERS');\n\t\t}\n\t\telse\n\t\t{\n\t\t\twrapNode.innerHTML = Loc.getMessage('USER_TYPE_RESOURCE_CHOOSE_RESOURCES');\n\t\t}\n\n\t\treturn wrapNode;\n\t}\n\n\tgetOuterWrap()\n\t{\n\t\treturn this.outerWrap;\n\t}\n}\n","import {BookingUtil} from \"calendar.resourcebooking\";\nimport {ServiceSelector} from \"./controls/serviceselector\"\nimport {UserSelectorFieldEditControl} from \"./controls/userselectorfieldeditcontrol\";\nimport {ResourceSelectorFieldEditControl} from \"./controls/resourceselectorfieldeditcontrol\";\nimport {TimezoneSelector} from \"./controls/timezoneselector\";\nimport {ModeSelector} from \"./controls/modeselector\";\nimport {ResourcebookingUserfield} from \"calendar.resourcebookinguserfield\";\n\nexport let customizeCrmEntityEditor = function(CrmConfigurator)\n{\n\tlet Configurator = function()\n\t{\n\t\tConfigurator.superclass.constructor.apply(this);\n\t};\n\tBX.extend(Configurator, CrmConfigurator);\n\n\tConfigurator.create = function(id, settings)\n\t{\n\t\tlet self = new Configurator();\n\t\tself.initialize(id, settings);\n\t\treturn self;\n\t};\n\n\tConfigurator.prototype.layout = function(options, params)\n\t{\n\t\tif(this._hasLayout)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tif(!BX.type.isPlainObject(params))\n\t\t{\n\t\t\tparams = {}\n\t\t}\n\n\t\tif(this._mode === BX.Crm.EntityEditorMode.view)\n\t\t{\n\t\t\tthrow \"EntityEditorUserFieldConfigurator. View mode is not supported by this control type.\";\n\t\t}\n\n\t\tthis.getBitrix24Limitation({\n\t\t\tcallback: BX.delegate(function(limit)\n\t\t\t{\n\t\t\t\tthis.RESOURCE_LIMIT = limit;\n\t\t\t}, this)\n\t\t});\n\n\t\tif(this._field)\n\t\t{\n\t\t\tthis.fieldInfo = this._field.getFieldInfo();\n\t\t}\n\t\telse if (!params.settings)\n\t\t{\n\t\t\treturn this.getDefaultUserfieldSettings({\n\t\t\t\tdisplayCallback: BX.delegate(function(settings)\n\t\t\t\t{\n\t\t\t\t\tthis.layout(options, {settings: settings});\n\t\t\t\t}, this)\n\t\t\t});\n\t\t}\n\n\t\tthis._wrapper = BX.create(\"div\", {props: {className: \"calendar-resourcebook-content\"}});\n\t\tthis._innerWrapper = this._wrapper\n\t\t\t.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-wrap\"}}))\n\t\t\t.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-inner\"}}));\n\n\t\tvar\n\t\t\tfieldSettings = this.fieldInfo ? this.fieldInfo.SETTINGS : params.settings,\n\t\t\tresourceList = [],\n\t\t\tselectedResourceList = [],\n\t\t\tisNew = this._field === null,\n\t\t\ttitle = this.getMessage(\"labelField\"),\n\t\t\tmanager = this._editor.getUserFieldManager(),\n\t\t\tlabel = this._field ? this._field.getTitle() : manager.getDefaultFieldLabel(this._typeId);\n\n\t\tthis.RESOURCE_LIMIT = fieldSettings.RESOURCE_LIMIT || 0;\n\n\t\t// region Field Title\n\t\tthis._labelInput = BX.create(\"input\",\n\t\t\t{\n\t\t\t\tattrs:\n\t\t\t\t\t{\n\t\t\t\t\t\tclassName: \"crm-entity-widget-content-input\",\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\tvalue: label\n\t\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis._innerWrapper.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"div\",\n\t\t\t\t{\n\t\t\t\t\tprops: { className: \"calendar-resourcebook-content-block\" },\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t// Title\n\t\t\t\t\t\t\tBX.create(\n\t\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tprops: { className: \"crm-entity-widget-content-block-title\" },\n\t\t\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t\t\tBX.create(\n\t\t\t\t\t\t\t\t\t\t\t\"span\",\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tattrs: { className: \"crm-entity-widget-content-block-title-text\" },\n\t\t\t\t\t\t\t\t\t\t\t\ttext: title\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t// Input\n\t\t\t\t\t\t\tBX.create(\n\t\t\t\t\t\t\t\t\"div\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tprops: { className: \"calendar-resourcebook-content-block-field\" },\n\t\t\t\t\t\t\t\t\tchildren: [ this._labelInput ]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t// Hr\n\t\t\t\t\t\t\tBX.create(\"hr\", { props: { className: \"crm-entity-widget-hr\" } })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\t// endregion\n\n\t\t// region Users&Resources Mode selector\n\t\tthis._innerWrapper.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"div\",\n\t\t\t\t{\n\t\t\t\t\tprops: { className: \"calendar-resourcebook-content-block\" },\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tBX.create(\n\t\t\t\t\t\t\t\t\"span\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tprops: {className: \"calendar-resourcebook-content-block-title-text\"},\n\t\t\t\t\t\t\t\t\ttext: BX.message('USER_TYPE_RESOURCE_CHOOSE')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tnew ModeSelector({\n\t\t\t\t\t\t\t\tuseResources: fieldSettings.USE_RESOURCES === 'Y',\n\t\t\t\t\t\t\t\tuseUsers: fieldSettings.USE_USERS === 'Y',\n\t\t\t\t\t\t\t\tshowUsers: function()\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tthis.resourceList.hide();\n\t\t\t\t\t\t\t\t\tthis.userList.show();\n\t\t\t\t\t\t\t\t}.bind(this),\n\t\t\t\t\t\t\t\tshowResources: function()\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tthis.resourceList.show();\n\t\t\t\t\t\t\t\t\tthis.userList.hide();\n\t\t\t\t\t\t\t\t}.bind(this),\n\t\t\t\t\t\t\t\tshowResourcesAndUsers: function()\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tthis.resourceList.show();\n\t\t\t\t\t\t\t\t\tthis.userList.show();\n\t\t\t\t\t\t\t\t}.bind(this)\n\t\t\t\t\t\t\t}).getOuterWrap()\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\t// endregion\n\n\t\tvar optionWrapper = this._innerWrapper.appendChild(BX.create(\n\t\t\t\"div\",\n\t\t\t{\n\t\t\t\tprops: { className: \"calendar-resourcebook-content-block\" }\n\t\t\t}\n\t\t));\n\n\t\t// region Use Resources Option\n\t\tthis.resourcesWrap = optionWrapper.appendChild(BX.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-control-field calendar-resourcebook-content-block-control-field-add\"}}));\n\n\t\tthis.resourcesTitleWrap = this.resourcesWrap\n\t\t\t.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title\"}}))\n\t\t\t.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title-text\"}, text: BX.message('USER_TYPE_RESOURCE_RESOURCE_CONTROL_DEFAULT_NAME') + ':'}));\n\n\t\tthis.resourcesListWrap = this.resourcesWrap.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-new-entries-wrap calendar-resourcebook-content-block-detail-inner\"}}));\n\n\t\tthis.resourcesListLowControls = this.resourcesWrap.appendChild(BX.create(\"div\", {props: {className: \"calendar-resource-content-block-add-field\"}}));\n\n\t\tif (fieldSettings.RESOURCES\n\t\t\t&& BX.type.isPlainObject(fieldSettings.RESOURCES['resource'])\n\t\t\t&& BX.type.isArray(fieldSettings.RESOURCES['resource'].SECTIONS))\n\t\t{\n\t\t\tfieldSettings.RESOURCES['resource'].SECTIONS.forEach(function(resource)\n\t\t\t{\n\t\t\t\tresourceList.push({\n\t\t\t\t\tid: resource.ID,\n\t\t\t\t\ttitle: resource.NAME,\n\t\t\t\t\ttype: resource.CAL_TYPE\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tif (BX.type.isArray(fieldSettings.SELECTED_RESOURCES))\n\t\t{\n\t\t\tfieldSettings.SELECTED_RESOURCES.forEach(function(resource)\n\t\t\t{\n\t\t\t\tselectedResourceList.push({\n\t\t\t\t\tid: resource.id,\n\t\t\t\t\ttype: resource.type\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tthis.resourceList = new ResourceSelectorFieldEditControl({\n\t\t\tshown: fieldSettings.USE_RESOURCES === 'Y',\n\t\t\teditMode: true,\n\t\t\touterWrap: this.resourcesWrap,\n\t\t\tlistWrap: this.resourcesListWrap,\n\t\t\tcontrolsWrap: this.resourcesListLowControls,\n\t\t\tvalues: selectedResourceList,\n\t\t\tresourceList: resourceList,\n\t\t\tcheckLimitCallback: this.checkResourceCountLimit.bind(this),\n\t\t\tcheckLimitCallbackForNew: this.checkResourceCountLimitForNewEntries.bind(this)\n\t\t});\n\t\t// endregion\n\n\t\t// region Users Selector\n\t\tthis.userSelectorWrap = optionWrapper.appendChild(BX.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-control-field calendar-resourcebook-content-block-control-field-add\"}}));\n\n\t\tthis.usersTitleWrap = this.userSelectorWrap\n\t\t\t.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title\"}}))\n\t\t\t.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title-text\"}, text: BX.message('USER_TYPE_RESOURCE_USERS_CONTROL_DEFAULT_NAME') + ':'}));\n\n\t\tthis.usersListWrap = this.userSelectorWrap.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-control\"}}));\n\n\t\tvar itemsSelected = [];\n\t\tif (BX.type.isArray(fieldSettings.SELECTED_USERS))\n\t\t{\n\t\t\tfieldSettings.SELECTED_USERS.forEach(function(user)\n\t\t\t{\n\t\t\t\titemsSelected.push('U' + parseInt(user));\n\t\t\t});\n\t\t}\n\n\t\tthis.userList = new UserSelectorFieldEditControl({\n\t\t\tshown: fieldSettings.USE_USERS === 'Y',\n\t\t\touterWrap: this.userSelectorWrap,\n\t\t\twrapNode: this.usersListWrap,\n\t\t\tsocnetDestination: ResourcebookingUserfield.getSocnetDestination(),\n\t\t\titemsSelected: itemsSelected,\n\t\t\tcheckLimitCallback: this.checkResourceCountLimit.bind(this)\n\t\t});\n\t\t// endregion\n\n\t\t// Region Data, Time and services\n\t\toptionWrapper.appendChild(\n\t\t\tBX.create(\"hr\", { props: { className: \"crm-entity-widget-hr\" } })\n\t\t);\n\n\t\tthis.datetimeOptionsWrap = optionWrapper.appendChild(BX.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-control-field calendar-resourcebook-content-block-control-field-add\" }}));\n\n\t\tthis.datetimeOptionsWrap.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title\"}})).appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title-text\"}, text: BX.message('USER_TYPE_RESOURCE_DATETIME_BLOCK_TITLE') + ':'}));\n\n\t\tthis.datetimeOptionsInnerWrap = this.datetimeOptionsWrap.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-options\"}}));\n\n\t\tthis.timezoneSettingsWrap = optionWrapper.appendChild(\n\t\t\tBX.create(\"div\", {props: {\n\t\t\t\t\tclassName: \"calendar-resourcebook-content-block-control-field calendar-resourcebook-content-block-options\" },\n\t\t\t\tstyle: {display: fieldSettings.FULL_DAY === 'Y' ? 'none' : ''}\n\t\t\t}));\n\n\t\tthis.timezoneSettingsWrap.appendChild(BX.create(\"hr\", {props: {className: \"crm-entity-widget-hr\"}}));\n\t\tthis.timezoneSettingsWrap\n\t\t\t.appendChild(BX.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title\"}}))\n\t\t\t.appendChild(BX.create(\"span\", {props: {className: \"calendar-resourcebook-content-block-title-text\"}, text: BX.message('USER_TYPE_RESOURCE_TIMEZONE_SETTINGS_TITLE') + ':'}));\n\n\t\tthis.timezoneSelectorWrap = this.timezoneSettingsWrap.appendChild(BX.create(\"div\", {\n\t\t\tstyle: {display: fieldSettings.USE_USER_TIMEZONE === 'Y' ? 'none' : ''}\n\t\t}));\n\n\t\tthis.timezoneSelectWrap = this.timezoneSelectorWrap\n\t\t\t.appendChild(BX.create(\n\t\t\t\t\"div\",\n\t\t\t\t{\n\t\t\t\t\tprops: { className: \"calendar-resourcebook-content-block-field\" }\n\t\t\t\t}\n\t\t\t));\n\n\n\t\tthis.timezoneSelector = new TimezoneSelector({\n\t\t\touterWrap: this.timezoneSelectWrap,\n\t\t\tselectedValue: fieldSettings.TIMEZONE\n\t\t});\n\n\t\tthis.useUserTimezoneCheckBox = BX.create(\n\t\t\t\"input\",\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\tchecked: fieldSettings.USE_USER_TIMEZONE === 'Y'\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tthis.timezoneSettingsWrap.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis.useUserTimezoneCheckBox,\n\t\t\t\t\t\t\tBX.create(\"span\", { text: BX.message('USER_TYPE_RESOURCE_USE_USER_TIMEZONE') })\n\t\t\t\t\t\t],\n\t\t\t\t\tevents: {\n\t\t\t\t\t\tclick: BX.proxy(this.handleUserTimezoneCheckbox, this)\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\t// endregion\n\n\t\t//region Checkbox \"Full day\"\n\t\tthis._fulldayCheckBox = BX.create(\n\t\t\t\"input\",\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\tchecked: fieldSettings.FULL_DAY === 'Y'\n\t\t\t\t},\n\t\t\t\tevents: {\n\t\t\t\t\tclick: BX.proxy(this.handleFullDayMode, this)\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.datetimeOptionsInnerWrap.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis._fulldayCheckBox,\n\t\t\t\t\t\t\tBX.create(\"span\", { text: BX.message('USER_TYPE_RESOURCE_FULL_DAY') })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\t//endregion\n\n\t\t//region Checkbox \"Add services\"\n\t\tthis._servicesCheckBox = BX.create(\n\t\t\t\"input\",\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\tchecked: fieldSettings.USE_SERVICES === 'Y'\n\t\t\t\t},\n\t\t\t\tevents: {\n\t\t\t\t\tclick : BX.delegate(function(){\n\t\t\t\t\t\tif (this.serviceList)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.serviceList.show(this._servicesCheckBox.checked);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.datetimeOptionsInnerWrap.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis._servicesCheckBox,\n\t\t\t\t\t\t\tBX.create(\"span\", { text: BX.message('USER_TYPE_RESOURCE_ADD_SERVICES') })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\tthis.serviceList = new ServiceSelector({\n\t\t\touterCont: this.datetimeOptionsInnerWrap,\n\t\t\tonFullClearHandler: function()\n\t\t\t{\n\t\t\t\tthis._servicesCheckBox.checked = false;\n\t\t\t}.bind(this),\n\t\t\tfieldSettings: fieldSettings,\n\t\t\tgetFullDayValue: function(){return this._fulldayCheckBox.checked}.bind(this)\n\t\t});\n\n\t\toptionWrapper.appendChild(\n\t\t\tBX.create(\"hr\", { props: { className: \"crm-entity-widget-hr\" } })\n\t\t);\n\n\t\t//region Checkbox \"Is Required\"\n\t\tthis.additionaOptionsWrap = optionWrapper.appendChild(BX.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-options\"}}));\n\n\t\tthis._isRequiredCheckBox = BX.create(\n\t\t\t\"input\",\n\t\t\t{ props: { type: \"checkbox\", checked: this._field && this._field.isRequired() } }\n\t\t);\n\n\t\tthis.additionaOptionsWrap.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis._isRequiredCheckBox,\n\t\t\t\t\t\t\tBX.create(\"span\", { text: this.getMessage(\"isRequiredField\") })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\t//endregion\n\n\t\t//region Checkbox \"Show Always\"\n\t\tthis._showAlwaysCheckBox = BX.create(\"input\", { props: { type: \"checkbox\" } });\n\t\tif(isNew)\n\t\t{\n\t\t\tthis._showAlwaysCheckBox.checked = BX.prop.getBoolean(this._settings, \"showAlways\", true);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis._showAlwaysCheckBox.checked = this._field.checkOptionFlag(\n\t\t\t\tBX.Crm.EntityEditorControlOptions.showAlways\n\t\t\t);\n\t\t}\n\t\tthis.additionaOptionsWrap.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis._showAlwaysCheckBox,\n\t\t\t\t\t\t\tBX.create(\"span\", { text: this.getMessage(\"showAlways\") })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\t//endregion\n\n\t\t//region Checkbox \"Overbooking\"\n\t\tthis._overbookingCheckBox = BX.create(\n\t\t\t\"input\",\n\t\t\t{ props: { type: \"checkbox\", checked: fieldSettings.ALLOW_OVERBOOKING === 'Y'} }\n\t\t);\n\n\t\tthis.additionaOptionsWrap.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis._overbookingCheckBox,\n\t\t\t\t\t\t\tBX.create(\"span\", { text: BX.message('USER_TYPE_RESOURCE_OVERBOOKING') })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\t//endregion\n\n\t\tthis._innerWrapper.appendChild(\n\t\t\tBX.create(\n\t\t\t\t\"div\",\n\t\t\t\t{\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: \"calendar-resourcebook-content-block-btn-container\"\n\t\t\t\t\t},\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\tBX.create(\"hr\", { props: { className: \"crm-entity-widget-hr\" } }),\n\t\t\t\t\t\tBX.create(\n\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tprops: {type: \"button\", className: \"ui-btn ui-btn-sm ui-btn-primary\"},\n\t\t\t\t\t\t\t\ttext: BX.message(\"CRM_EDITOR_SAVE\"),\n\t\t\t\t\t\t\t\tevents: { click: BX.delegate(this.onSaveButtonClick, this) }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t),\n\t\t\t\t\t\tBX.create(\n\t\t\t\t\t\t\t\"button\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tprops: {type: \"button\", className: \"ui-btn ui-btn-sm ui-btn-light-border\" },\n\t\t\t\t\t\t\t\ttext: BX.message(\"CRM_EDITOR_CANCEL\"),\n\t\t\t\t\t\t\t\tevents: { click: BX.delegate(this.onCancelButtonClick, this) }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\tthis.fieldSettings = fieldSettings;\n\t\tthis.registerLayout(options);\n\t\tthis._hasLayout = true;\n\t};\n\n\tConfigurator.prototype.getDefaultUserfieldSettings = function(params)\n\t{\n\t\tBX.ajax.runAction('calendar.api.resourcebookingajax.getdefaultuserfieldsettings', {\n\t\t\tdata: {}\n\t\t}).then(function (response)\n\t\t\t{\n\t\t\t\tif (params && BX.type.isFunction(params.displayCallback))\n\t\t\t\t{\n\t\t\t\t\tparams.displayCallback(response.data);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction (response) {\n\t\t\t\t/**\n\t\t\t\t {\n\t\t\t\t\t\t \"status\": \"error\",\n\t\t\t\t\t\t \"errors\": [...]\n\t\t\t\t\t }\n\t\t\t\t **/\n\t\t\t});\n\t};\n\n\tConfigurator.prototype.getBitrix24Limitation = function(params)\n\t{\n\t\tBX.ajax.runAction('calendar.api.resourcebookingajax.getbitrix24limitation', {\n\t\t\tdata: {}\n\t\t}).then(function (response)\n\t\t\t{\n\t\t\t\tif (params && BX.type.isFunction(params.callback))\n\t\t\t\t{\n\t\t\t\t\tparams.callback(response.data);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction (response) {\n\t\t\t\t/**\n\t\t\t\t {\n\t\t\t\t\t\t \"status\": \"error\",\n\t\t\t\t\t\t \"errors\": [...]\n\t\t\t\t\t }\n\t\t\t\t **/\n\t\t\t});\n\t};\n\n\tConfigurator.prototype.onSaveButtonClick = function()\n\t{\n\t\tif(this._isLocked)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.RESOURCE_LIMIT > 0 && this.getTotalResourceCount() > this.RESOURCE_LIMIT)\n\t\t{\n\t\t\tBookingUtil.showLimitationPopup();\n\t\t\treturn;\n\t\t}\n\n\t\tvar params =\n\t\t\t{\n\t\t\t\ttypeId: this._typeId,\n\t\t\t\tlabel: this._labelInput.value,\n\t\t\t\tmandatory: this._isRequiredCheckBox.checked,\n\t\t\t\tshowAlways: this._showAlwaysCheckBox.checked,\n\t\t\t\tmultiple: true\n\t\t\t};\n\n\t\tif(this._field)\n\t\t{\n\t\t\tparams[\"field\"] = this._field;\n\t\t}\n\n\t\tthis.fieldSettings.USE_RESOURCES = this.resourceList.isShown() ? 'Y' : 'N';\n\t\tthis.fieldSettings.USE_USERS = this.userList.isShown() ? 'Y' : 'N';\n\n\t\tif (this.fieldSettings\n\t\t\t&& BX.type.isPlainObject(this.fieldSettings.RESOURCES)\n\t\t\t&& BX.type.isPlainObject(this.fieldSettings.RESOURCES['resource']))\n\t\t{\n\t\t\tthis.fieldSettings.SELECTED_RESOURCES = [];\n\n\t\t\tthis.resourceList.getSelectedValues().forEach(function(value)\n\t\t\t{\n\t\t\t\tthis.fieldSettings.SELECTED_RESOURCES.push(value);\n\t\t\t}, this);\n\n\t\t\tthis.resourceList.getDeletedValues().forEach(function(value)\n\t\t\t{\n\t\t\t\tthis.fieldSettings.SELECTED_RESOURCES.push(value);\n\t\t\t}, this);\n\t\t}\n\n\n\t\tif (this.fieldSettings && this.userList)\n\t\t{\n\t\t\tthis.fieldSettings.SELECTED_USERS = [0];\n\t\t\tthis.userList.getAttendeesCodesList().forEach(function(code)\n\t\t\t{\n\t\t\t\tif (code.substr(0, 1) === 'U')\n\t\t\t\t{\n\t\t\t\t\tthis.fieldSettings.SELECTED_USERS.push(parseInt(code.substr(1)));\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.fieldSettings.USE_SERVICES = this._servicesCheckBox.checked ? 'Y' : 'N';\n\t\tthis.fieldSettings.SERVICE_LIST = [];\n\t\tif (this._servicesCheckBox.checked && this.serviceList)\n\t\t{\n\t\t\tthis.fieldSettings.SERVICE_LIST = this.serviceList.getValues();\n\t\t}\n\n\t\tthis.fieldSettings.FULL_DAY = this._fulldayCheckBox.checked ? 'Y' : 'N';\n\t\tthis.fieldSettings.ALLOW_OVERBOOKING = this._overbookingCheckBox.checked ? 'Y' : 'N';\n\n\t\tif (this.fieldSettings.FULL_DAY === 'N')\n\t\t{\n\t\t\tthis.fieldSettings.TIMEZONE = this.timezoneSelector.getValue();\n\t\t\tthis.fieldSettings.USE_USER_TIMEZONE = this.useUserTimezoneCheckBox.checked ? 'Y' : 'N';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.fieldSettings.TIMEZONE = '';\n\t\t\tthis.fieldSettings.USE_USER_TIMEZONE = 'N';\n\t\t}\n\n\t\tparams[\"settings\"] = this.fieldSettings;\n\n\t\tBX.onCustomEvent(this, \"onSave\", [ this, params]);\n\t};\n\n\tConfigurator.prototype.getTotalResourceCount = function()\n\t{\n\t\tvar result = 0;\n\n\t\tif (this.fieldSettings)\n\t\t{\n\t\t\tif (BX.type.isPlainObject(this.fieldSettings.RESOURCES)\n\t\t\t\t&& BX.type.isPlainObject(this.fieldSettings.RESOURCES.resource)\n\t\t\t\t&& BX.type.isArray(this.fieldSettings.RESOURCES.resource.SECTIONS)\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult += this.fieldSettings.RESOURCES.resource.SECTIONS.length;\n\t\t\t}\n\n\t\t\tresult -= this.resourceList.getDeletedValues().length;\n\n\t\t\tthis.resourceList.getSelectedValues().forEach(function(value)\n\t\t\t{\n\t\t\t\tif (!value.id && value.title !== '')\n\t\t\t\t{\n\t\t\t\t\tresult++;\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tif (this.userList)\n\t\t\t{\n\t\t\t\tresult += this.userList.getAttendeesCodesList().length;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t};\n\n\tConfigurator.prototype.checkResourceCountLimitForNewEntries = function()\n\t{\n\t\treturn this.RESOURCE_LIMIT <= 0 || this.getTotalResourceCount() < this.RESOURCE_LIMIT;\n\t};\n\n\tConfigurator.prototype.checkResourceCountLimit = function()\n\t{\n\t\treturn this.RESOURCE_LIMIT <= 0 || this.getTotalResourceCount() <= this.RESOURCE_LIMIT;\n\t};\n\n\tConfigurator.prototype.handleFullDayMode = function()\n\t{\n\t\tthis.timezoneSettingsWrap.style.display = this._fulldayCheckBox.checked ? 'none' : '';\n\t};\n\n\tConfigurator.prototype.handleUserTimezoneCheckbox = function()\n\t{\n\t\tthis.timezoneSelectorWrap.style.display = this.useUserTimezoneCheckBox.checked ? 'none' : '';\n\t};\n\n\n\treturn Configurator;\n};","export class CalendarViewSettingsSlider\n{\n\tconstructor(params)\n\t{\n\t\tthis.id = 'calendar_custom_settings_' + Math.round(Math.random() * 1000000);\n\t\tthis.zIndex = 3100;\n\t\tthis.sliderId = \"calendar:resbook-settings-slider\";\n\n\t\tthis.SLIDER_WIDTH = 400;\n\t\tthis.SLIDER_DURATION = 80;\n\t\tthis.DOM = {};\n\n\t\tthis.params = params;\n\t}\n\n\tshow()\n\t{\n\t\tBX.SidePanel.Instance.open(this.sliderId, {\n\t\t\tcontentCallback: BX.delegate(this.create, this),\n\t\t\twidth: this.SLIDER_WIDTH,\n\t\t\tanimationDuration: this.SLIDER_DURATION\n\t\t});\n\n\t\tthis.hideHandler = this.hide.bind(this);\n\t\tthis.destroyHandler = this.destroy.bind(this);\n\t\tBX.addCustomEvent(\"SidePanel.Slider:onClose\", this.hideHandler);\n\t\tBX.addCustomEvent(\"SidePanel.Slider:onCloseComplete\", );\n\t}\n\n\tclose()\n\t{\n\t\tBX.SidePanel.Instance.close();\n\t}\n\n\thide(event)\n\t{\n\t\tif (event && event.getSliderPage && event.getSliderPage().getUrl() === this.sliderId)\n\t\t{\n\t\t\t// if (this.denyClose)\n\t\t\t// {\n\t\t\t// \tevent.denyAction();\n\t\t\t// }\n\t\t\t// else\n\t\t\t// {\n\t\t\t\tBX.removeCustomEvent(\"SidePanel.Slider:onClose\", this.hideHandler);\n\t\t\t//}\n\t\t}\n\t}\n\n\tdestroy(event)\n\t{\n\t\tif (event && event.getSliderPage && event.getSliderPage().getUrl() === this.sliderId)\n\t\t{\n\t\t\tBX.removeCustomEvent(\"SidePanel.Slider:onCloseComplete\", this.destroyHandler);\n\t\t\tBX.SidePanel.Instance.destroy(this.sliderId);\n\t\t}\n\t}\n\n\tcreate()\n\t{\n\t\tlet promise = new BX.Promise();\n\n\t\tlet html = '<div class=\"webform-buttons calendar-form-buttons-fixed\">' +\n\t\t\t'<span id=\"' + this.id + '_save\" class=\"webform-small-button webform-small-button-blue\">' + BX.message('USER_TYPE_RESOURCE_SAVE') + '</span>' +\n\t\t\t'<span id=\"' + this.id + '_close\" class=\"webform-button-link\">' + BX.message('USER_TYPE_RESOURCE_CLOSE') + '</span>' +\n\t\t\t'</div>' +\n\t\t\t'<div class=\"calendar-slider-calendar-wrap\">' +\n\t\t\t'<div class=\"calendar-slider-header\"><div class=\"calendar-head-area\"><div class=\"calendar-head-area-inner\"><div class=\"calendar-head-area-title\">' +\n\t\t\t'<span class=\"calendar-head-area-name\">' + BX.message('USER_TYPE_RESOURCE_SETTINGS') + \t\t\t'</span>' +\n\t\t\t'</div></div></div></div>' +\n\t\t\t'<div class=\"resource-booking-slider-workarea\"><div class=\"resource-booking-slider-content\"><div id=\"' + this.id + '_content\" class=\"resource-booking-settings\"></div></div></div></div>';\n\n\t\tpromise.fulfill(html);\n\t\tsetTimeout(this.initControls.bind(this), 100);\n\n\t\treturn promise;\n\t}\n\n\tinitControls()\n\t{\n\t\tthis.DOM.content = BX(this.id + '_content');\n\n\t\tBX.bind(BX(this.id + '_save'), 'click', this.save.bind(this));\n\t\tBX.bind(BX(this.id + '_close'), 'click', this.close.bind(this));\n\n\t\t// 1. Field\n\t\tif (this.params && BX.type.isArray(this.params.filterSelectValues))\n\t\t{\n\t\t\tthis.DOM.fieldOuterWrap = this.DOM.content.appendChild(BX.create('DIV', {attrs: {className: 'calendar-settings-control'}}));\n\t\t\tthis.DOM.fieldOuterWrap.appendChild(BX.create('DIV', {\n\t\t\t\tattrs: {className: 'calendar-settings-control-name'},\n\t\t\t\ttext: BX.message('USER_TYPE_RESOURCE_FILTER_NAME')\n\t\t\t}));\n\n\t\t\tthis.DOM.fieldSelect = this.DOM.fieldOuterWrap.appendChild(BX.create('DIV', {attrs: {className: 'calendar-field-container calendar-field-container-select'}}))\n\t\t\t\t.appendChild(BX.create('DIV', {attrs: {className: 'calendar-field-block'}}))\n\t\t\t\t.appendChild(BX.create('select', {attrs: {className: 'calendar-field calendar-field-select'}}));\n\n\t\t\tthis.params.filterSelectValues.forEach(function(value){\n\t\t\t\tthis.DOM.fieldSelect.options.add(\n\t\t\t\t\tnew Option(value.TEXT, value.VALUE, this.params.filterSelect === value.VALUE, this.params.filterSelect === value.VALUE));\n\t\t\t}, this);\n\t\t}\n\t}\n\n\tsave()\n\t{\n\t\tlet entityType = this.params.entityType || 'none';\n\t\tBX.userOptions.save('calendar', 'resourceBooking', entityType, this.DOM.fieldSelect.value);\n\t\tthis.close();\n\t\tBX.reload();\n\t}\n}\n\n\n\n","import {Event, Dom, Loc, Type} from \"calendar.resourcebooking\";\nimport {ServiceSelector} from \"./controls/serviceselector\"\nimport {UserSelectorFieldEditControl} from \"./controls/userselectorfieldeditcontrol\";\nimport {ModeSelector} from \"./controls/modeselector\";\nimport {ResourceSelectorFieldEditControl} from \"./controls/resourceselectorfieldeditcontrol\";\n\nexport class AdminSettingsViewer\n{\n\tconstructor(params = {})\n\t{\n\t\tthis.params = Type.isPlainObject(params) ? params : {};\n\t\tthis.fieldSettings = Type.isPlainObject(this.params.settings) ? this.params.settings : {};\n\n\t\tthis.DOM = {\n\t\t\touterWrap: document.getElementById(this.params.outerWrapId),\n\t\t\tform: document.forms[this.params.formName]\n\t\t};\n\t}\n\n\tshowLayout()\n\t{\n\t\tif (!this.DOM.outerWrap || !this.DOM.form)\n\t\t\treturn;\n\n\t\tEvent.bind(this.DOM.form, 'submit', this.onSubmit.bind(this));\n\n\t\tDom.addClass(this.DOM.outerWrap, 'calendar-resourcebook-content calendar-resourcebook-content-admin-settings');\n\n\t\tthis.DOM.innerWrap = this.DOM.outerWrap\n\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-wrap\"}}))\n\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-inner\"}}));\n\n\t\tlet\n\t\t\tresourceList = [],\n\t\t\tselectedResourceList = [];\n\n\t\tthis.DOM.innerWrap.appendChild(\n\t\t\tDom.create(\n\t\t\t\t\"div\",\n\t\t\t\t{\n\t\t\t\t\tprops: { className: \"calendar-resourcebook-content-block\" },\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tDom.create(\n\t\t\t\t\t\t\t\t\"span\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tprops: {className: \"calendar-resourcebook-content-block-title-text\"},\n\t\t\t\t\t\t\t\t\ttext: Loc.getMessage('USER_TYPE_RESOURCE_CHOOSE')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tnew ModeSelector({\n\t\t\t\t\t\t\t\tuseResources: this.fieldSettings.USE_RESOURCES === 'Y',\n\t\t\t\t\t\t\t\tuseUsers: this.fieldSettings.USE_USERS === 'Y',\n\t\t\t\t\t\t\t\tshowUsers: function(){\n\t\t\t\t\t\t\t\t\tthis.resourceList.hide();\n\t\t\t\t\t\t\t\t\tthis.userList.show();\n\t\t\t\t\t\t\t\t}.bind(this),\n\t\t\t\t\t\t\t\tshowResources: function(){\n\t\t\t\t\t\t\t\t\tthis.resourceList.show();\n\t\t\t\t\t\t\t\t\tthis.userList.hide();\n\t\t\t\t\t\t\t\t}.bind(this),\n\t\t\t\t\t\t\t\tshowResourcesAndUsers: function(){\n\t\t\t\t\t\t\t\t\tthis.resourceList.show();\n\t\t\t\t\t\t\t\t\tthis.userList.show();\n\t\t\t\t\t\t\t\t}.bind(this)\n\t\t\t\t\t\t\t}).getOuterWrap()\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\tthis.DOM.optionWrap = this.DOM.innerWrap.appendChild(Dom.create(\n\t\t\t\"div\",\n\t\t\t{\n\t\t\t\tprops: { className: \"calendar-resourcebook-content-block\" }\n\t\t\t}\n\t\t));\n\n\t\t// region Use Resources Option\n\t\tthis.resourcesWrap = this.DOM.optionWrap.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-control-field calendar-resourcebook-content-block-control-field-add\"}}));\n\n\t\tthis.resourcesTitleWrap = this.resourcesWrap\n\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title\"}}))\n\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title-text\"}, text: Loc.getMessage('USER_TYPE_RESOURCE_RESOURCE_CONTROL_DEFAULT_NAME') + ':'}));\n\n\t\tthis.resourcesListWrap = this.resourcesWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-new-entries-wrap calendar-resourcebook-content-block-detail-inner\"}}));\n\n\t\tthis.resourcesListLowControls = this.resourcesWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resource-content-block-add-field\"}}));\n\n\t\tif (this.fieldSettings.RESOURCES\n\t\t\t&& Type.isPlainObject(this.fieldSettings.RESOURCES['resource'])\n\t\t\t&& Type.isArray(this.fieldSettings.RESOURCES['resource'].SECTIONS))\n\t\t{\n\t\t\tthis.fieldSettings.RESOURCES['resource'].SECTIONS.forEach(function(resource)\n\t\t\t{\n\t\t\t\tresourceList.push({\n\t\t\t\t\tid: resource.ID,\n\t\t\t\t\ttitle: resource.NAME,\n\t\t\t\t\ttype: resource.CAL_TYPE\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tif (Type.isArray(this.fieldSettings.SELECTED_RESOURCES))\n\t\t{\n\t\t\tthis.fieldSettings.SELECTED_RESOURCES.forEach(function(resource)\n\t\t\t{\n\t\t\t\tselectedResourceList.push({\n\t\t\t\t\tid: resource.id,\n\t\t\t\t\ttype: resource.type\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\tthis.resourceList = new ResourceSelectorFieldEditControl({\n\t\t\tshown: this.fieldSettings.USE_RESOURCES === 'Y',\n\t\t\teditMode: true,\n\t\t\touterWrap: this.resourcesWrap,\n\t\t\tlistWrap: this.resourcesListWrap,\n\t\t\tcontrolsWrap: this.resourcesListLowControls,\n\t\t\tvalues: selectedResourceList,\n\t\t\tresourceList: resourceList,\n\t\t\tcheckLimitCallback: this.checkResourceCountLimit.bind(this)\n\t\t});\n\n\t\tthis.userSelectorWrap = this.DOM.optionWrap.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-control-field calendar-resourcebook-content-block-control-field-add\"}}));\n\n\t\tthis.usersTitleWrap = this.userSelectorWrap\n\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title\"}}))\n\t\t\t.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title-text\"}, text: Loc.getMessage('USER_TYPE_RESOURCE_USERS_CONTROL_DEFAULT_NAME') + ':'}));\n\n\t\tthis.usersListWrap = this.userSelectorWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-control custom-field-item\"}}));\n\n\t\tlet itemsSelected = [];\n\t\tif (Type.isArray(this.fieldSettings.SELECTED_USERS))\n\t\t{\n\t\t\tthis.fieldSettings.SELECTED_USERS.forEach(function(user)\n\t\t\t{\n\t\t\t\titemsSelected.push('U' + parseInt(user));\n\t\t\t});\n\t\t}\n\n\t\tthis.userList = new UserSelectorFieldEditControl({\n\t\t\tshown: this.fieldSettings.USE_USERS === 'Y',\n\t\t\touterWrap: this.userSelectorWrap,\n\t\t\twrapNode: this.usersListWrap,\n\t\t\tsocnetDestination: this.params.socnetDestination,\n\t\t\titemsSelected: itemsSelected\n\t\t});\n\n\t\t// Region Data, Time and services\n\t\tthis.DOM.optionWrap.appendChild(\n\t\t\tDom.create(\"hr\", { props: { className: \"calendar-resbook-hr\"}})\n\t\t);\n\n\t\tthis.datetimeOptionsWrap = this.DOM.optionWrap.appendChild(Dom.create(\"div\", {props: { className: \"calendar-resourcebook-content-block-control-field calendar-resourcebook-content-block-control-field-add\" }}));\n\n\t\tthis.datetimeOptionsWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title\"}})).appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-title-text\"}, text: Loc.getMessage('USER_TYPE_RESOURCE_DATETIME_BLOCK_TITLE') + ':'}));\n\n\t\tthis.datetimeOptionsInnerWrap = this.datetimeOptionsWrap.appendChild(Dom.create(\"div\", {props: {className: \"calendar-resourcebook-content-block-options\"}}));\n\t\t// endregion\n\n\t\t//region Checkbox \"Full day\"\n\t\tthis.DOM.fulldayCheckBox = Dom.create(\n\t\t\t\"input\",\n\t\t\t{\n\t\t\t\tprops: { type: \"checkbox\", checked: this.fieldSettings.FULL_DAY === 'Y'}\n\t\t\t}\n\t\t);\n\n\t\tthis.datetimeOptionsInnerWrap.appendChild(\n\t\t\tDom.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis.DOM.fulldayCheckBox,\n\t\t\t\t\t\t\tDom.create(\"span\", { text: Loc.getMessage('USER_TYPE_RESOURCE_FULL_DAY') })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\t//endregion\n\n\t\t//region Checkbox \"Add services\"\n\t\tthis.DOM.useServicedayCheckBox = Dom.create(\n\t\t\t\"input\",\n\t\t\t{\n\t\t\t\tprops: {\n\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\tchecked: this.fieldSettings.USE_SERVICES === 'Y'\n\t\t\t\t},\n\t\t\t\tevents: {\n\t\t\t\t\t'click' : function(){\n\t\t\t\t\t\tif (this.serviceList)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.serviceList.show(this.DOM.useServicedayCheckBox.checked);\n\t\t\t\t\t\t}\n\t\t\t\t\t}.bind(this)\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\tthis.datetimeOptionsInnerWrap.appendChild(\n\t\t\tDom.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis.DOM.useServicedayCheckBox,\n\t\t\t\t\t\t\tDom.create(\"span\", { text: Loc.getMessage('USER_TYPE_RESOURCE_ADD_SERVICES') })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\tthis.serviceList = new ServiceSelector({\n\t\t\touterCont: this.datetimeOptionsInnerWrap,\n\t\t\tfieldSettings: this.fieldSettings,\n\t\t\tgetFullDayValue: function(){return this.DOM.fulldayCheckBox.checked}.bind(this)\n\t\t});\n\n\t\tthis.DOM.optionWrap.appendChild(\n\t\t\tDom.create(\"hr\", { props: { className: \"calendar-resbook-hr\"}})\n\t\t);\n\n\t\tthis.DOM.overbookingCheckbox = Dom.create(\"input\", {props: {type: \"checkbox\", checked: this.fieldSettings.ALLOW_OVERBOOKING === 'Y'}});\n\n\t\tthis.DOM.optionWrap.appendChild(\n\t\t\tDom.create(\n\t\t\t\t\"label\",\n\t\t\t\t{\n\t\t\t\t\tprops: {className: 'calendar-resourcebook-content-block-option'},\n\t\t\t\t\tchildren:\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tthis.DOM.overbookingCheckbox,\n\t\t\t\t\t\t\tDom.create(\"span\", { text: Loc.getMessage('USER_TYPE_RESOURCE_OVERBOOKING') })\n\t\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\t//endregion\n\t}\n\n\tonSubmit(e)\n\t{\n\t\tif (!this.DOM.inputsWrap)\n\t\t{\n\t\t\tthis.DOM.inputsWrap = this.DOM.outerWrap.appendChild(Dom.create(\"DIV\"));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.clean(this.DOM.inputsWrap);\n\t\t}\n\n\t\tlet inputName = this.params.htmlControl.NAME;\n\t\tthis.DOM.inputsWrap.appendChild(Dom.create('INPUT', {\n\t\t\tattrs:{\n\t\t\t\tname: inputName + '[USE_USERS]',\n\t\t\t\tvalue: this.userList.isShown() ? 'Y' : 'N',\n\t\t\t\ttype: 'hidden'\n\t\t\t}}));\n\n\t\tthis.DOM.inputsWrap.appendChild(Dom.create('INPUT', {\n\t\t\tattrs:{\n\t\t\t\tname: inputName + '[USE_RESOURCES]',\n\t\t\t\tvalue: this.resourceList.isShown() ? 'Y' : 'N',\n\t\t\t\ttype: 'hidden'\n\t\t\t}}));\n\n\t\tthis.DOM.inputsWrap.appendChild(Dom.create('INPUT', {\n\t\t\tattrs:{\n\t\t\t\tname: inputName + '[USE_SERVICES]',\n\t\t\t\tvalue: this.DOM.useServicedayCheckBox.checked ? 'Y' : 'N',\n\t\t\t\ttype: 'hidden'\n\t\t\t}}));\n\n\t\tthis.DOM.inputsWrap.appendChild(Dom.create('INPUT', {\n\t\t\tattrs:{\n\t\t\t\tname: inputName + '[FULL_DAY]',\n\t\t\t\tvalue: this.DOM.fulldayCheckBox.checked ? 'Y' : 'N',\n\t\t\t\ttype: 'hidden'\n\t\t\t}}));\n\n\t\tthis.DOM.inputsWrap.appendChild(Dom.create('INPUT', {\n\t\t\tattrs:{\n\t\t\t\tname: inputName + '[ALLOW_OVERBOOKING]',\n\t\t\t\tvalue: this.DOM.overbookingCheckbox.checked ? 'Y' : 'N',\n\t\t\t\ttype: 'hidden'\n\t\t\t}}));\n\n\t\t// Selected resources\n\t\tif (this.resourceList)\n\t\t{\n\t\t\tthis.prepareFormDataInputs(this.DOM.inputsWrap, this.resourceList.getSelectedValues().concat(this.resourceList.getDeletedValues()), inputName + '[SELECTED_RESOURCES]');\n\t\t}\n\n\t\t// // Selected users\n\t\tif (this.userList)\n\t\t{\n\t\t\tlet SELECTED_USERS = [];\n\t\t\tthis.userList.getAttendeesCodesList().forEach(function(code)\n\t\t\t{\n\t\t\t\tif (code.substr(0, 1) === 'U')\n\t\t\t\t{\n\t\t\t\t\tSELECTED_USERS.push(parseInt(code.substr(1)));\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tthis.prepareFormDataInputs(this.DOM.inputsWrap, SELECTED_USERS, inputName + '[SELECTED_USERS]');\n\t\t}\n\n\t\tif (this.DOM.useServicedayCheckBox.checked && this.serviceList)\n\t\t{\n\t\t\tthis.prepareFormDataInputs(this.DOM.inputsWrap, this.serviceList.getValues(), inputName + '[SERVICE_LIST]');\n\t\t}\n\t}\n\n\tprepareFormDataInputs(wrap, data, inputName)\n\t{\n\t\tdata.forEach(function(value, ind)\n\t\t{\n\t\t\tif (Type.isPlainObject(value))\n\t\t\t{\n\t\t\t\tlet k;\n\t\t\t\tfor (k in value)\n\t\t\t\t{\n\t\t\t\t\tif (value.hasOwnProperty(k))\n\t\t\t\t\t{\n\t\t\t\t\t\twrap.appendChild(Dom.create('INPUT', {\n\t\t\t\t\t\t\tattrs:{\n\t\t\t\t\t\t\t\tname: inputName + '[' + ind + '][' + k + ']',\n\t\t\t\t\t\t\t\tvalue: value[k],\n\t\t\t\t\t\t\t\ttype: 'hidden'\n\t\t\t\t\t\t\t}}));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twrap.appendChild(Dom.create('INPUT', {\n\t\t\t\t\tattrs:{\n\t\t\t\t\t\tname: inputName + '[' + ind + ']',\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\ttype: 'hidden'\n\t\t\t\t\t}}));\n\t\t\t}\n\t\t}, this);\n\t}\n\n\tgetTotalResourceCount()\n\t{\n\t\tlet result = 0;\n\n\t\tif (this.fieldSettings)\n\t\t{\n\t\t\tif (Type.isPlainObject(this.fieldSettings.RESOURCES)\n\t\t\t\t&& Type.isPlainObject(this.fieldSettings.RESOURCES.resource)\n\t\t\t\t&& Type.isArray(this.fieldSettings.RESOURCES.resource.SECTIONS)\n\t\t\t)\n\t\t\t{\n\t\t\t\tresult += this.fieldSettings.RESOURCES.resource.SECTIONS.length;\n\t\t\t}\n\n\t\t\tif (this.resourceList)\n\t\t\t{\n\t\t\t\tresult -= this.resourceList.getDeletedValues().length;\n\n\t\t\t\tthis.resourceList.getSelectedValues().forEach(function(value)\n\t\t\t\t{\n\t\t\t\t\tif (!value.id && value.title !== '')\n\t\t\t\t\t{\n\t\t\t\t\t\tresult++;\n\t\t\t\t\t}\n\t\t\t\t}, this);\n\t\t\t}\n\n\t\t\tif (this.userList)\n\t\t\t{\n\t\t\t\tresult += this.userList.getAttendeesCodesList().length;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tcheckResourceCountLimitForNewEntries()\n\t{\n\t\treturn this.RESOURCE_LIMIT <= 0 || this.getTotalResourceCount() < this.RESOURCE_LIMIT;\n\t}\n\n\tcheckResourceCountLimit()\n\t{\n\t\treturn this.RESOURCE_LIMIT <= 0 || this.getTotalResourceCount() <= this.RESOURCE_LIMIT;\n\t}\n}","import {AdjustFieldController} from \"./adjustfieldcontroller\";\nimport {EditFieldController} from \"./editfieldcontroller\";\nimport {Type} from \"main.core\";\nimport {Resourcebooking, BookingUtil} from \"calendar.resourcebooking\";\nimport {customizeCrmEntityEditor} from \"./customizecrmentityeditor\"\nimport {CalendarViewSettingsSlider} from \"./calendarviewsettingsslider\"\nimport {AdminSettingsViewer} from \"./adminsettingsviewer\"\n\nexport {Resourcebooking, BookingUtil, AdminSettingsViewer};\nexport class ResourcebookingUserfield\n{\n\tstatic fieldParamsCache = {};\n\tstatic socnetDestination = null;\n\n\t/**\n\t * Creates instance of Resourcebooking field for crm form edit interface (not for live form)\n\t * and initialize it with given field params\n\t * Used in CRM webform module to display and adjust resourcebooking field\n\t *\n\t * @param {array} params - incoming data params\n\t */\n\tstatic initCrmFormFieldController(params)\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t{\n\t\t\tparams = {\n\t\t\t\tfield:{}\n\t\t\t};\n\t\t}\n\n\t\tlet bookingFieldParams = {};\n\t\tif (Type.isDomNode(params.field.node))\n\t\t{\n\t\t\tbookingFieldParams.outerWrap = params.field.node;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthrow new Error(\"The argument \\\"params.field.node\\\" must be a DOM node.\");\n\t\t}\n\n\t\tbookingFieldParams.innerWrap = bookingFieldParams.outerWrap.querySelector('.crm-webform-resourcebooking-wrap');\n\t\tif (!bookingFieldParams.innerWrap)\n\t\t{\n\t\t\tthrow new Error(\"Can't find necessary DOM node \\\"div.crm-webform-resourcebooking-wrap\\\"\");\n\t\t}\n\n\t\tbookingFieldParams.name = params.field.name;\n\t\tbookingFieldParams.formName = 'FIELD[' + params.field.name + ']';\n\t\tbookingFieldParams.captionNode = params.field.lblCaption;\n\t\tbookingFieldParams.entityFieldName = params.field.entity_field_name;\n\t\tbookingFieldParams.entityName = params.field.dict.entity_field_name;\n\n\t\tbookingFieldParams.settings = {\n\t\t\tcaption: params.field.captionValue || params.field.dict.caption,\n\t\t\trequired: params.field.isRequired || params.field.dict.required,\n\t\t\tdata: (Type.isPlainObject(params.field.booking) && Type.isPlainObject(params.field.booking.settings_data))\n\t\t\t\t? params.field.booking.settings_data\n\t\t\t\t: (params.field.settingsData || [])\n\t\t};\n\n\t\tlet adjustFieldController = new AdjustFieldController(bookingFieldParams);\n\t\tadjustFieldController.init();\n\n\t\treturn adjustFieldController;\n\t}\n\n\tstatic initEditFieldController(params)\n\t{\n\t\tlet editFieldController = new EditFieldController(params);\n\t\teditFieldController.init();\n\n\t\treturn editFieldController;\n\t}\n\n\tstatic getCrmFieldConfigurator(id, settings)\n\t{\n\t\tif(window.BX && BX.Crm && Type.isFunction(BX.Crm.EntityEditorUserFieldConfigurator))\n\t\t{\n\t\t\treturn customizeCrmEntityEditor(BX.Crm.EntityEditorUserFieldConfigurator).create(id, settings);\n\t\t}\n\t}\n\n\tstatic getUserFieldParams(params = {})\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tlet fieldName = params.fieldName || '';\n\n\t\t\tif (params.clearCache || !ResourcebookingUserfield.fieldParamsCache[params.fieldName])\n\t\t\t{\n\t\t\t\tBX.ajax.runAction('calendar.api.resourcebookingajax.getfieldparams', {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tfieldname: params.fieldName,\n\t\t\t\t\t\tselectedUsers: params.selectedUsers || []\n\t\t\t\t\t}\n\t\t\t\t}).then((response) => {\n\t\t\t\t\t\tResourcebookingUserfield.fieldParamsCache[fieldName] = response.data;\n\t\t\t\t\t\tresolve(response.data);\n\t\t\t\t\t},\n\t\t\t\t\t(response) => {}\n\t\t\t\t);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresolve(ResourcebookingUserfield.fieldParamsCache[fieldName]);\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic getPluralMessage(messageId, number)\n\t{\n\t\tlet pluralForm, langId;\n\n\t\tlangId = BX.message('LANGUAGE_ID') || 'en';\n\t\tnumber = parseInt(number);\n\n\t\tif (number < 0)\n\t\t{\n\t\t\tnumber = -1*number;\n\t\t}\n\n\t\tif (langId)\n\t\t{\n\t\t\tswitch (langId)\n\t\t\t{\n\t\t\t\tcase 'ru':\n\t\t\t\tcase 'ua':\n\n\t\t\t\t\tif ((number % 10 === 1) && (number % 100 !== 11))\n\t\t\t\t\t{\n\t\t\t\t\t\tpluralForm = 0;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpluralForm = ((number%10 >= 2) && (number%10 <= 4) && ((number%100 < 10) || (number%100 >= 20)))\n\t\t\t\t\t\t\t? 1\n\t\t\t\t\t\t\t: 2;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'pl':\n\t\t\t\t\tif (number <= 4)\n\t\t\t\t\t{\n\t\t\t\t\t\tpluralForm = number === 1 ? 0 : 1;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpluralForm = 2;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: // en, de and other languages\n\t\t\t\t\tpluralForm = (number !== 1) ? 1 : 0;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpluralForm = 1;\n\t\t}\n\n\t\treturn BX.message(messageId + '_PLURAL_' + pluralForm);\n\t}\n\n\tstatic getParamsFromHash(userfieldId)\n\t{\n\t\tlet\n\t\t\tparams, regRes,\n\t\t\thash = unescape(window.location.hash);\n\n\t\tif (hash)\n\t\t{\n\t\t\tregRes = new RegExp('#calendar:' + userfieldId + '\\\\|(.*)', 'ig').exec(hash);\n\t\t\tif (regRes && regRes.length > 1)\n\t\t\t{\n\t\t\t\tparams = regRes[1].split('|');\n\t\t\t}\n\t\t}\n\t\treturn params;\n\t}\n\n\tstatic openExternalSettingsSlider(params)\n\t{\n\t\tlet settingsSlider = new CalendarViewSettingsSlider(params);\n\t\tsettingsSlider.show();\n\t}\n\n\tstatic setSocnetDestination(socnetDestination)\n\t{\n\t\tResourcebookingUserfield.socnetDestination = socnetDestination;\n\t}\n\n\tstatic getSocnetDestination()\n\t{\n\t\treturn ResourcebookingUserfield.socnetDestination;\n\t}\n}"],"names":["FormFieldTunnerAbstract","constructor","label","formLabel","displayed","valuePopup","statePopup","displayCheckboxDisabled","DOM","build","params","updateConfig","fieldWrap","Dom","create","props","className","labelWrap","appendChild","labelNode","text","getLabel","formTitleWrap","isDisplayed","formTitleLabel","getFormLabel","events","click","enableFormTitleEditMode","bind","formTitleEditIcon","checkboxNode","attrs","type","value","checked","disabled","checkDisplayMode","buildStatePopup","wrap","config","buildValuePopup","Type","isFunction","changeSettingsCallback","destroy","closePopup","setFormLabel","show","displayInForm","hideInForm","addClass","triggerChangeRefresh","removeClass","formTitleInputNode","blur","finishFormTitleEditMode","style","display","focus","adjust","getSettingsValue","setTimeout","BX","onCustomEvent","FormFieldTunnerPopupAbstract","id","Math","round","random","menuItems","outerWrap","handleClickFunc","handleClick","innerWrap","currentStateLink","getCurrentModeState","showPopup","isPopupShown","getMenuItems","Event","unbind","document","popup","PopupMenu","closeByEsc","autoHide","offsetTop","offsetLeft","cacheable","popupWindow","setAngle","offset","position","popupContainer","forEach","menuItem","inputType","inputNameStr","dataset","menuItemClassName","inputName","innerHtml","textValue","layout","item","innerHTML","close","maxHeight","isShown","isNodeInDom","getPopupContent","handlePopupClick","e","target","srcElement","hasAttribute","findParent","attribute","handleControlChanges","changesTimeout","clearTimeout","delegate","menuItemClick","isParentForNode","animation","setDisabled","setEnabled","FormFieldTunnerValuePopupAbstract","selectedValues","valueLink","getCurrentValueState","mouseover","showHoverPopup","mouseout","hideHoverPopup","PopupWindow","loseByEsc","width","getPopupWidth","lightShadow","content","proxy","addCustomEvent","handlePopupCloose","message","minWidth","minHeight","showPopupLoader","hidePopupLoader","popupLoader","BookingUtil","getLoader","remove","FormFieldTunnerMultipleChecknoxPopupAbstract","values","push","util","htmlspecialchars","title","onclick","length","selectAllMessage","selectAllItemClick","find","itemId","selectAllChecked","selectAllcheckbox","checkbox","querySelector","foundValue","hasClass","selectItem","deselectItem","in_array","index","array_search","deleteFromArray","i","checkboxes","querySelectorAll","getSelectedValues","UserSelectorFieldTunner","Loc","getMessage","selectedUsers","defaultMode","UsersStatePopup","isArray","selected","split","valueWrap","Tag","render","usersValueLink","showUserSelectorDialog","getCurrentUsersValueText","count","ResourcebookingUserfield","getPluralMessage","userSelectorDialog","EntitySelectorDialog","targetNode","context","preselectedItems","map","userId","enableSearch","zIndex","handleUserSelectorChanges","entities","options","inviteGuestLink","emailUsers","getSelectedItems","entityId","EventEmitter","emit","getValue","getDefaultMode","name","MenuItem","delimiter","isDomNode","nodeName","toLowerCase","ResourceSelectorFieldTunner","multiple","ResourcesStatePopup","ResourcesValuePopup","getMultiple","getSelectedId","selectedItems","selectedIndex","selectAll","isString","resources","resource","valueId","prepareValueId","result","val","parseInt","ServiceSelectorFieldTunner","html","ServiceValuePopup","undefined","translit","services","service","getDurationLabel","duration","DurationSelectorFieldTunner","defaultValue","manualInput","DurationStatePopup","getDefaultValue","getManualInput","durationList","getDurationList","fullDay","getDurationLabelByValue","items","getDefaultMenuItems","concat","foundDuration","DateSelectorFieldTunner","start","DateStatePopup","getStyle","getStart","styleInputName","startInputName","TimeSelectorFieldTunner","showOnlyFree","showFinishTime","scale","TimeStatePopup","getShowFinishTime","getShowOnlyFree","getScale","stateShowFreeId","stateShowFinishId","getDurationMenuItems","filter","AdjustFieldController","setEventNamespace","complexFields","userFieldParams","settingsData","getSettingsData","settings","data","settingsWrap","captionNode","settingsInputs","init","showFieldLoader","getUserFieldParams","fieldName","entityName","getSelectedUsers","then","fieldParams","hideFieldLoader","fieldLayout","FieldViewControllerEdit","displayTitle","getCaption","getSettings","updateSettingsDataInputs","BaseEvent","showSettingsPopup","settingsPopupId","settingsPopup","getSettingsContentNode","overlay","backgroundColor","opacity","titleBar","closeIcon","buttons","PopupWindowButton","buttonNodeWrap","buttonNode","parentNode","destroyControls","previewFieldLayout","leftWrap","buildSettingsForm","previewWrap","FieldViewControllerPreview","handleWebformSettingsChanges","titleId","captionWrap","captionInput","change","updateCaption","keyup","fieldsOuterWrap","fieldsWrap","userfieldSettings","useUsers","buildComplexField","updateSettings","users","checkBitrix24Limitation","useResources","useServices","date","time","replace","k","hasOwnProperty","refreshLayoutTimeout","refreshLayout","getOuterWrap","getInnerWrap","offsetHeight","isObject","field","option","clone","getDefaultSettingsData","isPlainObject","updateSettingsInputValue","key","uniKey","join","formName","fieldLoader","SETTINGS","SELECTED_RESOURCES","SELECTED_USERS","SERVICE_LIST","FULL_DAY","USE_RESOURCES","USE_USERS","USE_SERVICES","resourceLimit","RESOURCE_LIMIT","userIndex","USER_INDEX","caption","updateTitle","isRequired","required","updateRequiredValue","requiredCheckbox","usersValue","showLimitationPopup","UserSelectorFieldEditControl","wrapNode","destinationInputName","selectGroups","addMessage","checkLimit","checkLimitCallback","itemsSelected","getSocnetDestinationConfig","shown","SocNetLogDestination","deleteItem","getAttribute","block","openDialog","socnetDestinationInputWrap","socnetDestinationInput","keydown","searchBeforeHandler","inputId","searchHandler","linkId","sendAjax","socnetDestinationLink","hide","_this","itemsLast","groups","department","sonetgroups","searchInput","extranetUser","userSearchArea","bindMainPopup","node","bindSearchPopup","callback","select","selectCallback","unSelect","unSelectCallback","openDialogCallback","closeDialog","closeDialogCallback","openSearch","closeSearch","departmentSelectDisable","closeAll","isOpenDialog","addUserBlock","getAttendeesCodesList","includes","blocks","itemWrap","elements","findChildren","j","cleanInputValue","isOpenSearch","backspaceDisable","window","keyCode","preventDefault","getCodes","inputsList","getElementsByTagName","codes","trim","getAttendeesCodes","convertAttendeesCodes","attendeesCodes","code","substr","res","socnetDestination","USERS","EXTRANET_USER","DENY_TOALL","UA","SONETGROUPS","DEPARTMENT","departmentRelation","DEPARTMENT_RELATION","LAST","SELECTED","inputs","setValues","userList","trigerOnChange","user","obItems","onChangeCallback","getId","ResourceSelectorFieldEditControl","editMode","resourceList","checkLimitForNew","checkLimitCallbackForNew","selectedValuesIndex","selectedBlocks","newValues","blocksWrap","listWrap","controlsWrap","arrowNode","addButton","addResourceBlock","selectButton","openResourcesPopup","handleBlockClick","blockValue","element","checkBlockWrapState","isResourcesPopupShown","deleted","foundResource","removeResourceBlock","checkResourceInputs","menuItemNode","textNode","offsetWidth","B24","blockEntry","input","placeholder","resourceType","resourceId","delButton","focusInput","transparent","children","max","childNodes","emptyPlaceholder","closeResourcesPopup","getValues","addToSelectedValues","getDeletedValues","PlannerPopup","bindNode","plannerId","plannerConfig","lastPlannerIdShown","currentEntries","plannerWrap","Popup","bindPos","pos","winSize","GetWindowSize","plannerWidth","innerWidth","right","showPlanner","update","refreshParams","codeIndex","fromTimestamp","toTimestamp","dateFrom","dateTo","lastUpdateParams","focusSelector","from","to","parseDate","getTime","selector","getDayLength","Date","scaleDateFrom","scaleDateTo","requestData","formatDate","currentEventList","checkUpdateParams","showPlannerLoader","ajax","runAction","response","hidePlannerLoader","lastRequestData","entries","currentAccessibility","accessibility","currentLoadedDataFrom","currentLoadedDataTo","entry","selectedResources","updateScaleLimits","loadedDataFrom","loadedDataTo","requestPlannerUpdate","lastRequestPlannerId","array_diff","resIndex","planner","CalendarPlanner","updateScaleType","RRULE","selectorOnChangeCallback","selectEntriesOnChangeCallback","checkSelectorStatusCallback","loader","removeCustomEvent","getPlannerId","EditFieldController","plannerPopup","controlId","valueInputs","isNew","DATE_FROM","setSocnetDestination","buildUserfieldWrap","createEventHandlers","setControlValues","buildDateControl","buildTimeControl","buildServiceControl","buildDurationControl","buildUserSelectorControl","buildResourceSelectorControl","showPlannerPopup","fromInput","durationInput","allowOverbooking","isOverbooked","addError","Crm","EntityValidationError","Promise","resolve","onChangeValues","allValuesValue","defaultDuration","getParamsFromHash","userfieldId","roundMin","r","timestamp","ceil","DATE_TO","getDateFormat","timeFromInput","getTimeFormatShort","setValue","serviceList","SERVICE_NAME","ENTRIES","TYPE","RESOURCE_ID","resourceSelector","userSelector","dateTimeWrap","dateWrap","showCalendarPicker","triggerUpdatePlanner","emptyInput","timeWrap","fromTime","SelectInput","getSimpleTimeList","onAfterMenuOpen","ind","popupMenu","formatDatetime","isAmPmMode","nearestTimeValue","adaptTimeValue","h","getHours","m","getMinutes","menuContainer","scrollTop","durationWrap","servicesWrap","serviceInput","serviceListValues","state","realValue","parseDuration","durationControlWrap","userSelectorWrap","userSelectorTitle","userListWrap","userKey","getSocnetDestination","checkResourceCountLimit","resourcesWrap","resSelectorTitle","resourcesListWrap","calendar","bTime","dateFromValue","serviceName","isDate","getSelectedResourceList","getSelectedUserList","getDateTimeFormat","fireEvent","EVENT_ID","isNull","getPlannerConfig","getSelectorData","plannerSelectorOnChange","plannerSelectedEntriesOnChange","getResourceList","getUserList","selectEntriesMode","scaleLimitOffsetLeft","scaleLimitOffsetRight","maxTimelineSize","minEntryRows","entriesListWidth","timelineCellWidth","accuracy","workTime","clickSelectorScaleAccuracy","errorClass","overbooked","status","errorNode","getTotalResourceCount","ServiceSelector","outerCont","fieldSettings","serviceListOuterWrap","durationTitleId","servicesTitleWrap","serviceListRowsWrap","addRow","serviceListAddWrap","serviceAddButton","checkDurationTitlePosition","row","getDefaultDuration","nameInput","fullday","getFullDayValue","deleteWrap","timeout","checkDurationTitlePositionTimeout","left","clickHandler","resWrap","checkRows","rows","onFullClearHandler","TimezoneSelector","add","Option","selectedValue","getTimezoneList","timezoneList","timezone","clearCache","timezone_id","default","ModeSelector","showResources","modeSwitcherPopup","showUsers","showResourcesAndUsers","switcherId","angle","customizeCrmEntityEditor","CrmConfigurator","Configurator","superclass","apply","extend","self","initialize","prototype","_hasLayout","_mode","EntityEditorMode","view","getBitrix24Limitation","limit","_field","fieldInfo","getFieldInfo","getDefaultUserfieldSettings","displayCallback","_wrapper","_innerWrapper","selectedResourceList","manager","_editor","getUserFieldManager","getTitle","getDefaultFieldLabel","_typeId","_labelInput","optionWrapper","resourcesTitleWrap","resourcesListLowControls","RESOURCES","SECTIONS","ID","NAME","CAL_TYPE","checkResourceCountLimitForNewEntries","usersTitleWrap","usersListWrap","datetimeOptionsWrap","datetimeOptionsInnerWrap","timezoneSettingsWrap","timezoneSelectorWrap","USE_USER_TIMEZONE","timezoneSelectWrap","timezoneSelector","TIMEZONE","useUserTimezoneCheckBox","handleUserTimezoneCheckbox","_fulldayCheckBox","handleFullDayMode","_servicesCheckBox","additionaOptionsWrap","_isRequiredCheckBox","_showAlwaysCheckBox","prop","getBoolean","_settings","checkOptionFlag","EntityEditorControlOptions","showAlways","_overbookingCheckBox","ALLOW_OVERBOOKING","onSaveButtonClick","onCancelButtonClick","registerLayout","_isLocked","typeId","mandatory","CalendarViewSettingsSlider","sliderId","SLIDER_WIDTH","SLIDER_DURATION","SidePanel","Instance","open","contentCallback","animationDuration","hideHandler","destroyHandler","event","getSliderPage","getUrl","promise","fulfill","initControls","save","filterSelectValues","fieldOuterWrap","fieldSelect","TEXT","VALUE","filterSelect","entityType","userOptions","reload","AdminSettingsViewer","getElementById","outerWrapId","form","forms","showLayout","onSubmit","optionWrap","fulldayCheckBox","useServicedayCheckBox","overbookingCheckbox","inputsWrap","clean","htmlControl","prepareFormDataInputs","initCrmFormFieldController","bookingFieldParams","Error","lblCaption","entityFieldName","entity_field_name","dict","captionValue","booking","settings_data","adjustFieldController","initEditFieldController","editFieldController","getCrmFieldConfigurator","EntityEditorUserFieldConfigurator","fieldParamsCache","fieldname","messageId","number","pluralForm","langId","regRes","hash","unescape","location","RegExp","exec","openExternalSettingsSlider","settingsSlider"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings