From 9857aea0b36a43a0a09a3a3232a0f34ad7487b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Glasn=C3=A1k?= Date: Thu, 21 Nov 2024 11:08:50 +0100 Subject: [PATCH] Build(blockers) DEV --- app/dist/js/index.js | 2 +- ..._ts-src_plugins_tm_dashboard_tasks__utils_timeli-4305f7.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/dist/js/index.js b/app/dist/js/index.js index 74afd45..17c267f 100644 --- a/app/dist/js/index.js +++ b/app/dist/js/index.js @@ -444,7 +444,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inject: [\"vuecal\", \"utils\", \"modules\", \"view\", \"domEvents\", \"editEvents\"],\n props: {\n cellFormattedDate: {\n type: String,\n default: \"\"\n },\n event: {\n type: Object,\n default: () => ({})\n },\n cellEvents: {\n type: Array,\n default: () => []\n },\n cellOverlaps: {\n type: Object,\n default: () => ({})\n },\n allOverlaps: {\n type: Object,\n default: () => ({})\n },\n // If multiple simultaneous events, the events are placed from left to right from the\n // one starting first to the last. (See utils/event.js > checkCellOverlappingEvents)\n eventPosition: {\n type: Number,\n default: 0\n },\n overlapsStreak: {\n type: Number,\n default: 0\n },\n allDay: {\n type: Boolean,\n default: false\n } // Is the event displayed in the all-day bar.\n },\n\n data: () => ({\n // Event touch detection with 30px threshold.\n touch: {\n dragThreshold: 30,\n // px.\n startX: 0,\n startY: 0,\n // Detect if the event touch start + touch end was a drag or a tap.\n // If it was a drag, don't call the event-click handler.\n dragged: false\n }\n }),\n methods: {\n /**\n * On event mousedown.\n * Do not prevent propagation to trigger cell mousedown which highlights the cell if not highlighted.\n */\n onMouseDown(e, touch = false) {\n // Prevent a double mouse down on touch devices.\n if (\"ontouchstart\" in window && !touch) return false;\n const {\n clickHoldAnEvent,\n focusAnEvent,\n resizeAnEvent,\n dragAnEvent\n } = this.domEvents;\n\n // If the delete button is already out and event is on focus then delete event.\n // Return true so the event-click function (if any) is not called.\n if (focusAnEvent._eid === this.event._eid && clickHoldAnEvent._eid === this.event._eid) {\n return true;\n }\n\n // Focus the clicked event.\n this.focusEvent();\n clickHoldAnEvent._eid = null; // Reinit click hold on each click.\n\n // Show event delete button.\n if (this.vuecal.editEvents.delete && this.event.deletable) {\n clickHoldAnEvent.timeoutId = setTimeout(() => {\n if (!resizeAnEvent._eid && !dragAnEvent._eid) {\n clickHoldAnEvent._eid = this.event._eid;\n this.event.deleting = true;\n }\n }, clickHoldAnEvent.timeout);\n }\n },\n /**\n * The mouseup handler is global (whole document) and initialized in index.vue on mounted.\n * It handles the mouseup on cell, events, and everything.\n * All mouseup on event, should be put there to avoid conflicts with other cases.\n * This function is also called on touchend on the event.\n */\n onMouseUp(e) {\n // Don't allow mouseup to be fired on different event than mousedown for the onEventClick function.\n if (this.domEvents.focusAnEvent._eid === this.event._eid && !this.touch.dragged) {\n // This is used in the global mouseup handler.\n this.domEvents.focusAnEvent.mousedUp = true;\n }\n this.touch.dragged = false; // After the touchend happens, reset the dragged flag.\n },\n\n onMouseEnter(e) {\n e.preventDefault();\n this.vuecal.emitWithEvent(\"event-mouse-enter\", this.event);\n },\n onMouseLeave(e) {\n e.preventDefault();\n this.vuecal.emitWithEvent(\"event-mouse-leave\", this.event);\n },\n // Detect if user taps on an event or drags it. If dragging, don't fire the event-click handler (if any).\n onTouchMove(e) {\n // Skip the maths if there is no event click handler.\n if (typeof this.vuecal.onEventClick !== \"function\") return;\n const {\n clientX,\n clientY\n } = e.touches[0];\n const {\n startX,\n startY,\n dragThreshold\n } = this.touch;\n if (Math.abs(clientX - startX) > dragThreshold || Math.abs(clientY - startY) > dragThreshold) {\n this.touch.dragged = true;\n }\n },\n onTouchStart(e) {\n this.touch.startX = e.touches[0].clientX;\n this.touch.startY = e.touches[0].clientY;\n this.onMouseDown(e, true);\n },\n onEnterKeypress(e) {\n if (typeof this.vuecal.onEventClick === \"function\") return this.vuecal.onEventClick(this.event, e);\n },\n onDblClick(e) {\n if (typeof this.vuecal.onEventDblclick === \"function\") return this.vuecal.onEventDblclick(this.event, e);\n },\n onDragStart(e) {\n if (this.event.type == 'blocker' || this.event.type == 'non-working-hours') return; //|| this.event._timeblock_is_finished || this.event.subtask?.is_finished\n this.event.draggingStatic = false;\n this.dnd && this.dnd.eventDragStart(e, this.event);\n },\n onDragEnd() {\n this.dnd && this.dnd.eventDragEnd(this.event);\n },\n onResizeHandleMouseDown() {\n this.focusEvent();\n this.domEvents.dragAnEvent._eid = null;\n this.domEvents.resizeAnEvent = Object.assign(this.domEvents.resizeAnEvent, {\n _eid: this.event._eid,\n start: (this.segment || this.event).start,\n split: this.event.split || null,\n segment: !!this.segment && this.utils.date.formatDateLite(this.segment.start),\n originalEnd: new Date((this.segment || this.event).end),\n originalEndTimeMinutes: this.event.endTimeMinutes\n });\n this.event.resizing = true;\n },\n deleteEvent(touch = false) {\n // Prevent a double mouse down on touch devices.\n if (\"ontouchstart\" in window && !touch) return false;\n this.utils.event.deleteAnEvent(this.event);\n },\n touchDeleteEvent(event) {\n this.deleteEvent(true);\n },\n cancelDeleteEvent() {\n this.event.deleting = false;\n },\n focusEvent() {\n const {\n focusAnEvent\n } = this.domEvents;\n const focusedEvent = focusAnEvent._eid;\n\n // If event is already focus cancel refocusing.\n if (focusedEvent === this.event._eid) return;\n // Unfocus previous event if any.\n else if (focusedEvent) {\n const event = this.view.events.find(e => e._eid === focusedEvent);\n if (event) event.focused = false;\n }\n\n // Cancel delete on previous event if any.\n this.vuecal.cancelDelete();\n this.vuecal.emitWithEvent(\"event-focus\", this.event);\n focusAnEvent._eid = this.event._eid;\n this.event.focused = true;\n }\n },\n computed: {\n eventDimensions() {\n const {\n startTimeMinutes,\n endTimeMinutes\n } = this.segment || this.event;\n\n // Top of event.\n let minutesFromTop = startTimeMinutes - this.vuecal.timeFrom;\n const top = Math.max(Math.round(minutesFromTop * this.vuecal.timeCellHeight / this.vuecal.timeStep), 0);\n\n // Bottom of event.\n minutesFromTop = Math.min(endTimeMinutes, this.vuecal.timeTo) - this.vuecal.timeFrom;\n const bottom = Math.round(minutesFromTop * this.vuecal.timeCellHeight / this.vuecal.timeStep);\n const height = Math.max(bottom - top, 5); // Min height is 5px.\n return {\n top,\n height\n };\n },\n eventStyles() {\n if (this.event.allDay || !this.vuecal.time || !this.event.endTimeMinutes || this.view.id === \"month\" || this.allDay) return {};\n // let width = 100 / Math.min(this.overlaps.length + 1, this.overlapsStreak)\n // let left = (100 - ((this.overlaps.length + 1) * 10 )) * this.eventPosition\n\n let width = 100 - this.eventPosition * 10;\n let left = 5 * this.eventPosition;\n let zIdnex = (this.eventPosition + 1) * 10;\n let background = this.event.master_task_color;\n if (Array.isArray(this.cellOverlaps.sameOverlaps) && this.cellOverlaps.sameOverlaps.length) {\n const sameOverlapsLength = this.cellOverlaps.sameOverlaps.length + 1;\n const parentNotSameOverlaps = this.cellOverlaps.overlaps.filter(x => {\n if (!this.cellOverlaps.sameOverlaps.includes(x) && this.allOverlaps[this.event._eid].position > this.allOverlaps[x].position) return x;\n });\n width = 100 / sameOverlapsLength - 5;\n left = 100 / sameOverlapsLength * (this.eventPosition - parentNotSameOverlaps.length) + 5 * (this.eventPosition - parentNotSameOverlaps.length) / sameOverlapsLength;\n if (parentNotSameOverlaps.length) {\n width = width - parentNotSameOverlaps.length * (10 / sameOverlapsLength);\n left = left + (5 * parentNotSameOverlaps.length - 10 * parentNotSameOverlaps.length / sameOverlapsLength * (this.eventPosition - parentNotSameOverlaps.length));\n }\n }\n if (this.vuecal.minEventWidth && width < this.vuecal.minEventWidth) {\n width = this.vuecal.minEventWidth;\n left = (100 - this.vuecal.minEventWidth) / this.cellOverlaps.overlaps.length * this.eventPosition;\n }\n const {\n top,\n height\n } = this.eventDimensions;\n return {\n background: background,\n \"z-index\": `${zIdnex}`,\n top: `${top}px`,\n height: `${height}px`,\n width: `${width}%`,\n left: this.event.left && `${this.event.left}px` || `${left}%`\n };\n },\n // Don't rely on global variables otherwise whenever it would change all the events would be redrawn.\n eventClasses() {\n const {\n isFirstDay,\n isLastDay\n } = this.segment || {};\n return {\n [this.event.class]: !!this.event.class,\n \"event-blocker\": this.event.is_blocker,\n \"vuecal__event--focus\": this.event.focused,\n \"vuecal__event--resizing\": this.event.resizing,\n \"vuecal__event--background\": this.event.background,\n \"vuecal__event--deletable\": this.event.deleting,\n \"vuecal__event--all-day\": this.event.allDay,\n // Only apply the dragging class on the event copy that is being dragged.\n \"vuecal__event--dragging\": !this.event.draggingStatic && this.event.dragging,\n // Only apply the static class on the event original that remains static while a copy is being dragged.\n // Sometimes when dragging fast the static class would get stuck and events stays invisible,\n // So if dragging is false disable the static class as well.\n \"vuecal__event--static\": this.event.dragging && this.event.draggingStatic,\n // Multiple days events.\n \"vuecal__event--multiple-days\": !!this.segment,\n \"event-start\": this.segment && isFirstDay && !isLastDay,\n \"event-middle\": this.segment && !isFirstDay && !isLastDay,\n \"event-end\": this.segment && isLastDay && !isFirstDay\n };\n },\n // When multiple-day events, a segment is a portion of event spanning on 1 day.\n segment() {\n return this.event.segments && this.event.segments[this.cellFormattedDate] || null;\n },\n draggable() {\n const {\n draggable,\n background,\n daysCount\n } = this.event;\n return this.vuecal.editEvents.drag && draggable && !background && daysCount === 1;\n },\n resizable() {\n const {\n editEvents,\n time\n } = this.vuecal;\n return editEvents.resize && this.event.resizable && time && !this.allDay && (!this.segment || this.segment && this.segment.isLastDay) && this.view.id !== \"month\";\n },\n // Drag & drop module.\n dnd() {\n return this.modules.dnd;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/event.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n inject: [\"vuecal\", \"utils\", \"modules\", \"view\", \"domEvents\", \"editEvents\"],\n props: {\n cellFormattedDate: {\n type: String,\n default: \"\"\n },\n event: {\n type: Object,\n default: () => ({})\n },\n cellEvents: {\n type: Array,\n default: () => []\n },\n cellOverlaps: {\n type: Object,\n default: () => ({})\n },\n allOverlaps: {\n type: Object,\n default: () => ({})\n },\n // If multiple simultaneous events, the events are placed from left to right from the\n // one starting first to the last. (See utils/event.js > checkCellOverlappingEvents)\n eventPosition: {\n type: Number,\n default: 0\n },\n overlapsStreak: {\n type: Number,\n default: 0\n },\n allDay: {\n type: Boolean,\n default: false\n } // Is the event displayed in the all-day bar.\n },\n\n data: () => ({\n // Event touch detection with 30px threshold.\n touch: {\n dragThreshold: 30,\n // px.\n startX: 0,\n startY: 0,\n // Detect if the event touch start + touch end was a drag or a tap.\n // If it was a drag, don't call the event-click handler.\n dragged: false\n }\n }),\n methods: {\n /**\n * On event mousedown.\n * Do not prevent propagation to trigger cell mousedown which highlights the cell if not highlighted.\n */\n onMouseDown(e, touch = false) {\n // Prevent a double mouse down on touch devices.\n if (\"ontouchstart\" in window && !touch) return false;\n const {\n clickHoldAnEvent,\n focusAnEvent,\n resizeAnEvent,\n dragAnEvent\n } = this.domEvents;\n\n // If the delete button is already out and event is on focus then delete event.\n // Return true so the event-click function (if any) is not called.\n if (focusAnEvent._eid === this.event._eid && clickHoldAnEvent._eid === this.event._eid) {\n return true;\n }\n\n // Focus the clicked event.\n this.focusEvent();\n clickHoldAnEvent._eid = null; // Reinit click hold on each click.\n\n // Show event delete button.\n if (this.vuecal.editEvents.delete && this.event.deletable) {\n clickHoldAnEvent.timeoutId = setTimeout(() => {\n if (!resizeAnEvent._eid && !dragAnEvent._eid) {\n clickHoldAnEvent._eid = this.event._eid;\n this.event.deleting = true;\n }\n }, clickHoldAnEvent.timeout);\n }\n },\n /**\n * The mouseup handler is global (whole document) and initialized in index.vue on mounted.\n * It handles the mouseup on cell, events, and everything.\n * All mouseup on event, should be put there to avoid conflicts with other cases.\n * This function is also called on touchend on the event.\n */\n onMouseUp(e) {\n // Don't allow mouseup to be fired on different event than mousedown for the onEventClick function.\n if (this.domEvents.focusAnEvent._eid === this.event._eid && !this.touch.dragged) {\n // This is used in the global mouseup handler.\n this.domEvents.focusAnEvent.mousedUp = true;\n }\n this.touch.dragged = false; // After the touchend happens, reset the dragged flag.\n },\n\n onMouseEnter(e) {\n e.preventDefault();\n this.vuecal.emitWithEvent(\"event-mouse-enter\", this.event);\n },\n onMouseLeave(e) {\n e.preventDefault();\n this.vuecal.emitWithEvent(\"event-mouse-leave\", this.event);\n },\n // Detect if user taps on an event or drags it. If dragging, don't fire the event-click handler (if any).\n onTouchMove(e) {\n // Skip the maths if there is no event click handler.\n if (typeof this.vuecal.onEventClick !== \"function\") return;\n const {\n clientX,\n clientY\n } = e.touches[0];\n const {\n startX,\n startY,\n dragThreshold\n } = this.touch;\n if (Math.abs(clientX - startX) > dragThreshold || Math.abs(clientY - startY) > dragThreshold) {\n this.touch.dragged = true;\n }\n },\n onTouchStart(e) {\n this.touch.startX = e.touches[0].clientX;\n this.touch.startY = e.touches[0].clientY;\n this.onMouseDown(e, true);\n },\n onEnterKeypress(e) {\n if (typeof this.vuecal.onEventClick === \"function\") return this.vuecal.onEventClick(this.event, e);\n },\n onDblClick(e) {\n if (typeof this.vuecal.onEventDblclick === \"function\") return this.vuecal.onEventDblclick(this.event, e);\n },\n onDragStart(e) {\n if (this.event.type == 'blocker' || this.event.type == 'non-working-hours' || this.event.type == 'office365_blocker') return; //|| this.event._timeblock_is_finished || this.event.subtask?.is_finished\n this.event.draggingStatic = false;\n this.dnd && this.dnd.eventDragStart(e, this.event);\n },\n onDragEnd() {\n this.dnd && this.dnd.eventDragEnd(this.event);\n },\n onResizeHandleMouseDown() {\n this.focusEvent();\n this.domEvents.dragAnEvent._eid = null;\n this.domEvents.resizeAnEvent = Object.assign(this.domEvents.resizeAnEvent, {\n _eid: this.event._eid,\n start: (this.segment || this.event).start,\n split: this.event.split || null,\n segment: !!this.segment && this.utils.date.formatDateLite(this.segment.start),\n originalEnd: new Date((this.segment || this.event).end),\n originalEndTimeMinutes: this.event.endTimeMinutes\n });\n this.event.resizing = true;\n },\n deleteEvent(touch = false) {\n // Prevent a double mouse down on touch devices.\n if (\"ontouchstart\" in window && !touch) return false;\n this.utils.event.deleteAnEvent(this.event);\n },\n touchDeleteEvent(event) {\n this.deleteEvent(true);\n },\n cancelDeleteEvent() {\n this.event.deleting = false;\n },\n focusEvent() {\n const {\n focusAnEvent\n } = this.domEvents;\n const focusedEvent = focusAnEvent._eid;\n\n // If event is already focus cancel refocusing.\n if (focusedEvent === this.event._eid) return;\n // Unfocus previous event if any.\n else if (focusedEvent) {\n const event = this.view.events.find(e => e._eid === focusedEvent);\n if (event) event.focused = false;\n }\n\n // Cancel delete on previous event if any.\n this.vuecal.cancelDelete();\n this.vuecal.emitWithEvent(\"event-focus\", this.event);\n focusAnEvent._eid = this.event._eid;\n this.event.focused = true;\n }\n },\n computed: {\n eventDimensions() {\n const {\n startTimeMinutes,\n endTimeMinutes\n } = this.segment || this.event;\n\n // Top of event.\n let minutesFromTop = startTimeMinutes - this.vuecal.timeFrom;\n const top = Math.max(Math.round(minutesFromTop * this.vuecal.timeCellHeight / this.vuecal.timeStep), 0);\n\n // Bottom of event.\n minutesFromTop = Math.min(endTimeMinutes, this.vuecal.timeTo) - this.vuecal.timeFrom;\n const bottom = Math.round(minutesFromTop * this.vuecal.timeCellHeight / this.vuecal.timeStep);\n const height = Math.max(bottom - top, 5); // Min height is 5px.\n return {\n top,\n height\n };\n },\n eventStyles() {\n if (this.event.allDay || !this.vuecal.time || !this.event.endTimeMinutes || this.view.id === \"month\" || this.allDay) return {};\n // let width = 100 / Math.min(this.overlaps.length + 1, this.overlapsStreak)\n // let left = (100 - ((this.overlaps.length + 1) * 10 )) * this.eventPosition\n\n let width = 100 - this.eventPosition * 10;\n let left = 5 * this.eventPosition;\n let zIdnex = (this.eventPosition + 1) * 10;\n let background = this.event.master_task_color;\n if (Array.isArray(this.cellOverlaps.sameOverlaps) && this.cellOverlaps.sameOverlaps.length) {\n const sameOverlapsLength = this.cellOverlaps.sameOverlaps.length + 1;\n const parentNotSameOverlaps = this.cellOverlaps.overlaps.filter(x => {\n if (!this.cellOverlaps.sameOverlaps.includes(x) && this.allOverlaps[this.event._eid].position > this.allOverlaps[x].position) return x;\n });\n width = 100 / sameOverlapsLength - 5;\n left = 100 / sameOverlapsLength * (this.eventPosition - parentNotSameOverlaps.length) + 5 * (this.eventPosition - parentNotSameOverlaps.length) / sameOverlapsLength;\n if (parentNotSameOverlaps.length) {\n width = width - parentNotSameOverlaps.length * (10 / sameOverlapsLength);\n left = left + (5 * parentNotSameOverlaps.length - 10 * parentNotSameOverlaps.length / sameOverlapsLength * (this.eventPosition - parentNotSameOverlaps.length));\n }\n }\n if (this.vuecal.minEventWidth && width < this.vuecal.minEventWidth) {\n width = this.vuecal.minEventWidth;\n left = (100 - this.vuecal.minEventWidth) / this.cellOverlaps.overlaps.length * this.eventPosition;\n }\n const {\n top,\n height\n } = this.eventDimensions;\n return {\n background: background,\n \"z-index\": `${zIdnex}`,\n top: `${top}px`,\n height: `${height}px`,\n width: `${width}%`,\n left: this.event.left && `${this.event.left}px` || `${left}%`\n };\n },\n // Don't rely on global variables otherwise whenever it would change all the events would be redrawn.\n eventClasses() {\n const {\n isFirstDay,\n isLastDay\n } = this.segment || {};\n return {\n [this.event.class]: !!this.event.class,\n \"event-blocker\": this.event.is_blocker,\n \"vuecal__event--focus\": this.event.focused,\n \"vuecal__event--resizing\": this.event.resizing,\n \"vuecal__event--background\": this.event.background,\n \"vuecal__event--deletable\": this.event.deleting,\n \"vuecal__event--all-day\": this.event.allDay,\n // Only apply the dragging class on the event copy that is being dragged.\n \"vuecal__event--dragging\": !this.event.draggingStatic && this.event.dragging,\n // Only apply the static class on the event original that remains static while a copy is being dragged.\n // Sometimes when dragging fast the static class would get stuck and events stays invisible,\n // So if dragging is false disable the static class as well.\n \"vuecal__event--static\": this.event.dragging && this.event.draggingStatic,\n // Multiple days events.\n \"vuecal__event--multiple-days\": !!this.segment,\n \"event-start\": this.segment && isFirstDay && !isLastDay,\n \"event-middle\": this.segment && !isFirstDay && !isLastDay,\n \"event-end\": this.segment && isLastDay && !isFirstDay\n };\n },\n // When multiple-day events, a segment is a portion of event spanning on 1 day.\n segment() {\n return this.event.segments && this.event.segments[this.cellFormattedDate] || null;\n },\n draggable() {\n const {\n draggable,\n background,\n daysCount\n } = this.event;\n return this.vuecal.editEvents.drag && draggable && !background && daysCount === 1;\n },\n resizable() {\n const {\n editEvents,\n time\n } = this.vuecal;\n return editEvents.resize && this.event.resizable && time && !this.allDay && (!this.segment || this.segment && this.segment.isLastDay) && this.view.id !== \"month\";\n },\n // Drag & drop module.\n dnd() {\n return this.modules.dnd;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/app@vendor/vue-cal/event.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }), diff --git a/app/dist/js/src_plugins_tm_dashboard__mixins_Filter_mixin_ts-src_plugins_tm_dashboard_tasks__utils_timeli-4305f7.js b/app/dist/js/src_plugins_tm_dashboard__mixins_Filter_mixin_ts-src_plugins_tm_dashboard_tasks__utils_timeli-4305f7.js index 4437417..2eda5a8 100644 --- a/app/dist/js/src_plugins_tm_dashboard__mixins_Filter_mixin_ts-src_plugins_tm_dashboard_tasks__utils_timeli-4305f7.js +++ b/app/dist/js/src_plugins_tm_dashboard__mixins_Filter_mixin_ts-src_plugins_tm_dashboard_tasks__utils_timeli-4305f7.js @@ -26,7 +26,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/esm/differenceInCalendarDays/index.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/esm/addDays/index.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n generateTimelineTasks(subtasks, date, employee) {\n const {\n tasks,\n blockers,\n homeoffices\n } = this.generateTimelineEvents(subtasks, employee, date);\n const {\n nonWorkingHours\n } = this.generateTimelineNonWorkingHours(date, employee);\n return {\n tasks,\n blockers,\n nonWorkingHours,\n homeoffices\n };\n },\n getUnscheduledTime(subtasks) {\n let unscheduledTime = 0;\n subtasks.forEach(subtask => unscheduledTime += subtask.duration - subtask.spent_time);\n return unscheduledTime;\n },\n isWeekend(date) {\n return moment__WEBPACK_IMPORTED_MODULE_1___default()(date).day() % 6 == 0;\n },\n generateTimelineEvents(subtasks, employee, date) {\n let blockers = [];\n const tasks = [];\n subtasks.forEach(subtask => {\n if (['blocker', 'adhoc', 'home_office', 'vacation', 'free_day'].includes(subtask.type)) {\n blockers = [...blockers, ...this._generateEventsFromBlocker(subtask, date)];\n } else {\n subtask.timeblocks?.forEach(timeblock => {\n tasks.push(this._composeTimelineEvent(subtask, employee, date, timeblock));\n });\n }\n });\n return {\n tasks,\n blockers: blockers.filter(blocker => blocker.type != 'home_office'),\n homeoffices: blockers.filter(blocker => blocker.type == 'home_office')\n };\n },\n _composeTimelineEvent(subtask, employee, date, timeblock) {\n const diffInDays = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(date, new Date(timeblock.start));\n // console.log('subtask', subtask.type)\n let type = 'subtask';\n if (subtask.type == 'office365') type = 'office365';\n return {\n id: subtask.id,\n start: (0,date_fns__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(new Date(timeblock.start), diffInDays),\n end: (0,date_fns__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(new Date(timeblock.end), diffInDays),\n master_task: subtask.master_task,\n date: new Date(timeblock.start),\n isWeekend: this.isWeekend(timeblock.start),\n initials: employee.name.charAt(0).toUpperCase() + employee.surname.charAt(0).toUpperCase(),\n split: this._getSplitFromDate(date, timeblock.start),\n project_code: subtask.project_code,\n subtask: subtask,\n type,\n _timeblock_id: timeblock.id,\n _timeblock_is_finished: timeblock.is_finished,\n _real_start: new Date(timeblock.start),\n _real_end: new Date(timeblock.end),\n draggable: type !== 'office365'\n };\n },\n _generateEventsFromBlocker(blocker, date) {\n const start = moment__WEBPACK_IMPORTED_MODULE_1___default()(blocker.start);\n const end = moment__WEBPACK_IMPORTED_MODULE_1___default()(blocker.end);\n const dates = start.isSame(end, 'date') ? [moment__WEBPACK_IMPORTED_MODULE_1___default()(start).format('YYYY-MM-DD')] : this._getDatesInRange(start, end);\n const blockers = dates.map(d => {\n const diffInDays = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(date, new Date(d));\n const dStart = new Date(moment__WEBPACK_IMPORTED_MODULE_1___default()(d).set({\n hours: start.hours(),\n minutes: start.minutes()\n }).format('YYYY-MM-DD HH:mm'));\n const dEnd = new Date(moment__WEBPACK_IMPORTED_MODULE_1___default()(d).set({\n hours: end.hours(),\n minutes: end.minutes()\n }).format('YYYY-MM-DD HH:mm'));\n return {\n blocker,\n split: this._getSplitFromDate(date, d),\n start: (0,date_fns__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dStart, diffInDays),\n end: (0,date_fns__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dEnd, diffInDays),\n date: new Date(d),\n type: blocker.type,\n isBlocker: true,\n initials: `${blocker.employee?.name[0]}${blocker.employee?.surname[0]}`,\n color: '#B00020',\n draggable: false,\n _real_start: dStart,\n _real_end: dEnd\n };\n });\n return blockers;\n },\n _getDatesInRange(start, end) {\n const dates = [];\n while (start <= end) {\n dates.push(moment__WEBPACK_IMPORTED_MODULE_1___default()(start).format('YYYY-MM-DD'));\n start.add(1, 'day');\n }\n return dates;\n },\n generateTimelineNonWorkingHours(date, employee) {\n const events = [];\n const {\n start: dayStart,\n end: dayEnd\n } = this._getDayStartEnd(date);\n for (let i = 0; i < 7; i++) {\n events.push({\n title: \"Non working hours\",\n start: dayStart,\n end: this._setMinutesToDate(employee.work_start * 60, date),\n type: 'non-working-hours',\n split: i + 1,\n draggable: false\n });\n events.push({\n title: \"Non working hours\",\n start: this._setMinutesToDate(employee.work_end * 60, date),\n end: dayEnd,\n type: 'non-working-hours',\n split: i + 1,\n draggable: false\n });\n }\n return {\n nonWorkingHours: events\n };\n },\n _getSplitFromDate(date, start) {\n return (0,date_fns__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(new Date(date), new Date(start)) * -1 + 1;\n },\n _getDifferenceInHours(date1, date2) {\n return this._getDifferenceInMinutes(date1, date2) / 60;\n },\n _getDifferenceInMinutes(date1, date2) {\n let diff = (date1.getTime() - date2.getTime()) / 1000;\n diff /= 60;\n return Math.abs(Math.round(diff));\n },\n _getDayStartEnd(date) {\n return {\n start: this._setMinutesToDate(0, date),\n end: this._setMinutesToDate(1439, date)\n };\n },\n _setMinutesToDate(minutes, date) {\n const newDate = new Date(date);\n newDate.setHours(Math.floor(minutes / 60), minutes % 60, 0, 0);\n return newDate;\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/tasks/_utils/timeline.utils.ts?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ \"./node_modules/core-js/modules/es.array.push.js\");\n/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/esm/differenceInCalendarDays/index.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/esm/addDays/index.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n generateTimelineTasks(subtasks, date, employee) {\n const {\n tasks,\n blockers,\n homeoffices\n } = this.generateTimelineEvents(subtasks, employee, date);\n const {\n nonWorkingHours\n } = this.generateTimelineNonWorkingHours(date, employee);\n return {\n tasks,\n blockers,\n nonWorkingHours,\n homeoffices\n };\n },\n getUnscheduledTime(subtasks) {\n let unscheduledTime = 0;\n subtasks.forEach(subtask => unscheduledTime += subtask.duration - subtask.spent_time);\n return unscheduledTime;\n },\n isWeekend(date) {\n return moment__WEBPACK_IMPORTED_MODULE_1___default()(date).day() % 6 == 0;\n },\n generateTimelineEvents(subtasks, employee, date) {\n let blockers = [];\n const tasks = [];\n subtasks.forEach(subtask => {\n if (['blocker', 'adhoc', 'home_office', 'vacation', 'free_day', 'office365_blocker'].includes(subtask.type)) {\n blockers = [...blockers, ...this._generateEventsFromBlocker(subtask, date)];\n } else {\n subtask.timeblocks?.forEach(timeblock => {\n tasks.push(this._composeTimelineEvent(subtask, employee, date, timeblock));\n });\n }\n });\n return {\n tasks,\n blockers: blockers.filter(blocker => blocker.type != 'home_office'),\n homeoffices: blockers.filter(blocker => blocker.type == 'home_office')\n };\n },\n _composeTimelineEvent(subtask, employee, date, timeblock) {\n const diffInDays = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(date, new Date(timeblock.start));\n // console.log('subtask', subtask.type)\n let type = 'subtask';\n if (subtask.type == 'office365') type = 'office365';\n return {\n id: subtask.id,\n start: (0,date_fns__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(new Date(timeblock.start), diffInDays),\n end: (0,date_fns__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(new Date(timeblock.end), diffInDays),\n master_task: subtask.master_task,\n date: new Date(timeblock.start),\n isWeekend: this.isWeekend(timeblock.start),\n initials: employee.name.charAt(0).toUpperCase() + employee.surname.charAt(0).toUpperCase(),\n split: this._getSplitFromDate(date, timeblock.start),\n project_code: subtask.project_code,\n subtask: subtask,\n type,\n _timeblock_id: timeblock.id,\n _timeblock_is_finished: timeblock.is_finished,\n _real_start: new Date(timeblock.start),\n _real_end: new Date(timeblock.end),\n draggable: type !== 'office365'\n };\n },\n _generateEventsFromBlocker(blocker, date) {\n const start = moment__WEBPACK_IMPORTED_MODULE_1___default()(blocker.start);\n const end = moment__WEBPACK_IMPORTED_MODULE_1___default()(blocker.end);\n const dates = start.isSame(end, 'date') ? [moment__WEBPACK_IMPORTED_MODULE_1___default()(start).format('YYYY-MM-DD')] : this._getDatesInRange(start, end);\n const blockers = dates.map(d => {\n const diffInDays = (0,date_fns__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(date, new Date(d));\n const dStart = new Date(moment__WEBPACK_IMPORTED_MODULE_1___default()(d).set({\n hours: start.hours(),\n minutes: start.minutes()\n }).format('YYYY-MM-DD HH:mm'));\n const dEnd = new Date(moment__WEBPACK_IMPORTED_MODULE_1___default()(d).set({\n hours: end.hours(),\n minutes: end.minutes()\n }).format('YYYY-MM-DD HH:mm'));\n return {\n blocker,\n split: this._getSplitFromDate(date, d),\n start: (0,date_fns__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dStart, diffInDays),\n end: (0,date_fns__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(dEnd, diffInDays),\n date: new Date(d),\n type: blocker.type,\n isBlocker: true,\n initials: `${blocker.employee?.name[0]}${blocker.employee?.surname[0]}`,\n color: '#B00020',\n draggable: false,\n _real_start: dStart,\n _real_end: dEnd\n };\n });\n return blockers;\n },\n _getDatesInRange(start, end) {\n const dates = [];\n while (start <= end) {\n dates.push(moment__WEBPACK_IMPORTED_MODULE_1___default()(start).format('YYYY-MM-DD'));\n start.add(1, 'day');\n }\n return dates;\n },\n generateTimelineNonWorkingHours(date, employee) {\n const events = [];\n const {\n start: dayStart,\n end: dayEnd\n } = this._getDayStartEnd(date);\n for (let i = 0; i < 7; i++) {\n events.push({\n title: \"Non working hours\",\n start: dayStart,\n end: this._setMinutesToDate(employee.work_start * 60, date),\n type: 'non-working-hours',\n split: i + 1,\n draggable: false\n });\n events.push({\n title: \"Non working hours\",\n start: this._setMinutesToDate(employee.work_end * 60, date),\n end: dayEnd,\n type: 'non-working-hours',\n split: i + 1,\n draggable: false\n });\n }\n return {\n nonWorkingHours: events\n };\n },\n _getSplitFromDate(date, start) {\n return (0,date_fns__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(new Date(date), new Date(start)) * -1 + 1;\n },\n _getDifferenceInHours(date1, date2) {\n return this._getDifferenceInMinutes(date1, date2) / 60;\n },\n _getDifferenceInMinutes(date1, date2) {\n let diff = (date1.getTime() - date2.getTime()) / 1000;\n diff /= 60;\n return Math.abs(Math.round(diff));\n },\n _getDayStartEnd(date) {\n return {\n start: this._setMinutesToDate(0, date),\n end: this._setMinutesToDate(1439, date)\n };\n },\n _setMinutesToDate(minutes, date) {\n const newDate = new Date(date);\n newDate.setHours(Math.floor(minutes / 60), minutes % 60, 0, 0);\n return newDate;\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/tasks/_utils/timeline.utils.ts?"); /***/ }), @@ -156,7 +156,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VTooltip/index.mjs */ \"./node_modules/vuetify/lib/components/VTooltip/VTooltip.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-c3598ac4\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n key: 0,\n class: \"custom-event-body non-working-event colWidth h-100 d-flex flex-column justify-center\"\n};\nconst _hoisted_2 = {\n class: \"d-flex justify-center align-center\"\n};\nconst _hoisted_3 = {\n class: \"mb-0 ms-2\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"project-code\"\n};\nconst _hoisted_5 = {\n class: \"d-flex align-center event-details event-initials-wrapper\"\n};\nconst _hoisted_6 = {\n class: \"event-initials d-flex justify-center align-center\"\n};\nconst _hoisted_7 = {\n class: \"event-initials-date\"\n};\nconst _hoisted_8 = {\n key: 2,\n class: \"d-flex align-center\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"ml-1\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"event__office-footer\"\n};\nconst _hoisted_11 = [\"src\"];\nconst _hoisted_12 = {\n class: \"event__footer d-flex\"\n};\nconst _hoisted_13 = [\"src\"];\nconst _hoisted_14 = [\"src\"];\nconst _hoisted_15 = [\"src\"];\nconst _hoisted_16 = [\"src\"];\nconst _hoisted_17 = [\"src\"];\nconst _hoisted_18 = [\"src\"];\nconst _hoisted_19 = [\"src\"];\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"event\", {\n 'event--office': $setup.isOfficeEvent\n }])\n }, [$setup.props.event.type == 'non-working-hours' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VIcon, {\n icon: \"mdi-cancel\",\n color: \"black\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.title), 1 /* TEXT */)])])) : ['subtask', 'blocker', 'adhoc', 'vacation', 'free_day', 'office365'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: 1,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"custom-event-body colWidth h-100 d-flex flex-column justify-space-between\", $setup.subtaskCssClass]),\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n backgroundColor: $props.event._timeblock_is_finished || $props.event.subtask?.is_finished ? '#dedfe0' : $props.event.color || $props.event.subtask?.color\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"event-content\", {\n 'is-blocker': $setup.props.event.isBlocker\n }])\n }, [['subtask', 'office365'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, [$setup.props.event.subtask.project_code ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"small\", _hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.subtask.project_code), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.subtask.title ?? $setup.props.event.subtask.master_task?.name ?? $setup.props.event.subtask.master_task), 1 /* TEXT */)], 64 /* STABLE_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VTooltip, {\n key: 1,\n text: $props.event.blocker?.approved ? 'Schválený' : 'Neschválený',\n location: \"bottom\"\n }, {\n activator: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n props\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeProps)((0,vue__WEBPACK_IMPORTED_MODULE_0__.guardReactiveProps)(props)), [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(props.event?.blocker?.approved ? props.event?.blocker?.name : props.event?.blocker?.name + '*'), 1 /* TEXT */)], 16 /* FULL_PROPS */)]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"text\"])), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_6, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"small\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.initials), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"small\", _hoisted_7, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.date?.toLocaleDateString('sk-SK')), 1 /* TEXT */)]), ['subtask', 'office365'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_8, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VIcon, {\n icon: \"mdi-skull-outline\",\n size: \"small\"\n }), $setup.props.event?.subtask.deadline ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"small\", _hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.deadline), 1 /* TEXT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VTooltip, {\n key: 1,\n text: \"Deadline z Mastertasku\",\n location: \"bottom\"\n }, {\n activator: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n props\n }) => [!props.event?.subtask?.deadline ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"small\", (0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({\n key: 0,\n class: \"cursor-pointer ml-1\"\n }, props), (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.deadline) + \"*\", 17 /* TEXT, FULL_PROPS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 1 /* STABLE */\n }))])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", null, [$setup.isOfficeEvent ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.office365,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_11)])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_12, [$setup.isOfficeEvent ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n key: 0,\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('edit-task', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.eye,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_13)]),\n _: 1 /* STABLE */\n })) : $props.event.type == 'adhoc' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 1\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('edit-blocker', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.pencil,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_14)]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[2] || (_cache[2] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('delete-blocker', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.bin,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_15)]),\n _: 1 /* STABLE */\n })], 64 /* STABLE_FRAGMENT */)) : $setup.props.event.type == 'subtask' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 2\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"event__footer__button me-2\", {\n completed: $setup.props.event.subtask?.is_finished\n }]),\n onClick: _cache[3] || (_cache[3] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('complete-task', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.checkmarkDouble,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_16)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"event__footer__button me-2\", {\n completed: $setup.props.event._timeblock_is_finished\n }]),\n onClick: _cache[4] || (_cache[4] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('toggle-timeblock-is-finished', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.checkmark,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_17)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[5] || (_cache[5] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('edit-task', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.eye,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_18)]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[6] || (_cache[6] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('delete-timeblock-in-task', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.bin,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_19)]),\n _: 1 /* STABLE */\n })], 64 /* STABLE_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])])], 6 /* CLASS, STYLE */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 2 /* CLASS */);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/_components/a-timeline-event.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js??clonedRuleSet-41.use%5B1%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": function() { return /* binding */ render; }\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VTooltip/index.mjs */ \"./node_modules/vuetify/lib/components/VTooltip/VTooltip.mjs\");\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-c3598ac4\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n key: 0,\n class: \"custom-event-body non-working-event colWidth h-100 d-flex flex-column justify-center\"\n};\nconst _hoisted_2 = {\n class: \"d-flex justify-center align-center\"\n};\nconst _hoisted_3 = {\n class: \"mb-0 ms-2\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"project-code\"\n};\nconst _hoisted_5 = {\n class: \"d-flex align-center event-details event-initials-wrapper\"\n};\nconst _hoisted_6 = {\n class: \"event-initials d-flex justify-center align-center\"\n};\nconst _hoisted_7 = {\n class: \"event-initials-date\"\n};\nconst _hoisted_8 = {\n key: 2,\n class: \"d-flex align-center\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"ml-1\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"event__office-footer\"\n};\nconst _hoisted_11 = [\"src\"];\nconst _hoisted_12 = {\n class: \"event__footer d-flex\"\n};\nconst _hoisted_13 = [\"src\"];\nconst _hoisted_14 = [\"src\"];\nconst _hoisted_15 = [\"src\"];\nconst _hoisted_16 = [\"src\"];\nconst _hoisted_17 = [\"src\"];\nconst _hoisted_18 = [\"src\"];\nconst _hoisted_19 = [\"src\"];\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"event\", {\n 'event--office': $setup.isOfficeEvent\n }])\n }, [$setup.props.event.type == 'non-working-hours' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VIcon, {\n icon: \"mdi-cancel\",\n color: \"black\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", _hoisted_3, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.title), 1 /* TEXT */)])])) : ['subtask', 'blocker', 'adhoc', 'vacation', 'free_day', 'office365', 'office365_blocker'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", {\n key: 1,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"custom-event-body colWidth h-100 d-flex flex-column justify-space-between\", $setup.subtaskCssClass]),\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n backgroundColor: $props.event._timeblock_is_finished || $props.event.subtask?.is_finished ? '#dedfe0' : $props.event.color || $props.event.subtask?.color\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"event-content\", {\n 'is-blocker': $setup.props.event.isBlocker\n }])\n }, [['subtask', 'office365'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 0\n }, [$setup.props.event.subtask.project_code ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"small\", _hoisted_4, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.subtask.project_code), 1 /* TEXT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.subtask.title ?? $setup.props.event.subtask.master_task?.name ?? $setup.props.event.subtask.master_task), 1 /* TEXT */)], 64 /* STABLE_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VTooltip, {\n key: 1,\n text: $props.event.blocker?.approved ? 'Schválený' : 'Neschválený',\n location: \"bottom\"\n }, {\n activator: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n props\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeProps)((0,vue__WEBPACK_IMPORTED_MODULE_0__.guardReactiveProps)(props)), [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(props.event?.blocker?.approved ? props.event?.blocker?.name : props.event?.blocker?.name + '*'), 1 /* TEXT */)], 16 /* FULL_PROPS */)]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"text\"])), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_5, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_6, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"small\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.initials), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"small\", _hoisted_7, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.date?.toLocaleDateString('sk-SK')), 1 /* TEXT */)]), ['subtask', 'office365'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_8, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VIcon, {\n icon: \"mdi-skull-outline\",\n size: \"small\"\n }), $setup.props.event?.subtask.deadline ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"small\", _hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.deadline), 1 /* TEXT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VTooltip_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VTooltip, {\n key: 1,\n text: \"Deadline z Mastertasku\",\n location: \"bottom\"\n }, {\n activator: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n props\n }) => [!props.event?.subtask?.deadline ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"small\", (0,vue__WEBPACK_IMPORTED_MODULE_0__.mergeProps)({\n key: 0,\n class: \"cursor-pointer ml-1\"\n }, props), (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.deadline) + \"*\", 17 /* TEXT, FULL_PROPS */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 1 /* STABLE */\n }))])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", null, [$setup.isOfficeEvent ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_10, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.office365,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_11)])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_12, [$setup.isOfficeEvent ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n key: 0,\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('edit-task', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.eye,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_13)]),\n _: 1 /* STABLE */\n })) : $props.event.type == 'adhoc' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 1\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[1] || (_cache[1] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('edit-blocker', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.pencil,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_14)]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[2] || (_cache[2] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('delete-blocker', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.bin,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_15)]),\n _: 1 /* STABLE */\n })], 64 /* STABLE_FRAGMENT */)) : $setup.props.event.type == 'subtask' ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n key: 2\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"event__footer__button me-2\", {\n completed: $setup.props.event.subtask?.is_finished\n }]),\n onClick: _cache[3] || (_cache[3] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('complete-task', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.checkmarkDouble,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_16)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"event__footer__button me-2\", {\n completed: $setup.props.event._timeblock_is_finished\n }]),\n onClick: _cache[4] || (_cache[4] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('toggle-timeblock-is-finished', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.checkmark,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_17)]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[5] || (_cache[5] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('edit-task', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.eye,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_18)]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VBtn, {\n rounded: \"\",\n class: \"event__footer__button me-2\",\n onClick: _cache[6] || (_cache[6] = (0,vue__WEBPACK_IMPORTED_MODULE_0__.withModifiers)($event => $setup.emits('delete-timeblock-in-task', $setup.props.event), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.bin,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_19)]),\n _: 1 /* STABLE */\n })], 64 /* STABLE_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])])], 6 /* CLASS, STYLE */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 2 /* CLASS */);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/_components/a-timeline-event.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js??clonedRuleSet-41.use%5B1%5D!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B5%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D"); /***/ }),