diff --git a/app/dist/js/index.js b/app/dist/js/index.js
index 7b0fb95..1a42299 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' || 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");
+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 let targetElement;\n if (e.target.nodeName == 'BUTTON') {\n targetElement = e.target;\n } else if (e.srcElement.nodeName == 'IMG') {\n targetElement = e.target.parentElement;\n }\n if (targetElement?.classList?.contains('v-btn__content') || e?.target?.nodeName == 'BUTTON') {\n e.preventDefault();\n return;\n }\n\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");
/***/ }),
@@ -686,7 +686,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plu
/***/ (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 _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_components/a-tasks-table.vue */ \"./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue\");\n/* harmony import */ var _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_components/a-mastertask-description.vue */ \"./src/plugins/tm@modal/master-task/_components/a-mastertask-description.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n// import ZAutocomplete from '@/plugins/tm@_components/z-autocomplete.vue'\n\n\n\n// import tmUtils from '@/plugins/tm@_utils/tm.utils'\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // MIXINS\n // computed: employeesOptions, projectsOptions\n // methods: onProjectSelected, onEmployeeSelected, onEmployeeDurationChanged\n // watch: mastertask.team_id\n\n emits: ['master-task-edited', 'close'],\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_10__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_8__[\"default\"]],\n components: {\n AMastertaskDescription: _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n ATasksTable: _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n // ZAutocomplete,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_7__.QuillEditor\n },\n data() {\n return {\n deadline: null,\n editMode: false,\n visible: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n mastertask: null,\n isSaving: false,\n showAddEmployeeInput: false,\n date: null,\n projectCodeSearch: null\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_14__.mapGetters)('tm', ['teams', 'projects', 'enrichedEmployees']),\n enrichedSubtasks() {\n if (!this.mastertask?.subtasks) return null;\n return this.mastertask.subtasks.map(subtask => {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n return {\n ...subtask,\n _initials: employee ? employee.name.charAt(0) + employee.surname.charAt(0) : '?',\n _fullName: employee ? `${employee.name} ${employee.surname}` : ''\n };\n }).filter(subtask => subtask !== null);\n }\n },\n validations() {\n const quillEditorRequired = value => {\n if (!value || !value.length || !value.replace(/<[^>]*>/g, '').length) return false;\n return true;\n };\n return {\n mastertask: {\n employees: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required,\n minLength: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.minLength)(1),\n $each: {\n duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n }\n }\n },\n project_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n name: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n description: {\n quillEditorRequired\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n estimated_duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n }\n }\n };\n },\n mounted() {\n this.$events.on('close-both-modals', this.closeBothModals);\n this.$events.on('master-task:team-member-deleted', ({\n teamId,\n memberId\n }) => {\n if (this.mastertask.team_id != teamId) return;\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != memberId);\n }), this.$events.on('on-mastertask-deleted', mastertask => {\n if (mastertask?.id == this.mastertask?.id) this.closeModal();\n });\n this.$events.on('on-subtask-deleted', task => {\n if (!this.mastertask) return;\n this.mastertask.subtasks = this.mastertask.subtasks.filter(subtask => subtask.id != task.id);\n });\n this.$events.on('on-subtask-edited', task => {\n if (!this.mastertask?.subtasks) return;\n if (this.mastertask.subtasks.find(subtask => subtask.id == task.id)) {\n this.mastertask.subtasks = this.mastertask.subtasks.map(t => t.id == task.id ? task : t);\n } else {\n this.mastertask.subtasks.push(task);\n }\n });\n },\n beforeUnmount() {\n this.$events.off('on-mastertask-deleted');\n this.$events.off('on-subtask-deleted');\n this.$events.off('on-subtask-edited');\n this.$events.off('master-task:team-member-deleted');\n this.$events.off('close-both-modals', this.closeBothModals);\n },\n methods: {\n closeBothModals() {\n this.$emit('close');\n this.visible = false;\n },\n removeEmployee({\n id\n }) {\n // const isEmployeeInTeam = this.mastertask.team?.employees.find(employee => employee.id == id)\n\n // if (isEmployeeInTeam) {\n // \tthis.mastertask.team_id = null\n // \tthis.mastertask.team = null\n // }\n\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != id);\n },\n removeMemberAlert(member) {\n const team = this.mastertask.team;\n this.$events.emit('show-delete-team-member-modal', {\n member,\n team\n });\n },\n async showModal({\n mastertask,\n editMode = false\n }) {\n this.isSaving = false;\n this.editMode = null;\n this.visible = true;\n this.mastertask = null;\n this.$nextTick(() => {\n this.setFocusEvent();\n this.v$.$reset();\n });\n try {\n if (mastertask?.id) {\n this.mastertask = await this.$axios.get_auth_data(`v1/mastertasks/${mastertask.id}`);\n\n // TODO zmazat ked zacne prichadzat project_id a team_id\n console.log('1', this.mastertask);\n const project = this.projects.find(project => project.code == this.mastertask.project_code);\n this.mastertask.project_id = project?.id || null;\n this.mastertask.team_id = this.mastertask.team?.id || null;\n this.mastertask._allEmployees = this.mastertask.subtasks.map(({\n employee_id,\n duration\n }) => {\n const employee = this.enrichedEmployees.find(({\n id\n }) => id == employee_id);\n if (!employee) {\n return null;\n }\n employee.duration = duration;\n return employee;\n }).filter(employee => employee !== null);\n\n // this.mastertask.project_code \t= project.code\n } else {\n const savedMastertask = localStorage.getItem('mastertaskData');\n try {\n if (savedMastertask) {\n const parsedMastertask = JSON.parse(savedMastertask);\n this.mastertask = parsedMastertask;\n // If the parsed result is not an object, reset to default\n if (typeof this.mastertask !== 'object' || this.mastertask === null) {\n throw new Error('Parsed mastertask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n });\n } else {\n throw new Error('mastertaskData is null or undefined');\n }\n } catch (error) {\n console.error('Error parsing mastertaskData:', error);\n this.mastertask = {\n employees: [],\n duration: 0,\n _deadline_time: '17:00'\n };\n }\n }\n this.editMode = editMode || !this.mastertask.id;\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[z-master-task-modal.vue] Error: ', error);\n }\n },\n toggleIsFinished() {\n this.$events.emit('show-complete-master-task-modal', {\n mastertask: this.mastertask\n });\n },\n async save() {\n if (this.mastertask.id) {\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n const {\n duration\n } = this.mastertask.subtasks.find(({\n employee_id\n }) => employee_id == employee.id) || {};\n employee.duration = duration;\n return employee;\n });\n }\n const vuelidateValid = await this.v$.$validate();\n const employeesValid = await this._validateEmployees();\n if (!vuelidateValid || !employeesValid) return;\n if (this.$refs['description']) this.mastertask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.mastertask.deadline = moment__WEBPACK_IMPORTED_MODULE_6___default()(this.mastertask.deadline).format('YYYY-MM-DD HH:MM:SS');\n if (this.mastertask.id) await this.$axios.patch_auth_form(`v1/mastertasks/${this.mastertask.id}`, this.mastertask);else await this.$axios.post_auth_data('v1/mastertasks', this.mastertask);\n localStorage.removeItem('mastertaskData');\n this.$emit('master-task-edited', this.mastertask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-master-task-modal.vue] Error: ', error);\n } finally {\n this.isSaving = false;\n }\n },\n filesUploaded(files) {\n this.mastertask.files = files;\n },\n closeModal() {\n this.visible = false;\n },\n openDeleteMasterTaskModal(mastertask) {\n this.$events.emit('show-delete-master-task-modal', {\n mastertask\n });\n },\n addTask() {\n this.$events.emit('show-subtask-modal', {\n subtask: {\n master_task_id: this.mastertask.id,\n project_code: this.mastertask.project_code\n }\n });\n },\n onQuillEditorInput() {\n this.mastertask.description = this.$refs['description'].getHTML();\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.mastertask.deadline);\n console.log('z-master-task-modal', this.subtask);\n const timeParts = this.mastertask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.mastertask.deadline = date;\n },\n _validateEmployees() {\n let isValid = true;\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n if (!employee.duration) {\n employee.invalid = true;\n isValid = false;\n }\n return employee;\n });\n return isValid;\n }\n },\n watch: {\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n if (!this.mastertask?.id) return;\n const date = new Date(this.mastertask.deadline);\n const hours = date.getHours();\n const minutes = date.getMinutes();\n this.mastertask._deadline_time = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n });\n },\n mastertask: {\n handler(val) {\n if (this.editMode && !this.mastertask?.id) {\n localStorage.setItem('mastertaskData', JSON.stringify(val));\n }\n },\n deep: true\n },\n 'mastertask.team_id': {\n handler(value, oldValue) {\n if (this.editMode && !value && oldValue) {\n // Removes only employees from the old team when team_id is removed\n const oldTeamEmployeesIds = this.teams.find(team => team.id == oldValue)?.employees.map(employee => employee?.id) || [];\n const employeesNotInOldTeam = this.mastertask.employees.filter(employee => !oldTeamEmployeesIds.includes(employee?.id));\n this.mastertask.employees = employeesNotInOldTeam;\n }\n },\n deep: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.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 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 _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./_components/a-tasks-table.vue */ \"./src/plugins/tm@modal/master-task/_components/a-tasks-table.vue\");\n/* harmony import */ var _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./_components/a-mastertask-description.vue */ \"./src/plugins/tm@modal/master-task/_components/a-mastertask-description.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n// import ZAutocomplete from '@/plugins/tm@_components/z-autocomplete.vue'\n\n\n\n// import tmUtils from '@/plugins/tm@_utils/tm.utils'\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // MIXINS\n // computed: employeesOptions, projectsOptions\n // methods: onProjectSelected, onEmployeeSelected, onEmployeeDurationChanged\n // watch: mastertask.team_id\n\n emits: ['master-task-edited', 'close'],\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_10__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_8__[\"default\"]],\n components: {\n AMastertaskDescription: _components_a_mastertask_description_vue__WEBPACK_IMPORTED_MODULE_12__[\"default\"],\n ATasksTable: _components_a_tasks_table_vue__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n // ZAutocomplete,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_7__.QuillEditor\n },\n data() {\n return {\n deadline: null,\n editMode: false,\n visible: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(),\n mastertask: null,\n isSaving: false,\n showAddEmployeeInput: false,\n date: null,\n projectCodeSearch: null\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_14__.mapGetters)('tm', ['teams', 'projects', 'enrichedEmployees']),\n enrichedSubtasks() {\n if (!this.mastertask?.subtasks) return null;\n return this.mastertask.subtasks.map(subtask => {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n return {\n ...subtask,\n _initials: employee ? employee.name.charAt(0) + employee.surname.charAt(0) : '?',\n _fullName: employee ? `${employee.name} ${employee.surname}` : ''\n };\n }).filter(subtask => subtask !== null);\n }\n },\n validations() {\n const quillEditorRequired = value => {\n if (!value || !value.length || !value.replace(/<[^>]*>/g, '').length) return false;\n return true;\n };\n return {\n mastertask: {\n employees: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required,\n minLength: (0,_vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.minLength)(1),\n $each: {\n duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n }\n }\n },\n project_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n name: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n description: {\n quillEditorRequired\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n estimated_duration: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_15__.required\n }\n }\n };\n },\n mounted() {\n this.$events.on('close-both-modals', this.closeBothModals);\n this.$events.on('master-task:team-member-deleted', ({\n teamId,\n memberId\n }) => {\n if (this.mastertask.team_id != teamId) return;\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != memberId);\n }), this.$events.on('on-mastertask-deleted', mastertask => {\n if (mastertask?.id == this.mastertask?.id) this.closeModal();\n });\n this.$events.on('on-subtask-deleted', task => {\n if (!this.mastertask) return;\n this.mastertask.subtasks = this.mastertask.subtasks.filter(subtask => subtask.id != task.id);\n });\n this.$events.on('on-subtask-edited', task => {\n if (!this.mastertask?.subtasks) return;\n if (this.mastertask.subtasks.find(subtask => subtask.id == task.id)) {\n this.mastertask.subtasks = this.mastertask.subtasks.map(t => t.id == task.id ? task : t);\n } else {\n this.mastertask.subtasks.push(task);\n }\n });\n },\n beforeUnmount() {\n this.$events.off('on-mastertask-deleted');\n this.$events.off('on-subtask-deleted');\n this.$events.off('on-subtask-edited');\n this.$events.off('master-task:team-member-deleted');\n this.$events.off('close-both-modals', this.closeBothModals);\n },\n methods: {\n closeBothModals() {\n this.$emit('close');\n this.visible = false;\n },\n removeEmployee({\n id\n }) {\n // const isEmployeeInTeam = this.mastertask.team?.employees.find(employee => employee.id == id)\n\n // if (isEmployeeInTeam) {\n // \tthis.mastertask.team_id = null\n // \tthis.mastertask.team = null\n // }\n\n this.mastertask.employees = this.mastertask.employees.filter(employee => employee.id != id);\n },\n removeMemberAlert(member) {\n const team = this.mastertask.team;\n this.$events.emit('show-delete-team-member-modal', {\n member,\n team\n });\n },\n async loadMastertask(id) {\n try {\n this.mastertask = await this.$axios.get_auth_data(`v1/mastertasks/${id}`);\n\n // TODO zmazat ked zacne prichadzat project_id a team_id\n const project = this.projects.find(project => project.code == this.mastertask.project_code);\n this.mastertask.project_id = project?.id || null;\n this.mastertask.team_id = this.mastertask.team?.id || null;\n this.mastertask._allEmployees = this.mastertask.subtasks.map(({\n employee_id,\n duration\n }) => {\n const employee = this.enrichedEmployees.find(({\n id\n }) => id == employee_id);\n if (!employee) {\n return null;\n }\n employee.duration = duration;\n return employee;\n }).filter(employee => employee !== null);\n } catch (error) {\n this.$toast.error(error.message || error);\n }\n },\n async showModal({\n mastertask,\n editMode = false\n }) {\n this.isSaving = false;\n this.editMode = null;\n this.visible = true;\n this.mastertask = null;\n this.$nextTick(() => {\n this.setFocusEvent();\n this.v$.$reset();\n });\n try {\n if (mastertask?.id) {\n await this.loadMastertask(mastertask.id);\n\n // this.mastertask.project_code \t= project.code\n } else {\n const savedMastertask = localStorage.getItem('mastertaskData');\n try {\n if (savedMastertask) {\n const parsedMastertask = JSON.parse(savedMastertask);\n this.mastertask = parsedMastertask;\n // If the parsed result is not an object, reset to default\n if (typeof this.mastertask !== 'object' || this.mastertask === null) {\n throw new Error('Parsed mastertask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n });\n } else {\n throw new Error('mastertaskData is null or undefined');\n }\n } catch (error) {\n console.error('Error parsing mastertaskData:', error);\n this.mastertask = {\n employees: [],\n duration: 0,\n _deadline_time: '17:00'\n };\n }\n }\n this.editMode = editMode || !this.mastertask.id;\n } catch (error) {\n this.$toast.error(error.message || error);\n if (true) console.log('[z-master-task-modal.vue] Error: ', error);\n }\n },\n toggleIsFinished() {\n this.$events.emit('show-complete-master-task-modal', {\n mastertask: this.mastertask\n });\n },\n async save() {\n if (this.mastertask.id) {\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n const {\n duration\n } = this.mastertask.subtasks.find(({\n employee_id\n }) => employee_id == employee.id) || {};\n employee.duration = duration;\n return employee;\n });\n }\n const vuelidateValid = await this.v$.$validate();\n const employeesValid = await this._validateEmployees();\n if (!vuelidateValid || !employeesValid) return;\n if (this.$refs['description']) this.mastertask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.mastertask.deadline = moment__WEBPACK_IMPORTED_MODULE_6___default()(this.mastertask.deadline).format('YYYY-MM-DD HH:MM:SS');\n if (this.mastertask.id) await this.$axios.patch_auth_form(`v1/mastertasks/${this.mastertask.id}`, this.mastertask);else await this.$axios.post_auth_data('v1/mastertasks', this.mastertask);\n localStorage.removeItem('mastertaskData');\n this.$emit('master-task-edited', this.mastertask);\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-master-task-modal.vue] Error: ', error);\n } finally {\n this.isSaving = false;\n }\n },\n filesUploaded(files) {\n this.mastertask.files = files;\n },\n closeModal() {\n this.visible = false;\n },\n openDeleteMasterTaskModal(mastertask) {\n this.$events.emit('show-delete-master-task-modal', {\n mastertask\n });\n },\n addTask() {\n this.$events.emit('show-subtask-modal', {\n subtask: {\n master_task_id: this.mastertask.id,\n project_code: this.mastertask.project_code\n }\n });\n },\n onQuillEditorInput() {\n this.mastertask.description = this.$refs['description'].getHTML();\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.mastertask.deadline);\n console.log('z-master-task-modal', this.subtask);\n const timeParts = this.mastertask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.mastertask.deadline = date;\n },\n _validateEmployees() {\n let isValid = true;\n this.mastertask.employees = this.mastertask.employees.map(employee => {\n if (!employee.duration) {\n employee.invalid = true;\n isValid = false;\n }\n return employee;\n });\n return isValid;\n }\n },\n watch: {\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.mastertask.description || '');\n if (!this.mastertask?.id) return;\n const date = new Date(this.mastertask.deadline);\n const hours = date.getHours();\n const minutes = date.getMinutes();\n this.mastertask._deadline_time = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\n });\n },\n mastertask: {\n handler(val) {\n if (this.editMode && !this.mastertask?.id) {\n localStorage.setItem('mastertaskData', JSON.stringify(val));\n }\n },\n deep: true\n },\n 'mastertask.team_id': {\n handler(value, oldValue) {\n if (this.editMode && !value && oldValue) {\n // Removes only employees from the old team when team_id is removed\n const oldTeamEmployeesIds = this.teams.find(team => team.id == oldValue)?.employees.map(employee => employee?.id) || [];\n const employeesNotInOldTeam = this.mastertask.employees.filter(employee => !oldTeamEmployeesIds.includes(employee?.id));\n this.mastertask.employees = employeesNotInOldTeam;\n }\n },\n deep: true\n },\n '$route.query': {\n handler(_, oldValue) {\n if (oldValue?.subtask?.length && this.mastertask?.id) {\n this.loadMastertask(this.mastertask.id);\n }\n },\n deep: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/master-task/z-master-task-modal.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");
/***/ }),
@@ -873,7 +873,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 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 _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _plugins_tm_modal_task_components_components_a_task_timeblocks_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n/* harmony import */ var _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../master-task/_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* harmony import */ var _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./_components/z-task-readonly-info.vue */ \"./src/plugins/tm@modal/task/_components/z-task-readonly-info.vue\");\n/* harmony import */ var _components_a_timeblock_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./_components/a-timeblock.vue */ \"./src/plugins/tm@modal/task/_components/a-timeblock.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n emits: ['close', 'refresh'],\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_16__[\"default\"]],\n components: {\n ZTaskReadonlyInfo: _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n ATimeblock: _components_a_timeblock_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n // ATaskTimeblocks,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_6__.QuillEditor\n },\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n editMode: false,\n visible: false,\n subtask: null,\n isSaving: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(),\n employeeValidations: [],\n showDatePicker: false,\n selectedNewDate: [],\n timeblocks: [{\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }],\n wasFormValidationTriggered: false\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_17__.mapGetters)('tm', ['mastertasks', 'enrichedEmployees'])\n },\n validations() {\n return {\n subtask: {\n master_task_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n }\n }\n };\n },\n mounted() {\n this.$events.on('add-timeblock', timeblock => {\n if (!this.subtask?.timeblocks) {\n this.subtask.timeblocks = [];\n }\n if (!this.subtask?.timesheets) {\n this.subtask.timesheets = [];\n }\n if (!this.subtask?.is_finished) {\n this.subtask.is_finished = 0;\n }\n this.subtask.timeblocks.push(timeblock);\n });\n this.$events.on('on-subtask-edited', subtask => {\n if (subtask?.id !== this.subtask?.id) return;\n const data = JSON.parse(JSON.stringify(subtask));\n const splittedDeadline = data.deadline?.split(' ') || [];\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n this.subtask = this._enrichTask(data);\n\n // TODO: Remove? riesil som neodstranovanie jedineho zanamu v trvani a odpracovanom case\n console.log('2', this.subtask);\n this.$forceUpdate();\n });\n this.$events.on('on-subtask-deleted', subtask => {\n if (subtask?.id == this.subtask?.id) this.closeModal();\n });\n },\n methods: {\n toggleEditMode() {\n if (this.subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'edit'\n });\n this.editMode = !this.editMode;\n },\n openDatepicker(ref) {\n this.$refs[ref].openMenu();\n },\n updateTimeblock(val, index) {\n this.timeblocks[index] = val;\n },\n removeTimeblock(index) {\n this.timeblocks.splice(index, 1);\n },\n async showModal({\n subtask,\n editMode = false,\n mastertask = {}\n }) {\n this.isSaving = false;\n this.subtask = null;\n this.visible = true;\n this.timeblocks = [{\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }];\n this.$nextTick(() => {\n this.v$.$reset();\n this.setFocusEvent();\n });\n try {\n if (subtask?.id) {\n const data = await this.$axios.get_auth_data(`v1/subtasks/${subtask.id}`);\n if (!data.deadline) {\n this.editMode = editMode || !data.id;\n return this.subtask = this._enrichTask(data);\n }\n const splittedDeadline = data.deadline.split(' ');\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n this.subtask = this._enrichTask(data);\n } else {\n const savedSubtask = localStorage.getItem('subtaskData');\n try {\n if (savedSubtask) {\n const parsedSubtask = JSON.parse(savedSubtask);\n this.subtask = parsedSubtask;\n // If the parsed result is not an object, reset to default\n if (typeof this.subtask !== 'object' || this.subtask === null) {\n throw new Error('Parsed subtask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n } else {\n throw new Error('subtaskData is null or undefined');\n }\n } catch (error) {\n console.error('Error parsing subtaskData:', error);\n this.subtask = {\n master_task: mastertask,\n employees: [{}],\n _deadline_time: '17:00'\n };\n }\n if (subtask?.deadline && subtask._deadline_time && subtask.employee_id) {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n this.subtask.employees = [employee];\n this.subtask.deadline = subtask.deadline;\n this.subtask._deadline_time = subtask._deadline_time;\n }\n if (subtask?.master_task_id && subtask?.project_code) {\n this.subtask.master_task_id = subtask.master_task_id;\n this.subtask.project_code = subtask.project_code;\n }\n }\n this.editMode = editMode || !this.subtask.id;\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-task-modal.vue] Error: ', error);\n }\n },\n deleteTimeblock(i) {\n this.subtask.timeblocks.splice(i, 1);\n },\n closeModal() {\n this.visible = false;\n this.$router.replace({\n name: this.$route.name\n });\n },\n async validateAllFields() {\n const employeesValid = await this._validateEmployees();\n const timeblocksValid = this.subtask?.id ? true : await this._validateTimeblocks();\n if (!(await this.v$.$validate())) return;\n if (!employeesValid || !timeblocksValid) return;\n },\n async handleOnRemoveEmployee() {\n if (this.wasFormValidationTriggered) {\n setTimeout(async () => {\n this.validateAllFields();\n }, 100);\n }\n },\n async save() {\n this.wasFormValidationTriggered = true;\n if (!(await this.validateAllFields())) return;\n this.subtask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.subtask.deadline = moment__WEBPACK_IMPORTED_MODULE_11___default()(this.subtask.deadline).format('YYYY-MM-DD HH:mm:SS');\n if (this.subtask?.id) {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n const {\n subtask\n } = await this.$axios.patch_auth_form(`v1/subtasks/${this.subtask.id}`, {\n ...this.subtask,\n timesheets\n });\n localStorage.removeItem('subtaskData');\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n } else {\n this.subtask.employees.forEach(employee => {\n if (employee.id) employee.timeblocks = this.timeblocks.filter(timeblock => timeblock.date).map(timeblock => {\n return {\n start: `${moment__WEBPACK_IMPORTED_MODULE_11___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.starts_at_time}:00`,\n end: `${moment__WEBPACK_IMPORTED_MODULE_11___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.ends_at_time}:00`,\n id: null\n };\n });\n });\n const subtaskCopy = this.subtask;\n delete subtaskCopy._master_task;\n const {\n subtasks\n } = await this.$axios.post_auth(`v1/mastertasks/${this.subtask.master_task_id}/subtasks`, subtaskCopy);\n localStorage.removeItem('subtaskData');\n this.subtask.id = subtasks[0].id;\n subtasks.forEach(subtask => {\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n });\n this.$events.emit('task-created');\n this.$events.emit('close-both-modals');\n }\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-task-modal.vue] Error: ', error);\n } finally {\n this.isSaving = false;\n }\n },\n openDeleteTaskModal(subtask) {\n if (subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'delete'\n });\n this.$events.emit('show-delete-task-modal', {\n subtask\n });\n },\n showCompleteTaskModal() {\n this.$events.emit('show-complete-task-modal', {\n subtask: this.subtask\n });\n if (this.subtask.deadline) this.subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].formatDateTimeForBackend(this.subtask.deadline);\n },\n filesUploaded(files) {\n this.subtask.files = files;\n },\n updateSubtask(subtask) {\n this.subtask = subtask;\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n console.log('z-task-modal', this.subtask);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.subtask.deadline = date;\n },\n _validateEmployees() {\n return new Promise(resolve => {\n this.employeeValidations = [];\n if (this.subtask.id) {\n if (this.subtask.employee && this.subtask.duration) return;\n this.employeeValidations[0] = {};\n if (!this.subtask.employee_id) this.employeeValidations[0].employee = true;\n if (!this.subtask.duration) this.employeeValidations[0].duration = true;\n } else {\n // For new subtasks, only validate non-empty employee entries\n this.subtask.employees.forEach((employee, index) => {\n // Skip validation if both id and duration are empty\n if (!employee.id && !employee.duration) return;\n\n // Only validate if either id or duration is filled\n if (employee.id || employee.duration) {\n this.employeeValidations[index] = {};\n if (!employee.id) this.employeeValidations[index].employee = true;\n if (!employee.duration) this.employeeValidations[index].duration = true;\n }\n });\n }\n const isError = this.employeeValidations.some(employee => employee.duration || employee.employee);\n resolve(!isError);\n });\n },\n async _validateTimeblocks() {\n let invalid = false;\n for (let i = 0; i < this.timeblocks.length; i++) {\n const ref = this.$refs[`timetable-${i}`];\n invalid = (await ref[0].v$.$validate()) || invalid;\n }\n return invalid;\n },\n _enrichTask(subtask) {\n return {\n ...subtask,\n _created_by: this.enrichedEmployees.find(employee => employee.id == subtask.created_by),\n _employee: this.enrichedEmployees.find(employee => employee.id == subtask.employee_id),\n _master_task: this.mastertasks.find(mastertask => mastertask.id == subtask.master_task_id)\n };\n }\n },\n watch: {\n 'subtask.employee_id'(value, oldValue) {\n if (!value || !oldValue) return;\n this.subtask.timeblocks = [];\n this.subtask._employee = this.enrichedEmployees.find(employee => employee.id == this.subtask.employee_id);\n },\n 'subtask.employees': {\n handler() {\n if (!this.subtask?.employees) return;\n const lastEmployee = this.subtask.employees[this.subtask.employees.length - 1];\n if (lastEmployee.id || lastEmployee.duration) this.subtask.employees.push({});\n },\n deep: true\n },\n 'subtask.master_task_id'(value) {\n if (!value) return;\n this.subtask._master_task = this.mastertasks.find(mastertask => mastertask.id == this.subtask.master_task_id);\n this.subtask.project_code = this.subtask._master_task?.project_code || null;\n },\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n },\n subtask: {\n handler(val) {\n if (this.editMode && !this.subtask?.id) {\n const employees = val.employees.filter(employee => employee?.id || employee?.duration) || [{}];\n const subtaskData = {\n ...val,\n employees: employees && employees.length > 0 ? employees : [{}]\n };\n console.log('subtaskData', subtaskData);\n localStorage.setItem('subtaskData', JSON.stringify(subtaskData));\n }\n },\n deep: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.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 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 _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @vuepic/vue-datepicker */ \"./node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js\");\n/* harmony import */ var _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@_components/z-files-upload.vue */ \"./src/plugins/tm@_components/z-files-upload.vue\");\n/* harmony import */ var _plugins_tm_modal_task_components_components_a_task_timeblocks_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue */ \"./src/plugins/tm@modal/task/_components/_components/a-task-timeblocks.vue\");\n/* harmony import */ var _vuelidate_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @vuelidate/core */ \"./node_modules/@vuelidate/core/dist/index.esm.js\");\n/* harmony import */ var _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/plugins/lib@auth/_utils/error.utils */ \"./src/plugins/lib@auth/_utils/error.utils.ts\");\n/* harmony import */ var _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @vueup/vue-quill */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/vuetify-fix-focus */ \"./src/plugins/tm@modal/_mixins/vuetify-fix-focus.ts\");\n/* harmony import */ var _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../master-task/_mixins/selects.mixin */ \"./src/plugins/tm@modal/master-task/_mixins/selects.mixin.ts\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! file-saver */ \"./node_modules/file-saver/dist/FileSaver.min.js\");\n/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @/plugins/tm@_utils/tm.utils */ \"./src/plugins/tm@_utils/tm.utils.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @vueup/vue-quill/dist/vue-quill.snow.css */ \"./node_modules/@vueup/vue-quill/dist/vue-quill.snow.css\");\n/* harmony import */ var _vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_vueup_vue_quill_dist_vue_quill_snow_css__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/plugins/tm@_mixins/autocomplete.mixin */ \"./src/plugins/tm@_mixins/autocomplete.mixin.ts\");\n/* harmony import */ var _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./_components/z-task-readonly-info.vue */ \"./src/plugins/tm@modal/task/_components/z-task-readonly-info.vue\");\n/* harmony import */ var _components_a_timeblock_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./_components/a-timeblock.vue */ \"./src/plugins/tm@modal/task/_components/a-timeblock.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/plugins/tm@modal/_mixins/modal.mixin */ \"./src/plugins/tm@modal/_mixins/modal.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n emits: ['close', 'refresh'],\n mixins: [_plugins_tm_modal_mixins_vuetify_fix_focus__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _master_task_mixins_selects_mixin__WEBPACK_IMPORTED_MODULE_8__[\"default\"], _plugins_tm_mixins_autocomplete_mixin__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _plugins_tm_modal_mixins_modal_mixin__WEBPACK_IMPORTED_MODULE_16__[\"default\"]],\n components: {\n ZTaskReadonlyInfo: _components_z_task_readonly_info_vue__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n ATimeblock: _components_a_timeblock_vue__WEBPACK_IMPORTED_MODULE_15__[\"default\"],\n ZFilesUpload: _plugins_tm_components_z_files_upload_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Datepicker: _vuepic_vue_datepicker__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n // ATaskTimeblocks,\n QuillEditor: _vueup_vue_quill__WEBPACK_IMPORTED_MODULE_6__.QuillEditor\n },\n data() {\n return {\n tmUtils: _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n editMode: false,\n visible: false,\n subtask: null,\n isSaving: false,\n errorUtils: _plugins_lib_auth_utils_error_utils__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n v$: (0,_vuelidate_core__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(),\n employeeValidations: [],\n showDatePicker: false,\n selectedNewDate: [],\n timeblocks: [{\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }],\n wasFormValidationTriggered: false\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_17__.mapGetters)('tm', ['mastertasks', 'enrichedEmployees'])\n },\n validations() {\n return {\n subtask: {\n master_task_id: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n },\n deadline: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n },\n _deadline_time: {\n required: _vuelidate_validators__WEBPACK_IMPORTED_MODULE_18__.required\n }\n }\n };\n },\n mounted() {\n this.$events.on('add-timeblock', timeblock => {\n if (!this.subtask?.timeblocks) {\n this.subtask.timeblocks = [];\n }\n if (!this.subtask?.timesheets) {\n this.subtask.timesheets = [];\n }\n if (!this.subtask?.is_finished) {\n this.subtask.is_finished = 0;\n }\n this.subtask.timeblocks.push(timeblock);\n });\n this.$events.on('on-subtask-edited', subtask => {\n if (subtask?.id !== this.subtask?.id) return;\n const data = JSON.parse(JSON.stringify(subtask));\n const splittedDeadline = data.deadline?.split(' ') || [];\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n this.subtask = this._enrichTask(data);\n\n // TODO: Remove? riesil som neodstranovanie jedineho zanamu v trvani a odpracovanom case\n console.log('2', this.subtask);\n this.$forceUpdate();\n });\n this.$events.on('on-subtask-deleted', subtask => {\n if (subtask?.id == this.subtask?.id) this.closeModal();\n });\n },\n methods: {\n toggleEditMode() {\n if (this.subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'edit'\n });\n this.editMode = !this.editMode;\n },\n openDatepicker(ref) {\n this.$refs[ref].openMenu();\n },\n updateTimeblock(val, index) {\n this.timeblocks[index] = val;\n },\n removeTimeblock(index) {\n this.timeblocks.splice(index, 1);\n },\n async showModal({\n subtask,\n editMode = false,\n mastertask = {}\n }) {\n this.isSaving = false;\n this.subtask = null;\n this.visible = true;\n this.timeblocks = [{\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }];\n this.$nextTick(() => {\n this.v$.$reset();\n this.setFocusEvent();\n });\n try {\n if (subtask?.id) {\n const data = await this.$axios.get_auth_data(`v1/subtasks/${subtask.id}`);\n if (!data.deadline) {\n this.editMode = editMode || !data.id;\n return this.subtask = this._enrichTask(data);\n }\n const splittedDeadline = data.deadline.split(' ');\n data.deadline = splittedDeadline[0];\n data._deadline_time = splittedDeadline[1];\n this.subtask = this._enrichTask(data);\n } else {\n const savedSubtask = localStorage.getItem('subtaskData');\n try {\n if (savedSubtask) {\n const parsedSubtask = JSON.parse(savedSubtask);\n this.subtask = parsedSubtask;\n // If the parsed result is not an object, reset to default\n if (typeof this.subtask !== 'object' || this.subtask === null) {\n throw new Error('Parsed subtask is not an object');\n }\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n } else {\n throw new Error('subtaskData is null or undefined');\n }\n } catch (error) {\n console.error('Error parsing subtaskData:', error);\n this.subtask = {\n master_task: mastertask,\n employees: [{}],\n _deadline_time: '17:00'\n };\n }\n if (subtask?.deadline && subtask._deadline_time && subtask.employee_id) {\n const employee = this.enrichedEmployees.find(employee => employee.id == subtask.employee_id);\n this.subtask.employees = [employee];\n this.subtask.deadline = subtask.deadline;\n this.subtask._deadline_time = subtask._deadline_time;\n }\n if (subtask?.master_task_id && subtask?.project_code) {\n this.subtask.master_task_id = subtask.master_task_id;\n this.subtask.project_code = subtask.project_code;\n }\n }\n this.editMode = editMode || !this.subtask.id;\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-task-modal.vue] Error: ', error);\n }\n },\n deleteTimeblock(i) {\n this.subtask.timeblocks.splice(i, 1);\n },\n closeModal() {\n this.visible = false;\n this.$router.replace({\n name: this.$route.name\n });\n },\n async validateAllFields() {\n const employeesValid = await this._validateEmployees();\n const timeblocksValid = this.subtask?.id ? true : await this._validateTimeblocks();\n if (!(await this.v$.$validate())) return;\n if (!employeesValid || !timeblocksValid) return;\n return true;\n },\n async handleOnRemoveEmployee() {\n if (this.wasFormValidationTriggered) {\n setTimeout(async () => {\n this.validateAllFields();\n }, 100);\n }\n },\n async save() {\n this.wasFormValidationTriggered = true;\n if (!(await this.validateAllFields())) return;\n this.subtask.description = this.$refs['description'].getHTML();\n this._mergeDeadlineTimeDate();\n try {\n this.isSaving = true;\n this.subtask.deadline = moment__WEBPACK_IMPORTED_MODULE_11___default()(this.subtask.deadline).format('YYYY-MM-DD HH:mm:SS');\n if (this.subtask?.id) {\n const timesheets = this.subtask.timesheets.map(timesheet => {\n delete timesheet.employee_name;\n return timesheet;\n });\n const {\n subtask\n } = await this.$axios.patch_auth_form(`v1/subtasks/${this.subtask.id}`, {\n ...this.subtask,\n timesheets\n });\n localStorage.removeItem('subtaskData');\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n } else {\n // Filter out employees that don't have both id and duration\n const validEmployees = this.subtask.employees.filter(employee => employee.id && employee.duration);\n validEmployees.forEach(employee => {\n employee.timeblocks = this.timeblocks.filter(timeblock => timeblock.date).map(timeblock => {\n return {\n start: `${moment__WEBPACK_IMPORTED_MODULE_11___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.starts_at_time}:00`,\n end: `${moment__WEBPACK_IMPORTED_MODULE_11___default()(timeblock.date).format('YYYY-MM-DD')} ${timeblock.ends_at_time}:00`,\n id: null\n };\n });\n });\n const subtaskCopy = {\n ...this.subtask,\n employees: validEmployees\n };\n delete subtaskCopy._master_task;\n const {\n subtasks\n } = await this.$axios.post_auth(`v1/mastertasks/${this.subtask.master_task_id}/subtasks`, subtaskCopy);\n localStorage.removeItem('subtaskData');\n this.subtask.id = subtasks[0].id;\n subtasks.forEach(subtask => {\n this.$store.commit('tm/update_subtask', subtask);\n this.$events.emit('on-subtask-edited', this.subtask);\n });\n this.$events.emit('task-created');\n this.$events.emit('close-both-modals');\n }\n this.closeModal();\n } catch (error) {\n this.$toast.error(this.$parseError(error));\n if (true) console.log('[z-task-modal.vue] Error: ', error);\n } finally {\n this.isSaving = false;\n }\n },\n openDeleteTaskModal(subtask) {\n if (subtask.type == 'office365') return this.$events.emit('show-unable-to-edit-office-task-modal', {\n mode: 'delete'\n });\n this.$events.emit('show-delete-task-modal', {\n subtask\n });\n },\n showCompleteTaskModal() {\n this.$events.emit('show-complete-task-modal', {\n subtask: this.subtask\n });\n if (this.subtask.deadline) this.subtask.deadline = _plugins_tm_utils_tm_utils__WEBPACK_IMPORTED_MODULE_10__[\"default\"].formatDateTimeForBackend(this.subtask.deadline);\n },\n filesUploaded(files) {\n this.subtask.files = files;\n },\n updateSubtask(subtask) {\n this.subtask = subtask;\n },\n _mergeDeadlineTimeDate() {\n const date = new Date(this.subtask.deadline);\n console.log('z-task-modal', this.subtask);\n const timeParts = this.subtask._deadline_time.split(':');\n date.setHours(parseInt(timeParts[0]));\n date.setMinutes(parseInt(timeParts[1]));\n this.subtask.deadline = date;\n },\n _validateEmployees() {\n return new Promise(resolve => {\n this.employeeValidations = [];\n if (this.subtask.id) {\n // For existing subtasks, require both employee and duration\n if (!this.subtask.employee_id || !this.subtask.duration) {\n this.employeeValidations[0] = {\n employee: !this.subtask.employee_id,\n duration: !this.subtask.duration\n };\n }\n } else {\n // For new subtasks, require at least one employee with duration\n let hasValidEmployee = false;\n this.subtask.employees.forEach((employee, index) => {\n // Skip validation if both id and duration are empty\n if (!employee.id && !employee.duration) {\n // If this is the first employee and no valid employee exists yet, show validation\n if (index === 0 && !hasValidEmployee) {\n this.employeeValidations[index] = {\n employee: true,\n duration: true\n };\n }\n return;\n }\n\n // Validate if either id or duration is filled\n if (employee.id || employee.duration) {\n this.employeeValidations[index] = {\n employee: !employee.id,\n duration: !employee.duration\n };\n\n // If both id and duration are present, mark as valid\n if (employee.id && employee.duration) {\n hasValidEmployee = true;\n }\n }\n });\n }\n const isError = this.employeeValidations.some(employee => employee.duration || employee.employee);\n resolve(!isError);\n });\n },\n async _validateTimeblocks() {\n let invalid = false;\n for (let i = 0; i < this.timeblocks.length; i++) {\n const ref = this.$refs[`timetable-${i}`];\n invalid = (await ref[0].v$.$validate()) || invalid;\n }\n return invalid;\n },\n _enrichTask(subtask) {\n return {\n ...subtask,\n _created_by: this.enrichedEmployees.find(employee => employee.id == subtask.created_by),\n _employee: this.enrichedEmployees.find(employee => employee.id == subtask.employee_id),\n _master_task: this.mastertasks.find(mastertask => mastertask.id == subtask.master_task_id)\n };\n }\n },\n watch: {\n 'subtask.employee_id'(value, oldValue) {\n if (!value || !oldValue) return;\n this.subtask.timeblocks = [];\n this.subtask._employee = this.enrichedEmployees.find(employee => employee.id == this.subtask.employee_id);\n },\n 'subtask.employees': {\n handler() {\n if (!this.subtask?.employees) return;\n const lastEmployee = this.subtask.employees[this.subtask.employees.length - 1];\n if (lastEmployee?.id || lastEmployee?.duration) this.subtask.employees.push({});\n },\n deep: true\n },\n 'subtask.master_task_id'(value) {\n if (!value) return;\n this.subtask._master_task = this.mastertasks.find(mastertask => mastertask.id == this.subtask.master_task_id);\n this.subtask.project_code = this.subtask._master_task?.project_code || null;\n },\n editMode() {\n this.$nextTick(() => {\n this.$refs['description']?.setHTML(this.subtask.description || '');\n });\n },\n subtask: {\n handler(val) {\n if (this.editMode && !this.subtask?.id) {\n const employees = val?.employees?.filter(employee => employee?.id || employee?.duration) || [{}];\n const subtaskData = {\n ...val,\n employees: employees && employees.length > 0 ? employees : [{}]\n };\n console.log('subtaskData', subtaskData);\n localStorage.setItem('subtaskData', JSON.stringify(subtaskData));\n }\n },\n deep: true\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.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");
/***/ }),
@@ -2978,7 +2978,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ (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 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 vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VAutocomplete/index.mjs */ \"./node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_1__.pushScopeId)(\"data-v-1c35a9a1\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center modal-header\"\n};\nconst _hoisted_2 = {\n class: \"splitted-inputs\"\n};\nconst _hoisted_3 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_5 = [_hoisted_3, _hoisted_4];\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_8 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_9 = [_hoisted_7, _hoisted_8];\nconst _hoisted_10 = {\n key: 2,\n class: \"timeblocks w-100\"\n};\nconst _hoisted_11 = {\n class: \"end-button w-100\"\n};\nconst _hoisted_12 = {\n class: \"splitted-time-inputs w-100\"\n};\nconst _hoisted_13 = {\n class: \"w-100 modal-input\"\n};\nconst _hoisted_14 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_15 = {\n class: \"d-flex justify-space-between align-center modal-header border-bottom pb-4\"\n};\nconst _hoisted_16 = {\n class: \"d-flex justify-start\"\n};\nconst _hoisted_17 = [\"src\"];\nconst _hoisted_18 = [\"src\"];\nconst _hoisted_19 = {\n class: \"w-100\"\n};\nconst _hoisted_20 = {\n class: \"d-flex justify-start align-center mt-8\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Datepicker\");\n const _component_A_timeblock = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"A-timeblock\");\n const _component_QuillEditor = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"QuillEditor\");\n const _component_Z_files_upload = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Z-files-upload\");\n \n \n \n const _component_Z_task_readonly_info = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Z-task-readonly-info\");\n const _component_W_loadable = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"W-loadable\");\n \n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n \"max-height\": \"90%\",\n height: \"700px\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_W_loadable, {\n content: $data.subtask,\n class: \"h-100\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [$data.editMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VCard, {\n key: 0,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask?.id ? 'Upraviť sub task' : 'Vytvoriť sub task'), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.project_code,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.subtask.project_code = $event),\n label: \"Kód projektu\",\n value: $data.subtask.project_code,\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n variant: \"solo\",\n disabled: \"\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"value\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.subtask.master_task_id,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.subtask.master_task_id = $event),\n label: \"Master task\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([{\n error: $data.v$.subtask.master_task_id.$errors.length\n }, \"modal-input\"]),\n items: _ctx.mastertasks,\n \"item-title\": \"name\",\n \"item-value\": \"id\",\n variant: \"solo\",\n clearable: \"\"\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"class\", \"items\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.title,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.subtask.title = $event),\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n label: \"Názov subtasku\",\n variant: \"solo\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" TODO: Bialko validacie \"), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", {\n onClick: _cache[5] || (_cache[5] = $event => $options.openDatepicker('datepicker-01')),\n class: \"datepicker-wrapper\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Datepicker, {\n modelValue: $data.subtask.deadline,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.subtask.deadline = $event),\n onFocus: _ctx.onDateFocus,\n ref: \"datepicker-01\",\n \"auto-apply\": true,\n \"min-date\": new Date(),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input left datepicker-input\", {\n error: $data.v$.subtask.deadline.$errors?.length\n }]),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Deadline\",\n validations: $data.v$.subtask.deadline\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"min-date\", \"class\", \"validations\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input right\", {\n error: $data.v$.subtask._deadline_time.$errors.length\n }]),\n variant: \"solo\",\n modelValue: $data.subtask._deadline_time,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.subtask._deadline_time = $event),\n label: \"Čas\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n type: \"time\",\n onFocus: _ctx.onInputFocus,\n hint: $data.v$.subtask._deadline_time.$errors ? $data.errorUtils.parseErrors($data.v$.subtask._deadline_time.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" TODO: Toto tu nema byt ci? \"), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\"
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\"), $data.subtask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 0\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"employee-wrapper\", {\n 'hide-arrow': $data.subtask.employee_id\n }])\n }, [$data.subtask.employee_id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"svg\", {\n key: 0,\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n class: \"dp__icon dp__clear_icon dp__input_icons\",\n \"data-test\": \"clear-icon\",\n onClick: _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => {\n $options.handleOnRemoveEmployee();\n $data.subtask.employee_id = null;\n $data.subtask.employee = null;\n }, [\"prevent\"]))\n }, _hoisted_5)) : (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.subtask.employee_id,\n \"onUpdate:modelValue\": [_cache[8] || (_cache[8] = $event => $data.subtask.employee_id = $event), _cache[9] || (_cache[9] = $event => $data.employeeValidations[0] ? $data.employeeValidations[0].employee = false : null)],\n label: \"Priradený\",\n items: _ctx.enrichedEmployees,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input\", {\n error: $data.employeeValidations[0]?.employee\n }])\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"items\", \"class\"])], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.duration,\n \"onUpdate:modelValue\": [_cache[10] || (_cache[10] = $event => $data.subtask.duration = $event), _cache[11] || (_cache[11] = $event => $data.employeeValidations[0] ? $data.employeeValidations[0].duration = false : null)],\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input\", {\n error: $data.employeeValidations[0]?.duration\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Časový odhad\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"modelValue\", \"class\", \"onFocus\"])], 64 /* STABLE_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 1\n }, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.subtask.employees, (employee, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", {\n key: `employee-${index}`,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"splitted-inputs remove-employee\", {\n 'hide-arrow': employee.id\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: employee.id,\n \"onUpdate:modelValue\": [$event => employee.id = $event, $event => $data.employeeValidations[index] ? $data.employeeValidations[index].employee = false : null],\n label: \"Priradený\",\n items: _ctx.enrichedEmployees,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input left\", {\n error: $data.employeeValidations[index]?.employee\n }])\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"onUpdate:modelValue\", \"items\", \"class\"]), employee.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"svg\", {\n key: 0,\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n class: \"dp__icon dp__clear_icon dp__input_icons\",\n \"data-test\": \"clear-icon\",\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => {\n $options.handleOnRemoveEmployee();\n employee.id = null;\n }, [\"prevent\"])\n }, _hoisted_9, 8 /* PROPS */, _hoisted_6)) : (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: employee.duration,\n \"onUpdate:modelValue\": [$event => employee.duration = $event, $event => $data.employeeValidations[index] ? $data.employeeValidations[index].duration = false : null],\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input right\", {\n error: $data.employeeValidations[index]?.duration\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Časový odhad\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"modelValue\", \"onUpdate:modelValue\", \"class\", \"onFocus\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" \\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\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
\"), !$data.subtask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", _hoisted_10, [((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.timeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(_component_A_timeblock, {\n key: index,\n onUpdateTimeblock: val => $options.updateTimeblock(val, index),\n onRemoveTimeblock: $event => $options.removeTimeblock(index),\n timeblock: timeblock,\n deletable: index > 0,\n editable: \"\",\n ref_for: true,\n ref: `timetable-${index}`\n }, null, 8 /* PROPS */, [\"onUpdateTimeblock\", \"onRemoveTimeblock\", \"timeblock\", \"deletable\"]);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"button\", {\n onClick: _cache[12] || (_cache[12] = $event => $data.timeblocks.push({\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }))\n }, \" Pridať časový blok \")])])) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 3\n }, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.subtask.timeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", {\n key: index,\n class: \"timeblock w-100\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Datepicker, {\n \"model-value\": timeblock.start.substring(0, 10),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n \"auto-apply\": true,\n \"enable-time-picker\": false,\n readonly: \"\",\n class: \"mb-5 modal-input\"\n }, null, 8 /* PROPS */, [\"model-value\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n value: timeblock.start.substring(11, 16),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Začiatok\"\n }, null, 8 /* PROPS */, [\"value\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n value: timeblock.end.substring(11, 16),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Koniec\"\n }, null, 8 /* PROPS */, [\"value\"])])]);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_13, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_QuillEditor, {\n ref: \"description\",\n modelValue: $data.subtask.description,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.subtask.description = $event),\n placeholder: \"Popis\",\n theme: \"snow\",\n class: \"rich-text-editor\",\n onInput: _cache[14] || (_cache[14] = $event => $data.subtask.description = $event.srcElement.innerHTML)\n }, null, 8 /* PROPS */, [\"modelValue\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Z_files_upload, {\n class: \"mt-15 files\",\n files: $data.subtask.files,\n onFilesUploaded: $options.filesUploaded,\n \"is-saving\": $data.isSaving\n }, null, 8 /* PROPS */, [\"files\", \"onFilesUploaded\", \"is-saving\"])]),\n _: 1 /* STABLE */\n }), !$data.isSaving ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 0,\n class: \"button primary\",\n onClick: _cache[15] || (_cache[15] = $event => $options.save())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask.id ? 'UPRAVIŤ' : 'VYTVORIŤ'), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 1,\n class: \"button primary disabled\",\n disabled: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)(_ctx.$t('Ukladám...')), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VCard, {\n key: 1,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask._master_task.project_code), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask._master_task.name), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[16] || (_cache[16] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\",\n class: \"pb-5\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask.title), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"img\", {\n class: \"icon\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/pencil.svg */ \"./src/plugins/app/_img/icons/pencil.svg\"),\n alt: \"pencil-icon\",\n onClick: _cache[17] || (_cache[17] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)((...args) => $options.toggleEditMode && $options.toggleEditMode(...args), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_17), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"img\", {\n class: \"icon trash\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/bin.svg */ \"./src/plugins/app/_img/icons/bin.svg\"),\n alt: \"trash-icon\",\n onClick: _cache[18] || (_cache[18] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.openDeleteTaskModal($data.subtask), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_18)])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Z_task_readonly_info, {\n subtask: $data.subtask,\n onCloseModal: $options.closeModal,\n onUpdateSubtask: $options.updateSubtask\n }, null, 8 /* PROPS */, [\"subtask\", \"onCloseModal\", \"onUpdateSubtask\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" \\n\\t\\t\\t\\t\\t\\t\\t
Termín
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\"), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_20, [!$data.subtask.is_finished ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 0,\n class: \"done-btn\",\n onClick: _cache[19] || (_cache[19] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.showCompleteTaskModal(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Dokončiť\")]),\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 1,\n class: \"button secondary\",\n onClick: _cache[20] || (_cache[20] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.showCompleteTaskModal(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Znovu otvoriť\")]),\n _: 1 /* STABLE */\n })), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n class: \"button secondary\",\n onClick: _cache[21] || (_cache[21] = $event => $options.closeModal())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Uložiť zmeny\")]),\n _: 1 /* STABLE */\n })])])]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"content\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%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 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 vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuetify/lib/components/VAutocomplete/index.mjs */ \"./node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.mjs\");\n/* harmony import */ var vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuetify/lib/components/VBtn/index.mjs */ \"./node_modules/vuetify/lib/components/VBtn/VBtn.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCard.mjs\");\n/* harmony import */ var vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vuetify/lib/components/VCard/index.mjs */ \"./node_modules/vuetify/lib/components/VCard/VCardActions.mjs\");\n/* harmony import */ var vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuetify/lib/components/VDialog/index.mjs */ \"./node_modules/vuetify/lib/components/VDialog/VDialog.mjs\");\n/* harmony import */ var vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuetify/lib/components/VIcon/index.mjs */ \"./node_modules/vuetify/lib/components/VIcon/VIcon.mjs\");\n/* harmony import */ var vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vuetify/lib/components/VTextField/index.mjs */ \"./node_modules/vuetify/lib/components/VTextField/VTextField.mjs\");\n\n\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_1__.pushScopeId)(\"data-v-1c35a9a1\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"d-flex justify-space-between align-center modal-header\"\n};\nconst _hoisted_2 = {\n class: \"splitted-inputs\"\n};\nconst _hoisted_3 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_5 = [_hoisted_3, _hoisted_4];\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_8 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_9 = [_hoisted_7, _hoisted_8];\nconst _hoisted_10 = {\n key: 2,\n class: \"timeblocks w-100\"\n};\nconst _hoisted_11 = {\n class: \"end-button w-100\"\n};\nconst _hoisted_12 = {\n class: \"splitted-time-inputs w-100\"\n};\nconst _hoisted_13 = {\n class: \"w-100 modal-input\"\n};\nconst _hoisted_14 = {\n class: \"d-flex justify-space-between align-center\"\n};\nconst _hoisted_15 = {\n class: \"d-flex justify-space-between align-center modal-header border-bottom pb-4\"\n};\nconst _hoisted_16 = {\n class: \"d-flex justify-start\"\n};\nconst _hoisted_17 = [\"src\"];\nconst _hoisted_18 = [\"src\"];\nconst _hoisted_19 = {\n class: \"w-100\"\n};\nconst _hoisted_20 = {\n class: \"d-flex justify-start align-center mt-8\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n \n \n \n const _component_Datepicker = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Datepicker\");\n const _component_A_timeblock = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"A-timeblock\");\n const _component_QuillEditor = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"QuillEditor\");\n const _component_Z_files_upload = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Z-files-upload\");\n \n \n \n const _component_Z_task_readonly_info = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"Z-task-readonly-info\");\n const _component_W_loadable = (0,vue__WEBPACK_IMPORTED_MODULE_1__.resolveComponent)(\"W-loadable\");\n \n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VDialog_index_mjs__WEBPACK_IMPORTED_MODULE_2__.VDialog, {\n modelValue: $data.visible,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.visible = $event),\n \"max-width\": \"750\",\n \"max-height\": \"90%\",\n height: \"700px\",\n persistent: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_W_loadable, {\n content: $data.subtask,\n class: \"h-100\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [$data.editMode ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VCard, {\n key: 0,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask?.id ? 'Upraviť sub task' : 'Vytvoriť sub task'), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[0] || (_cache[0] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.project_code,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.subtask.project_code = $event),\n label: \"Kód projektu\",\n value: $data.subtask.project_code,\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n variant: \"solo\",\n disabled: \"\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"value\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.subtask.master_task_id,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.subtask.master_task_id = $event),\n label: \"Master task\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([{\n error: $data.v$.subtask.master_task_id.$errors.length\n }, \"modal-input\"]),\n items: _ctx.mastertasks,\n \"item-title\": \"name\",\n \"item-value\": \"id\",\n variant: \"solo\",\n clearable: \"\"\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"class\", \"items\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.title,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.subtask.title = $event),\n onFocus: _ctx.onInputFocus,\n class: \"modal-input\",\n label: \"Názov subtasku\",\n variant: \"solo\"\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" TODO: Bialko validacie \"), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", {\n onClick: _cache[5] || (_cache[5] = $event => $options.openDatepicker('datepicker-01')),\n class: \"datepicker-wrapper\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Datepicker, {\n modelValue: $data.subtask.deadline,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.subtask.deadline = $event),\n onFocus: _ctx.onDateFocus,\n ref: \"datepicker-01\",\n \"auto-apply\": true,\n \"min-date\": new Date(),\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input left datepicker-input\", {\n error: $data.v$.subtask.deadline.$errors?.length\n }]),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Deadline\",\n validations: $data.v$.subtask.deadline\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"min-date\", \"class\", \"validations\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input right\", {\n error: $data.v$.subtask._deadline_time.$errors.length\n }]),\n variant: \"solo\",\n modelValue: $data.subtask._deadline_time,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.subtask._deadline_time = $event),\n label: \"Čas\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n type: \"time\",\n onFocus: _ctx.onInputFocus,\n hint: $data.v$.subtask._deadline_time.$errors ? $data.errorUtils.parseErrors($data.v$.subtask._deadline_time.$errors) : null\n }, null, 8 /* PROPS */, [\"modelValue\", \"onFocus\", \"class\", \"hint\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" TODO: Toto tu nema byt ci? \"), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" \\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\"), $data.subtask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 0\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"employee-wrapper\", {\n 'hide-arrow': $data.subtask.employee_id\n }])\n }, [$data.subtask.employee_id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"svg\", {\n key: 0,\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n class: \"dp__icon dp__clear_icon dp__input_icons\",\n \"data-test\": \"clear-icon\",\n onClick: _cache[7] || (_cache[7] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => {\n $options.handleOnRemoveEmployee();\n $data.subtask.employee_id = null;\n $data.subtask.employee = null;\n }, [\"prevent\"]))\n }, _hoisted_5)) : (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: $data.subtask.employee_id,\n \"onUpdate:modelValue\": [_cache[8] || (_cache[8] = $event => $data.subtask.employee_id = $event), _cache[9] || (_cache[9] = $event => $data.employeeValidations[0] ? $data.employeeValidations[0].employee = false : null)],\n label: \"Priradený\",\n items: _ctx.enrichedEmployees,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input\", {\n error: $data.employeeValidations[0]?.employee\n }])\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"items\", \"class\"])], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: $data.subtask.duration,\n \"onUpdate:modelValue\": [_cache[10] || (_cache[10] = $event => $data.subtask.duration = $event), _cache[11] || (_cache[11] = $event => $data.employeeValidations[0] ? $data.employeeValidations[0].duration = false : null)],\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input\", {\n error: $data.employeeValidations[0]?.duration\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Časový odhad\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"modelValue\", \"class\", \"onFocus\"])], 64 /* STABLE_FRAGMENT */)) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 1\n }, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.subtask.employees, (employee, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", {\n key: `employee-${index}`,\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"splitted-inputs remove-employee\", {\n 'hide-arrow': employee?.id\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VAutocomplete_index_mjs__WEBPACK_IMPORTED_MODULE_7__.VAutocomplete, {\n \"custom-filter\": _ctx.customFilter,\n \"match-any\": true,\n modelValue: employee.id,\n \"onUpdate:modelValue\": [$event => employee.id = $event, $event => $data.employeeValidations[index] ? $data.employeeValidations[index].employee = false : null],\n label: \"Priradený\",\n items: _ctx.enrichedEmployees,\n \"item-title\": \"_fullName\",\n \"item-value\": \"id\",\n variant: \"solo\",\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input left\", {\n error: $data.employeeValidations[index]?.employee\n }])\n }, null, 8 /* PROPS */, [\"custom-filter\", \"modelValue\", \"onUpdate:modelValue\", \"items\", \"class\"]), employee.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"svg\", {\n key: 0,\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n class: \"dp__icon dp__clear_icon dp__input_icons\",\n \"data-test\": \"clear-icon\",\n onClick: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => {\n $options.handleOnRemoveEmployee();\n employee.id = null;\n }, [\"prevent\"])\n }, _hoisted_9, 8 /* PROPS */, _hoisted_6)) : (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n modelValue: employee.duration,\n \"onUpdate:modelValue\": [$event => employee.duration = $event, $event => $data.employeeValidations[index] ? $data.employeeValidations[index].duration = false : null],\n class: (0,vue__WEBPACK_IMPORTED_MODULE_1__.normalizeClass)([\"modal-input right\", {\n error: $data.employeeValidations[index]?.duration\n }]),\n variant: \"solo\",\n type: \"number\",\n label: \"Časový odhad\",\n \"append-inner-icon\": \"mdi-clock-outline\",\n onFocus: _ctx.onInputFocus\n }, null, 8 /* PROPS */, [\"modelValue\", \"onUpdate:modelValue\", \"class\", \"onFocus\"])], 2 /* CLASS */);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" \\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\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
\"), !$data.subtask.id ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", _hoisted_10, [((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.timeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(_component_A_timeblock, {\n key: index,\n onUpdateTimeblock: val => $options.updateTimeblock(val, index),\n onRemoveTimeblock: $event => $options.removeTimeblock(index),\n timeblock: timeblock,\n deletable: index > 0,\n editable: \"\",\n ref_for: true,\n ref: `timetable-${index}`\n }, null, 8 /* PROPS */, [\"onUpdateTimeblock\", \"onRemoveTimeblock\", \"timeblock\", \"deletable\"]);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"button\", {\n onClick: _cache[12] || (_cache[12] = $event => $data.timeblocks.push({\n date: null,\n starts_at_time: null,\n ends_at_time: null\n }))\n }, \" Pridať časový blok \")])])) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(true), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(vue__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n key: 3\n }, (0,vue__WEBPACK_IMPORTED_MODULE_1__.renderList)($data.subtask.timeblocks, (timeblock, index) => {\n return (0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementBlock)(\"div\", {\n key: index,\n class: \"timeblock w-100\"\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Datepicker, {\n \"model-value\": timeblock.start.substring(0, 10),\n format: \"dd.MM.yyyy\",\n locale: \"sk\",\n \"select-text\": \"Vybrať\",\n \"cancel-text\": \"Zrušiť\",\n placeholder: \"Dátum\",\n \"auto-apply\": true,\n \"enable-time-picker\": false,\n readonly: \"\",\n class: \"mb-5 modal-input\"\n }, null, 8 /* PROPS */, [\"model-value\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n value: timeblock.start.substring(11, 16),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Začiatok\"\n }, null, 8 /* PROPS */, [\"value\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VTextField_index_mjs__WEBPACK_IMPORTED_MODULE_6__.VTextField, {\n value: timeblock.end.substring(11, 16),\n type: \"time\",\n variant: \"solo\",\n \"bg-color\": \"white\",\n label: \"Koniec\"\n }, null, 8 /* PROPS */, [\"value\"])])]);\n }), 128 /* KEYED_FRAGMENT */)), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_13, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_QuillEditor, {\n ref: \"description\",\n modelValue: $data.subtask.description,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.subtask.description = $event),\n placeholder: \"Popis\",\n theme: \"snow\",\n class: \"rich-text-editor\",\n onInput: _cache[14] || (_cache[14] = $event => $data.subtask.description = $event.srcElement.innerHTML)\n }, null, 8 /* PROPS */, [\"modelValue\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Z_files_upload, {\n class: \"mt-15 files\",\n files: $data.subtask.files,\n onFilesUploaded: $options.filesUploaded,\n \"is-saving\": $data.isSaving\n }, null, 8 /* PROPS */, [\"files\", \"onFilesUploaded\", \"is-saving\"])]),\n _: 1 /* STABLE */\n }), !$data.isSaving ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 0,\n class: \"button primary\",\n onClick: _cache[15] || (_cache[15] = $event => $options.save())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask.id ? 'UPRAVIŤ' : 'VYTVORIŤ'), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 1,\n class: \"button primary disabled\",\n disabled: \"\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)((0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)(_ctx.$t('Ukladám...')), 1 /* TEXT */)]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_3__.VCard, {\n key: 1,\n height: \"100%\",\n class: \"d-flex flex-column scrolling\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_14, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", null, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask._master_task.project_code), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask._master_task.name), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_4__.VIcon, {\n onClick: _cache[16] || (_cache[16] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.closeModal(), [\"stop\"])),\n icon: \"mdi-close\",\n size: \"large\",\n class: \"pb-5\"\n })]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"h1\", null, (0,vue__WEBPACK_IMPORTED_MODULE_1__.toDisplayString)($data.subtask.title), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"img\", {\n class: \"icon\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/pencil.svg */ \"./src/plugins/app/_img/icons/pencil.svg\"),\n alt: \"pencil-icon\",\n onClick: _cache[17] || (_cache[17] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)((...args) => $options.toggleEditMode && $options.toggleEditMode(...args), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_17), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"img\", {\n class: \"icon trash\",\n src: __webpack_require__(/*! @/plugins/app/_img/icons/bin.svg */ \"./src/plugins/app/_img/icons/bin.svg\"),\n alt: \"trash-icon\",\n onClick: _cache[18] || (_cache[18] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.openDeleteTaskModal($data.subtask), [\"stop\"]))\n }, null, 8 /* PROPS */, _hoisted_18)])]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VCard_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VCardActions, {\n class: \"d-flex flex-column modal-content\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_19, [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(_component_Z_task_readonly_info, {\n subtask: $data.subtask,\n onCloseModal: $options.closeModal,\n onUpdateSubtask: $options.updateSubtask\n }, null, 8 /* PROPS */, [\"subtask\", \"onCloseModal\", \"onUpdateSubtask\"]), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createCommentVNode)(\" \\n\\t\\t\\t\\t\\t\\t\\t
Termín
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\"), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createElementVNode)(\"div\", _hoisted_20, [!$data.subtask.is_finished ? ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 0,\n class: \"done-btn\",\n onClick: _cache[19] || (_cache[19] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.showCompleteTaskModal(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Dokončiť\")]),\n _: 1 /* STABLE */\n })) : ((0,vue__WEBPACK_IMPORTED_MODULE_1__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createBlock)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n key: 1,\n class: \"button secondary\",\n onClick: _cache[20] || (_cache[20] = (0,vue__WEBPACK_IMPORTED_MODULE_1__.withModifiers)($event => $options.showCompleteTaskModal(), [\"stop\"]))\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Znovu otvoriť\")]),\n _: 1 /* STABLE */\n })), (0,vue__WEBPACK_IMPORTED_MODULE_1__.createVNode)(vuetify_lib_components_VBtn_index_mjs__WEBPACK_IMPORTED_MODULE_8__.VBtn, {\n class: \"button secondary\",\n onClick: _cache[21] || (_cache[21] = $event => $options.closeModal())\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_1__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_1__.createTextVNode)(\"Uložiť zmeny\")]),\n _: 1 /* STABLE */\n })])])]),\n\n _: 1 /* STABLE */\n })]),\n\n _: 1 /* STABLE */\n }))]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"content\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"modelValue\"]);\n}\n\n/* Vuetify */\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/z-task-modal.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%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");
/***/ }),
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 31425f9..b6ad9bf 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', '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?");
+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 getScheduledTime(subtasks) {\n let scheduledTime = 0;\n subtasks.forEach(subtask => scheduledTime += subtask.spent_time);\n return scheduledTime;\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?");
/***/ }),
@@ -48,7 +48,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var date
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text-inherit[data-v-c3598ac4] {\\n color: inherit !important;\\n}\\n.event[data-v-c3598ac4] {\\n height: 100%;\\n}\\n.event__office-footer[data-v-c3598ac4] {\\n padding: 5px 15px;\\n}\\n.event__office-footer img[data-v-c3598ac4] {\\n height: 19px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.event .custom-event-body[data-v-c3598ac4] {\\n padding: 20px 10px;\\n width: 100%;\\n}\\n.event__footer[data-v-c3598ac4] {\\n flex-flow: row wrap;\\n justify-content: center;\\n alight-items: center;\\n padding-top: 15px;\\n border-top: 1px solid rgba(33, 33, 33, 0.08);\\n}\\n.event__footer__button[data-v-c3598ac4] {\\n box-shadow: none !important;\\n margin-bottom: 8px;\\n padding: 9px !important;\\n min-height: -moz-fit-content;\\n min-height: fit-content;\\n height: -moz-fit-content;\\n height: fit-content;\\n min-width: -moz-fit-content;\\n min-width: fit-content;\\n width: -moz-fit-content;\\n width: fit-content;\\n}\\n.event__footer__button.completed[data-v-c3598ac4] {\\n background: #06dece;\\n}\\n.event__footer__button img[data-v-c3598ac4] {\\n width: 18px;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/_components/a-timeline-event.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".text-inherit[data-v-c3598ac4] {\\n color: inherit !important;\\n}\\n.event[data-v-c3598ac4] {\\n height: 100%;\\n}\\n.event__office-footer[data-v-c3598ac4] {\\n padding: 5px 15px;\\n}\\n.event__office-footer img[data-v-c3598ac4] {\\n height: 19px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n user-select: none;\\n}\\n.event .custom-event-body[data-v-c3598ac4] {\\n padding: 20px 10px;\\n width: 100%;\\n}\\n.event__footer-wrapper[data-v-c3598ac4] {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n border-top: 1px solid rgba(33, 33, 33, 0.08);\\n}\\n.event__footer-wrapper__top[data-v-c3598ac4] {\\n padding: 10px 10px 0 10px;\\n}\\n.event__footer[data-v-c3598ac4] {\\n flex-flow: row wrap;\\n justify-content: center;\\n alight-items: center;\\n padding-top: 15px;\\n border-top: 1px solid rgba(33, 33, 33, 0.08);\\n}\\n.event__footer__button[data-v-c3598ac4] {\\n box-shadow: none !important;\\n margin-bottom: 8px;\\n padding: 9px !important;\\n min-height: -moz-fit-content;\\n min-height: fit-content;\\n height: -moz-fit-content;\\n height: fit-content;\\n min-width: -moz-fit-content;\\n min-width: fit-content;\\n width: -moz-fit-content;\\n width: fit-content;\\n}\\n.event__footer__button.completed[data-v-c3598ac4] {\\n background: #06dece;\\n}\\n.event__footer__button img[data-v-c3598ac4] {\\n width: 18px;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/_components/a-timeline-event.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
/***/ }),
@@ -59,7 +59,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nod
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vuecal[data-v-367dbc50] {\\n box-shadow: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] {\\n width: 100%;\\n height: 100%;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__cells {\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n border-left: 1px solid rgba(0, 0, 0, 0.1);\\n padding-left: 20px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__cells::-webkit-scrollbar {\\n display: none;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__flex {\\n flex-wrap: nowrap !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__time-column {\\n width: 80px;\\n box-shadow: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__time-column .time-column-line {\\n width: 20px;\\n height: 0;\\n border: 1px solid rgba(33, 33, 33, 0.08);\\n margin-left: 10px;\\n}\\n@media (max-width: 450px) {\\n.calendar-wrapper[data-v-367dbc50] .vuecal__time-column {\\n width: 70px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__time-column .time-column-line {\\n width: 10px;\\n}\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__cell:before {\\n border: none;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__scrollable-body {\\n position: relative;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__split-days-headers {\\n position: absolute;\\n top: 0;\\n left: 20px;\\n z-index: 999;\\n background: white;\\n padding-bottom: 15px;\\n width: calc(100% - 20px);\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__cell-split {\\n margin-right: 20px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header {\\n height: -moz-fit-content;\\n height: fit-content;\\n min-height: 100%;\\n padding-right: 20px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .weekday-label {\\n justify-content: start !important;\\n font-size: 18px;\\n font-weight: 700;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .day-name {\\n text-align: left;\\n font-size: 17px;\\n font-weight: 500;\\n text-transform: capitalize;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time {\\n background: rgba(0, 0, 0, 0.04);\\n border-radius: 24px;\\n padding: 10px 10px;\\n margin-top: 10px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .text-wrap {\\n width: -moz-min-content;\\n width: min-content;\\n margin-left: 12px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .text-wrap h1 {\\n font-size: 14px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .text-wrap p {\\n font-weight: 400;\\n font-size: 15px;\\n line-height: normal;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .unscheduled-time-initials {\\n width: 30px;\\n height: 30px;\\n background: #6200EE;\\n border-radius: 50%;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .unscheduled-time-initials p {\\n font-weight: 400;\\n font-size: 15px;\\n color: white;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body {\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body::-webkit-scrollbar {\\n display: none;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__now-line {\\n display: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal:not(.vuecal--day-view) .vuecal__cell--selected:not(.vuecal__cell--today),\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell--current:not(.vuecal__cell--today),\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell--today,\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell--highlighted,\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell--selected {\\n border-radius: 16px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell-split--weekend {\\n background-color: rgba(255, 124, 124, 0.3) !important;\\n border-radius: 16px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event {\\n border-radius: 16px;\\n min-height: 70px !important;\\n text-align: left;\\n background: rgb(248, 248, 248);\\n transition: min-height 0.4s, height 0.4s, box-shadow 0.4s, width 0.4s, left 0.4s;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:has(.completed) {\\n background: rgb(251, 251, 251) !important;\\n border: 1px solid #cccccc !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:has(.event__body--non-working-hours) {\\n background: repeating-linear-gradient(135deg, rgb(215, 215, 215), rgb(215, 215, 215) 1px, rgb(224, 224, 224) 1px, rgb(224, 224, 224) 20px);\\n border: 1px solid rgb(215, 215, 215);\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event.vuecal__event--focus {\\n z-index: 100 !important;\\n min-height: 350px !important;\\n width: 100% !important;\\n left: 0 !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus):has(.micro-event) .event__body {\\n padding: 5px !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus):has(.short-event) .event__body:not(.micro-event) {\\n padding: 10px 5px !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .short-event .project-code {\\n display: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .short-event h3 {\\n font-size: 16px !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .mini-event .event-content {\\n width: 100%;\\n padding: 5px 10px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .mini-event .event-initials-wrapper .event-initials {\\n margin-right: 0;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .mini-event h3 {\\n font-size: 14px !important;\\n text-overflow: ellipsis;\\n width: calc(100% - 35px);\\n white-space: nowrap;\\n overflow: hidden;\\n margin: 0;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .mini-event .event-initials-date {\\n display: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .micro-event .event__footer {\\n display: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event .project-code {\\n margin: 0 0 20px;\\n display: block;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event h3 {\\n font-size: 15px;\\n font-weight: 400;\\n color: Black;\\n margin: 0 0 10px;\\n max-height: 100%;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event small {\\n color: black;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event .event-initials-wrapper {\\n margin-bottom: 20px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event .event-initials {\\n height: 30px;\\n width: 30px;\\n border: 1px solid black;\\n border-radius: 50%;\\n padding: 5px;\\n margin-right: 7px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event .event-initials small {\\n font-size: 11px;\\n}\\n.not-approved[data-v-367dbc50] {\\n background: repeating-linear-gradient(135deg, rgb(215, 215, 215), rgb(215, 215, 215) 1px, rgb(224, 224, 224) 1px, rgb(224, 224, 224) 20px) !important;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/_components/z-timeline.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".vuecal[data-v-367dbc50] {\\n box-shadow: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] {\\n width: 100%;\\n height: 100%;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__cells {\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n border-left: 1px solid rgba(0, 0, 0, 0.1);\\n padding-left: 20px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__cells::-webkit-scrollbar {\\n display: none;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__flex {\\n flex-wrap: nowrap !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__time-column {\\n width: 80px;\\n box-shadow: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__time-column .time-column-line {\\n width: 20px;\\n height: 0;\\n border: 1px solid rgba(33, 33, 33, 0.08);\\n margin-left: 10px;\\n}\\n@media (max-width: 450px) {\\n.calendar-wrapper[data-v-367dbc50] .vuecal__time-column {\\n width: 70px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__time-column .time-column-line {\\n width: 10px;\\n}\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__cell:before {\\n border: none;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__scrollable-body {\\n position: relative;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__split-days-headers {\\n position: absolute;\\n top: 0;\\n left: 20px;\\n z-index: 999;\\n background: white;\\n padding-bottom: 15px;\\n width: calc(100% - 20px);\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__cell-split {\\n margin-right: 20px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header {\\n height: -moz-fit-content;\\n height: fit-content;\\n min-height: 100%;\\n padding-right: 20px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .weekday-label {\\n justify-content: start !important;\\n font-size: 18px;\\n font-weight: 700;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .day-name {\\n text-align: left;\\n font-size: 17px;\\n font-weight: 500;\\n text-transform: capitalize;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time {\\n background: rgba(0, 0, 0, 0.04);\\n border-radius: 24px;\\n padding: 10px 10px;\\n margin-top: 10px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .text-wrap {\\n width: -moz-min-content;\\n width: min-content;\\n margin-left: 12px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .text-wrap h1 {\\n font-size: 14px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .text-wrap p {\\n font-weight: 400;\\n font-size: 15px;\\n line-height: normal;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .unscheduled-time-initials {\\n width: 30px;\\n height: 30px;\\n background: #6200EE;\\n border-radius: 50%;\\n}\\n.calendar-wrapper[data-v-367dbc50] .day-split-header .unscheduled-time .unscheduled-time-initials p {\\n font-weight: 400;\\n font-size: 15px;\\n color: white;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body {\\n -ms-overflow-style: none;\\n scrollbar-width: none;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body::-webkit-scrollbar {\\n display: none;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__now-line {\\n display: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal:not(.vuecal--day-view) .vuecal__cell--selected:not(.vuecal__cell--today),\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell--current:not(.vuecal__cell--today),\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell--today,\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell--highlighted,\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell--selected {\\n border-radius: 16px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__cell-split--weekend {\\n background-color: rgba(255, 124, 124, 0.3) !important;\\n border-radius: 16px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event {\\n border-radius: 16px;\\n min-height: 70px !important;\\n text-align: left;\\n background: rgb(248, 248, 248);\\n transition: min-height 0.4s, height 0.4s, box-shadow 0.4s, width 0.4s, left 0.4s;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:has(.completed) {\\n background: rgb(251, 251, 251) !important;\\n border: 1px solid #cccccc !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:has(.event__body--non-working-hours) {\\n background: repeating-linear-gradient(135deg, rgb(215, 215, 215), rgb(215, 215, 215) 1px, rgb(224, 224, 224) 1px, rgb(224, 224, 224) 20px);\\n border: 1px solid rgb(215, 215, 215);\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event.vuecal__event--focus {\\n z-index: 100 !important;\\n min-height: 350px !important;\\n height: -moz-fit-content !important;\\n height: fit-content !important;\\n width: 100% !important;\\n left: 0 !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event.vuecal__event--focus .event__footer-wrapper {\\n position: relative;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event.vuecal__event--focus .event__footer-wrapper__top {\\n padding: 10px 0 0 0;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus):has(.micro-event) .event__body {\\n padding: 5px !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus):has(.short-event) .event__body:not(.micro-event) {\\n padding: 10px 5px !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .short-event .project-code {\\n display: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .short-event h3 {\\n font-size: 16px !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .mini-event .event-content {\\n width: 100%;\\n padding: 5px 10px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .mini-event .event-initials-wrapper .event-initials {\\n margin-right: 0;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .mini-event h3 {\\n font-size: 14px !important;\\n text-overflow: ellipsis;\\n width: calc(100% - 35px);\\n white-space: nowrap;\\n overflow: hidden;\\n margin: 0;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .mini-event .event-initials-date {\\n display: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event:not(.vuecal__event--focus) .micro-event .event__footer {\\n display: none !important;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event .project-code {\\n margin: 0 0 20px;\\n display: block;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event h3 {\\n font-size: 15px;\\n font-weight: 400;\\n color: Black;\\n margin: 0 0 10px;\\n max-height: 100%;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event small {\\n color: black;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event .event-initials-wrapper {\\n margin-bottom: 20px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event .event-initials {\\n height: 30px;\\n width: 30px;\\n border: 1px solid black;\\n border-radius: 50%;\\n padding: 5px;\\n margin-right: 7px;\\n}\\n.calendar-wrapper[data-v-367dbc50] .vuecal__body .vuecal__event .event-initials small {\\n font-size: 11px;\\n}\\n.not-approved[data-v-367dbc50] {\\n background: repeating-linear-gradient(135deg, rgb(215, 215, 215), rgb(215, 215, 215) 1px, rgb(224, 224, 224) 1px, rgb(224, 224, 224) 20px) !important;\\n}\", \"\"]);\n// Exports\n/* harmony default export */ __webpack_exports__[\"default\"] = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/_components/z-timeline.vue?./node_modules/css-loader/dist/cjs.js??clonedRuleSet-27.use%5B1%5D!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-27.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-27.use%5B3%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use%5B0%5D");
/***/ }),
@@ -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 class: \"text-inherit\"\n};\nconst _hoisted_5 = {\n class: \"text-inherit\"\n};\nconst _hoisted_6 = {\n class: \"d-flex align-center event-details event-initials-wrapper\"\n};\nconst _hoisted_7 = {\n class: \"text-inherit\"\n};\nconst _hoisted_8 = {\n class: \"event-initials-date text-inherit\"\n};\nconst _hoisted_9 = {\n key: 2,\n class: \"d-flex align-center\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"ml-1\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"d-flex align-center mt-1\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"event__office-footer\"\n};\nconst _hoisted_13 = [\"src\"];\nconst _hoisted_14 = {\n class: \"event__footer d-flex\"\n};\nconst _hoisted_15 = [\"src\"];\nconst _hoisted_16 = [\"src\"];\nconst _hoisted_17 = [\"src\"];\nconst _hoisted_18 = [\"src\"];\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = [\"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: $setup.eventColor.backgroundColor,\n color: $setup.eventColor.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\", {\n key: 0,\n class: \"project-code\",\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n color: $setup.eventColor.color\n })\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.subtask.project_code), 5 /* TEXT, STYLE */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", _hoisted_4, (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: activatorProps\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeProps)((0,vue__WEBPACK_IMPORTED_MODULE_0__.guardReactiveProps)(activatorProps)), [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", _hoisted_5, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event?.blocker?.approved ? $setup.props.event?.blocker?.name : $setup.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_6, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: \"event-initials d-flex justify-center align-center\",\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n borderColor: $setup.eventColor.color\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"small\", _hoisted_7, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.initials), 1 /* TEXT */)], 4 /* STYLE */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"small\", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.date?.toLocaleDateString('sk-SK')), 1 /* TEXT */)]), ['subtask'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_9, [(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_10, (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), ['office365'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VIcon, {\n icon: \"mdi-pin-outline\",\n size: \"small\"\n }), $setup.props.event?.subtask.office365_location ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"small\", {\n key: 0,\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n color: $setup.eventColor.color\n }),\n class: \"ml-1\"\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event?.subtask.office365_location), 5 /* TEXT, STYLE */)) : ((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: \"Miesto\",\n location: \"bottom\"\n }, {\n activator: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n props\n }) => [!props.event?.subtask?.office365_location ? ((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 style: {\n color: $setup.eventColor.color\n }\n }, props), (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.office365_location) + \"*\", 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_12, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.office365,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_13)])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_14, [$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_15)]),\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_16)]),\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_17)]),\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_18)]),\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_19)]),\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_20)]),\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_21)]),\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 class: \"text-inherit\"\n};\nconst _hoisted_5 = {\n class: \"text-inherit\"\n};\nconst _hoisted_6 = {\n class: \"event__footer-wrapper__top\"\n};\nconst _hoisted_7 = {\n class: \"d-flex align-center event-details event-initials-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"text-inherit\"\n};\nconst _hoisted_9 = {\n class: \"event-initials-date text-inherit\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"d-flex align-center\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"ml-1\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"d-flex align-center mt-1\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"event__office-footer\"\n};\nconst _hoisted_14 = [\"src\"];\nconst _hoisted_15 = {\n class: \"event__footer d-flex\"\n};\nconst _hoisted_16 = [\"src\"];\nconst _hoisted_17 = [\"src\"];\nconst _hoisted_18 = [\"src\"];\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = [\"src\"];\nconst _hoisted_22 = [\"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: $setup.eventColor.backgroundColor,\n color: $setup.eventColor.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\", {\n key: 0,\n class: \"project-code\",\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n color: $setup.eventColor.color\n })\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.subtask.project_code), 5 /* TEXT, STYLE */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", _hoisted_4, (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: activatorProps\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeProps)((0,vue__WEBPACK_IMPORTED_MODULE_0__.guardReactiveProps)(activatorProps)), [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h3\", _hoisted_5, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event?.blocker?.approved ? $setup.props.event?.blocker?.name : $setup.props.event?.blocker?.name + '*'), 1 /* TEXT */)], 16 /* FULL_PROPS */)]),\n\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"text\"]))], 2 /* CLASS */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: \"event__footer-wrapper\",\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n backgroundColor: $setup.eventColor.backgroundColor\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_6, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_7, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: \"event-initials d-flex justify-center align-center\",\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n borderColor: $setup.eventColor.color\n })\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"small\", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.initials), 1 /* TEXT */)], 4 /* STYLE */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"small\", _hoisted_9, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event.date?.toLocaleDateString('sk-SK')), 1 /* TEXT */)]), ['subtask'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_10, [(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_11, (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), ['office365'].includes($props.event.type) ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(vuetify_lib_components_VIcon_index_mjs__WEBPACK_IMPORTED_MODULE_1__.VIcon, {\n icon: \"mdi-pin-outline\",\n size: \"small\"\n }), $setup.props.event?.subtask.office365_location ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"small\", {\n key: 0,\n style: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeStyle)({\n color: $setup.eventColor.color\n }),\n class: \"ml-1\"\n }, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($setup.props.event?.subtask.office365_location), 5 /* TEXT, STYLE */)) : ((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: \"Miesto\",\n location: \"bottom\"\n }, {\n activator: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n props\n }) => [!props.event?.subtask?.office365_location ? ((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 style: {\n color: $setup.eventColor.color\n }\n }, props), (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(_ctx.office365_location) + \"*\", 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)]), $setup.isOfficeEvent ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_13, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"img\", {\n src: $setup.office365,\n alt: \"\"\n }, null, 8 /* PROPS */, _hoisted_14)])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_15, [$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_16)]),\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\", \"prevent\"]))\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_17)]),\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\", \"prevent\"]))\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_18)]),\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_19)]),\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_20)]),\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\", \"prevent\"]))\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_21)]),\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\", \"prevent\"]))\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_22)]),\n _: 1 /* STABLE */\n })], 64 /* STABLE_FRAGMENT */)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)])], 4 /* STYLE */)], 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");
/***/ }),
@@ -167,7 +167,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
/***/ (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\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-367dbc50\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"calendar-wrapper\"\n};\nconst _hoisted_2 = {\n class: \"w-[120px] h-100 d-flex flex-column\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"d-flex align-center\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = {\n class: \"weekday-label\"\n};\nconst _hoisted_6 = {\n key: 1,\n class: \"d-flex align-center\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"weekday-label\"\n};\nconst _hoisted_9 = {\n key: 2\n};\nconst _hoisted_10 = {\n class: \"day-name\"\n};\nconst _hoisted_11 = {\n class: \"unscheduled-time-initials d-flex align-center justify-center\"\n};\nconst _hoisted_12 = {\n class: \"text-wrap me-4\"\n};\nconst _hoisted_13 = {\n class: \"mb-0 mt-0 unscheduled-time-name\"\n};\nconst _hoisted_14 = {\n class: \"mb-0 mt-0\"\n};\nconst _hoisted_15 = {\n class: \"d-flex justify-center\"\n};\nconst _hoisted_16 = {\n class: \"d-flex justify-center\"\n};\nconst _hoisted_17 = {\n style: {\n \"margin-top\": \"-9px\"\n }\n};\nconst _hoisted_18 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: \"time-column-line\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_19 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"vuecal__time-cell-line hour\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_20 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"vuecal__time-cell-line\",\n style: {\n \"margin-top\": \"25px\"\n }\n}, null, -1 /* HOISTED */));\nconst _hoisted_21 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"vuecal__time-cell-line\",\n style: {\n \"margin-top\": \"50px\"\n }\n}, null, -1 /* HOISTED */));\nconst _hoisted_22 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"vuecal__time-cell-line\",\n style: {\n \"margin-top\": \"75px\"\n }\n}, null, -1 /* HOISTED */));\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_A_timeline_event = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"A-timeline-event\");\n const _component_Vue_cal = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Vue-cal\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Vue_cal, {\n \"hide-view-selector\": true,\n \"hide-title-bar\": true,\n \"disable-views\": ['years', 'year', 'month', 'week'],\n \"active-view\": \"day\",\n \"selected-date\": $props.calConfig.date,\n onEventClick: $options.taskClicked,\n \"editable-events\": $data.vueCalConfig.editing,\n events: $props.calData.tasks,\n unscheduledTime: $props.calData.unscheduled_times,\n \"overlaps-per-time-step\": false,\n showTimeInCells: false,\n \"time-cell-height\": $data.timeCellHeight,\n \"snap-to-time\": 15,\n \"scroll-to-hour\": $props.calConfig.scrollHour,\n \"split-days\": $props.splits,\n \"sticky-split-labels\": true,\n \"min-split-width\": 140,\n onReady: _cache[0] || (_cache[0] = $event => $options.onReady()),\n onViewChange: $options.weekChanged,\n onEventDrop: $options.eventMoved,\n onEventFocus: $options.eventFocused\n }, {\n \"split-label\": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n split\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [split.date ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_3, [split.isHomeoffice ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", {\n key: 0,\n src: __webpack_require__(/*! @/plugins/app/_img/icons/home.svg */ \"./src/plugins/app/_img/icons/home.svg\"),\n class: \"mr-2\"\n }, null, 8 /* PROPS */, _hoisted_4)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_5, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.getHeadingDate(split.date)), 1 /* TEXT */)])) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_6, [split.isHomeoffice ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", {\n key: 0,\n src: __webpack_require__(/*! @/plugins/app/_img/icons/home.svg */ \"./src/plugins/app/_img/icons/home.svg\"),\n class: \"mr-2\"\n }, null, 8 /* PROPS */, _hoisted_7)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.name), 1 /* TEXT */)])), split.date ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_10, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.date.toLocaleDateString('en-EN', {\n weekday: 'long'\n })), 1 /* TEXT */)])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"unscheduled-time d-flex align-center text-left\", {\n 'vuecal__cell-split--weekend': split.isWeekend\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.initials), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_13, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.fullname), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", _hoisted_14, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.unscheduledTime) + \" h\", 1 /* TEXT */)])], 2 /* CLASS */)])]),\n\n \"time-cell\": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n hours,\n minutes\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_15, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_17, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(hours) + \":\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(String(minutes).padStart(2, '0')), 1 /* TEXT */), _hoisted_18, _hoisted_19]), _hoisted_20, _hoisted_21, _hoisted_22])]),\n event: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n event\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_A_timeline_event, {\n event: event,\n onEditBlocker: $options.editBlocker,\n onDeleteBlocker: $options.deleteBlocker,\n onCompleteTask: $options.completeTask,\n onToggleTimeblockIsFinished: $options.toggleTimeblockIsFinished,\n onEditTask: $options.editTask,\n onDeleteTimeblockInTask: $options.deleteTimeBlockInTask\n }, null, 8 /* PROPS */, [\"event\", \"onEditBlocker\", \"onDeleteBlocker\", \"onCompleteTask\", \"onToggleTimeblockIsFinished\", \"onEditTask\", \"onDeleteTimeblockInTask\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"selected-date\", \"onEventClick\", \"editable-events\", \"events\", \"unscheduledTime\", \"time-cell-height\", \"scroll-to-hour\", \"split-days\", \"onViewChange\", \"onEventDrop\", \"onEventFocus\"])]);\n}\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/_components/z-timeline.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%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\nconst _withScopeId = n => ((0,vue__WEBPACK_IMPORTED_MODULE_0__.pushScopeId)(\"data-v-367dbc50\"), n = n(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.popScopeId)(), n);\nconst _hoisted_1 = {\n class: \"calendar-wrapper\"\n};\nconst _hoisted_2 = {\n class: \"w-[120px] h-100 d-flex flex-column\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"d-flex align-center\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = {\n class: \"weekday-label\"\n};\nconst _hoisted_6 = {\n key: 1,\n class: \"d-flex align-center\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"weekday-label\"\n};\nconst _hoisted_9 = {\n key: 2\n};\nconst _hoisted_10 = {\n class: \"day-name\"\n};\nconst _hoisted_11 = {\n class: \"unscheduled-time-initials d-flex align-center justify-center\"\n};\nconst _hoisted_12 = {\n class: \"text-wrap me-4\"\n};\nconst _hoisted_13 = {\n class: \"mb-0 mt-0 unscheduled-time-name\"\n};\nconst _hoisted_14 = {\n class: \"mb-0 mt-0\"\n};\nconst _hoisted_15 = {\n class: \"mb-0 mt-0\",\n style: {\n \"font-weight\": \"400\"\n }\n};\nconst _hoisted_16 = {\n class: \"d-flex justify-center\"\n};\nconst _hoisted_17 = {\n class: \"d-flex justify-center\"\n};\nconst _hoisted_18 = {\n style: {\n \"margin-top\": \"-9px\"\n }\n};\nconst _hoisted_19 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: \"time-column-line\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_20 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"vuecal__time-cell-line hour\"\n}, null, -1 /* HOISTED */));\nconst _hoisted_21 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"vuecal__time-cell-line\",\n style: {\n \"margin-top\": \"25px\"\n }\n}, null, -1 /* HOISTED */));\nconst _hoisted_22 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"vuecal__time-cell-line\",\n style: {\n \"margin-top\": \"50px\"\n }\n}, null, -1 /* HOISTED */));\nconst _hoisted_23 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"vuecal__time-cell-line\",\n style: {\n \"margin-top\": \"75px\"\n }\n}, null, -1 /* HOISTED */));\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_A_timeline_event = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"A-timeline-event\");\n const _component_Vue_cal = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"Vue-cal\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_Vue_cal, {\n \"hide-view-selector\": true,\n \"hide-title-bar\": true,\n \"disable-views\": ['years', 'year', 'month', 'week'],\n \"active-view\": \"day\",\n \"selected-date\": $props.calConfig.date,\n onEventClick: $options.taskClicked,\n \"editable-events\": $data.vueCalConfig.editing,\n events: $props.calData.tasks,\n unscheduledTime: $props.calData.unscheduled_times,\n \"overlaps-per-time-step\": false,\n showTimeInCells: false,\n \"time-cell-height\": $data.timeCellHeight,\n \"snap-to-time\": 15,\n \"scroll-to-hour\": $props.calConfig.scrollHour,\n \"split-days\": $props.splits,\n \"sticky-split-labels\": true,\n \"min-split-width\": 140,\n onReady: _cache[0] || (_cache[0] = $event => $options.onReady()),\n onViewChange: $options.weekChanged,\n onEventDrop: $options.eventMoved,\n onEventFocus: $options.eventFocused\n }, {\n \"split-label\": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n split\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [split.date ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_3, [split.isHomeoffice ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", {\n key: 0,\n src: __webpack_require__(/*! @/plugins/app/_img/icons/home.svg */ \"./src/plugins/app/_img/icons/home.svg\"),\n class: \"mr-2\"\n }, null, 8 /* PROPS */, _hoisted_4)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_5, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)($options.getHeadingDate(split.date)), 1 /* TEXT */)])) : ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_6, [split.isHomeoffice ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"img\", {\n key: 0,\n src: __webpack_require__(/*! @/plugins/app/_img/icons/home.svg */ \"./src/plugins/app/_img/icons/home.svg\"),\n class: \"mr-2\"\n }, null, 8 /* PROPS */, _hoisted_7)) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_8, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.name), 1 /* TEXT */)])), split.date ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"span\", _hoisted_9, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_10, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.date.toLocaleDateString('en-EN', {\n weekday: 'long'\n })), 1 /* TEXT */)])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", {\n class: (0,vue__WEBPACK_IMPORTED_MODULE_0__.normalizeClass)([\"unscheduled-time d-flex align-center text-left\", {\n 'vuecal__cell-split--weekend': split.isWeekend\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_11, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", null, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.initials), 1 /* TEXT */)]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_12, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_13, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.fullname), 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", _hoisted_14, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.unscheduledTime) + \" h\", 1 /* TEXT */), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"h1\", _hoisted_15, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(split.scheduledTime) + \" h\", 1 /* TEXT */)])], 2 /* CLASS */)])]),\n\n \"time-cell\": (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n hours,\n minutes\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_16, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", _hoisted_17, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"p\", _hoisted_18, (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(hours) + \":\" + (0,vue__WEBPACK_IMPORTED_MODULE_0__.toDisplayString)(String(minutes).padStart(2, '0')), 1 /* TEXT */), _hoisted_19, _hoisted_20]), _hoisted_21, _hoisted_22, _hoisted_23])]),\n event: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(({\n event\n }) => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_A_timeline_event, {\n event: event,\n onEditBlocker: $options.editBlocker,\n onDeleteBlocker: $options.deleteBlocker,\n onCompleteTask: $options.completeTask,\n onToggleTimeblockIsFinished: $options.toggleTimeblockIsFinished,\n onEditTask: $options.editTask,\n onDeleteTimeblockInTask: $options.deleteTimeBlockInTask\n }, null, 8 /* PROPS */, [\"event\", \"onEditBlocker\", \"onDeleteBlocker\", \"onCompleteTask\", \"onToggleTimeblockIsFinished\", \"onEditTask\", \"onDeleteTimeblockInTask\"])]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"selected-date\", \"onEventClick\", \"editable-events\", \"events\", \"unscheduledTime\", \"time-cell-height\", \"scroll-to-hour\", \"split-days\", \"onViewChange\", \"onEventDrop\", \"onEventFocus\"])]);\n}\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/_components/z-timeline.vue?./node_modules/webpack-plugin-vuetify/dist/scriptLoader.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use%5B0%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");
/***/ }),
diff --git a/app/dist/js/src_plugins_tm_dashboard_tasks_tasks_vue.js b/app/dist/js/src_plugins_tm_dashboard_tasks_tasks_vue.js
index 53724eb..aef0ca7 100644
--- a/app/dist/js/src_plugins_tm_dashboard_tasks_tasks_vue.js
+++ b/app/dist/js/src_plugins_tm_dashboard_tasks_tasks_vue.js
@@ -26,7 +26,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _plu
/***/ (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 _components_a_tasks_filter_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_components/a-tasks-filter.vue */ \"./src/plugins/tm@dashboard/tasks/_components/a-tasks-filter.vue\");\n/* harmony import */ var _plugins_tm_dashboard_components_z_timeline_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@dashboard/_components/z-timeline.vue */ \"./src/plugins/tm@dashboard/_components/z-timeline.vue\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/esm/subDays/index.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/esm/addDays/index.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_utils/timeline.utils */ \"./src/plugins/tm@dashboard/tasks/_utils/timeline.utils.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _mixins_Filter_mixin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../_mixins/Filter.mixin */ \"./src/plugins/tm@dashboard/_mixins/Filter.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_Filter_mixin__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n components: {\n ATaskFilter: _components_a_tasks_filter_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ZTimeline: _plugins_tm_dashboard_components_z_timeline_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n data() {\n return {\n hideCal: false,\n filter: null,\n subtasks: null,\n config: {\n date: (0,date_fns__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(new Date(), 1),\n scrollHour: 7\n }\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_7__.mapGetters)('auth', ['user']),\n splitDays() {\n const days = [];\n const homeoffice = {};\n const schedulesCapacityBySplit = {};\n const now = moment__WEBPACK_IMPORTED_MODULE_3___default()();\n const dailyCapacityMinutes = (this.user.work_end - this.user.work_start) * 60;\n this.timelineData.tasks.forEach(task => {\n if (task.type == 'non-working-hours' || task.subtask?.is_finished || task.blocker?.is_finished) return;\n if (!schedulesCapacityBySplit[task.split]) schedulesCapacityBySplit[task.split] = 0;\n if (now.isAfter(moment__WEBPACK_IMPORTED_MODULE_3___default()(task._real_end))) {\n // Ignore elapsed task\n return;\n } else if (now.isAfter(moment__WEBPACK_IMPORTED_MODULE_3___default()(task._real_start)) && now.isBefore(moment__WEBPACK_IMPORTED_MODULE_3___default()(task._real_end))) {\n // Task in progress\n schedulesCapacityBySplit[task.split] += _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"]._getDifferenceInMinutes(task._real_end, new Date());\n } else {\n // Future task\n schedulesCapacityBySplit[task.split] += _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"]._getDifferenceInMinutes(task._real_end, task._real_start);\n }\n });\n schedulesCapacityBySplit[1] = 0; // Set YESTERDAY value to 0\n\n this.timelineData.homeoffices.forEach(task => {\n homeoffice[task.split - 1] = true;\n });\n for (let i = 0; i < 7; i++) {\n if (!schedulesCapacityBySplit[i + 1]) schedulesCapacityBySplit[i + 1] = 0;\n let unscheduledTime;\n const date = moment__WEBPACK_IMPORTED_MODULE_3___default()((0,date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.filter.start, i));\n if (date.isBefore(moment__WEBPACK_IMPORTED_MODULE_3___default()(), 'days')) {\n // Yesterday\n unscheduledTime = 0;\n } else if (date.isSame(moment__WEBPACK_IMPORTED_MODULE_3___default()(), 'days')) {\n // Today\n const elapsedMinutes = now.diff(now.clone().startOf('day'), 'minutes');\n const workStart = this.user.work_start * 60 > elapsedMinutes ? this.user.work_start : elapsedMinutes / 60;\n const todayCapacityMinutes = (this.user.work_end - workStart) * 60;\n unscheduledTime = todayCapacityMinutes - schedulesCapacityBySplit[i + 1] / 60 < 0 ? 0 : todayCapacityMinutes - schedulesCapacityBySplit[i + 1];\n } else {\n // Future\n unscheduledTime = dailyCapacityMinutes - schedulesCapacityBySplit[i + 1];\n }\n if (isNaN(unscheduledTime)) unscheduledTime = dailyCapacityMinutes;\n days.push({\n id: i + 1,\n fullname: `${this.filter.employee.name} ${this.filter.employee.surname}`,\n initials: this.filter.employee.name.charAt(0).toUpperCase() + this.filter.employee.surname.charAt(0).toUpperCase(),\n unscheduledTime: (unscheduledTime / 60).toFixed(1),\n date: (0,date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.filter.start, i),\n isHomeoffice: homeoffice[i] ? true : false,\n isWeekend: _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isWeekend((0,date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.filter.start, i))\n });\n }\n return days;\n },\n unscheduledTime() {\n if (!this.subtasks) return 0;\n return _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getUnscheduledTime(this.subtasks);\n },\n timelineData() {\n if (!this.subtasks || !this.filter) return null;\n const {\n tasks,\n blockers,\n nonWorkingHours,\n homeoffices\n } = _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateTimelineTasks(this.subtasks, new Date(this.filter.start), this.filter.employee);\n return {\n name: this.filter.employee.name,\n surname: this.filter.employee.surname,\n unscheduledTime: this.unscheduledTime,\n tasks: [...tasks, ...blockers, ...nonWorkingHours],\n homeoffices\n };\n }\n },\n mounted() {\n this.$events.on('on-subtask-edited', () => {\n this.onFilterChanged(this.filter);\n });\n this.$events.on('on-subtask-deleted', () => {\n this.onFilterChanged(this.filter);\n });\n this.$events.on('on-blocker-edited', () => {\n this.onFilterChanged(this.filter);\n });\n this.$events.on('on-blocker-deleted', () => {\n this.onFilterChanged(this.filter);\n });\n },\n unmounted() {\n this.$events.off('on-subtask-edited');\n this.$events.off('on-subtask-deleted');\n this.$events.off('on-blocker-edited');\n this.$events.off('on-blocker-deleted');\n },\n methods: {\n async onFilterChanged(filter) {\n this.filter = filter;\n const urlQueryObject = {};\n if (filter.start) urlQueryObject.start = moment__WEBPACK_IMPORTED_MODULE_3___default()(filter.start).format('YYYY-MM-DD');\n if (filter.end) urlQueryObject.end = moment__WEBPACK_IMPORTED_MODULE_3___default()(filter.end).format('YYYY-MM-DD');\n if (filter.employee) urlQueryObject.employee_id = filter.employee.id;\n const queryParameters = new URLSearchParams(urlQueryObject).toString();\n try {\n const {\n subtasks,\n blockers\n } = await this.$axios.get_auth(`v1/subtasks?${queryParameters}`);\n this.config.scrollHour = this.filter?.employee.work_start - 1;\n this.config.date = this.filter.start;\n this.subtasks = [...subtasks, ...blockers];\n this.hideCal = true;\n setTimeout(() => {\n this.hideCal = false;\n }, 0);\n } catch (error) {\n this.$toast.error('Nepodarilo sa nacitat data!');\n if (true) console.log('[tasks.vue] Error: ', error);\n }\n setTimeout(() => {\n this._initScrollListener();\n }, 100);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/tasks/tasks.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 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 _components_a_tasks_filter_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_components/a-tasks-filter.vue */ \"./src/plugins/tm@dashboard/tasks/_components/a-tasks-filter.vue\");\n/* harmony import */ var _plugins_tm_dashboard_components_z_timeline_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@dashboard/_components/z-timeline.vue */ \"./src/plugins/tm@dashboard/_components/z-timeline.vue\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/esm/subDays/index.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/esm/addDays/index.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_utils/timeline.utils */ \"./src/plugins/tm@dashboard/tasks/_utils/timeline.utils.ts\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm-bundler.js\");\n/* harmony import */ var _mixins_Filter_mixin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../_mixins/Filter.mixin */ \"./src/plugins/tm@dashboard/_mixins/Filter.mixin.ts\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n mixins: [_mixins_Filter_mixin__WEBPACK_IMPORTED_MODULE_5__[\"default\"]],\n components: {\n ATaskFilter: _components_a_tasks_filter_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ZTimeline: _plugins_tm_dashboard_components_z_timeline_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n },\n data() {\n return {\n hideCal: false,\n filter: null,\n subtasks: null,\n config: {\n date: (0,date_fns__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(new Date(), 1),\n scrollHour: 7\n }\n };\n },\n computed: {\n ...(0,vuex__WEBPACK_IMPORTED_MODULE_7__.mapGetters)('auth', ['user']),\n splitDays() {\n const days = [];\n const homeoffice = {};\n const schedulesCapacityBySplit = {};\n const now = moment__WEBPACK_IMPORTED_MODULE_3___default()();\n const dailyCapacityMinutes = (this.user.work_end - this.user.work_start) * 60;\n this.timelineData.tasks.forEach(task => {\n if (task.type == 'non-working-hours' || task.subtask?.is_finished || task.blocker?.is_finished) return;\n if (!schedulesCapacityBySplit[task.split]) schedulesCapacityBySplit[task.split] = 0;\n if (now.isAfter(moment__WEBPACK_IMPORTED_MODULE_3___default()(task._real_end))) {\n // Ignore elapsed task\n return;\n } else if (now.isAfter(moment__WEBPACK_IMPORTED_MODULE_3___default()(task._real_start)) && now.isBefore(moment__WEBPACK_IMPORTED_MODULE_3___default()(task._real_end))) {\n // Task in progress\n schedulesCapacityBySplit[task.split] += _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"]._getDifferenceInMinutes(task._real_end, new Date());\n } else {\n // Future task\n schedulesCapacityBySplit[task.split] += _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"]._getDifferenceInMinutes(task._real_end, task._real_start);\n }\n });\n schedulesCapacityBySplit[1] = 0; // Set YESTERDAY value to 0\n\n this.timelineData.homeoffices.forEach(task => {\n homeoffice[task.split - 1] = true;\n });\n for (let i = 0; i < 7; i++) {\n if (!schedulesCapacityBySplit[i + 1]) schedulesCapacityBySplit[i + 1] = 0;\n let unscheduledTime;\n const date = moment__WEBPACK_IMPORTED_MODULE_3___default()((0,date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.filter.start, i));\n if (date.isBefore(moment__WEBPACK_IMPORTED_MODULE_3___default()(), 'days')) {\n // Yesterday\n unscheduledTime = 0;\n } else if (date.isSame(moment__WEBPACK_IMPORTED_MODULE_3___default()(), 'days')) {\n // Today\n const elapsedMinutes = now.diff(now.clone().startOf('day'), 'minutes');\n const workStart = this.user.work_start * 60 > elapsedMinutes ? this.user.work_start : elapsedMinutes / 60;\n const todayCapacityMinutes = (this.user.work_end - workStart) * 60;\n unscheduledTime = todayCapacityMinutes - schedulesCapacityBySplit[i + 1] / 60 < 0 ? 0 : todayCapacityMinutes - schedulesCapacityBySplit[i + 1];\n } else {\n // Future\n unscheduledTime = dailyCapacityMinutes - schedulesCapacityBySplit[i + 1];\n }\n if (isNaN(unscheduledTime)) unscheduledTime = dailyCapacityMinutes;\n days.push({\n id: i + 1,\n fullname: `${this.filter.employee.name} ${this.filter.employee.surname}`,\n initials: this.filter.employee.name.charAt(0).toUpperCase() + this.filter.employee.surname.charAt(0).toUpperCase(),\n unscheduledTime: (unscheduledTime / 60).toFixed(1),\n scheduledTime: (schedulesCapacityBySplit[i + 1] / 60).toFixed(1),\n date: (0,date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.filter.start, i),\n isHomeoffice: homeoffice[i] ? true : false,\n isWeekend: _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].isWeekend((0,date_fns__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(this.filter.start, i))\n });\n }\n return days;\n },\n unscheduledTime() {\n if (!this.subtasks) return 0;\n return _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getUnscheduledTime(this.subtasks);\n },\n timelineData() {\n if (!this.subtasks || !this.filter) return null;\n const {\n tasks,\n blockers,\n nonWorkingHours,\n homeoffices\n } = _utils_timeline_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].generateTimelineTasks(this.subtasks, new Date(this.filter.start), this.filter.employee);\n return {\n name: this.filter.employee.name,\n surname: this.filter.employee.surname,\n unscheduledTime: this.unscheduledTime,\n tasks: [...tasks, ...blockers, ...nonWorkingHours],\n homeoffices\n };\n }\n },\n mounted() {\n this.$events.on('on-subtask-edited', () => {\n this.onFilterChanged(this.filter);\n });\n this.$events.on('on-subtask-deleted', () => {\n this.onFilterChanged(this.filter);\n });\n this.$events.on('on-blocker-edited', () => {\n this.onFilterChanged(this.filter);\n });\n this.$events.on('on-blocker-deleted', () => {\n this.onFilterChanged(this.filter);\n });\n },\n unmounted() {\n this.$events.off('on-subtask-edited');\n this.$events.off('on-subtask-deleted');\n this.$events.off('on-blocker-edited');\n this.$events.off('on-blocker-deleted');\n },\n methods: {\n async onFilterChanged(filter) {\n this.filter = filter;\n const urlQueryObject = {};\n if (filter.start) urlQueryObject.start = moment__WEBPACK_IMPORTED_MODULE_3___default()(filter.start).format('YYYY-MM-DD');\n if (filter.end) urlQueryObject.end = moment__WEBPACK_IMPORTED_MODULE_3___default()(filter.end).format('YYYY-MM-DD');\n if (filter.employee) urlQueryObject.employee_id = filter.employee.id;\n const queryParameters = new URLSearchParams(urlQueryObject).toString();\n try {\n const {\n subtasks,\n blockers\n } = await this.$axios.get_auth(`v1/subtasks?${queryParameters}`);\n this.config.scrollHour = this.filter?.employee.work_start - 1;\n this.config.date = this.filter.start;\n this.subtasks = [...subtasks, ...blockers];\n this.hideCal = true;\n setTimeout(() => {\n this.hideCal = false;\n }, 0);\n } catch (error) {\n this.$toast.error('Nepodarilo sa nacitat data!');\n if (true) console.log('[tasks.vue] Error: ', error);\n }\n setTimeout(() => {\n this._initScrollListener();\n }, 100);\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/tasks/tasks.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_teams_teams_vue.js b/app/dist/js/src_plugins_tm_dashboard_teams_teams_vue.js
index 2cacbe4..81b0cca 100644
--- a/app/dist/js/src_plugins_tm_dashboard_teams_teams_vue.js
+++ b/app/dist/js/src_plugins_tm_dashboard_teams_teams_vue.js
@@ -15,7 +15,7 @@
/***/ (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 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/* harmony import */ var _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@dashboard/tasks/_utils/timeline.utils */ \"./src/plugins/tm@dashboard/tasks/_utils/timeline.utils.ts\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n computed: {\n calendarData() {\n if (!this.subtasks || !this.blockers) return;\n const blockers = this._generateBlockers();\n return {\n tasks: [...this._generateNonWorking(), ...this._generateTasks(), ...blockers.filter(blocker => blocker.type != 'home_office')],\n homeoffices: [...blockers.filter(blocker => blocker.type == 'home_office')]\n };\n },\n splitDays() {\n const days = [];\n const homeoffice = {};\n const now = moment__WEBPACK_IMPORTED_MODULE_1___default()();\n this.filter.team.employees.forEach((employee, index) => {\n const selectedDate = moment__WEBPACK_IMPORTED_MODULE_1___default()(this.filter.start);\n const capacityMinutes = this._getRemainingWorkCapacityMinutes(employee);\n let scheduledCapacityMinutes = 0;\n this.calendarData.tasks.forEach(task => {\n // console.log(task)\n if (task.subtask?.employee_id != employee.id && task.blocker?.employee?.id != employee.id) return;\n if (task.type == 'non-working-hours' || task.subtask?.is_finished || task.blocker?.is_finished) return;\n if (selectedDate.isBefore(moment__WEBPACK_IMPORTED_MODULE_1___default()(), 'days')) {\n // Past\n return;\n } else if (selectedDate.isSame(moment__WEBPACK_IMPORTED_MODULE_1___default()(), 'days')) {\n // Today\n } else {\n scheduledCapacityMinutes += _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"]._getDifferenceInMinutes(task._real_end, task._real_start);\n }\n });\n this.calendarData.homeoffices.forEach(task => {\n if (task.blocker.employee?.id != employee.id) return;\n homeoffice[task.split] = true;\n });\n const unscheduledTime = capacityMinutes - scheduledCapacityMinutes;\n days.push({\n id: index + 1,\n name: employee.name,\n employee_id: employee.id,\n date: this.filter.start,\n fullname: `${employee.name} ${employee.surname}`,\n initials: employee.name.charAt(0).toUpperCase() + employee.surname.charAt(0).toUpperCase(),\n unscheduledTime: unscheduledTime > 0 ? (unscheduledTime / 60).toFixed(1) : 0,\n isHomeoffice: homeoffice[index + 1] ? true : false\n });\n });\n return days;\n }\n },\n methods: {\n _generateNonWorking() {\n const nonWorkingHours = [];\n const date = new Date(this.filter.start);\n let earliestHour = null;\n this.calendarConfig.date = date;\n const {\n start: dayStart,\n end: dayEnd\n } = this._getDayStartEnd();\n this.filter.team.employees.forEach((employee, index) => {\n if (!earliestHour || employee.work_start < earliestHour) earliestHour = employee.work_start;\n nonWorkingHours.push({\n title: \"Non working hours\",\n start: dayStart,\n end: this._setMinutesToDate((employee.work_start + 0.1) * 60),\n split: index + 1,\n type: 'non-working-hours',\n draggable: false\n });\n nonWorkingHours.push({\n title: \"Non working hours\",\n start: this._setMinutesToDate((employee.work_end + 0.1) * 60),\n end: dayEnd,\n split: index + 1,\n type: 'non-working-hours',\n draggable: false\n });\n });\n this.calendarConfig.scrollHour = earliestHour - 1;\n return nonWorkingHours;\n },\n _generateTasks() {\n const tasks = [];\n const calendarDate = moment__WEBPACK_IMPORTED_MODULE_1___default()(this.filter.start).format('DD-MM-YYYY');\n this.subtasks.forEach(subtask => {\n let split = null;\n let employee = null;\n this.filter.team.employees.forEach((e, index) => {\n if (e.id == subtask.employee_id) {\n split = index + 1;\n employee = e;\n }\n });\n subtask.timeblocks.forEach(timeblock => {\n const formattedDate = moment__WEBPACK_IMPORTED_MODULE_1___default()(timeblock.start).format('DD-MM-YYYY');\n if (formattedDate == calendarDate) {\n tasks.push({\n id: subtask.id,\n start: new Date(timeblock.start),\n end: new Date(timeblock.end),\n master_task: subtask.master_task,\n name: employee?.name,\n surname: employee?.surname,\n // date: new Date(timeblock.start),\n isWeekend: moment__WEBPACK_IMPORTED_MODULE_1___default()(timeblock.start).day() % 6 == 0,\n initials: employee?.name?.charAt(0)?.toUpperCase() + employee?.surname?.charAt(0)?.toUpperCase(),\n split: split,\n project_code: subtask.project_code,\n type: 'subtask',\n subtask,\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 });\n }\n });\n });\n return tasks;\n },\n _generateBlockers() {\n const blockers = [];\n this.blockers.forEach(blocker => {\n let split = null;\n let employee = null;\n this.filter.team.employees.forEach((e, index) => {\n if (e.id == blocker.employee?.id) {\n split = index + 1;\n employee = e;\n }\n });\n blockers.push({\n blocker,\n split,\n start: new Date(blocker.start),\n end: new Date(blocker.end),\n type: blocker.type,\n isBlocker: true,\n initials: `${employee?.name[0]}${employee?.surname[0]}`,\n color: '#B00020',\n draggable: false,\n isWeekend: moment__WEBPACK_IMPORTED_MODULE_1___default()(blocker.start).day() % 6 == 0,\n _real_start: new Date(blocker.start),\n _real_end: new Date(blocker.end)\n });\n });\n return blockers;\n },\n _getDayStartEnd() {\n return {\n start: this._setMinutesToDate(0),\n end: this._setMinutesToDate(1439)\n };\n },\n _setMinutesToDate(minutes, date = new Date(this.filter.start)) {\n date.setHours(Math.floor(minutes / 60), minutes % 60, 0, 0);\n return date;\n },\n _getRemainingWorkCapacityMinutes(employee) {\n const date = moment__WEBPACK_IMPORTED_MODULE_1___default()(this.filter.start);\n const now = moment__WEBPACK_IMPORTED_MODULE_1___default()();\n if (now.isAfter(date, 'days')) {\n // Past dates\n return 0;\n } else if (now.isBefore(date, 'days')) {\n // Future dates\n return (employee.work_end - employee.work_start) * 60;\n }\n // Today\n const workStartMinutes = employee.work_start * 60;\n const workEndMinutes = employee.work_end * 60;\n const elapsedMinutesOfCurrenyDay = now.diff(moment__WEBPACK_IMPORTED_MODULE_1___default()().startOf('day'), 'minutes');\n if (workStartMinutes > elapsedMinutesOfCurrenyDay) return workEndMinutes - workStartMinutes;else if (workEndMinutes < elapsedMinutesOfCurrenyDay) return 0;else return workEndMinutes - elapsedMinutesOfCurrenyDay;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/teams/_mixins/TeamsCalendar.mixin.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 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/* harmony import */ var _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/plugins/tm@dashboard/tasks/_utils/timeline.utils */ \"./src/plugins/tm@dashboard/tasks/_utils/timeline.utils.ts\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n computed: {\n calendarData() {\n if (!this.subtasks || !this.blockers) return;\n const blockers = this._generateBlockers();\n return {\n tasks: [...this._generateNonWorking(), ...this._generateTasks(), ...blockers.filter(blocker => blocker.type != 'home_office')],\n homeoffices: [...blockers.filter(blocker => blocker.type == 'home_office')]\n };\n },\n splitDays() {\n const days = [];\n const homeoffice = {};\n const now = moment__WEBPACK_IMPORTED_MODULE_1___default()();\n this.filter.team.employees.forEach((employee, index) => {\n const selectedDate = moment__WEBPACK_IMPORTED_MODULE_1___default()(this.filter.start);\n const capacityMinutes = this._getRemainingWorkCapacityMinutes(employee);\n let scheduledCapacityMinutes = 0;\n let totalScheduledTime = 0;\n this.calendarData.tasks.forEach(task => {\n // console.log(task)\n if (task.subtask?.employee_id != employee.id && task.blocker?.employee?.id != employee.id) return;\n if (task.type == 'non-working-hours' || task.subtask?.is_finished || task.blocker?.is_finished) return;\n if (selectedDate.isBefore(moment__WEBPACK_IMPORTED_MODULE_1___default()(), 'days')) {\n totalScheduledTime += _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"]._getDifferenceInMinutes(task._real_end, task._real_start);\n // Past\n return;\n } else if (selectedDate.isSame(moment__WEBPACK_IMPORTED_MODULE_1___default()(), 'days')) {\n totalScheduledTime += _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"]._getDifferenceInMinutes(task._real_end, task._real_start);\n // Today\n } else {\n scheduledCapacityMinutes += _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"]._getDifferenceInMinutes(task._real_end, task._real_start);\n totalScheduledTime += _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"]._getDifferenceInMinutes(task._real_end, task._real_start);\n }\n });\n this.calendarData.homeoffices.forEach(task => {\n if (task.blocker.employee?.id != employee.id) return;\n homeoffice[task.split] = true;\n });\n const unscheduledTime = capacityMinutes - scheduledCapacityMinutes;\n days.push({\n id: index + 1,\n name: employee.name,\n employee_id: employee.id,\n date: this.filter.start,\n fullname: `${employee.name} ${employee.surname}`,\n initials: employee.name.charAt(0).toUpperCase() + employee.surname.charAt(0).toUpperCase(),\n unscheduledTime: unscheduledTime > 0 ? (unscheduledTime / 60).toFixed(1) : 0,\n scheduledTime: totalScheduledTime > 0 ? (totalScheduledTime / 60).toFixed(1) : 0,\n isHomeoffice: homeoffice[index + 1] ? true : false\n });\n });\n return days;\n }\n },\n methods: {\n _generateNonWorking() {\n const nonWorkingHours = [];\n const date = new Date(this.filter.start);\n let earliestHour = null;\n this.calendarConfig.date = date;\n const {\n start: dayStart,\n end: dayEnd\n } = this._getDayStartEnd();\n this.filter.team.employees.forEach((employee, index) => {\n if (!earliestHour || employee.work_start < earliestHour) earliestHour = employee.work_start;\n nonWorkingHours.push({\n title: \"Non working hours\",\n start: dayStart,\n end: this._setMinutesToDate((employee.work_start + 0.1) * 60),\n split: index + 1,\n type: 'non-working-hours',\n draggable: false\n });\n nonWorkingHours.push({\n title: \"Non working hours\",\n start: this._setMinutesToDate((employee.work_end + 0.1) * 60),\n end: dayEnd,\n split: index + 1,\n type: 'non-working-hours',\n draggable: false\n });\n });\n this.calendarConfig.scrollHour = earliestHour - 1;\n return nonWorkingHours;\n },\n _generateTasks() {\n const tasks = [];\n const calendarDate = moment__WEBPACK_IMPORTED_MODULE_1___default()(this.filter.start).format('DD-MM-YYYY');\n this.subtasks.forEach(subtask => {\n let split = null;\n let employee = null;\n this.filter.team.employees.forEach((e, index) => {\n if (e.id == subtask.employee_id) {\n split = index + 1;\n employee = e;\n }\n });\n subtask.timeblocks.forEach(timeblock => {\n const formattedDate = moment__WEBPACK_IMPORTED_MODULE_1___default()(timeblock.start).format('DD-MM-YYYY');\n if (formattedDate == calendarDate) {\n tasks.push({\n id: subtask.id,\n start: new Date(timeblock.start),\n end: new Date(timeblock.end),\n master_task: subtask.master_task,\n name: employee?.name,\n surname: employee?.surname,\n // date: new Date(timeblock.start),\n isWeekend: moment__WEBPACK_IMPORTED_MODULE_1___default()(timeblock.start).day() % 6 == 0,\n initials: employee?.name?.charAt(0)?.toUpperCase() + employee?.surname?.charAt(0)?.toUpperCase(),\n split: split,\n project_code: subtask.project_code,\n type: 'subtask',\n subtask,\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 });\n }\n });\n });\n return tasks;\n },\n _generateBlockers() {\n const blockers = [];\n this.blockers.forEach(blocker => {\n let split = null;\n let employee = null;\n this.filter.team.employees.forEach((e, index) => {\n if (e.id == blocker.employee?.id) {\n split = index + 1;\n employee = e;\n }\n });\n blockers.push({\n blocker,\n split,\n start: new Date(blocker.start),\n end: new Date(blocker.end),\n type: blocker.type,\n isBlocker: true,\n initials: `${employee?.name[0]}${employee?.surname[0]}`,\n color: '#B00020',\n draggable: false,\n isWeekend: moment__WEBPACK_IMPORTED_MODULE_1___default()(blocker.start).day() % 6 == 0,\n _real_start: new Date(blocker.start),\n _real_end: new Date(blocker.end)\n });\n });\n return blockers;\n },\n _getDayStartEnd() {\n return {\n start: this._setMinutesToDate(0),\n end: this._setMinutesToDate(1439)\n };\n },\n _setMinutesToDate(minutes, date = new Date(this.filter.start)) {\n date.setHours(Math.floor(minutes / 60), minutes % 60, 0, 0);\n return date;\n },\n _getRemainingWorkCapacityMinutes(employee) {\n const date = moment__WEBPACK_IMPORTED_MODULE_1___default()(this.filter.start);\n const now = moment__WEBPACK_IMPORTED_MODULE_1___default()();\n if (now.isAfter(date, 'days')) {\n // Past dates\n return 0;\n } else if (now.isBefore(date, 'days')) {\n // Future dates\n return (employee.work_end - employee.work_start) * 60;\n }\n // Today\n const workStartMinutes = employee.work_start * 60;\n const workEndMinutes = employee.work_end * 60;\n const elapsedMinutesOfCurrenyDay = now.diff(moment__WEBPACK_IMPORTED_MODULE_1___default()().startOf('day'), 'minutes');\n if (workStartMinutes > elapsedMinutesOfCurrenyDay) return workEndMinutes - workStartMinutes;else if (workEndMinutes < elapsedMinutesOfCurrenyDay) return 0;else return workEndMinutes - elapsedMinutesOfCurrenyDay;\n }\n }\n});\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@dashboard/teams/_mixins/TeamsCalendar.mixin.ts?");
/***/ }),
diff --git a/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue b/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue
index c6045ac..c58d4e0 100644
--- a/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue
+++ b/app/src/plugins/tm@modal/master-task/z-master-task-modal.vue
@@ -447,7 +447,7 @@ export default {
},
'$route.query': {
handler(_, oldValue) {
- if (oldValue?.subtask?.length) {
+ if (oldValue?.subtask?.length && this.mastertask?.id) {
this.loadMastertask(this.mastertask.id);
}
},