File manager - Edit - /home/web/vm-3fadc827.na4u.ru/www/bitrix/modules/calendar/install/js/calendar/planner/dist/planner.bundle.js.map
Back
{"version":3,"file":"planner.bundle.js","sources":["../src/selector.js","../src/planner.js"],"sourcesContent":["\"use strict\";\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Util} from 'calendar.util';\nimport {Type, Dom, Tag} from 'main.core';\n\nexport class Selector extends EventEmitter\n{\n\tDOM = {};\n\tselectMode = false;\n\tcurrentDateFrom = new Date();\n\tcurrentDateTo = new Date();\n\tcurrentFullDay = false;\n\tuseAnimation = true;\n\n\tconstructor(params = {})\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Planner.Selector');\n\n\t\tthis.selectMode = params.selectMode;\n\t\tthis.getPosByDate = params.getPosByDate;\n\t\tthis.getDateByPos = params.getDateByPos;\n\t\tthis.getPosDateMap = params.getPosDateMap;\n\t\tthis.getTimelineWidth = params.getTimelineWidth;\n\t\tthis.getScaleInfo = params.getScaleInfo;\n\t\tthis.solidStatus = params.solidStatus;\n\n\t\tthis.useAnimation = params.useAnimation !== false;\n\t\tthis.DOM.timelineWrap = params.timelineWrap;\n\n\t\tthis.render();\n\t}\n\n\trender()\n\t{\n\t\tthis.DOM.wrap = Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-selector\" data-bx-planner-meta=\"selector\">\n\t\t\t\t<span data-bx-planner-meta=\"selector-resize-left\" class=\"calendar-planner-timeline-drag-left\"></span>\n\t\t\t\t<span class=\"calendar-planner-timeline-selector-grip\"></span>\n\t\t\t\t<span data-bx-planner-meta=\"selector-resize-right\" class=\"calendar-planner-timeline-drag-right\"></span>\n\t\t\t</div>`;\n\n\t\t// prefent draging selector and activating uploader controll in livefeed\n\t\tthis.DOM.wrap.ondrag = BX.False;\n\t\tthis.DOM.wrap.ondragstart = BX.False;\n\n\t\tthis.DOM.titleNode = Tag.render`<div class=\"calendar-planner-selector-notice\" style=\"display: none\"></div>`;\n\n\t\tif (this.selectMode)\n\t\t{\n\t\t\tresult.controlWrap = this.DOM.wrap.appendChild(Tag.render`<div class=\"calendar-planner-selector-control\"></div>`);\n\t\t}\n\t}\n\n\tgetWrap()\n\t{\n\t\treturn this.DOM.wrap;\n\t}\n\n\tgetTitleNode()\n\t{\n\t\treturn this.DOM.titleNode;\n\t}\n\n\t/**\n\t *\n\t *\n\t * @params array array of parameters\n\t * @params[from]\n\t * @params[to]\n\t * @params[updateScaleType] bool\n\t * @params[updateScaleLimits] bool\n\t *\n\t * @return null\n\t */\n\tupdate(params = {})\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t{\n\t\t\tparams = {};\n\t\t}\n\n\t\tparams.updateScaleType = !!params.updateScaleType;\n\t\tparams.updateScaleLimits = !!params.updateScaleLimits;\n\t\tparams.animation = !!params.animation;\n\n\t\tlet from = Type.isDate(params.from) ? params.from : BX.parseDate(params.from) || this.currentDateFrom;\n\t\tlet to = Type.isDate(params.to) ? params.to : BX.parseDate(params.to) || this.currentDateTo;\n\t\tthis.fullDayMode = params.fullDay !== undefined ? params.fullDay : this.currentFullDay;\n\n\t\tif (Type.isDate(from) && Type.isDate(to))\n\t\t{\n\t\t\tthis.currentDateFrom = from;\n\t\t\tthis.currentDateTo = to;\n\t\t\tthis.currentFullDay = this.fullDayMode;\n\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\tto = new Date(to.getTime() + Util.getDayLength());\n\t\t\t\tfrom.setHours(0, 0, 0,0);\n\t\t\t\tto.setHours(0, 0, 0,0);\n\t\t\t}\n\n\t\t\t// Update selector\n\t\t\tthis.show(\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t\t{\n\t\t\t\t\tanimation: params.animation,\n\t\t\t\t\tfocus: params.focus\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\tshow(from, to, params)\n\t{\n\t\tconst animation = params.animation && this.useAnimation !== false;\n\t\tconst focus = params.focus !== false;\n\t\tconst alignCenter = params.alignCenter !== false;\n\n\t\tthis.DOM.wrap.style.display = 'block';\n\n\t\tif (Type.isDate(from) && Type.isDate(to))\n\t\t{\n\t\t\tlet\n\t\t\t\tfromPos = this.getPosByDate(from),\n\t\t\t\ttoPos = this.getPosByDate(to);\n\n\t\t\tthis.DOM.wrap.style.width = (toPos - fromPos) + 'px';\n\n\t\t\tif (animation && this.DOM.wrap.style.left && !this.currentFullDay)\n\t\t\t{\n\t\t\t\tthis.transit({\n\t\t\t\t\ttoX: fromPos,\n\t\t\t\t\ttriggerChangeEvents: false,\n\t\t\t\t\tfocus: focus\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.wrap.style.left = fromPos + 'px';\n\t\t\t\tthis.DOM.wrap.style.width = (toPos - fromPos) + 'px';\n\t\t\t\tif (focus)\n\t\t\t\t{\n\t\t\t\t\tthis.focus(false, 200, alignCenter);\n\t\t\t\t}\n\t\t\t\tthis.checkStatus(fromPos, true);\n\t\t\t}\n\t\t}\n\t}\n\n\thide()\n\t{\n\t\tthis.DOM.wrap.style.display = 'none';\n\t}\n\n\tstartMove()\n\t{\n\t\tthis.selectorIsDraged = true;\n\t\tthis.selectorRoundedPos = false;\n\t\tthis.selectorStartLeft = parseInt(this.DOM.wrap.style.left);\n\t\tthis.selectorStartScrollLeft = this.DOM.timelineWrap.scrollLeft;\n\n\t\tDom.addClass(document.body, 'calendar-planner-unselectable');\n\t}\n\n\tmove(x)\n\t{\n\t\tif (this.selectorIsDraged)\n\t\t{\n\t\t\tlet selectorWidth = parseInt(this.DOM.wrap.style.width), pos = this.selectorStartLeft + x;\n\n\t\t\t// Correct cursor position acording to changes of scrollleft\n\t\t\tpos -= this.selectorStartScrollLeft - this.DOM.timelineWrap.scrollLeft;\n\n\t\t\tif (this.getPosDateMap()[pos])\n\t\t\t{\n\t\t\t\tthis.selectorRoundedPos = pos;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet roundedPos = Selector.roundPos(pos);\n\t\t\t\tif (this.getPosDateMap()[roundedPos])\n\t\t\t\t{\n\t\t\t\t\tthis.selectorRoundedPos = roundedPos;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet checkedPos = this.checkPosition(this.selectorRoundedPos);\n\t\t\tif (checkedPos !== this.selectorRoundedPos)\n\t\t\t{\n\t\t\t\tthis.selectorRoundedPos = checkedPos;\n\t\t\t\tpos = checkedPos;\n\t\t\t}\n\n\t\t\tthis.DOM.wrap.style.left = pos + 'px';\n\t\t\tthis.showTitle({fromPos: pos, toPos: this.selectorRoundedPos + selectorWidth});\n\n\t\t\tthis.checkStatus(this.selectorRoundedPos, true);\n\t\t}\n\t}\n\n\tendMove()\n\t{\n\t\tif (this.selectorIsDraged && this.selectorRoundedPos)\n\t\t{\n\t\t\tthis.DOM.wrap.style.left = this.selectorRoundedPos + 'px';\n\t\t\tthis.selectorRoundedPos = false;\n\t\t\tthis.hideTitle();\n\t\t\tthis.setValue(this.selectorRoundedPos);\n\t\t}\n\t\tthis.selectorIsDraged = false;\n\t}\n\n\tstartResize()\n\t{\n\t\tthis.selectorIsResized = true;\n\t\tthis.selectorRoundedPos = false;\n\n\t\tthis.selectorStartLeft = parseInt(this.DOM.wrap.style.left);\n\t\tthis.selectorStartWidth = parseInt(this.DOM.wrap.style.width);\n\t\tthis.selectorStartScrollLeft = this.DOM.timelineWrap.scrollLeft;\n\t}\n\n\tresize(x)\n\t{\n\t\tif (this.selectorIsResized)\n\t\t{\n\t\t\tlet\n\t\t\t\ttoDate,\n\t\t\t\ttimeTo,\n\t\t\t\twidth = this.selectorStartWidth + x;\n\n\t\t\t// Correct cursor position according to changes of scrollLeft\n\t\t\twidth -= this.selectorStartScrollLeft - this.DOM.timelineWrap.scrollLeft;\n\t\t\tlet rightPos = Math.min(this.selectorStartLeft + width, this.getTimelineWidth());\n\n\t\t\ttoDate = this.getDateByPos(rightPos, true);\n\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\ttimeTo = parseInt(toDate.getHours()) + Math.round((toDate.getMinutes() / 60) * 10) / 10;\n\t\t\t\ttoDate.setHours(0, 0, 0, 0);\n\t\t\t\tif (timeTo > 12)\n\t\t\t\t{\n\t\t\t\t\ttoDate = new Date(toDate.getTime() + Util.getDayLength());\n\t\t\t\t\ttoDate.setHours(0, 0, 0, 0);\n\t\t\t\t}\n\t\t\t\trightPos = this.getPosByDate(toDate);\n\t\t\t\twidth = rightPos - this.selectorStartLeft;\n\n\t\t\t\tif (width <= 10)\n\t\t\t\t{\n\t\t\t\t\ttoDate = this.getDateByPos(this.selectorStartLeft);\n\t\t\t\t\ttoDate = new Date(toDate.getTime() + Util.getDayLength());\n\t\t\t\t\ttoDate.setHours(0, 0, 0, 0);\n\t\t\t\t\twidth = this.getPosByDate(toDate) - this.selectorStartLeft;\n\t\t\t\t\trightPos = this.selectorStartLeft + width;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.shownScaleTimeFrom !== 0 || this.shownScaleTimeTo !== 24)\n\t\t\t{\n\t\t\t\tlet fromDate = this.getDateByPos(this.selectorStartLeft);\n\t\t\t\tif (toDate && fromDate && Util.formatDate(fromDate) !== Util.formatDate(toDate))\n\t\t\t\t{\n\t\t\t\t\ttoDate = new Date(fromDate.getTime());\n\t\t\t\t\ttoDate.setHours(this.shownScaleTimeTo, 0, 0, 0);\n\t\t\t\t\trightPos = this.getPosByDate(toDate);\n\t\t\t\t\twidth = rightPos - this.selectorStartLeft;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.getPosDateMap()[rightPos])\n\t\t\t{\n\t\t\t\tthis.selectorRoundedRightPos = rightPos;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet roundedPos = Selector.roundPos(rightPos);\n\t\t\t\tif (this.getPosDateMap()[roundedPos])\n\t\t\t\t{\n\t\t\t\t\tthis.selectorRoundedRightPos = roundedPos;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.DOM.wrap.style.width = width + 'px';\n\t\t\tthis.showTitle({fromPos: this.selectorStartLeft, toPos: this.selectorRoundedRightPos});\n\t\t\tthis.checkStatus(this.selectorStartLeft, true);\n\t\t}\n\t}\n\n\tendResize()\n\t{\n\t\tif (this.selectorIsResized && this.selectorRoundedRightPos)\n\t\t{\n\t\t\tthis.DOM.wrap.style.width = (this.selectorRoundedPos - parseInt(this.DOM.wrap.style.left)) + 'px';\n\t\t\tthis.selectorRoundedRightPos = false;\n\t\t\tthis.hideTitle();\n\t\t\tthis.setValue();\n\t\t}\n\t\tthis.selectorIsResized = false;\n\t}\n\n\tisDragged()\n\t{\n\t\treturn this.selectorIsResized || this.selectorIsDraged;\n\t}\n\n\tcheckStatus(selectorPos, checkPosition)\n\t{\n\t\tif (this.solidStatus)\n\t\t{\n\t\t\tDom.removeClass(this.DOM.wrap, 'calendar-planner-timeline-selector-warning');\n\t\t\tDom.removeClass(this.mainContWrap, 'calendar-planner-selector-warning');\n\t\t\tDom.addClass(this.DOM.wrap, 'solid');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!selectorPos)\n\t\t\t{\n\t\t\t\tselectorPos = Selector.roundPos(this.DOM.wrap.style.left);\n\t\t\t}\n\n\t\t\tlet fromDate, toDate;\n\t\t\tif (checkPosition === true || !this.currentDateFrom)\n\t\t\t{\n\t\t\t\tlet\n\t\t\t\t\tselectorWidth = parseInt(this.DOM.wrap.style.width),\n\t\t\t\t\tfromPos = selectorPos,\n\t\t\t\t\ttoPos = fromPos + selectorWidth;\n\n\t\t\t\tif (!fromPos && !toPos && !selectorWidth && this.lastFromDate)\n\t\t\t\t{\n\t\t\t\t\tfromDate = this.lastFromDate;\n\t\t\t\t\ttoDate = this.lastToDate;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tfromDate = this.getDateByPos(fromPos);\n\t\t\t\t\ttoDate = this.getDateByPos(toPos, true);\n\t\t\t\t\tthis.lastFromDate = fromDate;\n\t\t\t\t\tthis.lastToDate = toDate;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfromDate = this.currentDateFrom;\n\t\t\t\ttoDate = this.currentDateTo;\n\t\t\t}\n\n\t\t\tthis.emit(\n\t\t\t\t'doCheckStatus',\n\t\t\t\tnew BaseEvent(\n\t\t\t\t{\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tdateFrom: fromDate,\n\t\t\t\t\t\t\tdateTo: toDate\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\tsetSelectorStatus(status)\n\t{\n\t\tthis.selectorIsFree = status;\n\t\tif (this.selectorIsFree)\n\t\t{\n\t\t\tDom.removeClass(this.DOM.wrap, 'calendar-planner-timeline-selector-warning');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.addClass(this.DOM.wrap, 'calendar-planner-timeline-selector-warning');\n\t\t}\n\t}\n\n\tsetValue(selectorPos, selectorWidth)\n\t{\n\t\tif (!selectorPos)\n\t\t{\n\t\t\tselectorPos = parseInt(this.DOM.wrap.style.left);\n\t\t}\n\t\tselectorPos = Math.max(0, selectorPos);\n\n\t\tif (!selectorWidth)\n\t\t{\n\t\t\tselectorWidth = parseInt(this.DOM.wrap.style.width);\n\t\t}\n\n\t\tif (selectorPos + selectorWidth > parseInt(this.getTimelineWidth()))\n\t\t{\n\t\t\tselectorPos = parseInt(this.getTimelineWidth()) - selectorWidth;\n\t\t}\n\n\t\tlet dateFrom = this.getDateByPos(selectorPos);\n\t\tlet dateTo = this.getDateByPos(selectorPos + selectorWidth, true);\n\n\t\tif (dateFrom && dateTo)\n\t\t{\n\t\t\tthis.currentDateFrom = dateFrom;\n\t\t\tthis.currentDateTo = dateTo;\n\t\t\tthis.currentFullDay = this.fullDayMode;\n\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\tconst dateToTime = dateTo.getTime();\n\t\t\t\tthis.currentDateTo = new Date(dateToTime - 1000);\n\t\t\t\tdateTo = new Date(dateToTime - Util.getDayLength());\n\t\t\t}\n\n\t\t\tthis.emit('onChange', new BaseEvent({data: {\n\t\t\t\tdateFrom: dateFrom,\n\t\t\t\tdateTo: dateTo,\n\t\t\t\tfullDay: this.fullDayMode\n\t\t\t}}));\n\t\t}\n\t}\n\n\tcheckPosition(fromPos, selectorWidth, toPos)\n\t{\n\t\tlet scaleInfo = this.getScaleInfo();\n\t\tif (\n\t\t\t(scaleInfo.shownTimeFrom !== 0 || scaleInfo.shownTimeTo !== 24)\n\t\t\t&&\n\t\t\t(scaleInfo.type !== '1day' || this.fullDayMode)\n\t\t)\n\t\t{\n\t\t\tfromPos = fromPos || parseInt(this.DOM.wrap.style.left);\n\t\t\tselectorWidth = selectorWidth || parseInt(this.DOM.wrap.style.width);\n\t\t\ttoPos = toPos || (fromPos + selectorWidth);\n\n\t\t\tif (toPos > parseInt(this.getTimelineWidth()))\n\t\t\t{\n\t\t\t\tfromPos = parseInt(this.getTimelineWidth()) - selectorWidth;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tlet\n\t\t\t\t\tfromDate = this.getDateByPos(fromPos),\n\t\t\t\t\ttoDate = this.getDateByPos(toPos, true),\n\t\t\t\t\ttimeFrom, timeTo,\n\t\t\t\t\tscaleTimeFrom = parseInt(scaleInfo.shownTimeFrom),\n\t\t\t\t\tscaleTimeTo = parseInt(scaleInfo.shownTimeTo);\n\n\t\t\t\tif (fromDate && toDate)\n\t\t\t\t{\n\t\t\t\t\tif (this.fullDayMode)\n\t\t\t\t\t{\n\t\t\t\t\t\ttimeFrom = parseInt(fromDate.getHours()) + Math.round((fromDate.getMinutes() / 60) * 10) / 10;\n\t\t\t\t\t\tfromDate.setHours(0, 0, 0, 0);\n\n\t\t\t\t\t\tif (timeFrom > 12)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfromDate = new Date(fromDate.getTime() + Util.getDayLength());\n\t\t\t\t\t\t\tfromDate.setHours(0, 0, 0, 0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfromPos = this.getPosByDate(fromDate);\n\t\t\t\t\t}\n\t\t\t\t\telse if (fromDate.getDay() !== toDate.getDay())\n\t\t\t\t\t{\n\t\t\t\t\t\ttimeFrom = parseInt(fromDate.getHours()) + Math.round((fromDate.getMinutes() / 60) * 10) / 10;\n\t\t\t\t\t\ttimeTo = parseInt(toDate.getHours()) + Math.round((toDate.getMinutes() / 60) * 10) / 10;\n\n\n\t\t\t\t\t\tif (Math.abs(scaleTimeTo - timeFrom) > Math.abs(scaleTimeFrom - timeTo))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfromDate.setHours(scaleInfo.shownTimeTo, 0, 0,0);\n\t\t\t\t\t\t\tfromPos = this.getPosByDate(fromDate) - selectorWidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttoDate.setHours(scaleInfo.shownTimeFrom, 0, 0,0);\n\t\t\t\t\t\t\tfromPos = this.getPosByDate(toDate);\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 fromPos;\n\t}\n\n\ttransit(params = {})\n\t{\n\t\tlet\n\t\t\tfromX = params.fromX || parseInt(this.DOM.wrap.style.left),\n\t\t\ttoX = Selector.roundPos(params.toX || fromX),\n\t\t\ttriggerChangeEvents = params.triggerChangeEvents !== false,\n\t\t\tfocus = !!params.focus,\n\t\t\twidth = parseInt(this.DOM.wrap.offsetWidth);\n\n\t\t// triggerChangeEvents - it means that selector transition (animation caused from mouse ebents)\n\t\tif (toX > (fromX + width) && triggerChangeEvents)\n\t\t{\n\t\t\ttoX -= width;\n\t\t}\n\n\t\tif (fromX !== toX)\n\t\t{\n\t\t\tif (this.animation)\n\t\t\t{\n\t\t\t\tthis.animation.stop();\n\t\t\t}\n\n\t\t\tthis.animation = new BX.easing({\n\t\t\t\tduration: 300,\n\t\t\t\tstart: {left: fromX},\n\t\t\t\tfinish: {left: toX},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quart),\n\t\t\t\tstep: (state) => {this.DOM.wrap.style.left = state.left + 'px'},\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tthis.animation = null;\n\t\t\t\t\tlet\n\t\t\t\t\t\tfromPos = parseInt(this.DOM.wrap.style.left),\n\t\t\t\t\t\tcheckedPos = this.checkPosition(fromPos);\n\n\t\t\t\t\tif (checkedPos !== fromPos)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.DOM.wrap.style.left = checkedPos + 'px';\n\t\t\t\t\t}\n\n\t\t\t\t\tif (triggerChangeEvents)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setValue(checkedPos);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (focus)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.focus(true, 300);\n\t\t\t\t\t}\n\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.show(\n\t\t\t\t\t\t\tthis.currentDateFrom,\n\t\t\t\t\t\t\tthis.currentDateTo,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tanimation: false,\n\t\t\t\t\t\t\t\tfocus: focus,\n\t\t\t\t\t\t\t\talignCenter: false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}, 200);\n\n\t\t\t\t\tthis.checkStatus(checkedPos);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.animation.animate();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (triggerChangeEvents)\n\t\t\t{\n\t\t\t\tthis.setValue();\n\t\t\t}\n\n\t\t\tif (focus === true)\n\t\t\t{\n\t\t\t\tthis.focus(true, 300);\n\t\t\t}\n\n\t\t\tthis.checkStatus();\n\t\t}\n\t}\n\n\tshowTitle(params = {})\n\t{\n\t\tlet\n\t\t\tfromPos = params.fromPos,\n\t\t\ttoPos = params.toPos,\n\t\t\tselectorTitle = params.selectorTitle || this.getTitleNode(),\n\t\t\tselector = params.selector || this.DOM.wrap,\n\t\t\ttimelineWidth = this.getTimelineWidth(),\n\t\t\tfromDate, toDate;\n\n\t\tif (fromPos && toPos)\n\t\t{\n\t\t\tif (toPos > timelineWidth)\n\t\t\t{\n\t\t\t\tfromPos = timelineWidth - parseInt(selector.style.width);\n\t\t\t\ttoPos = timelineWidth;\n\t\t\t}\n\n\t\t\tfromDate = this.getDateByPos(fromPos);\n\t\t\ttoDate = this.getDateByPos(toPos, true);\n\t\t\tif (fromDate && toDate)\n\t\t\t{\n\t\t\t\tif (this.fullDayMode)\n\t\t\t\t{\n\t\t\t\t\tif (Math.abs(toDate.getTime() - fromDate.getTime() - Util.getDayLength()) < 1000)\n\t\t\t\t\t{\n\t\t\t\t\t\tselectorTitle.innerHTML = BX.date.format('d F, D', fromDate.getTime() / 1000);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tselectorTitle.innerHTML =\n\t\t\t\t\t\t\tBX.date.format('d F', fromDate.getTime() / 1000)\n\t\t\t\t\t\t\t+ ' - '\n\t\t\t\t\t\t\t+ BX.date.format('d F', toDate.getTime() / 1000);\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\tselectorTitle.removeAttribute('style');\n\t\t\t\t\tselectorTitle.innerHTML = Util.formatTime(fromDate) + ' - ' + Util.formatTime(toDate);\n\t\t\t\t}\n\n\t\t\t\tif (this.selectMode && this.lastTouchedEntry)\n\t\t\t\t{\n\t\t\t\t\tlet\n\t\t\t\t\t\tentriesListWidth = this.compactMode ? 0 : this.entriesListWidth,\n\t\t\t\t\t\tselectorTitleLeft = parseInt(selector.style.left) - this.DOM.timelineWrap.scrollLeft + entriesListWidth + parseInt(selector.style.width) / 2,\n\t\t\t\t\t\tselectorTitleTop = parseInt(this.timelineDataCont.offsetTop) + parseInt(this.lastTouchedEntry.style.top) - 12;\n\n\t\t\t\t\tselectorTitle.style.top = selectorTitleTop + 'px';\n\t\t\t\t\tselectorTitle.style.left = selectorTitleLeft + 'px';\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tselector.appendChild(selectorTitle);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (selectorTitle === this.selectorTitle)\n\t\t{\n\t\t\tif (selectorTitle.style.display === 'none' || this.selectorHideTimeout)\n\t\t\t{\n\t\t\t\tthis.selectorHideTimeout = clearTimeout(this.selectorHideTimeout);\n\t\t\t\t// Opacity animation\n\t\t\t\tthis.selectorTitle.style.display = '';\n\t\t\t\tthis.selectorTitle.style.opacity = 0;\n\t\t\t\tnew BX.easing({\n\t\t\t\t\tduration: 400,\n\t\t\t\t\tstart: {opacity: 0},\n\t\t\t\t\tfinish: {opacity: 100},\n\t\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quad),\n\t\t\t\t\tstep: (state)=>{this.selectorTitle.style.opacity = state.opacity / 100;},\n\t\t\t\t\tcomplete: ()=>{this.selectorTitle.removeAttribute('style');}\n\t\t\t\t}).animate();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tselectorTitle.removeAttribute('style');\n\t\t}\n\t}\n\n\thideTitle(params = {})\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t\tparams = {};\n\n\t\tlet\n\t\t\ttimeoutName = params.selectorIndex === undefined ? 'selectorHideTimeout' : 'selectorHideTimeout_' + params.selectorIndex,\n\t\t\tselectorTitle = params.selectorTitle || this.getTitleNode();\n\n\t\tif (this[timeoutName])\n\t\t\tthis[timeoutName] = clearTimeout(this[timeoutName]);\n\n\t\tif (params.timeout !== false)\n\t\t{\n\t\t\tthis[timeoutName] = setTimeout(() => {\n\t\t\t\tparams.timeout = false;\n\t\t\t\tthis.hideTitle(params);\n\t\t\t}, 700);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Opacity animation\n\t\t\tselectorTitle.style.display = '';\n\t\t\tselectorTitle.style.opacity = 1;\n\t\t\tnew BX.easing({\n\t\t\t\tduration: 400,\n\t\t\t\tstart: {opacity: 100},\n\t\t\t\tfinish: {opacity: 0},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quad),\n\t\t\t\tstep: (state) => {selectorTitle.style.opacity = state.opacity / 100;},\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tselectorTitle.removeAttribute('style');\n\t\t\t\t\tselectorTitle.style.display = 'none';\n\t\t\t\t}\n\t\t\t}).animate();\n\t\t}\n\t}\n\n\tstatic roundPos(x)\n\t{\n\t\treturn Math.round(parseFloat(x));\n\t}\n\n\tfocus(animation = true, timeout = 300, alignCenter)\n\t{\n\t\talignCenter = alignCenter === true;\n\n\t\tif (this.focusTimeout)\n\t\t{\n\t\t\tthis.focusTimeout = !!clearTimeout(this.focusTimeout);\n\t\t}\n\n\t\tif (this.useAnimation === false)\n\t\t{\n\t\t\tanimation = false;\n\t\t}\n\n\t\tif (timeout)\n\t\t{\n\t\t\tthis.focusTimeout = setTimeout(() => {this.focus(animation, false, alignCenter);}, timeout);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst\n\t\t\t\tscreenDelta = 10,\n\t\t\t\tselectorLeft = parseInt(this.DOM.wrap.style.left),\n\t\t\t\tselectorWidth = parseInt(this.DOM.wrap.style.width),\n\t\t\t\tviewWidth = parseInt(this.DOM.timelineWrap.offsetWidth),\n\t\t\t\tviewLeft = parseInt(this.DOM.timelineWrap.scrollLeft),\n\t\t\t\tviewRight = viewLeft + viewWidth;\n\n\t\t\tlet newScrollLeft = viewLeft;\n\n\t\t\tif (selectorLeft < viewLeft + screenDelta\n\t\t\t\t|| selectorLeft > viewRight - screenDelta\n\t\t\t\t|| alignCenter\n\t\t\t)\n\t\t\t{\n\t\t\t\t// Selector is smaller than view - we puting it in the middle of the view\n\t\t\t\tif (selectorWidth <= viewWidth)\n\t\t\t\t{\n\t\t\t\t\tnewScrollLeft = Math.max(Math.round(selectorLeft - ((viewWidth - selectorWidth) / 2 )), screenDelta);\n\n\t\t\t\t}\n\t\t\t\telse // Selector is wider, so we adjust by left side\n\t\t\t\t{\n\t\t\t\t\tnewScrollLeft = Math.max(Math.round(selectorLeft - screenDelta), screenDelta);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newScrollLeft !== viewLeft)\n\t\t\t{\n\t\t\t\tif (animation === false)\n\t\t\t\t{\n\t\t\t\t\tthis.DOM.timelineWrap.scrollLeft = newScrollLeft;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tnew BX.easing({\n\t\t\t\t\t\tduration: 300,\n\t\t\t\t\t\tstart: {scrollLeft: this.DOM.timelineWrap.scrollLeft},\n\t\t\t\t\t\tfinish: {scrollLeft: newScrollLeft},\n\t\t\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quad),\n\t\t\t\t\t\tstep: (state)=>{this.DOM.timelineWrap.scrollLeft = state.scrollLeft;},\n\t\t\t\t\t\tcomplete: ()=>{}\n\t\t\t\t\t}).animate();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDuration()\n\t{\n\t\tlet duration = Math.round((this.currentDateTo - this.currentDateFrom) / 1000) * 1000;\n\n\t\tif (this.fullDayMode)\n\t\t{\n\t\t\tduration += Util.getDayLength();\n\t\t}\n\n\t\treturn duration;\n\t}\n\n\tgetDateFrom()\n\t{\n\t\treturn this.currentDateFrom;\n\t}\n\n\tgetDateTo()\n\t{\n\t\treturn this.currentDateTo;\n\t}\n}","// @flow\nimport {Runtime, Type, Event, Loc, Dom, Tag, Text, Browser} from 'main.core';\nimport {Util} from 'calendar.util';\nimport {EventEmitter, BaseEvent} from 'main.core.events';\nimport {Selector} from './selector.js';\nimport {PopupWindowManager} from \"main.popup\";\n\nexport class Planner extends EventEmitter\n{\n\tDOM = {};\n\tconfig = {};\n\tentryStatusMap = {\n\t\th : 'user-status-h',\n\t\ty : 'user-status-y',\n\t\tq : 'user-status-q',\n\t\tn : 'user-status-n'\n\t};\n\tscaleTypes = ['15min','30min','1hour', '2hour', '1day'];\n\tsavedScaleType = null;\n\tSCALE_OFFSET_BEFORE = 3; // in days\n\tSCALE_OFFSET_AFTER = 10; // in days\n\tEXPAND_OFFSET = 3; // in days\n\tEXPAND_DELAY = 2000; // ms\n\tREBUILD_DELAY = 100;\n\tmaxTimelineSize = 20;\n\tMIN_ENTRY_ROWS = 3;\n\tMAX_ENTRY_ROWS = 300;\n\twidth = 700;\n\theight = 84;\n\tminWidth = 700;\n\tminHeight = 84;\n\tworkTime = [9, 18];\n\tscrollStep = 10;\n\tshown = false;\n\tbuilt = false;\n\tlocked = false;\n\tshownScaleTimeFrom = 24;\n\tshownScaleTimeTo = 0;\n\ttimelineCellWidthOrig = false;\n\tproposeTimeLimit = 60; // in days\n\texpandTimelineDelay = 600;\n\tlimitScaleSizeMode = false;\n\tuseAnimation = true;\n\tcheckTimeCache = {};\n\tentriesIndex = new Map();\n\tsolidStatus = false;\n\n\tconstructor(params = {}, initialUpdateParams = null)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Planner');\n\t\tthis.config = params;\n\t\tthis.id = params.id;\n\t\tthis.dayOfWeekMonthFormat = params.dayOfWeekMonthFormat || 'd F, l';\n\t\tthis.userId = parseInt(params.userId || Loc.getMessage('USER_ID'));\n\t\tthis.DOM.wrap = params.wrap;\n\t\tthis.SCALE_TIME_FORMAT = BX.isAmPmMode() ? 'g a' : 'G';\n\n\t\tthis.expandTimelineDebounce = Runtime.debounce(this.expandTimeline, this.EXPAND_DELAY, this);\n\t\tthis.setConfig(params);\n\t}\n\n\tshow(options = {animation: false})\n\t{\n\t\tlet animation = false;\n\n\t\tif (this.hideAnimation)\n\t\t{\n\t\t\tthis.hideAnimation.stop();\n\t\t\tthis.hideAnimation = null;\n\t\t}\n\n\n\t\tif (!this.isBuilt())\n\t\t{\n\t\t\tthis.build();\n\t\t\tthis.bindEventHandlers();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.resizePlannerWidth(this.width);\n\t\t}\n\n\t\tthis.buildTimeline();\n\n\t\tif (this.adjustWidth)\n\t\t{\n\t\t\tthis.resizePlannerWidth(this.DOM.timelineInnerWrap.offsetWidth);\n\t\t}\n\n\t\tthis.DOM.wrap.style.display = '';\n\n\t\tif (this.readonly)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-readonly');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.DOM.mainWrap, 'calendar-planner-readonly');\n\t\t}\n\n\t\tif (this.compactMode)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-compact');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.DOM.mainWrap, 'calendar-planner-compact');\n\t\t}\n\n\t\tthis.DOM.entriesOuterWrap.style.display = this.compactMode ? 'none' : '';\n\n\t\tif (animation)\n\t\t{\n\t\t\tif (this.showAnimation)\n\t\t\t{\n\t\t\t\tthis.showAnimation.stop();\n\t\t\t}\n\t\t\tthis.showAnimation = new BX.easing({\n\t\t\t\tduration: 300,\n\t\t\t\tstart: {height: 0},\n\t\t\t\tfinish: {height: this.height},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quart),\n\t\t\t\tstep: (state) => {this.DOM.wrap.style.height = state.height + 'px';},\n\t\t\t\tcomplete: () => {\n\t\t\t\t\tif (parseInt(this.DOM.wrap.style.height) < this.height)\n\t\t\t\t\t\tthis.DOM.wrap.style.height = this.height + 'px';\n\t\t\t\t\tthis.showAnimation = null;\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.showAnimation.animate();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (parseInt(this.DOM.wrap.style.height) < this.height)\n\t\t\t{\n\t\t\t\tthis.DOM.wrap.style.height = this.height + 'px';\n\t\t\t}\n\t\t\tthis.adjustHeight();\n\t\t}\n\n\t\tthis.shown = true;\n\t}\n\n\tsetConfig(params)\n\t{\n\t\tthis.setScaleType(params.scaleType);\n\n\t\t// showTimelineDayTitle\n\t\tif (params.showTimelineDayTitle !== undefined)\n\t\t{\n\t\t\tthis.showTimelineDayTitle = !!params.showTimelineDayTitle;\n\t\t}\n\t\telse if(this.showTimelineDayTitle === undefined)\n\t\t{\n\t\t\tthis.showTimelineDayTitle = true;\n\t\t}\n\n\t\t// compactMode\n\t\tif (params.compactMode !== undefined)\n\t\t{\n\t\t\tthis.compactMode = !!params.compactMode;\n\t\t}\n\t\telse if (this.compactMode === undefined)\n\t\t{\n\t\t\tthis.compactMode = false;\n\t\t}\n\n\t\t// readonly\n\t\tif (params.readonly !== undefined)\n\t\t{\n\t\t\tthis.readonly = !!params.readonly;\n\t\t}\n\t\telse if (this.readonly === undefined)\n\t\t{\n\t\t\tthis.readonly = false;\n\t\t}\n\n\t\tif (this.compactMode)\n\t\t{\n\t\t\tlet compactHeight = 50;\n\t\t\tif (this.showTimelineDayTitle && !this.isOneDayScale())\n\t\t\t\tcompactHeight += 20;\n\t\t\tthis.height = this.minHeight = compactHeight;\n\t\t}\n\n\t\t// Select mode\n\t\tif (params.selectEntriesMode !== undefined)\n\t\t{\n\t\t\tthis.selectMode = !!params.selectEntriesMode;\n\t\t}\n\t\telse if (this.selectMode === undefined)\n\t\t{\n\t\t\tthis.selectMode = false;\n\t\t}\n\n\t\tif (Type.isInteger(params.SCALE_OFFSET_BEFORE))\n\t\t{\n\t\t\tthis.SCALE_OFFSET_BEFORE = parseInt(params.SCALE_OFFSET_BEFORE);\n\t\t}\n\t\tif (Type.isInteger(params.SCALE_OFFSET_AFTER))\n\t\t{\n\t\t\tthis.SCALE_OFFSET_AFTER = parseInt(params.SCALE_OFFSET_AFTER);\n\t\t}\n\t\tif (Type.isInteger(params.maxTimelineSize))\n\t\t{\n\t\t\tthis.maxTimelineSize = parseInt(params.maxTimelineSize);\n\t\t}\n\t\tif (Type.isInteger(params.minEntryRows))\n\t\t{\n\t\t\tthis.MIN_ENTRY_ROWS = parseInt(params.minEntryRows);\n\t\t}\n\t\tif (Type.isInteger(params.maxEntryRows))\n\t\t{\n\t\t\tthis.MAX_ENTRY_ROWS = parseInt(params.maxEntryRows);\n\t\t}\n\n\t\tif (Type.isInteger(params.width))\n\t\t{\n\t\t\tthis.width = parseInt(params.width);\n\t\t}\n\t\tif (Type.isInteger(params.height))\n\t\t{\n\t\t\tthis.height = parseInt(params.height);\n\t\t}\n\t\tif (Type.isInteger(params.minWidth))\n\t\t{\n\t\t\tthis.minWidth = parseInt(params.minWidth);\n\t\t}\n\t\tif (Type.isInteger(params.minHeight))\n\t\t{\n\t\t\tthis.minHeight = parseInt(params.minHeight);\n\t\t}\n\t\tthis.width = Math.max(this.minWidth, this.width);\n\t\tthis.height = Math.max(this.minHeight, this.height);\n\n\t\tif (Type.isArray(params.workTime))\n\t\t{\n\t\t\tthis.workTime = params.workTime;\n\t\t}\n\t\tthis.extendScaleTime(this.workTime[0], this.workTime[1]);\n\n\t\tthis.weekHolidays = params.weekHolidays || this.weekHolidays || [];\n\t\tthis.yearHolidays = params.yearHolidays || this.yearHolidays || [];\n\t\tthis.accuracy = params.accuracy || this.accuracy || 300; // 5 min\n\t\tthis.clickSelectorScaleAccuracy = params.clickSelectorScaleAccuracy || this.accuracy; // 5 min\n\t\tthis.selectorAccuracy = parseInt(params.selectorAccuracy) || this.selectorAccuracy || 300; // 5 min\n\t\tthis.entriesListWidth = parseInt(params.entriesListWidth) || this.entriesListWidth || 200;\n\t\tthis.timelineCellWidth = params.timelineCellWidth || this.timelineCellWidth || 40;\n\t\tthis.solidStatus = params.solidStatus === true;\n\n\t\tthis.showEntiesHeader = params.showEntiesHeader === undefined ? true : !!params.showEntiesHeader;\n\t\tthis.showEntryName = params.showEntryName === undefined ? true : !!params.showEntryName;\n\n\t\tif (this.isOneDayScale() && this.timelineCellWidth < 100)\n\t\t{\n\t\t\tthis.timelineCellWidthOrig = this.timelineCellWidth;\n\t\t\tthis.timelineCellWidth = 100;\n\t\t}\n\t\telse if(this.timelineCellWidthOrig && !this.isOneDayScale())\n\t\t{\n\t\t\tthis.timelineCellWidth = this.timelineCellWidthOrig;\n\t\t\tthis.timelineCellWidthOrig = false;\n\t\t}\n\n\t\tif (this.allowAdjustCellWidth === undefined || params.allowAdjustCellWidth !== undefined)\n\t\t{\n\t\t\tthis.allowAdjustCellWidth = this.readonly\n\t\t\t\t&& this.compactMode\n\t\t\t\t&& params.allowAdjustCellWidth !== false;\n\t\t}\n\n\t\tif (params.locked !== undefined)\n\t\t{\n\t\t\tthis.locked = params.locked;\n\t\t}\n\n\t\tthis.adjustCellWidth();\n\n\t\t// Scale params\n\t\tthis.setScaleLimits(params.scaleDateFrom, params.scaleDateTo);\n\t}\n\n\tsetScaleLimits(scaleDateFrom, scaleDateTo)\n\t{\n\t\tif (scaleDateFrom !== undefined)\n\t\t{\n\t\t\tthis.scaleDateFrom = Type.isDate(scaleDateFrom) ? scaleDateFrom : Util.parseDate(scaleDateFrom);\n\t\t}\n\n\t\tif (!Type.isDate(this.scaleDateFrom))\n\t\t{\n\t\t\tif (this.compactMode && this.readonly)\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom = new Date();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom = new Date(new Date().getTime() - Util.getDayLength() * this.SCALE_OFFSET_BEFORE);\n\t\t\t}\n\t\t}\n\t\tthis.scaleDateFrom.setHours(this.isOneDayScale() ? 0 : this.shownScaleTimeFrom, 0, 0, 0);\n\n\t\tif (scaleDateTo !== undefined)\n\t\t{\n\t\t\tthis.scaleDateTo = BX.type.isString(scaleDateTo) ? Util.parseDate(scaleDateTo) : scaleDateTo;\n\t\t}\n\n\t\tif (!Type.isDate(this.scaleDateTo))\n\t\t{\n\t\t\tif (this.compactMode && this.readonly)\n\t\t\t{\n\t\t\t\tthis.scaleDateTo = new Date();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.scaleDateTo = new Date(new Date().getTime() + Util.getDayLength() * this.SCALE_OFFSET_AFTER);\n\t\t\t}\n\t\t}\n\t\tthis.scaleDateTo.setHours(this.isOneDayScale() ? 0 : this.shownScaleTimeTo, 0, 0, 0);\n\t}\n\n\tSetLoadedDataLimits(from, to)\n\t{\n\t\tif (from)\n\t\t{\n\t\t\tthis.loadedDataFrom = from.getTime ? from : Util.parseDate(from);\n\t\t}\n\t\tif (to)\n\t\t{\n\t\t\tthis.loadedDataTo = to.getTime ? to : Util.parseDate(to);\n\t\t}\n\t}\n\n\textendScaleTime(fromTime, toTime)\n\t{\n\t\tif (fromTime !== false && !isNaN(parseInt(fromTime)))\n\t\t{\n\t\t\tthis.shownScaleTimeFrom = Math.min(parseInt(fromTime), this.shownScaleTimeFrom, 23);\n\t\t\tthis.shownScaleTimeFrom = Math.max(this.shownScaleTimeFrom, 0);\n\n\t\t\tif (this.scaleDateFrom)\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom.setHours(this.shownScaleTimeFrom, 0,0,0);\n\t\t\t}\n\t\t}\n\n\t\tif (toTime !== false && !isNaN(parseInt(toTime)))\n\t\t{\n\t\t\tthis.shownScaleTimeTo = Math.max(parseInt(toTime), this.shownScaleTimeTo, 1);\n\t\t\tthis.shownScaleTimeTo = Math.min(this.shownScaleTimeTo, 24);\n\n\t\t\tif (this.scaleDateTo)\n\t\t\t{\n\t\t\t\tthis.scaleDateTo.setHours(this.shownScaleTimeTo, 0,0,0);\n\t\t\t}\n\t\t}\n\n\t\tthis.rebuildDebounce();\n\n\t\t//this.checkSelectorPosition = this.shownScaleTimeFrom !== 0 || this.shownScaleTimeTo !== 24;\n\t}\n\n\tadjustCellWidth()\n\t{\n\t\tif (this.allowAdjustCellWidth)\n\t\t{\n\t\t\tthis.timelineCellWidth = Math.round(this.width / ((this.shownScaleTimeTo - this.shownScaleTimeFrom) * 3600 / this.scaleSize));\n\t\t}\n\t}\n\n\tbuild()\n\t{\n\t\tif (!Type.isDomNode(this.DOM.wrap))\n\t\t{\n\t\t\tthrow new TypeError(\"Wrap is not DOM node\");\n\t\t}\n\n\t\tthis.DOM.wrap.style.width = this.width + 'px';\n\n\t\t// Left part - list of users and other resources\n\t\tlet entriesListWidth = this.compactMode ? 0 : this.entriesListWidth;\n\n\t\t// Timeline with accessibility information\n\t\tthis.DOM.mainWrap = this.DOM.wrap.appendChild(BX.create('DIV', {\n\t\t\tprops: {\n\t\t\t\tclassName: 'calendar-planner-main-container calendar-planner-main-container-resource'\n\t\t\t},\n\t\t\tstyle: {\n\t\t\t\tminHeight: this.minHeight + 'px',\n\t\t\t\theight: this.height + 'px',\n\t\t\t\twidth: this.width + 'px'\n\t\t\t}\n\t\t}));\n\n\t\tif (!this.showEntryName)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-entry-icons-only');\n\t\t}\n\n\t\tif (this.readonly)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-readonly');\n\t\t}\n\n\t\tthis.DOM.entriesOuterWrap = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-user-container\" style=\"width: ${entriesListWidth}px; height: ${this.height}px;\"></div>\n\t\t`);\n\n\t\tUtil.preventSelection(this.DOM.entriesOuterWrap);\n\t\tif (this.compactMode)\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-compact');\n\t\t\tthis.DOM.entriesOuterWrap.style.display = 'none';\n\t\t}\n\n\t\tif (this.isOneDayScale())\n\t\t{\n\t\t\tDom.addClass(this.DOM.entriesOuterWrap, 'calendar-planner-no-daytitle');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.DOM.entriesOuterWrap, 'calendar-planner-no-daytitle');\n\t\t}\n\n\t\tif (this.showEntiesHeader !== false)\n\t\t{\n\t\t\tthis.DOM.entrieListHeader = this.DOM.entriesOuterWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-header\"></div>\n\t\t\t`)\n\t\t\t.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-general-info\"></div>\n\t\t\t`)\n\t\t\t.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-users-header\"></div>\n\t\t\t`);\n\n\t\t\tthis.entriesListTitleCounter = this.DOM.entrieListHeader.appendChild(Tag.render`\n\t\t\t\t<span class=\"calendar-planner-users-item\">\n\t\t\t\t\t${Loc.getMessage('EC_PL_ATTENDEES_TITLE') + ' '}\n\t\t\t\t</span>\n\t\t\t`)\n\t\t\t.appendChild(Tag.render`<span></span>`);\n\t\t}\n\n\t\tthis.DOM.entrieListWrap = this.DOM.entriesOuterWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-user-container-inner\"></div>\n\t\t`);\n\n\t\t// Fixed cont with specific width and height\n\t\tthis.DOM.timelineFixedWrap = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-wrapper\" style=\"height: ${this.height}px\"></div>\n\t\t`);\n\n\t\tif (this.isLocked())\n\t\t{\n\t\t\tthis.lock();\n\t\t}\n\n\t\t// Movable cont - used to move scale and data containers easy and at the same time\n\t\tthis.DOM.timelineInnerWrap = this.DOM.timelineFixedWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-inner-wrapper\" data-bx-planner-meta=\"timeline\"></div>\n\t\t`);\n\n\n\t\t// Scale container\n\t\tthis.DOM.timelineScaleWrap = this.DOM.timelineInnerWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-time\"></div>\n\t\t`);\n\t\tUtil.preventSelection(this.DOM.timelineScaleWrap);\n\n\t\t// Accessibility container\n\t\tthis.DOM.timelineDataWrap = this.DOM.timelineInnerWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-container\" style=\"height: ${this.height}px\"></div>\n\t\t`);\n\t\t// Container with accessibility entries elements\n\t\tthis.DOM.accessibilityWrap = this.DOM.timelineDataWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-acc-wrap\"></div>\n\t\t`);\n\n\t\t// Selector\n\t\tthis.selector = new Selector({\n\t\t\tselectMode: this.selectMode,\n\t\t\ttimelineWrap: this.DOM.timelineFixedWrap,\n\t\t\tgetPosByDate: this.getPosByDate.bind(this),\n\t\t\tgetDateByPos: this.getDateByPos.bind(this),\n\t\t\tgetPosDateMap: () => {\n\t\t\t\treturn this.posDateMap;\n\t\t\t},\n\t\t\tuseAnimation: this.useAnimation,\n\t\t\tsolidStatus: this.solidStatus,\n\t\t\tgetScaleInfo: () => {return {\n\t\t\t\tscale: this.scaleType,\n\t\t\t\tshownTimeFrom: this.shownScaleTimeFrom,\n\t\t\t\tshownTimeTo: this.shownScaleTimeTo,\n\t\t\t}},\n\t\t\tgetTimelineWidth: () => {\n\t\t\t\treturn parseInt(this.DOM.timelineInnerWrap.style.width)\n\t\t\t}\n\t\t});\n\t\tthis.DOM.timelineDataWrap.appendChild(this.selector.getWrap());\n\t\tthis.DOM.mainWrap.appendChild(this.selector.getTitleNode());\n\t\tthis.selector.subscribe('onChange', this.handleSelectorChanges.bind(this));\n\t\tthis.selector.subscribe('doCheckStatus', this.doCheckSelectorStatus.bind(this));\n\n\t\tif (this.selectMode)\n\t\t{\n\t\t\tthis.selectedEntriesWrap = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-timeline-select-entries-wrap\"></div>\n\t\t\t`);\n\n\t\t\tthis.hoverRow = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-timeline-hover-row\" style=\"top: 0; width: ${parseInt(this.DOM.mainWrap.offsetWidth)}px\"></div>\n\t\t\t`);\n\n\n\t\t\tEvent.bind(document, 'mousemove', this.mouseMoveHandler.bind(this));\n\t\t}\n\n\t\tif (!this.compactMode)\n\t\t{\n\t\t\tthis.DOM.settingsButton = this.DOM.mainWrap.appendChild(Tag.render`<div class=\"calendar-planner-settings-icon-container\" title=\"${Loc.getMessage('EC_PL_SETTINGS_SCALE')}\"><span class=\"calendar-planner-settings-title\">${Loc.getMessage('EC_PL_SETTINGS_SCALE')}</span><span class=\"calendar-planner-settings-icon\"></span></div>`);\n\t\t\tEvent.bind(this.DOM.settingsButton, 'click', () => this.showSettingsPopup());\n\t\t}\n\n\t\tthis.built = true;\n\t}\n\n\tbuildTimeline(clearCache)\n\t{\n\t\tif (\n\t\t\tthis.isBuilt()\n\t\t\t&& (this.lastTimelineKey !== this.getTimelineShownKey()\n\t\t\t|| clearCache === true)\n\t\t)\n\t\t{\n\t\t\tif (this.DOM.timelineScaleWrap)\n\t\t\t{\n\t\t\t\tDom.clean(this.DOM.timelineScaleWrap);\n\t\t\t}\n\n\t\t\tthis.scaleData = this.getScaleData();\n\n\t\t\tlet\n\t\t\t\touterDayCont,\n\t\t\t\tdayTitle,\n\t\t\t\tcont = this.DOM.timelineScaleWrap;\n\n\t\t\tfor (let i = 0; i < this.scaleData.length; i++)\n\t\t\t{\n\t\t\t\tif (this.showTimelineDayTitle && !this.isOneDayScale())\n\t\t\t\t{\n\t\t\t\t\tif (this.scaleDayTitles[this.scaleData[i].daystamp])\n\t\t\t\t\t{\n\t\t\t\t\t\tcont = this.scaleDayTitles[this.scaleData[i].daystamp];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\touterDayCont = this.DOM.timelineScaleWrap.appendChild(Tag.render`\n\t\t\t\t\t\t\t<div class=\"calendar-planner-time-day-outer\"></div>\n\t\t\t\t\t\t`);\n\t\t\t\t\t\t//F d, l\n\t\t\t\t\t\tdayTitle = outerDayCont.appendChild(Tag.render`\n\t\t\t\t\t\t\t<div class=\"calendar-planner-time-day-title\">\n\t\t\t\t\t\t\t\t<span>${BX.date.format(this.dayOfWeekMonthFormat, this.scaleData[i].timestamp / 1000)}</span>\n\t\t\t\t\t\t\t\t<div class=\"calendar-planner-time-day-border\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`);\n\n\t\t\t\t\t\tcont = outerDayCont.appendChild(Tag.render`\n\t\t\t\t\t\t\t<div class=\"calendar-planner-time-day\"></div>\n\t\t\t\t\t\t`);\n\n\t\t\t\t\t\tthis.scaleDayTitles[this.scaleData[i].daystamp] = cont;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet className = 'calendar-planner-time-hour-item' + (this.scaleData[i].dayStart ? ' calendar-planner-day-start' : '');\n\n\t\t\t\tif (\n\t\t\t\t\t(this.scaleType === '15min' || this.scaleType === '30min')\n\t\t\t\t\t&& this.scaleData[i].title !== ''\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tclassName += ' calendar-planner-time-hour-bold';\n\t\t\t\t}\n\n\t\t\t\tthis.scaleData[i].cell = cont.appendChild(BX.create('DIV', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: className\n\t\t\t\t\t},\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\twidth: this.timelineCellWidth + 'px',\n\t\t\t\t\t\tminWidth: this.timelineCellWidth + 'px'\n\t\t\t\t\t},\n\t\t\t\t\thtml: this.scaleData[i].title ? '<i>' + this.scaleData[i].title + '</i>' : ''\n\t\t\t\t}));\n\n\t\t\t\tif (!this.isOneDayScale() && this.scaleData[i + 1] && this.scaleData[i + 1].dayStart)\n\t\t\t\t{\n\t\t\t\t\tcont.appendChild(Tag.render`\n\t\t\t\t\t\t<div class=\"calendar-planner-timeline-border\"></div>\n\t\t\t\t\t`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet mapDatePosRes = this.mapDatePos();\n\t\t\tthis.posDateMap = mapDatePosRes.posDateMap;\n\n\t\t\tconst timelineOffset = this.DOM.timelineScaleWrap.offsetWidth;\n\t\t\tthis.DOM.timelineInnerWrap.style.width = timelineOffset + 'px';\n\t\t\tthis.DOM.entrieListWrap.style.top = (parseInt(this.DOM.timelineDataWrap.offsetTop) + 10) + 'px';\n\n\t\t\tthis.lastTimelineKey = this.getTimelineShownKey();\n\t\t\tthis.checkRebuildTimeout(timelineOffset);\n\t\t}\n\t}\n\n\tgetTimelineShownKey()\n\t{\n\t\treturn 'tm_' + this.scaleDateFrom.getTime() + '_' + this.scaleDateTo.getTime();\n\t}\n\n\tcheckRebuildTimeout(timelineOffset, timeout = 300)\n\t{\n\t\tif (!this._checkRebuildTimeoutCount)\n\t\t{\n\t\t\tthis._checkRebuildTimeoutCount = 0;\n\t\t}\n\n\t\tif (this.rebuildTimeout)\n\t\t{\n\t\t\tthis.rebuildTimeout = !!clearTimeout(this.rebuildTimeout);\n\t\t}\n\n\t\tif (\n\t\t\tthis._checkRebuildTimeoutCount <= 10\n\t\t\t&& Type.isElementNode(this.DOM.timelineScaleWrap)\n\t\t\t&& Dom.isShown(this.DOM.timelineScaleWrap)\n\t\t)\n\t\t{\n\t\t\tthis._checkRebuildTimeoutCount++;\n\t\t\tthis.rebuildTimeout = setTimeout(() => {\n\t\t\t\tif (timelineOffset !== this.DOM.timelineScaleWrap.offsetWidth)\n\t\t\t\t{\n\t\t\t\t\tif (this.rebuildTimeout)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.rebuildTimeout = !!clearTimeout(this.rebuildTimeout);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.rebuild();\n\t\t\t\t\tif (this.selector)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.selector.focus(false, 300);\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.checkRebuildTimeout(timelineOffset, timeout);\n\t\t\t\t}\n\t\t\t}, timeout);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdelete this._checkRebuildTimeoutCount;\n\t\t}\n\t}\n\n\trebuildDebounce(timeout = this.REBUILD_DELAY)\n\t{\n\t\tRuntime.debounce(this.rebuild, timeout, this)();\n\t}\n\n\trebuild(params = {})\n\t{\n\t\tif (this.isBuilt())\n\t\t{\n\t\t\tthis.buildTimeline(true);\n\t\t\tthis.update(this.entries, this.accessibility);\n\t\t\tthis.adjustHeight();\n\t\t\tthis.resizePlannerWidth(this.width);\n\n\t\t\tif (params.updateSelector !== false)\n\t\t\t{\n\t\t\t\tthis.selector.update(params.selectorParams);\n\t\t\t}\n\n\t\t\tthis.clearCacheTime();\n\t\t}\n\t}\n\n\tgetScaleData()\n\t{\n\t\tthis.scaleData = [];\n\t\tthis.scaleDayTitles = {};\n\n\t\tlet\n\t\t\tts, scaleFrom, scaleTo,\n\t\t\ttime, dayStamp, title,\n\t\t\tcurDayStamp = false,\n\t\t\ttimeFrom = this.isOneDayScale() ? 0 : this.shownScaleTimeFrom,\n\t\t\ttimeTo = this.isOneDayScale() ? 0 : this.shownScaleTimeTo;\n\n\t\tthis.scaleDateFrom.setHours(timeFrom, 0, 0, 0);\n\t\tthis.scaleDateTo.setHours(timeTo, 0, 0, 0);\n\t\tscaleFrom = this.scaleDateFrom.getTime();\n\t\tscaleTo = this.scaleDateTo.getTime();\n\n\t\tfor (ts = scaleFrom; ts < scaleTo; ts += this.scaleSize * 1000)\n\t\t{\n\t\t\ttime = parseFloat(BX.date.format('H.i', ts / 1000));\n\n\t\t\tif (this.isOneDayScale())\n\t\t\t\ttitle = BX.date.format('d F, D', ts / 1000);\n\t\t\telse\n\t\t\t\ttitle = BX.date.format('i', ts / 1000) === '00'\n\t\t\t\t\t? BX.date.format(this.SCALE_TIME_FORMAT, ts / 1000)\n\t\t\t\t\t: '';\n\n\t\t\tif (this.isOneDayScale() || (time >= timeFrom && time < timeTo))\n\t\t\t{\n\t\t\t\tdayStamp = BX.date.format('d.m.Y', ts / 1000);\n\t\t\t\tthis.scaleData.push({\n\t\t\t\t\tdaystamp: dayStamp,\n\t\t\t\t\ttimestamp: ts,\n\t\t\t\t\tvalue: ts,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\tdayStart: curDayStamp !== dayStamp\n\t\t\t\t});\n\t\t\t\tcurDayStamp = dayStamp;\n\t\t\t}\n\t\t}\n\n\t\treturn this.scaleData;\n\t}\n\n\tisOneDayScale()\n\t{\n\t\treturn this.scaleType === '1day';\n\t}\n\n\tstatic prepareAccessibilityItem(entry)\n\t{\n\t\tif (!Type.isDate(entry.from))\n\t\t{\n\t\t\tentry.from = Util.parseDate(entry.dateFrom);\n\t\t}\n\n\t\tif (!Type.isDate(entry.to))\n\t\t{\n\t\t\tentry.to = Util.parseDate(entry.dateTo);\n\t\t}\n\n\t\tif (!Type.isDate(entry.from) || !Type.isDate(entry.to))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tentry.from.setSeconds(0,0);\n\t\tentry.fromTimestamp = entry.from.getTime();\n\n\t\tentry.to.setSeconds(0,0);\n\t\tentry.toTimestamp = entry.to.getTime();\n\n\t\tif (!Type.isDate(entry.toReal))\n\t\t{\n\t\t\t// Full day\n\t\t\tif (\n\t\t\t\t(entry.toTimestamp - entry.fromTimestamp) % Util.getDayLength() === 0\n\t\t\t\t&& BX.date.format('H:i', entry.toTimestamp / 1000) === '00:00'\n\t\t\t)\n\t\t\t{\n\t\t\t\tentry.toReal = new Date(entry.to.getTime() + Util.getDayLength());\n\t\t\t\tentry.toReal.setSeconds(0,0);\n\t\t\t\tentry.toTimestampReal = entry.toReal.getTime();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tentry.toReal = entry.to;\n\t\t\t\tentry.toTimestampReal = entry.toTimestamp;\n\t\t\t}\n\t\t}\n\n\t\treturn entry;\n\t}\n\n\taddAccessibilityItem(entry, wrap)\n\t{\n\t\tlet\n\t\t\ttimeFrom, timeTo,\n\t\t\thidden = false,\n\t\t\tfromTimestamp = entry.fromTimestamp,\n\t\t\ttoTimestamp = entry.toTimestampReal || entry.toTimestamp,\n\t\t\tshownScaleTimeFrom = this.isOneDayScale() ? 0 : this.shownScaleTimeFrom,\n\t\t\tshownScaleTimeTo = this.isOneDayScale() ? 24 : this.shownScaleTimeTo,\n\t\t\tfrom = new Date(fromTimestamp),\n\t\t\tto = new Date(toTimestamp);\n\n\t\ttimeFrom = parseInt(from.getHours()) + from.getMinutes() / 60;\n\t\ttimeTo = parseInt(to.getHours()) + to.getMinutes() / 60;\n\n\t\tif (timeFrom > shownScaleTimeTo)\n\t\t{\n\t\t\tfrom = new Date(from.getTime() + Util.getDayLength() - 1);\n\t\t\tfrom.setHours(shownScaleTimeFrom, 0, 0, 0);\n\t\t\tif (from.getTime() >= to.getTime())\n\t\t\t{\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hidden && timeFrom < shownScaleTimeFrom)\n\t\t{\n\t\t\tfrom.setHours(shownScaleTimeFrom, 0, 0, 0);\n\t\t\tif (from.getTime() >= to.getTime())\n\t\t\t{\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hidden && timeTo > shownScaleTimeTo)\n\t\t{\n\t\t\tto.setHours(shownScaleTimeTo, 0, 0, 0);\n\t\t\tif (from.getTime() >= to.getTime())\n\t\t\t{\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hidden && timeTo < shownScaleTimeFrom)\n\t\t{\n\t\t\tto = new Date(to.getTime() - Util.getDayLength() + 1);\n\t\t\tto.setHours(shownScaleTimeTo, 0, 0, 0);\n\t\t\tif (from.getTime() >= to.getTime())\n\t\t\t{\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!hidden)\n\t\t{\n\t\t\tlet\n\t\t\t\tfromPos = this.getPosByDate(from),\n\t\t\t\ttoPos = this.getPosByDate(to);\n\n\t\t\tentry.node = wrap.appendChild(BX.create('DIV', {\n\t\t\t\tprops: {\n\t\t\t\t\tclassName: 'calendar-planner-acc-entry'\n\t\t\t\t\t\t+ (entry.type && entry.type === 'hr' ? ' calendar-planner-acc-entry-hr' : '')\n\t\t\t\t},\n\t\t\t\tstyle: {\n\t\t\t\t\tleft: fromPos + 'px',\n\t\t\t\t\twidth: Math.max((toPos - fromPos), 3) + 'px'\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\tif (entry.title || entry.name)\n\t\t\t{\n\t\t\t\tentry.node.title = entry.title || entry.name;\n\t\t\t}\n\t\t}\n\t}\n\n\tdisplayEntryRow(entry, accessibility = [])\n\t{\n\t\tlet rowWrap;\n\t\tif (entry.type === 'moreLink')\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-user\"></div>\n\t\t\t`);\n\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\tthis.DOM.showMoreUsersLink = rowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-all-users\" title=\"${entry.title || ''}\">\n\t\t\t\t\t\t${entry.name}\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.showMoreUsersLink = rowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-users-more\" title=\"${entry.name || ''}\">\n\t\t\t\t\t\t<span class=\"calendar-planner-users-more-btn\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\t\t\tEvent.bind(this.DOM.showMoreUsersLink, 'click', () => this.showMoreUsers());\n\n\t\t}\n\t\telse if (entry.type === 'lastUsers')\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\t\n\t\t\t\t<div class=\"calendar-planner-user\"></div>\n\t\t\t`);\n\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\tthis.DOM.showMoreUsersLink = rowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-all-users calendar-planner-last-users\" title=\"${entry.title || ''}\">\n\t\t\t\t\t\t${entry.name}\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.DOM.showMoreUsersLink = rowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-users-more\" title=\"${entry.title || entry.name}\">\n\t\t\t\t\t\t<span class=\"calendar-planner-users-last-btn\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t\telse if (entry.id && entry.type === 'user')\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(BX.create('DIV', {\n\t\t\t\tattrs: {\n\t\t\t\t\t'data-bx-planner-entry' : entry.uid,\n\t\t\t\t\tclassName: 'calendar-planner-user'\n\t\t\t\t\t\t+ (entry.emailUser ? ' calendar-planner-email-user' : '')\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\tif (entry.status && this.entryStatusMap[entry.status])\n\t\t\t{\n\t\t\t\trowWrap.appendChild(BX.create('SPAN', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: 'calendar-planner-user-status-icon '\n\t\t\t\t\t\t\t+ this.entryStatusMap[entry.status],\n\t\t\t\t\t\ttitle: Loc.getMessage('EC_PL_STATUS_'\n\t\t\t\t\t\t\t+ entry.status.toUpperCase())\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t}\n\n\t\t\trowWrap.appendChild(Planner.getEntryAvatarNode(entry));\n\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-user-name\"></span>\n\t\t\t\t`)\n\t\t\t\t.appendChild(BX.create('SPAN', {\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tclassName: 'calendar-planner-entry-name'\n\t\t\t\t\t},\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\t'bx-tooltip-user-id': entry.id,\n\t\t\t\t\t\t'bx-tooltip-classname': 'calendar-planner-user-tooltip'\n\t\t\t\t\t},\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\twidth: (this.entriesListWidth - 42) + 'px'\n\t\t\t\t\t},\n\t\t\t\t\ttext: entry.name\n\t\t\t\t}))\n\t\t\t}\n\t\t}\n\t\telse if (entry.id && entry.type === 'room')\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-user\"></div>\n\t\t\t`);\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-user-name\"></span>\n\t\t\t\t`)\n\t\t\t\t.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-entry-name\" style=\"width: ${this.entriesListWidth - 20}px;\">\n\t\t\t\t\t\t${entry.name}\n\t\t\t\t\t</span>\n\t\t\t\t`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-location-image-icon\" title=\"${entry.name}\"></div>\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t\telse if (entry.type === 'resource')\n\t\t{\n\t\t\tif (!this.entriesResourceListWrap || !BX.isNodeInDom(this.entriesResourceListWrap))\n\t\t\t{\n\t\t\t\tthis.entriesResourceListWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-container-resource\">\n\t\t\t\t\t\t<div class=\"calendar-planner-resource-header\">\n\t\t\t\t\t\t\t<span class=\"calendar-planner-users-item\">${Loc.getMessage('EC_PL_RESOURCE_TITLE')}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\trowWrap = this.entriesResourceListWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-user\" data-bx-planner-entry=\"${entry.uid}\"></div>\n\t\t\t`);\n\n\t\t\tif (this.showEntryName)\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-user-name\"></span>\n\t\t\t\t`)\n\t\t\t\t.appendChild(Tag.render`\n\t\t\t\t\t<span class=\"calendar-planner-entry-name\" style=\"width: ${this.entriesListWidth - 20}px;\">\n\t\t\t\t\t\t${entry.name}\n\t\t\t\t\t<span>\n\t\t\t\t`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-location-image-icon\" title=\"${entry.name}\"></div>\n\t\t\t\t`);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\trowWrap = this.DOM.entrieListWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-user\"></div>\n\t\t\t`);\n\t\t\trowWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-all-users\">${entry.name}</div>\n\t\t\t`);\n\t\t}\n\n\t\tlet top = rowWrap.offsetTop + 13;\n\n\t\tlet dataRowWrap = this.DOM.accessibilityWrap.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-timeline-space\" style=\"top:${top}px\" data-bx-planner-entry=\"${entry.uid||0}\"></div>\n\t\t`);\n\n\t\tif (this.selectMode)\n\t\t{\n\t\t\tentry.selectorControlWrap = this.selector.controlWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-selector-control-row\" data-bx-planner-entry=\"${entry.uid}\" style=\"top: ${top - 4}px;\"></div>\n\t\t\t`);\n\n\t\t\tif (entry.selected)\n\t\t\t{\n\t\t\t\tthis.selectEntryRow(entry);\n\t\t\t}\n\t\t}\n\n\t\t//this.entriesRowMap.set(entry, rowWrap);\n\t\tthis.entriesDataRowMap.set(entry.uid, dataRowWrap);\n\t\taccessibility.forEach((item) => {\n\t\t\titem = Planner.prepareAccessibilityItem(item);\n\t\t\tif (item)\n\t\t\t{\n\t\t\t\tthis.addAccessibilityItem(item, dataRowWrap);\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic getEntryAvatarNode(entry)\n\t{\n\t\tlet imageNode;\n\t\tconst img = entry.avatar;\n\n\t\tif (!img || img === \"/bitrix/images/1.gif\")\n\t\t{\n\t\t\timageNode = Tag.render`<div bx-tooltip-user-id=\"${entry.id}\" bx-tooltip-classname=\"calendar-planner-user-tooltip\" title=\"${Text.encode(entry.name)}\" class=\"ui-icon calendar-planner-user-image-icon ${(entry.emailUser ? 'ui-icon-common-user-mail' : 'ui-icon-common-user')}\"><i></i></div>`;\n\t\t}\n\t\telse\n\t\t{\n\t\t\timageNode = Tag.render`<div bx-tooltip-user-id=\"${entry.id}\" bx-tooltip-classname=\"calendar-planner-user-tooltip\" title=\"${Text.encode(entry.name)}\" class=\"ui-icon calendar-planner-user-image-icon\"><i style=\"background-image: url('${entry.avatar}')\"></i></div>`;\n\t\t}\n\t\treturn imageNode;\n\t}\n\n\tselectEntryRow(entry)\n\t{\n\t\tif (BX.type.isPlainObject(entry))\n\t\t{\n\t\t\tlet top = parseInt(entry.dataRowWrap.offsetTop);\n\t\t\tif (\n\t\t\t\t!entry.selectWrap\n\t\t\t\t|| !BX.isParentForNode(this.selectedEntriesWrap, entry.selectWrap)\n\t\t\t)\n\t\t\t{\n\t\t\t\tentry.selectWrap = this.selectedEntriesWrap.appendChild(Tag.render`\n\t\t\t\t\t<div class=\"calendar-planner-timeline-selected\"></div>\n\t\t\t\t`);\n\t\t\t}\n\n\t\t\tentry.selectWrap.style.display = '';\n\t\t\tentry.selectWrap.style.top = (top + 36) + 'px';\n\t\t\tentry.selectWrap.style.width = (parseInt(this.DOM.mainWrap.offsetWidth) + 5) + 'px';\n\n\t\t\tDom.addClass(entry.selectorControlWrap, 'active');\n\t\t\tentry.selected = true;\n\n\t\t\tthis.clearCacheTime();\n\t\t}\n\t}\n\n\tisEntrySelected(entry)\n\t{\n\t\treturn entry && entry.selected;\n\t}\n\n\tdeSelectEntryRow(entry)\n\t{\n\t\tif (BX.type.isPlainObject(entry))\n\t\t{\n\t\t\tif (entry.selectWrap)\n\t\t\t{\n\t\t\t\tentry.selectWrap.style.display = 'none';\n\t\t\t}\n\t\t\tif (entry.selectorControlWrap)\n\t\t\t{\n\t\t\t\tDom.removeClass(entry.selectorControlWrap, 'active');\n\t\t\t}\n\t\t\tentry.selected = false;\n\t\t\tthis.clearCacheTime();\n\t\t}\n\t}\n\n\tstatic getEntryUniqueId(entry)\n\t{\n\t\treturn ['user', 'room'].includes(entry.type) ? entry.id : entry.type + '-' + entry.id;\n\t}\n\n\tgetEntryByUniqueId(entryUniqueId)\n\t{\n\t\tif (BX.type.isArray(this.entries))\n\t\t{\n\t\t\treturn this.entries.find(function(entry){return entry.uid == entryUniqueId;})\n\t\t}\n\t\treturn null;\n\t}\n\n\tbindEventHandlers()\n\t{\n\t\tEvent.bind(this.DOM.wrap, 'click', this.handleClick.bind(this));\n\t\tEvent.bind(this.DOM.wrap, 'mousedown', this.handleMousedown.bind(this));\n\t\tEvent.bind(document, 'mousemove', this.handleMousemove.bind(this));\n\t\tEvent.bind(document, 'mouseup', this.handleMouseup.bind(this));\n\n\t\tEvent.bind(\n\t\t\tthis.DOM.timelineFixedWrap,\n\t\t\t'onwheel' in document ? 'wheel' : 'mousewheel',\n\t\t\tthis.mouseWheelTimelineHandler.bind(this)\n\t\t);\n\n\t}\n\n\thandleClick(e)\n\t{\n\t\tif (!e)\n\t\t{\n\t\t\te = window.event;\n\t\t}\n\n\t\tthis.clickMousePos = this.getMousePos(e);\n\t\tlet\n\t\t\tnodeTarget = e.target || e.srcElement,\n\t\t\taccuracyMouse = 5;\n\n\n\t\tif (this.selectMode &&\n\t\t\tDom.hasClass(nodeTarget, 'calendar-planner-selector-control-row'))\n\t\t{\n\t\t\tlet entry = this.getEntryByUniqueId(nodeTarget.getAttribute('data-bx-planner-entry'));\n\t\t\tif (entry)\n\t\t\t{\n\t\t\t\tif (!this.isEntrySelected(entry))\n\t\t\t\t{\n\t\t\t\t\tthis.selectEntryRow(entry);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.deSelectEntryRow(entry);\n\t\t\t\t}\n\n\t\t\t\tthis.selector.checkStatus();\n\n\t\t\t\tBX.onCustomEvent('OnCalendarPlannerSelectedEntriesOnChange', [{\n\t\t\t\t\tplannerId: this.id,\n\t\t\t\t\tentries: this.entries\n\t\t\t\t}]);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.readonly)\n\t\t{\n\t\t\tlet\n\t\t\t\ttimeline = this.findTarget(nodeTarget, 'timeline'),\n\t\t\t\tselector = this.findTarget(nodeTarget, 'selector');\n\n\t\t\tif (timeline && !selector && Math.abs(this.clickMousePos.x - this.mouseDownMousePos.x) < accuracyMouse && Math.abs(this.clickMousePos.y - this.mouseDownMousePos.y) < accuracyMouse)\n\t\t\t{\n\t\t\t\tlet left = this.clickMousePos.x - BX.pos(this.DOM.timelineFixedWrap).left + this.DOM.timelineFixedWrap.scrollLeft;\n\n\t\t\t\tif (this.clickSelectorScaleAccuracy !== this.accuracy)\n\t\t\t\t{\n\t\t\t\t\tlet mapDatePosRes = this.mapDatePos(this.clickSelectorScaleAccuracy);\n\t\t\t\t\tlet dateFrom = this.getDateByPos(left, false, mapDatePosRes.posDateMap);\n\t\t\t\t\tleft = this.getPosByDate(dateFrom);\n\t\t\t\t}\n\n\t\t\t\tthis.selector.transit({toX: left});\n\t\t\t}\n\t\t}\n\t}\n\n\thandleMousedown(e)\n\t{\n\t\tif (!e)\n\t\t{\n\t\t\te = window.event;\n\t\t}\n\n\t\tlet nodeTarget = e.target || e.srcElement;\n\t\tthis.mouseDownMousePos = this.getMousePos(e);\n\t\tthis.mouseDown = true;\n\n\t\tif (!this.readonly)\n\t\t{\n\t\t\tlet selector = this.findTarget(nodeTarget, 'selector');\n\t\t\tthis.startMousePos = this.mouseDownMousePos;\n\n\t\t\tif (selector)\n\t\t\t{\n\t\t\t\tif (this.findTarget(nodeTarget, 'selector-resize-right'))\n\t\t\t\t{\n\t\t\t\t\tthis.selector.startResize();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.selector.startMove();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (this.findTarget(nodeTarget, 'timeline'))\n\t\t\t{\n\t\t\t\tthis.startScrollTimeline();\n\t\t\t}\n\t\t}\n\t}\n\n\thandleMouseup()\n\t{\n\t\tif (this.selector.isDragged())\n\t\t{\n\t\t\tthis.selector.endMove();\n\t\t\tthis.selector.endResize();\n\t\t}\n\n\t\tif(this.timelineIsDraged)\n\t\t{\n\t\t\tthis.endScrollTimeline();\n\t\t}\n\n\t\tif (this.shown && !this.readonly && this.mouseDown)\n\t\t{\n\t\t\tthis.checkTimelineScroll();\n\t\t}\n\n\t\tthis.mouseDown = false;\n\t\tDom.removeClass(document.body, 'calendar-planner-unselectable');\n\t}\n\n\thandleMousemove(e)\n\t{\n\t\tlet\n\t\t\tmousePos,\n\t\t\ttarget = e.target || e.srcElement;\n\n\t\tif (this.selectMode && target && target.getAttribute && target.getAttribute('data-bx-planner-entry'))\n\t\t{\n\t\t\tthis.lastTouchedEntry = target;\n\t\t}\n\n\t\tif (this.selector.isDragged())\n\t\t{\n\t\t\tmousePos = this.getMousePos(e);\n\t\t\tthis.selector.move(mousePos.x - this.startMousePos.x);\n\t\t\tthis.selector.resize(mousePos.x - this.startMousePos.x);\n\t\t}\n\n\t\tif(this.timelineIsDraged)\n\t\t{\n\t\t\tmousePos = this.getMousePos(e);\n\t\t\tthis.scrollTimeline(mousePos.x - this.startMousePos.x);\n\t\t}\n\t}\n\n\tmouseWheelTimelineHandler(e)\n\t{\n\t\te = e || window.event;\n\t\tif (this.shown && !this.readonly)\n\t\t{\n\t\t\tif (Browser.isMac())\n\t\t\t{\n\t\t\t\tthis.checkTimelineScroll();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst delta = e.deltaY || e.detail || e.wheelDelta;\n\t\t\t\tif (Math.abs(delta) > 0)\n\t\t\t\t{\n\t\t\t\t\tthis.DOM.timelineFixedWrap.scrollLeft = Math.max(\n\t\t\t\t\t\tthis.DOM.timelineFixedWrap.scrollLeft + Math.round(delta / 3),\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\t\t\t\t\tthis.checkTimelineScroll();\n\t\t\t\t\treturn BX.PreventDefault(e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckTimelineScroll()\n\t{\n\t\tconst minScroll = this.scrollStep;\n\t\tconst maxScroll = this.DOM.timelineFixedWrap.scrollWidth\n\t\t\t\t\t\t\t- this.DOM.timelineFixedWrap.offsetWidth\n\t\t\t\t\t\t\t- this.scrollStep;\n\n\t\t// Check and expand only if it is visible\n\t\tif (this.DOM.timelineFixedWrap.offsetWidth > 0)\n\t\t{\n\t\t\tif (this.DOM.timelineFixedWrap.scrollLeft <= minScroll)\n\t\t\t{\n\t\t\t\tthis.expandTimelineDirection = 'past';\n\t\t\t}\n\t\t\telse if (this.DOM.timelineFixedWrap.scrollLeft >= maxScroll)\n\t\t\t{\n\t\t\t\tthis.expandTimelineDirection = 'future';\n\t\t\t}\n\n\t\t\tif (this.expandTimelineDirection)\n\t\t\t{\n\t\t\t\tif (!this.isLoaderShown())\n\t\t\t\t{\n\t\t\t\t\tthis.showLoader();\n\t\t\t\t}\n\t\t\t\tthis.expandTimelineDebounce();\n\t\t\t}\n\t\t}\n\t}\n\n\tstartScrollTimeline()\n\t{\n\t\tthis.timelineIsDraged = true;\n\t\tthis.timelineStartScrollLeft = this.DOM.timelineFixedWrap.scrollLeft;\n\t}\n\tscrollTimeline(x)\n\t{\n\t\tthis.DOM.timelineFixedWrap.scrollLeft = Math.max(this.timelineStartScrollLeft - x, 0);\n\t}\n\tendScrollTimeline()\n\t{\n\t\tthis.timelineIsDraged = false;\n\t}\n\n\tfindTarget(node, nodeMetaType, parentCont)\n\t{\n\t\tif (!parentCont)\n\t\t\tparentCont = this.DOM.mainWrap;\n\n\t\tlet type = (node && node.getAttribute) ? node.getAttribute('data-bx-planner-meta') : null;\n\n\t\tif (type !== nodeMetaType)\n\t\t{\n\t\t\tif (node)\n\t\t\t{\n\t\t\t\tnode = BX.findParent(node, function(n)\n\t\t\t\t{\n\t\t\t\t\treturn n.getAttribute && n.getAttribute('data-bx-planner-meta') === nodeMetaType;\n\t\t\t\t}, parentCont);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnode = null;\n\t\t\t}\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tgetMousePos(e)\n\t{\n\t\tif (!e)\n\t\t\te = window.event;\n\n\t\tlet x = 0, y = 0;\n\t\tif (e.pageX || e.pageY)\n\t\t{\n\t\t\tx = e.pageX;\n\t\t\ty = e.pageY;\n\t\t}\n\t\telse if (e.clientX || e.clientY)\n\t\t{\n\t\t\tx = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;\n\t\t\ty = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t}\n\n\tsetScaleType(scaleType)\n\t{\n\t\tif (!this.scaleTypes.includes(scaleType))\n\t\t{\n\t\t\tscaleType = '1hour';\n\t\t}\n\n\t\tthis.scaleType = scaleType;\n\t\tthis.scaleSize = Planner.getScaleSize(scaleType);\n\n\t\tif (this.isOneDayScale() && this.timelineCellWidth < 100)\n\t\t{\n\t\t\tthis.timelineCellWidthOrig = this.timelineCellWidth;\n\t\t\tthis.timelineCellWidth = 100;\n\t\t}\n\t\telse if (!this.isOneDayScale() && this.timelineCellWidthOrig)\n\t\t{\n\t\t\tthis.timelineCellWidth = this.timelineCellWidthOrig;\n\t\t\tthis.timelineCellWidthOrig = false;\n\t\t}\n\n\t\tif (this.isOneDayScale())\n\t\t{\n\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-fulldaymode');\n\t\t\tif (this.DOM.entriesOuterWrap)\n\t\t\t{\n\t\t\t\tDom.addClass(this.DOM.entriesOuterWrap, 'calendar-planner-no-daytitle');\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.removeClass(this.DOM.mainWrap, 'calendar-planner-fulldaymode');\n\t\t\tif (this.DOM.entriesOuterWrap)\n\t\t\t{\n\t\t\t\tDom.removeClass(this.DOM.entriesOuterWrap, 'calendar-planner-no-daytitle');\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic getScaleSize(scaleType)\n\t{\n\t\tlet\n\t\t\thour = 3600,\n\t\t\tmap = {\n\t\t\t\t'15min' : Math.round(hour / 4),\n\t\t\t\t'30min' : Math.round(hour / 2),\n\t\t\t\t'1hour' : hour,\n\t\t\t\t'2hour' : hour * 2,\n\t\t\t\t'1day' : hour * 24\n\t\t\t};\n\n\t\treturn map[scaleType] || hour;\n\t}\n\n\tmapDatePos(accuracy)\n\t{\n\t\tif (!accuracy)\n\t\t{\n\t\t\taccuracy = this.accuracy;\n\t\t}\n\n\t\tlet datePosMap = {};\n\t\tlet posDateMap = {};\n\t\tlet i, j, tsi, xi, tsj, xj, cellWidth;\n\n\t\tthis.substeps = Math.round(this.scaleSize / accuracy);\n\t\tthis.posAccuracy = this.timelineCellWidth / this.substeps;\n\n\t\taccuracy = accuracy * 1000;\n\t\tlet scaleSize = this.scaleData[1].timestamp - this.scaleData[0].timestamp;\n\n\t\tfor (i = 0; i < this.scaleData.length; i++)\n\t\t{\n\t\t\ttsi = this.scaleData[i].timestamp;\n\t\t\txi = parseInt(this.scaleData[i].cell.offsetLeft);\n\t\t\tcellWidth = parseInt(this.scaleData[i].cell.offsetWidth);\n\n\t\t\tif (!datePosMap[tsi])\n\t\t\t{\n\t\t\t\tdatePosMap[tsi] = xi;\n\t\t\t}\n\t\t\tposDateMap[xi] = tsi;\n\n\t\t\tfor (j = 1; j <= cellWidth; j++)\n\t\t\t{\n\t\t\t\ttsj = tsi + Math.round((j * scaleSize / cellWidth) / accuracy) * accuracy;\n\t\t\t\txj = xi + j;\n\t\t\t\tif (!datePosMap[tsi])\n\t\t\t\t{\n\t\t\t\t\tdatePosMap[tsj] = xj;\n\t\t\t\t}\n\t\t\t\tposDateMap[xj] = tsj;\n\n\t\t\t\tif (j === cellWidth &&\n\t\t\t\t\t(!this.scaleData[i + 1] || this.scaleData[i + 1].dayStart))\n\t\t\t\t{\n\t\t\t\t\tdatePosMap[xj + '_end'] = tsj;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tdatePosMap: datePosMap,\n\t\t\tposDateMap: posDateMap\n\t\t}\n\t}\n\n\tgetPosByDate(date)\n\t{\n\t\tlet x = 0;\n\t\tif (date && typeof date !== 'object')\n\t\t{\n\t\t\tdate = Util.parseDate(date);\n\t\t}\n\n\t\tif (date && typeof date === 'object')\n\t\t{\n\t\t\tlet curInd = 0;\n\t\t\tconst timestamp = date.getTime();\n\n\t\t\tfor (let i = 0; i < this.scaleData.length; i++)\n\t\t\t{\n\t\t\t\tif (timestamp >= this.scaleData[i].timestamp)\n\t\t\t\t{\n\t\t\t\t\tcurInd = i;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.scaleData[curInd] && this.scaleData[curInd].cell)\n\t\t\t{\n\t\t\t\tx = this.scaleData[curInd].cell.offsetLeft;\n\t\t\t\tconst cellWidth = this.scaleData[curInd].cell.offsetWidth;\n\t\t\t\tconst deltaTs = Math.round((timestamp - this.scaleData[curInd].timestamp) / 1000);\n\n\t\t\t\tif (deltaTs > 0)\n\t\t\t\t{\n\t\t\t\t\tx += Math.round(deltaTs * 10 / this.scaleSize * cellWidth) / 10;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn x;\n\t}\n\n\tgetDateByPos(x, end, posDateMap)\n\t{\n\t\tif (!posDateMap)\n\t\t{\n\t\t\tposDateMap = this.posDateMap;\n\t\t}\n\t\tlet\n\t\t\tdate,\n\t\t\ttimestamp = (end && posDateMap[x + '_end']) ? posDateMap[x + '_end'] : posDateMap[x];\n\n\t\tif (!timestamp)\n\t\t{\n\t\t\tx = Math.round(x);\n\t\t\ttimestamp = (end && posDateMap[x + '_end']) ? posDateMap[x + '_end'] : posDateMap[x];\n\t\t}\n\n\t\tif (timestamp)\n\t\t{\n\t\t\tdate = new Date(timestamp);\n\t\t}\n\n\t\treturn date;\n\t}\n\n\tshowMoreUsers()\n\t{\n\t\tthis.MIN_ENTRY_ROWS = this.MAX_ENTRY_ROWS;\n\t\tthis.update(this.entries, this.accessibility);\n\t\tthis.rebuildDebounce();\n\t}\n\n\tadjustHeight()\n\t{\n\t\tlet\n\t\t\tnewHeight = this.DOM.entrieListWrap.offsetHeight + this.DOM.entrieListWrap.offsetTop + 30,\n\t\t\tcurrentHeight = parseInt(this.DOM.wrap.style.height) || this.height;\n\n\t\tif (this.compactMode && currentHeight < newHeight || !this.compactMode)\n\t\t{\n\t\t\tthis.DOM.wrap.style.height = currentHeight + 'px';\n\t\t\tthis.resizePlannerHeight(newHeight, Math.abs(newHeight - currentHeight) > 10);\n\t\t}\n\t}\n\n\tresizePlannerHeight(height, animation = false)\n\t{\n\t\tthis.height = height;\n\t\tif (animation)\n\t\t{\n\t\t\t// Stop animation before starting another one\n\t\t\tif(this.resizeAnimation)\n\t\t\t{\n\t\t\t\tthis.resizeAnimation.stop();\n\t\t\t\tthis.resizeAnimation = null;\n\t\t\t}\n\t\t\tthis.resizeAnimation = new BX.easing({\n\t\t\t\tduration: 800,\n\t\t\t\tstart: {height: parseInt(this.DOM.wrap.style.height)},\n\t\t\t\tfinish: {height: height},\n\t\t\t\ttransition: BX.easing.makeEaseOut(BX.easing.transitions.quart),\n\t\t\t\tstep: (state) => {\n\t\t\t\t\tthis.resizePlannerHeight(state.height, false);\n\t\t\t\t},\n\t\t\t\tcomplete: () => {this.resizeAnimation = null;}\n\t\t\t});\n\t\t\tthis.resizeAnimation.animate();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.DOM.wrap.style.height = height + 'px';\n\t\t\tthis.DOM.mainWrap.style.height = height + 'px';\n\t\t\tthis.DOM.timelineFixedWrap.style.height = height + 'px';\n\t\t\tlet timelineDataContHeight = this.DOM.entrieListWrap.offsetHeight + 3;\n\t\t\tthis.DOM.timelineDataWrap.style.height = timelineDataContHeight + 'px';\n\t\t\t// Todo: resize selector\n\t\t\t//this.selector.wrap.style.height = (timelineDataContHeight + 10) + 'px';\n\t\t\tthis.DOM.entriesOuterWrap.style.height = height + 'px';\n\n\t\t\tif (this.DOM.proposeTimeButton && this.DOM.proposeTimeButton.style.display !== \"none\")\n\t\t\t{\n\t\t\t\tthis.DOM.proposeTimeButton.style.top = (this.DOM.timelineDataWrap.offsetTop + timelineDataContHeight / 2 - 16) + \"px\";\n\t\t\t}\n\t\t}\n\t}\n\n\tresizePlannerWidth(width, animation)\n\t{\n\t\tif (!animation && this.DOM.wrap && this.DOM.mainWrap)\n\t\t{\n\t\t\tthis.DOM.wrap.style.width = width + 'px';\n\t\t\tlet entriesListWidth = this.compactMode ? 0 : this.entriesListWidth;\n\t\t\tthis.DOM.mainWrap.style.width = width + 'px';\n\t\t\tthis.DOM.entriesOuterWrap.style.width = entriesListWidth + 'px';\n\t\t}\n\t}\n\n\texpandTimeline(scaleDateFrom, scaleDateTo)\n\t{\n\t\tlet loadedTimelineSize;\n\t\tlet scrollLeft;\n\t\tconst prevScaleDateFrom = this.scaleDateFrom;\n\t\tconst prevScaleDateTo = this.scaleDateTo;\n\n\t\tif (!scaleDateFrom)\n\t\t\tscaleDateFrom = this.scaleDateFrom;\n\t\tif (!scaleDateTo)\n\t\t\tscaleDateTo = this.scaleDateTo;\n\n\t\tif (this.expandTimelineDirection === 'past')\n\t\t{\n\t\t\tlet oldScaleDateFrom = new Date(this.scaleDateFrom.getTime());\n\t\t\tthis.scaleDateFrom = new Date(scaleDateFrom.getTime() - Util.getDayLength() * this.EXPAND_OFFSET);\n\n\t\t\tloadedTimelineSize = (this.scaleDateTo.getTime() - this.scaleDateFrom.getTime()) / Util.getDayLength();\n\t\t\tif (loadedTimelineSize > this.maxTimelineSize)\n\t\t\t{\n\t\t\t\tthis.scaleDateTo = new Date(this.scaleDateFrom.getTime() + Util.getDayLength() * this.maxTimelineSize);\n\t\t\t\tthis.loadedDataFrom = this.scaleDateFrom;\n\t\t\t\tthis.loadedDataTo = this.scaleDateTo;\n\t\t\t\tthis.limitScaleSizeMode = true;\n\t\t\t}\n\t\t\tscrollLeft = this.getPosByDate(oldScaleDateFrom);\n\t\t}\n\t\telse if (this.expandTimelineDirection === 'future')\n\t\t{\n\t\t\tlet oldDateTo = this.scaleDateTo;\n\t\t\tscrollLeft = this.DOM.timelineFixedWrap.scrollLeft;\n\t\t\tthis.scaleDateTo = new Date(scaleDateTo.getTime() + Util.getDayLength() * this.EXPAND_OFFSET);\n\t\t\tloadedTimelineSize = (this.scaleDateTo.getTime() - this.scaleDateFrom.getTime()) / Util.getDayLength();\n\n\t\t\tif (loadedTimelineSize > this.maxTimelineSize)\n\t\t\t{\n\t\t\t\tthis.scaleDateFrom = new Date(this.scaleDateTo.getTime() - Util.getDayLength() * this.maxTimelineSize);\n\t\t\t\tthis.loadedDataFrom = this.scaleDateFrom;\n\t\t\t\tthis.loadedDataTo = this.scaleDateTo;\n\n\t\t\t\tscrollLeft = this.getPosByDate(oldDateTo) - this.DOM.timelineFixedWrap.offsetWidth;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.DOM.timelineFixedWrap.scrollLeft = this.getPosByDate(oldDateTo) - this.DOM.timelineFixedWrap.offsetWidth;\n\t\t\t\t}, 10);\n\n\t\t\t\tthis.limitScaleSizeMode = true;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.scaleDateFrom = new Date(scaleDateFrom.getTime() - Util.getDayLength() * this.SCALE_OFFSET_BEFORE);\n\t\t\tthis.scaleDateTo = new Date(scaleDateTo.getTime() + Util.getDayLength() * this.SCALE_OFFSET_AFTER);\n\t\t}\n\n\t\tconst reloadData = this.scaleDateFrom.getTime() < prevScaleDateFrom.getTime()\n\t\t|| this.scaleDateTo.getTime() > prevScaleDateTo.getTime();\n\n\t\tthis.hideLoader();\n\t\tthis.emit('onExpandTimeline', new BaseEvent({\n\t\t\tdata: {\n\t\t\t\treload: reloadData,\n\t\t\t\tdateFrom: this.scaleDateFrom,\n\t\t\t\tdateTo: this.scaleDateTo\n\t\t\t} }));\n\n\t\tthis.rebuild({\n\t\t\tupdateSelector: false\n\t\t});\n\n\t\tif (scrollLeft !== undefined)\n\t\t{\n\t\t\tthis.DOM.timelineFixedWrap.scrollLeft = scrollLeft;\n\t\t}\n\n\t\tthis.expandTimelineDirection = null;\n\t}\n\n\tupdate(entries = [], accessibility = {})\n\t{\n\t\tDom.clean(this.DOM.entrieListWrap);\n\t\tDom.clean(this.DOM.accessibilityWrap);\n\t\tthis.entriesDataRowMap = new Map();\n\n\t\tif (!Type.isArray(entries))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.entries = entries;\n\t\tthis.accessibility = accessibility;\n\n\t\tconst userId = parseInt(this.userId);\n\n\t\t// sort entries list by amount of accessibility data\n\t\t// Entries without accessibility data should be in the end of the array\n\t\t// But first in the list will be meeting room\n\t\t// And second (or first) will be owner-host of the event\n\t\tentries.sort((a, b) => {\n\t\t\tif (b.status === 'h' || parseInt(b.id) === userId && a.status !== 'h')\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (a.status === 'h' || parseInt(a.id) === userId && b.status !== 'h')\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n\n\t\tif (this.selectedEntriesWrap)\n\t\t{\n\t\t\tDom.clean(this.selectedEntriesWrap);\n\t\t\tif (this.selector && this.selector.controlWrap)\n\t\t\t{\n\t\t\t\tDom.clean(this.selector.controlWrap);\n\t\t\t}\n\t\t}\n\n\t\tconst cutData = [];\n\t\tconst cutDataTitle = [];\n\t\tlet usersCount = 0;\n\t\tlet cutAmount = 0;\n\t\tlet dispDataCount = 0;\n\n\t\tentries.forEach((entry, ind) => {\n\t\t\tentry.uid = Planner.getEntryUniqueId(entry);\n\n\t\t\tlet accData = Type.isArray(accessibility[entry.uid]) ? accessibility[entry.uid] : [];\n\t\t\tthis.entriesIndex.set(entry.uid, entry);\n\n\t\t\tif (entry.type === 'user')\n\t\t\t{\n\t\t\t\tusersCount++;\n\t\t\t}\n\n\t\t\tif (ind < this.MIN_ENTRY_ROWS || entries.length === this.MIN_ENTRY_ROWS + 1)\n\t\t\t{\n\t\t\t\tdispDataCount++;\n\t\t\t\tthis.displayEntryRow(entry, accData);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcutAmount++;\n\t\t\t\tcutDataTitle.push(entry.name);\n\t\t\t\taccData.forEach((item) => {\n\t\t\t\t\titem = Planner.prepareAccessibilityItem(item);\n\t\t\t\t\tif (item)\n\t\t\t\t\t{\n\t\t\t\t\t\tcutData.push(item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// Update entries title count\n\t\tif (this.entriesListTitleCounter)\n\t\t{\n\t\t\tthis.entriesListTitleCounter.innerHTML = usersCount > this.MAX_ENTRY_ROWS ? '(' + usersCount + ')' : '';\n\t\t}\n\t\t\tthis.emit('onDisplayAttendees', new BaseEvent({\n\t\t\t\tdata: {\n\t\t\t\t\tusersCount: usersCount\n\t\t\t\t}\n\t\t\t}));\n\n\t\tif (cutAmount > 0)\n\t\t{\n\t\t\tif (dispDataCount === this.MAX_ENTRY_ROWS)\n\t\t\t{\n\t\t\t\tthis.displayEntryRow({\n\t\t\t\t\tname: Loc.getMessage('EC_PL_ATTENDEES_LAST') + ' (' + cutAmount + ')',\n\t\t\t\t\ttype: 'lastUsers',\n\t\t\t\t\ttitle: cutDataTitle.join(', ')\n\t\t\t\t}, cutData);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.displayEntryRow({\n\t\t\t\t\tname: Loc.getMessage('EC_PL_ATTENDEES_SHOW_MORE') + ' (' + cutAmount + ')',\n\t\t\t\t\ttype: 'moreLink'\n\t\t\t\t}, cutData);\n\t\t\t}\n\t\t}\n\n\t\tUtil.extendPlannerWatches({entries: entries, userId: this.userId});\n\n\t\tthis.adjustHeight();\n\t}\n\n\tupdateAccessibility(accessibility)\n\t{\n\t\tthis.accessibility = accessibility;\n\t\tif (Type.isPlainObject(accessibility))\n\t\t{\n\t\t\tlet key;\n\t\t\tfor (key in accessibility)\n\t\t\t{\n\t\t\t\tif (accessibility.hasOwnProperty(key)\n\t\t\t\t\t&& Type.isArray(accessibility[key])\n\t\t\t\t\t&& accessibility[key].length)\n\t\t\t\t{\n\t\t\t\t\tlet wrap = this.entriesDataRowMap.get(key);\n\t\t\t\t\tif (Type.isDomNode(wrap))\n\t\t\t\t\t{\n\t\t\t\t\t\taccessibility[key].forEach((event) => {\n\t\t\t\t\t\t\tevent = Planner.prepareAccessibilityItem(event);\n\t\t\t\t\t\t\tif (event)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tthis.addAccessibilityItem(event, wrap)\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\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateSelector(from, to, fullDay, options = {})\n\t{\n\t\tif (this.shown && this.selector)\n\t\t{\n\t\t\tthis.setFullDayMode(fullDay);\n\n\t\t\t// Update limits of scale\n\t\t\tif (!this.isOneDayScale())\n\t\t\t{\n\t\t\t\tif (Util.formatDate(from) !== Util.formatDate(to))\n\t\t\t\t{\n\t\t\t\t\tthis.extendScaleTime(0, 24);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet\n\t\t\t\t\t\ttimeFrom = parseInt(from.getHours()) + Math.floor(from.getMinutes() / 60),\n\t\t\t\t\t\ttimeTo = parseInt(to.getHours()) + Math.ceil(to.getMinutes() / 60);\n\n\t\t\t\t\tif (timeFrom < this.shownScaleTimeFrom)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.extendScaleTime(timeFrom, false);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (timeTo > this.shownScaleTimeTo)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.extendScaleTime(false, timeTo);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ((to.getTime() > this.scaleDateTo.getTime())\n\t\t\t\t||\n\t\t\t\tfrom.getTime() < this.scaleDateFrom.getTime())\n\t\t\t{\n\t\t\t\tthis.expandTimelineDirection = false;\n\t\t\t\tthis.expandTimeline(from, to);\n\t\t\t}\n\n\t\t\tthis.selector.update({\n\t\t\t\tfrom: from,\n\t\t\t\tto: to,\n\t\t\t\tfullDay: fullDay,\n\t\t\t\tfocus: options.focus !== false\n\t\t\t});\n\n\t\t\tif (options.focus !== false)\n\t\t\t{\n\t\t\t\tthis.selector.focus(false, 300);\n\t\t\t}\n\t\t}\n\t}\n\n\thandleSelectorChanges(event)\n\t{\n\t\tif (event instanceof BaseEvent)\n\t\t{\n\t\t\tlet data = event.getData();\n\t\t\tthis.emit('onDateChange', new BaseEvent({data: data}));\n\t\t}\n\t}\n\n\tdoCheckSelectorStatus(event)\n\t{\n\t\tif (event instanceof BaseEvent)\n\t\t{\n\t\t\tconst data = event.getData();\n\t\t\tthis.clearCacheTime();\n\t\t\tconst selectorStatus = this.checkTimePeriod(data.dateFrom, data.dateTo) === true;\n\t\t\tthis.selector.setSelectorStatus(selectorStatus);\n\t\t\tif (selectorStatus)\n\t\t\t{\n\t\t\t\tDom.removeClass(this.DOM.mainWrap, 'calendar-planner-selector-warning');\n\t\t\t\tthis.hideProposeControl();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.addClass(this.DOM.mainWrap, 'calendar-planner-selector-warning');\n\t\t\t\tthis.showProposeControl();\n\t\t\t}\n\t\t}\n\t}\n\n\tproposeTime(params = {})\n\t{\n\t\tif (!Type.isPlainObject(params))\n\t\t{\n\t\t\tparams = {};\n\t\t}\n\n\t\tlet\n\t\t\tcurTimestamp = Math.round(this.selector.getDateFrom().getTime() / (this.accuracy * 1000)) * this.accuracy * 1000,\n\t\t\tcurDate = new Date(curTimestamp),\n\t\t\tduration = this.selector.getDuration(),\n\t\t\tdata = [], k, i;\n\n\t\tcurDate.setSeconds(0,0);\n\t\tcurTimestamp = curDate.getTime();\n\n\t\tfor (k in this.accessibility)\n\t\t{\n\t\t\tif (this.accessibility.hasOwnProperty(k) && this.accessibility[k] && this.accessibility[k].length > 0)\n\t\t\t{\n\t\t\t\tfor (i = 0; i < this.accessibility[k].length; i++)\n\t\t\t\t{\n\t\t\t\t\tif (this.accessibility[k][i].toTimestampReal >= curTimestamp)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet item = Planner.prepareAccessibilityItem(this.accessibility[k][i]);\n\t\t\t\t\t\tif (item)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdata.push(item);\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\tdata.sort(function(a, b){return a.fromTimestamp - b.fromTimestamp});\n\n\t\tlet\n\t\t\tts = curTimestamp,\n\t\t\tcheckRes,\n\t\t\tdateFrom, dateTo, timeTo, timeFrom;\n\n\t\twhile (true)\n\t\t{\n\t\t\tdateFrom = new Date(ts);\n\t\t\tdateTo = new Date(ts + duration);\n\n\t\t\tif (!this.isOneDayScale())\n\t\t\t{\n\t\t\t\ttimeFrom = parseInt(dateFrom.getHours()) + dateFrom.getMinutes() / 60;\n\t\t\t\ttimeTo = parseInt(dateTo.getHours()) + dateTo.getMinutes() / 60;\n\n\t\t\t\tif (timeFrom <= this.shownScaleTimeFrom)\n\t\t\t\t{\n\t\t\t\t\tdateFrom.setHours(this.shownScaleTimeFrom, 0, 0, 0);\n\t\t\t\t\tts = dateFrom.getTime();\n\t\t\t\t\tdateTo = new Date(ts + duration);\n\t\t\t\t}\n\n\t\t\t\tif (timeTo > this.shownScaleTimeTo)\n\t\t\t\t{\n\t\t\t\t\tdateFrom = new Date(ts + Util.getDayLength() - 1000); // next day\n\t\t\t\t\tdateFrom.setHours(this.shownScaleTimeFrom, 0, 0, 0);\n\t\t\t\t\tts = dateFrom.getTime();\n\t\t\t\t\tdateTo = new Date(ts + duration);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.fullDayMode)\n\t\t\t{\n\t\t\t\tdateFrom.setHours(0, 0, 0, 0);\n\t\t\t\tdateTo.setHours(0, 0, 0, 0);\n\t\t\t}\n\n\t\t\tcheckRes = this.checkTimePeriod(dateFrom, dateTo, data);\n\n\t\t\tif (checkRes === true)\n\t\t\t{\n\t\t\t\tif (dateTo.getTime() > this.scaleDateTo.getTime())\n\t\t\t\t{\n\t\t\t\t\tif ((dateTo.getTime() - this.scaleDateTo.getTime()) > this.proposeTimeLimit * Util.getDayLength()\n\t\t\t\t\t\t||\n\t\t\t\t\t\tparams.checkedFuture === true)\n\t\t\t\t\t{\n\t\t\t\t\t\tPlanner.showNoResultNotification();\n\t\t\t\t\t}\n\t\t\t\t\telse if (params.checkedFuture !== true)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet scrollLeft = this.DOM.timelineFixedWrap.scrollLeft;\n\t\t\t\t\t\tthis.scaleDateTo = new Date(this.scaleDateTo.getTime() + Util.getDayLength() * this.proposeTimeLimit);\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t\t\tthis.DOM.timelineFixedWrap.scrollLeft = scrollLeft;\n\n\t\t\t\t\t\tlet\n\t\t\t\t\t\t\tentry,\n\t\t\t\t\t\t\tentrieIds = [];\n\t\t\t\t\t\tfor (i = 0; i < this.entries.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tentry = this.entries[i];\n\t\t\t\t\t\t\tentrieIds.push(entry.id);\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\tif (this.fullDayMode)\n\t\t\t\t\t\tdateTo = new Date(dateTo.getTime() - Util.getDayLength());\n\n\t\t\t\t\tthis.selector.update({\n\t\t\t\t\t\tfrom: dateFrom,\n\t\t\t\t\t\tto:dateTo,\n\t\t\t\t\t\tupdateScaleType:false,\n\t\t\t\t\t\tupdateScaleLimits:true,\n\t\t\t\t\t\tanimation: true,\n\t\t\t\t\t\tfocus: true\n\t\t\t\t\t});\n\n\t\t\t\t\tthis.emit('onDateChange', new BaseEvent({data: {\n\t\t\t\t\t\tdateFrom: dateFrom,\n\t\t\t\t\t\tdateTo: dateTo,\n\t\t\t\t\t\tfullDay: this.fullDayMode\n\t\t\t\t\t}}));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (checkRes && checkRes.toTimestampReal)\n\t\t\t{\n\t\t\t\tts = checkRes.toTimestampReal;\n\t\t\t\tif (this.fullDayMode)\n\t\t\t\t{\n\t\t\t\t\tlet dt = new Date(ts + Util.getDayLength() - 1000); // next day\n\t\t\t\t\tdt.setHours(0, 0, 0, 0);\n\t\t\t\t\tts = dt.getTime();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckTimePeriod(fromDate, toDate, data)\n\t{\n\t\tlet result = true;\n\t\tlet entry;\n\n\t\tif (!Type.isDate(fromDate) || !Type.isDate(toDate))\n\t\t{\n\t\t\treturn result;\n\t\t}\n\n\t\tlet fromTimestamp = fromDate.getTime();\n\t\tlet toTimestamp = toDate.getTime();\n\t\tconst cacheKey = fromTimestamp + '_' + toTimestamp;\n\t\tconst accuracy = 3 * 60 * 1000; // 3min\n\n\t\tif (Type.isArray(data))\n\t\t{\n\t\t\tfor (let i = 0; i < data.length; i++)\n\t\t\t{\n\t\t\t\tlet item = data[i];\n\t\t\t\tif (item.type && item.type === 'hr')\n\t\t\t\t{\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif ((item.fromTimestamp + accuracy) <= toTimestamp && ((item.toTimestampReal || item.toTimestamp) - accuracy) >= fromTimestamp)\n\t\t\t\t{\n\t\t\t\t\tresult = item;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (Type.isArray(this.entries))\n\t\t{\n\t\t\tlet\n\t\t\t\tentriesAccessibleIndex = {},\n\t\t\t\tselectorAccuracy = this.selectorAccuracy * 1000,\n\t\t\t\tentryId;\n\n\t\t\tif (this.checkTimeCache[cacheKey] !== undefined)\n\t\t\t{\n\t\t\t\tresult = this.checkTimeCache[cacheKey];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (entryId in this.accessibility)\n\t\t\t\t{\n\t\t\t\t\tif (this.accessibility.hasOwnProperty(entryId))\n\t\t\t\t\t{\n\t\t\t\t\t\tentry = this.entries.find(function(el){return el.id === entryId.toString();});\n\n\t\t\t\t\t\tif (!entry || this.selectMode && !entry.selected)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tentriesAccessibleIndex[entryId] = true;\n\t\t\t\t\t\tif (Type.isArray(this.accessibility[entryId]))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (let i = 0; i < this.accessibility[entryId].length; i++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlet item = this.accessibility[entryId][i];\n\t\t\t\t\t\t\t\tif (item.type && item.type === 'hr')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif ((item.fromTimestamp + selectorAccuracy) <= toTimestamp && ((item.toTimestampReal || item.toTimestamp) - selectorAccuracy) >= fromTimestamp)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tentriesAccessibleIndex[entryId] = false;\n\t\t\t\t\t\t\t\t\tresult = item;\n\t\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\tthis.checkTimeCache[cacheKey] = result;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tclearCacheTime()\n\t{\n\t\tthis.checkTimeCache = {};\n\t}\n\n\tcheckEntryTimePeriod(entry, fromDate, toDate)\n\t{\n\t\tlet data = [], i;\n\t\tif (entry && entry.id && BX.type.isArray(this.accessibility[entry.id]))\n\t\t{\n\t\t\tfor (i = 0; i < this.accessibility[entry.id].length; i++)\n\t\t\t{\n\t\t\t\tlet item = Planner.prepareAccessibilityItem(this.accessibility[entry.id][i]);\n\t\t\t\tif (item)\n\t\t\t\t{\n\t\t\t\t\tdata.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.checkTimePeriod(fromDate, toDate, data) === true;\n\t}\n\n\tshowSettingsPopup()\n\t{\n\t\tlet\tsettingsDialogCont = Tag.render`<div class=\"calendar-planner-settings-popup\"></div>`;\n\t\tlet scaleRow = settingsDialogCont.appendChild(Tag.render`\n\t\t\t<div class=\"calendar-planner-settings-row\">\n\t\t\t\t<i>${Loc.getMessage('EC_PL_SETTINGS_SCALE')}:</i>\n\t\t\t</div>\n\t\t`);\n\t\tlet scaleWrap = scaleRow.appendChild(Tag.render`\n\t\t\t<span class=\"calendar-planner-option-container\"></span>\n\t\t`);\n\n\n\t\tif (this.fullDayMode)\n\t\t{\n\t\t\tscaleRow.title = Loc.getMessage('EC_PL_SETTINGS_SCALE_READONLY_TITLE');\n\t\t\tDom.addClass(scaleRow, 'calendar-planner-option-container-disabled');\n\t\t}\n\n\t\tthis.scaleTypes.forEach((scale)=>{\n\t\t\tscaleWrap.appendChild(Tag.render`<span class=\"calendar-planner-option-tab ${(scale === this.scaleType ? ' calendar-planner-option-tab-active' : '')}\" data-bx-planner-scale=\"${scale}\">${Loc.getMessage('EC_PL_SETTINGS_SCALE_' + scale.toUpperCase())}</span>`);\n\t\t});\n\n\n\t\t// Create and show settings popup\n\t\tlet popup = PopupWindowManager.create(\n\t\t\tthis.id + \"-settings-popup\",\n\t\t\tthis.DOM.settingsButton,\n\t\t\t{\n\t\t\t\tautoHide: true,\n\t\t\t\tcloseByEsc: true,\n\t\t\t\toffsetTop: -1,\n\t\t\t\toffsetLeft: 7,\n\t\t\t\tlightShadow: true,\n\t\t\t\tcontent: settingsDialogCont,\n\t\t\t\tzIndex: 4000,\n\t\t\t\tangle: {postion: 'top'},\n\t\t\t\tcacheable: false\n\t\t\t});\n\t\tpopup.show(true);\n\n\t\tEvent.bind(scaleWrap, 'click', (e) => {\n\t\t\tif (!this.fullDayMode)\n\t\t\t{\n\t\t\t\tlet\n\t\t\t\t\tnodeTarget = e.target || e.srcElement,\n\t\t\t\t\tscale = nodeTarget && nodeTarget.getAttribute && nodeTarget.getAttribute('data-bx-planner-scale');\n\n\t\t\t\tif (scale)\n\t\t\t\t{\n\t\t\t\t\tthis.changeScaleType(scale);\n\t\t\t\t\tpopup.close();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tchangeScaleType(scaleType)\n\t{\n\t\tif (scaleType !== this.scaleType)\n\t\t{\n\t\t\tthis.setScaleType(scaleType);\n\t\t\tthis.rebuild();\n\t\t\tthis.selector.focus(true, 300);\n\t\t}\n\t}\n\n\tsetFullDayMode(fullDayMode)\n\t{\n\t\tif (fullDayMode !== this.fullDayMode)\n\t\t{\n\t\t\tthis.fullDayMode = fullDayMode;\n\t\t\tif (fullDayMode && !this.isOneDayScale())\n\t\t\t{\n\t\t\t\tthis.savedScaleType = this.scaleType;\n\t\t\t\tthis.changeScaleType('1day');\n\t\t\t}\n\t\t\telse if (!fullDayMode && this.isOneDayScale() && this.savedScaleType)\n\t\t\t{\n\t\t\t\tthis.changeScaleType(this.savedScaleType);\n\t\t\t\tthis.savedScaleType = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tstatic showNoResultNotification()\n\t{\n\t\talert(Loc.getMessage('EC_PL_PROPOSE_NO_RESULT'));\n\t}\n\n\tshowProposeControl()\n\t{\n\t\tif (!this.DOM.proposeTimeButton)\n\t\t{\n\t\t\tthis.DOM.proposeTimeButton = this.DOM.mainWrap.appendChild(Tag.render`\n\t\t\t\t<div class=\"calendar-planner-time-arrow-right\">\n\t\t\t\t\t<span class=\"calendar-planner-time-arrow-right-text\">\n\t\t\t\t\t\t${Loc.getMessage('EC_PL_PROPOSE')}\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"calendar-planner-time-arrow-right-item\"></span>\n\t\t\t\t</div>\n\t\t\t`);\n\t\t\tEvent.bind(this.DOM.proposeTimeButton, 'click', this.proposeTime.bind(this));\n\t\t}\n\t\tthis.DOM.proposeTimeButton.style.display = \"block\";\n\t\tthis.DOM.proposeTimeButton.style.top = (this.DOM.timelineDataWrap.offsetTop + this.DOM.timelineDataWrap.offsetHeight / 2 - 16) + \"px\";\n\t}\n\n\thideProposeControl()\n\t{\n\t\tif (this.DOM.proposeTimeButton)\n\t\t{\n\t\t\tthis.DOM.proposeTimeButton.style.display = \"none\";\n\t\t}\n\t}\n\n\tmouseMoveHandler(e)\n\t{\n\t\tlet\n\t\t\ti, nodes,\n\t\t\tentryUid, parentTarget,\n\t\t\tprevEntry,\n\t\t\tmainContWrap = this.DOM.mainWrap,\n\t\t\ttarget = e.target || e.srcElement;\n\n\t\tentryUid = target.getAttribute('data-bx-planner-entry');\n\t\tif (!entryUid)\n\t\t{\n\t\t\tparentTarget = BX.findParent(target,\n\t\t\t\tfunction(node)\n\t\t\t\t{\n\t\t\t\t\tif (node == mainContWrap ||\n\t\t\t\t\t\tnode.getAttribute && node.getAttribute('data-bx-planner-entry')\n\t\t\t\t\t)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmainContWrap\n\t\t\t);\n\n\t\t\tif (parentTarget)\n\t\t\t{\n\t\t\t\tentryUid = target.getAttribute('data-bx-planner-entry')\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tDom.removeClass(this.hoverRow, 'show');\n\t\t\t\tnodes = this.selector.controlWrap.querySelectorAll('.calendar-planner-selector-control-row.hover');\n\t\t\t\tfor (i = 0; i < nodes.length; i++)\n\t\t\t\t{\n\t\t\t\t\tDom.removeClass(nodes[i], 'hover');\n\t\t\t\t}\n\t\t\t\tprevEntry = this.getEntryByUniqueId(this.howerEntryId);\n\t\t\t\tif (prevEntry && prevEntry.selectWrap)\n\t\t\t\t{\n\t\t\t\t\tprevEntry.selectWrap.style.opacity = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (entryUid)\n\t\t{\n\t\t\tif (this.howerEntryId !== entryUid)\n\t\t\t{\n\t\t\t\tthis.howerEntryId = entryUid;\n\t\t\t\tlet entry = this.getEntryByUniqueId(entryUid);\n\t\t\t\tif (entry)\n\t\t\t\t{\n\t\t\t\t\tlet top = parseInt(entry.dataRowWrap.offsetTop);\n\t\t\t\t\tDom.addClass(this.hoverRow, 'show');\n\t\t\t\t\tthis.hoverRow.style.top = (top + 36) + 'px';\n\t\t\t\t\tthis.hoverRow.style.width = (parseInt(this.DOM.mainWrap.offsetWidth) + 5) + 'px';\n\n\t\t\t\t\tif (entry.selectorControlWrap)\n\t\t\t\t\t{\n\t\t\t\t\t\tnodes = this.selector.controlWrap.querySelectorAll('.calendar-planner-selector-control-row.hover');\n\t\t\t\t\t\tfor (i = 0; i < nodes.length; i++)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tDom.removeClass(nodes[i], 'hover');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tDom.addClass(entry.selectorControlWrap, 'hover');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tshowLoader()\n\t{\n\t\tthis.hideLoader();\n\t\tthis.DOM.loader = this.DOM.mainWrap.appendChild(Util.getLoader(40));\n\t\tDom.addClass(this.DOM.loader, 'calendar-planner-main-loader');\n\t\tthis.loaderShown = true;\n\t}\n\n\thideLoader()\n\t{\n\t\tif(Type.isDomNode(this.DOM.loader))\n\t\t{\n\t\t\tDom.remove(this.DOM.loader);\n\t\t}\n\t\tthis.loaderShown = false;\n\t}\n\n\tisLoaderShown()\n\t{\n\t\treturn this.loaderShown;\n\t}\n\n\tisShown()\n\t{\n\t\treturn this.shown;\n\t}\n\n\tisBuilt()\n\t{\n\t\treturn this.built;\n\t}\n\n\tisLocked()\n\t{\n\t\treturn this.locked;\n\t}\n\n\tlock()\n\t{\n\t\tif (!this.DOM.lockScreen)\n\t\t{\n\t\t\tthis.DOM.lockScreen = Tag.render`\n\t\t\t\t<div class=\"calendar-planner-timeline-locker\">\n\t\t\t\t\t<div class=\"calendar-planner-timeline-locker-container\">\n\t\t\t\t\t\t<div class=\"calendar-planner-timeline-locker-top\">\n\t\t\t\t\t\t\t<div class=\"calendar-planner-timeline-locker-icon\"></div>\n\t\t\t\t\t\t\t<div class=\"calendar-planner-timeline-text\">${Loc.getMessage('EC_PL_LOCKED_TITLE')}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"calendar-planner-timeline-locker-button\">\n\t\t\t\t\t\t\t<a href=\"javascript:void(0)\" onclick=\"top.BX.UI.InfoHelper.show('limit_crm_calender_planner');\" class=\"ui-btn ui-btn-sm ui-btn-light-border ui-btn-round\">${Loc.getMessage('EC_PL_UNLOCK_FEATURE')}</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t\t}\n\n\t\tDom.addClass(this.DOM.timelineFixedWrap, '--lock');\n\t\tthis.DOM.timelineFixedWrap.appendChild(this.DOM.lockScreen);\n\t}\n}\n"],"names":["Selector","params","Date","setEventNamespace","selectMode","getPosByDate","getDateByPos","getPosDateMap","getTimelineWidth","getScaleInfo","solidStatus","useAnimation","DOM","timelineWrap","render","wrap","Tag","ondrag","BX","False","ondragstart","titleNode","result","controlWrap","appendChild","Type","isPlainObject","updateScaleType","updateScaleLimits","animation","from","isDate","parseDate","currentDateFrom","to","currentDateTo","fullDayMode","fullDay","undefined","currentFullDay","getTime","Util","getDayLength","setHours","show","focus","alignCenter","style","display","fromPos","toPos","width","left","transit","toX","triggerChangeEvents","checkStatus","selectorIsDraged","selectorRoundedPos","selectorStartLeft","parseInt","selectorStartScrollLeft","scrollLeft","Dom","addClass","document","body","x","selectorWidth","pos","roundedPos","roundPos","checkedPos","checkPosition","showTitle","hideTitle","setValue","selectorIsResized","selectorStartWidth","toDate","timeTo","rightPos","Math","min","getHours","round","getMinutes","shownScaleTimeFrom","shownScaleTimeTo","fromDate","formatDate","selectorRoundedRightPos","selectorPos","removeClass","mainContWrap","lastFromDate","lastToDate","emit","BaseEvent","data","dateFrom","dateTo","status","selectorIsFree","max","dateToTime","scaleInfo","shownTimeFrom","shownTimeTo","type","timeFrom","scaleTimeFrom","scaleTimeTo","getDay","abs","fromX","offsetWidth","stop","easing","duration","start","finish","transition","makeEaseOut","transitions","quart","step","state","complete","setTimeout","animate","selectorTitle","getTitleNode","selector","timelineWidth","innerHTML","date","format","removeAttribute","formatTime","lastTouchedEntry","entriesListWidth","compactMode","selectorTitleLeft","selectorTitleTop","timelineDataCont","offsetTop","top","selectorHideTimeout","clearTimeout","opacity","quad","timeoutName","selectorIndex","timeout","focusTimeout","screenDelta","selectorLeft","viewWidth","viewLeft","viewRight","newScrollLeft","parseFloat","EventEmitter","Planner","h","y","q","n","Map","config","id","dayOfWeekMonthFormat","userId","Loc","getMessage","SCALE_TIME_FORMAT","isAmPmMode","expandTimelineDebounce","Runtime","debounce","expandTimeline","EXPAND_DELAY","setConfig","hideAnimation","isBuilt","build","bindEventHandlers","resizePlannerWidth","buildTimeline","adjustWidth","timelineInnerWrap","readonly","mainWrap","entriesOuterWrap","height","adjustHeight","shown","setScaleType","scaleType","showTimelineDayTitle","compactHeight","isOneDayScale","minHeight","selectEntriesMode","isInteger","SCALE_OFFSET_BEFORE","SCALE_OFFSET_AFTER","maxTimelineSize","minEntryRows","MIN_ENTRY_ROWS","maxEntryRows","MAX_ENTRY_ROWS","minWidth","isArray","workTime","extendScaleTime","weekHolidays","yearHolidays","accuracy","clickSelectorScaleAccuracy","selectorAccuracy","timelineCellWidth","showEntiesHeader","showEntryName","timelineCellWidthOrig","allowAdjustCellWidth","locked","adjustCellWidth","setScaleLimits","scaleDateFrom","scaleDateTo","isString","loadedDataFrom","loadedDataTo","fromTime","toTime","isNaN","rebuildDebounce","scaleSize","isDomNode","TypeError","create","props","className","preventSelection","entrieListHeader","entriesListTitleCounter","entrieListWrap","timelineFixedWrap","isLocked","lock","timelineScaleWrap","timelineDataWrap","accessibilityWrap","bind","posDateMap","scale","getWrap","subscribe","handleSelectorChanges","doCheckSelectorStatus","selectedEntriesWrap","hoverRow","Event","mouseMoveHandler","settingsButton","showSettingsPopup","built","clearCache","lastTimelineKey","getTimelineShownKey","clean","scaleData","getScaleData","outerDayCont","dayTitle","cont","i","length","scaleDayTitles","daystamp","timestamp","dayStart","title","cell","html","mapDatePosRes","mapDatePos","timelineOffset","checkRebuildTimeout","_checkRebuildTimeoutCount","rebuildTimeout","isElementNode","isShown","rebuild","REBUILD_DELAY","update","entries","accessibility","updateSelector","selectorParams","clearCacheTime","ts","scaleFrom","scaleTo","time","dayStamp","curDayStamp","push","value","entry","hidden","fromTimestamp","toTimestamp","toTimestampReal","node","name","rowWrap","showMoreUsersLink","showMoreUsers","attrs","uid","emailUser","entryStatusMap","toUpperCase","getEntryAvatarNode","text","entriesResourceListWrap","isNodeInDom","dataRowWrap","selectorControlWrap","selected","selectEntryRow","entriesDataRowMap","set","forEach","item","prepareAccessibilityItem","addAccessibilityItem","selectWrap","isParentForNode","entryUniqueId","find","handleClick","handleMousedown","handleMousemove","handleMouseup","mouseWheelTimelineHandler","e","window","event","clickMousePos","getMousePos","nodeTarget","target","srcElement","accuracyMouse","hasClass","getEntryByUniqueId","getAttribute","isEntrySelected","deSelectEntryRow","onCustomEvent","plannerId","timeline","findTarget","mouseDownMousePos","mouseDown","startMousePos","startResize","startMove","startScrollTimeline","isDragged","endMove","endResize","timelineIsDraged","endScrollTimeline","checkTimelineScroll","mousePos","move","resize","scrollTimeline","Browser","isMac","delta","deltaY","detail","wheelDelta","PreventDefault","minScroll","scrollStep","maxScroll","scrollWidth","expandTimelineDirection","isLoaderShown","showLoader","timelineStartScrollLeft","nodeMetaType","parentCont","findParent","pageX","pageY","clientX","clientY","documentElement","clientLeft","scrollTop","clientTop","scaleTypes","includes","getScaleSize","datePosMap","j","tsi","xi","tsj","xj","cellWidth","substeps","posAccuracy","offsetLeft","curInd","deltaTs","end","newHeight","offsetHeight","currentHeight","resizePlannerHeight","resizeAnimation","timelineDataContHeight","proposeTimeButton","loadedTimelineSize","prevScaleDateFrom","prevScaleDateTo","oldScaleDateFrom","EXPAND_OFFSET","limitScaleSizeMode","oldDateTo","reloadData","hideLoader","reload","sort","a","b","cutData","cutDataTitle","usersCount","cutAmount","dispDataCount","ind","getEntryUniqueId","accData","entriesIndex","displayEntryRow","join","extendPlannerWatches","key","hasOwnProperty","get","options","setFullDayMode","floor","ceil","getData","selectorStatus","checkTimePeriod","setSelectorStatus","hideProposeControl","showProposeControl","curTimestamp","getDateFrom","curDate","getDuration","k","setSeconds","checkRes","proposeTimeLimit","checkedFuture","showNoResultNotification","entrieIds","dt","cacheKey","entryId","checkTimeCache","el","toString","entriesAccessibleIndex","settingsDialogCont","scaleRow","scaleWrap","popup","PopupWindowManager","autoHide","closeByEsc","lightShadow","content","zIndex","angle","postion","cacheable","changeScaleType","close","savedScaleType","proposeTime","nodes","entryUid","parentTarget","prevEntry","querySelectorAll","howerEntryId","loader","getLoader","loaderShown","remove","lockScreen","toReal","imageNode","img","avatar","Text","encode","hour","map","alert"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.27 |
proxy
|
phpinfo
|
Settings