mirror of
https://bitbucket.org/studiotem/jandl-taskmanager-app.git
synced 2026-10-21 06:20:21 +00:00
Merge branch 'main' of bitbucket.org:studiotem/jandl-taskmanager-app
This commit is contained in:
commit
dbd6f9fe9a
3 files changed
+39
-11
No files matched your search
Vendored
+3
-3
@@ -1274,7 +1274,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var cor
|
|||||||
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\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_5__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_utils_useEmployeeTimeline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@_utils/useEmployeeTimeline */ \"./src/plugins/tm@_utils/useEmployeeTimeline.ts\");\n/* harmony import */ var _plugins_tm_utils_timeblock_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@_utils/timeblock.utils */ \"./src/plugins/tm@_utils/timeblock.utils.ts\");\n/* harmony import */ var _a_employee_timeblock_header_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./a-employee-timeblock-header.vue */ \"./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-header.vue\");\n/* harmony import */ var _a_employee_timeblock_timeline_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a-employee-timeblock-timeline.vue */ \"./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-timeline.vue\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_10__);\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// Configuration: Set to false to allow editing timeblocks with existing IDs\nconst ALLOW_EDITING_EXISTING_TIMEBLOCKS = true;\nconst HOUR_WIDTH = 60; // pixels per hour (desktop)\nconst HOUR_WIDTH_MOBILE = 50; // pixels per hour (mobile)\nconst START_HOUR = 0; // Start from midnight\nconst END_HOUR = 24; // End at midnight\n// Check if mobile\n/* harmony default export */ __webpack_exports__[\"default\"] = (/*@__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_3__.defineComponent)({\n __name: 'a-employee-timeblock',\n props: {\n modelValue: {\n type: Object,\n required: true\n },\n employee: {\n type: [Object, null],\n required: true\n },\n allEmployeeTimeblocks: {\n type: Array,\n required: false,\n default: () => []\n },\n allTimeblocks: {\n type: Array,\n required: false,\n default: () => []\n },\n deletedTimeblockIds: {\n type: Array,\n required: false,\n default: () => []\n },\n editingBlockerId: {\n type: [Number, null],\n required: false,\n default: null\n },\n currentIndex: {\n type: Number,\n required: false,\n default: 0\n },\n deletable: {\n type: Boolean,\n required: false,\n default: false\n },\n index: {\n type: Number,\n required: false,\n default: 0\n },\n draftTimeblocks: {\n type: Array,\n required: false,\n default: () => []\n }\n },\n emits: [\"update:modelValue\", \"addTimeblock\", \"removeTimeblock\"],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const props = __props;\n const emit = __emit;\n const timelineRef = (0,vue__WEBPACK_IMPORTED_MODULELine truncated
|
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ \"./node_modules/core-js/modules/esnext.iterator.map.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\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_5__ = __webpack_require__(/*! @vuelidate/validators */ \"./node_modules/@vuelidate/validators/dist/index.esm.js\");\n/* harmony import */ var _plugins_tm_utils_useEmployeeTimeline__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/tm@_utils/useEmployeeTimeline */ \"./src/plugins/tm@_utils/useEmployeeTimeline.ts\");\n/* harmony import */ var _plugins_tm_utils_timeblock_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/tm@_utils/timeblock.utils */ \"./src/plugins/tm@_utils/timeblock.utils.ts\");\n/* harmony import */ var _a_employee_timeblock_header_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./a-employee-timeblock-header.vue */ \"./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-header.vue\");\n/* harmony import */ var _a_employee_timeblock_timeline_vue__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a-employee-timeblock-timeline.vue */ \"./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock-timeline.vue\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_10__);\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// Configuration: Set to false to allow editing timeblocks with existing IDs\nconst ALLOW_EDITING_EXISTING_TIMEBLOCKS = true;\nconst HOUR_WIDTH = 60; // pixels per hour (desktop)\nconst HOUR_WIDTH_MOBILE = 50; // pixels per hour (mobile)\nconst START_HOUR = 0; // Start from midnight\nconst END_HOUR = 24; // End at midnight\n// Check if mobile\n/* harmony default export */ __webpack_exports__[\"default\"] = (/*@__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_3__.defineComponent)({\n __name: 'a-employee-timeblock',\n props: {\n modelValue: {\n type: Object,\n required: true\n },\n employee: {\n type: [Object, null],\n required: true\n },\n allEmployeeTimeblocks: {\n type: Array,\n required: false,\n default: () => []\n },\n allTimeblocks: {\n type: Array,\n required: false,\n default: () => []\n },\n deletedTimeblockIds: {\n type: Array,\n required: false,\n default: () => []\n },\n editingBlockerId: {\n type: [Number, null],\n required: false,\n default: null\n },\n currentIndex: {\n type: Number,\n required: false,\n default: 0\n },\n deletable: {\n type: Boolean,\n required: false,\n default: false\n },\n index: {\n type: Number,\n required: false,\n default: 0\n },\n draftTimeblocks: {\n type: Array,\n required: false,\n default: () => []\n }\n },\n emits: [\"update:modelValue\", \"addTimeblock\", \"removeTimeblock\"],\n setup(__props, {\n expose: __expose,\n emit: __emit\n }) {\n const props = __props;\n const emit = __emit;\n const timelineRef = (0,vue__WEBPACK_IMPORTED_MODULELine truncated
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
@@ -1351,7 +1351,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpa
|
|||||||
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"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 _hoisted_1 = {\n key: 0,\n class: \"timeline-wrapper\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\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)([\"timeblock\", {\n 'timeblock--finished': $props.modelValue.is_finished\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"AEmployeeTimeblockHeader\"], {\n \"model-value\": $props.modelValue,\n \"min-date\": $setup.minDate,\n deletable: $props.deletable,\n \"is-editable\": $setup.isEditable,\n \"is-time-range-valid\": $setup.isTimeRangeValid,\n collision: $setup.collision,\n \"has-validation-errors\": $setup.v$.$error && $setup.v$.$anyDirty,\n \"has-start-time-error\": $setup.hasStartTimeError,\n \"has-end-time-error\": $setup.hasEndTimeError,\n \"end-time-error-message\": $setup.endTimeErrorMessage,\n \"planned-time\": $setup._scheduledTime,\n \"free-time\": $setup._freeTime,\n employee: $props.employee,\n index: $props.index,\n onPreviousDay: $setup.previousDay,\n onNextDay: $setup.nextDay,\n onUpdateDate: $setup.updateDate,\n onUpdateStartTime: $setup.updateStartTime,\n onUpdateEndTime: $setup.updateEndTime,\n onAddTimeblock: _cache[0] || (_cache[0] = $event => _ctx.$emit('addTimeblock')),\n onRemoveTimeblock: _cache[1] || (_cache[1] = $event => _ctx.$emit('removeTimeblock'))\n }, null, 8 /* PROPS */, [\"model-value\", \"min-date\", \"deletable\", \"is-editable\", \"is-time-range-valid\", \"collision\", \"has-validation-errors\", \"has-start-time-error\", \"has-end-time-error\", \"end-time-error-message\", \"planned-time\", \"free-time\", \"employee\", \"index\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Timeline Visualization \"), $props.modelValue.date && $props.employee ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"AEmployeeTimeblockTimeline\"], {\n ref: \"timelineRef\",\n \"is-loading\": $setup.isLoading,\n employee: $props.employee,\n date: $props.modelValue.date,\n \"scheduled-blocks\": $setup.scheduledBlocks,\n \"other-timeblocks\": $setup.otherTimeblocksForSameDate,\n \"current-timeblock-range\": $setup.currentTimeblockRange,\n collision: $setup.collision,\n \"collision-segments\": $setup.collisionSegments,\n \"timeblock-duration\": $setup.timeblockDuration,\n \"start-hour\": $setup.START_HOUR,\n \"end-hour\": $setup.END_HOUR,\n \"hour-width\": $setup.hourWidth,\n onTimeblockUpdated: $setup.handleTimeblockUpdated\n }, null, 8 /* PROPS */, [\"is-loading\", \"employee\", \"date\", \"scheduled-blocks\", \"other-timeblocks\", \"current-timeblock-range\", \"collision\", \"collision-segments\", \"timeblock-duration\", \"hour-width\"])])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 2 /* CLASS */);\n}\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.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\n}");
|
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 _hoisted_1 = {\n key: 0,\n class: \"timeline-wrapper\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\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)([\"timeblock\", {\n 'timeblock--finished': $props.modelValue.is_finished\n }])\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"AEmployeeTimeblockHeader\"], {\n \"model-value\": $props.modelValue,\n \"min-date\": $setup.minDate,\n deletable: $props.deletable,\n \"is-editable\": $setup.isEditable,\n \"is-time-range-valid\": $setup.isTimeRangeValid,\n collision: $setup.collision,\n \"has-validation-errors\": $setup.v$.$error && $setup.v$.$anyDirty,\n \"has-start-time-error\": $setup.hasStartTimeError,\n \"has-end-time-error\": $setup.hasEndTimeError,\n \"end-time-error-message\": $setup.endTimeErrorMessage,\n \"planned-time\": $setup._totalPlannedTime,\n \"free-time\": $setup._freeTime,\n employee: $props.employee,\n index: $props.index,\n onPreviousDay: $setup.previousDay,\n onNextDay: $setup.nextDay,\n onUpdateDate: $setup.updateDate,\n onUpdateStartTime: $setup.updateStartTime,\n onUpdateEndTime: $setup.updateEndTime,\n onAddTimeblock: _cache[0] || (_cache[0] = $event => _ctx.$emit('addTimeblock')),\n onRemoveTimeblock: _cache[1] || (_cache[1] = $event => _ctx.$emit('removeTimeblock'))\n }, null, 8 /* PROPS */, [\"model-value\", \"min-date\", \"deletable\", \"is-editable\", \"is-time-range-valid\", \"collision\", \"has-validation-errors\", \"has-start-time-error\", \"has-end-time-error\", \"end-time-error-message\", \"planned-time\", \"free-time\", \"employee\", \"index\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\" Timeline Visualization \"), $props.modelValue.date && $props.employee ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"AEmployeeTimeblockTimeline\"], {\n ref: \"timelineRef\",\n \"is-loading\": $setup.isLoading,\n employee: $props.employee,\n date: $props.modelValue.date,\n \"scheduled-blocks\": $setup.scheduledBlocks,\n \"other-timeblocks\": $setup.otherTimeblocksForSameDate,\n \"current-timeblock-range\": $setup.currentTimeblockRange,\n collision: $setup.collision,\n \"collision-segments\": $setup.collisionSegments,\n \"timeblock-duration\": $setup.timeblockDuration,\n \"start-hour\": $setup.START_HOUR,\n \"end-hour\": $setup.END_HOUR,\n \"hour-width\": $setup.hourWidth,\n onTimeblockUpdated: $setup.handleTimeblockUpdated\n }, null, 8 /* PROPS */, [\"is-loading\", \"employee\", \"date\", \"scheduled-blocks\", \"other-timeblocks\", \"current-timeblock-range\", \"collision\", \"collision-segments\", \"timeblock-duration\", \"hour-width\"])])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)], 2 /* CLASS */);\n}\n\n//# sourceURL=webpack://jandl/./src/plugins/tm@modal/task/_components/employees/a-employee-timeblock.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\n}");
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
@@ -2699,7 +2699,7 @@ eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var cor
|
|||||||
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useEmployeeTimeline: function() { return /* binding */ useEmployeeTimeline; }\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 core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _tanstack_vue_query__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @tanstack/vue-query */ \"./node_modules/@tanstack/vue-query/build/modern/useQuery.js\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _plugins_w_custom_axios_models_axios__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/plugins/w@custom/axios/models/axios */ \"./src/plugins/w@custom/axios/models/axios.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @/plugins/tm@dashboard/tasks/_utils/timeline.utils */ \"./src/plugins/tm@dashboard/tasks/_utils/timeline.utils.ts\");\n/* harmony import */ var _timeblock_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./timeblock.utils */ \"./src/plugins/tm@_utils/timeblock.utils.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\nfunction useEmployeeTimeline(employee, date, currentTimeblock, otherLocalTimeblocks, editingBlockerId, draftTimeblocks) {\n // Fetch employee's tasks for the selected date\n const {\n data: tasksData,\n isLoading,\n error,\n refetch\n } = (0,_tanstack_vue_query__WEBPACK_IMPORTED_MODULE_4__.useQuery)({\n queryKey: (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => ['employee-timeline', (0,vue__WEBPACK_IMPORTED_MODULE_5__.unref)(employee)?.id, (0,vue__WEBPACK_IMPORTED_MODULE_5__.unref)(date) ? moment__WEBPACK_IMPORTED_MODULE_7___default()((0,vue__WEBPACK_IMPORTED_MODULE_5__.unref)(date)).format('YYYY-MM-DD') : null]),\n queryFn: async () => {\n const emp = (0,vue__WEBPACK_IMPORTED_MODULE_5__.unref)(employee);\n const d = (0,vue__WEBPACK_IMPORTED_MODULE_5__.unref)(date);\n if (!emp?.id || !d) {\n return null;\n }\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_7___default()(d).format('YYYY-MM-DD');\n const queryParams = new URLSearchParams({\n start: dateStr,\n end: dateStr,\n employee_id: emp.id.toString()\n }).toString();\n const response = await _plugins_w_custom_axios_models_axios__WEBPACK_IMPORTED_MODULE_6__[\"default\"].get_auth(`v1/subtasks?${queryParams}`);\n return response;\n },\n enabled: (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {\n const emp = (0,vue__WEBPACK_IMPORTED_MODULE_5__.unref)(employee);\n const d = (0,vue__WEBPACK_IMPORTED_MODULE_5__.unref)(date);\n return !!(emp?.id && d);\n })\n });\n
Line truncated
|
eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useEmployeeTimeline: function() { return /* binding */ useEmployeeTimeline; }\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 core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ \"./node_modules/core-js/modules/esnext.iterator.constructor.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ \"./node_modules/core-js/modules/esnext.iterator.filter.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ \"./node_modules/core-js/modules/esnext.iterator.find.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ \"./node_modules/core-js/modules/esnext.iterator.for-each.js\");\n/* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _tanstack_vue_query__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @tanstack/vue-query */ \"./node_modules/@tanstack/vue-query/build/modern/useQuery.js\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm-bundler.js\");\n/* harmony import */ var _plugins_w_custom_axios_models_axios__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/plugins/w@custom/axios/models/axios */ \"./src/plugins/w@custom/axios/models/axios.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _plugins_tm_dashboard_tasks_utils_timeline_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/plugins/tm@dashboard/tasks/_utils/timeline.utils */ \"./src/plugins/tm@dashboard/tasks/_utils/timeline.utils.ts\");\n/* harmony import */ var _timeblock_utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./timeblock.utils */ \"./src/plugins/tm@_utils/timeblock.utils.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\nfunction useEmployeeTimeline(employee, date, currentTimeblock, otherLocalTimeblocks, editingBlockerId, draftTimeblocks, allEditingTimeblockIds) {\n // Fetch employee's tasks for the selected date\n const {\n data: tasksData,\n isLoading,\n error,\n refetch\n } = (0,_tanstack_vue_query__WEBPACK_IMPORTED_MODULE_5__.useQuery)({\n queryKey: (0,vue__WEBPACK_IMPORTED_MODULE_6__.computed)(() => ['employee-timeline', (0,vue__WEBPACK_IMPORTED_MODULE_6__.unref)(employee)?.id, (0,vue__WEBPACK_IMPORTED_MODULE_6__.unref)(date) ? moment__WEBPACK_IMPORTED_MODULE_8___default()((0,vue__WEBPACK_IMPORTED_MODULE_6__.unref)(date)).format('YYYY-MM-DD') : null]),\n queryFn: async () => {\n const emp = (0,vue__WEBPACK_IMPORTED_MODULE_6__.unref)(employee);\n const d = (0,vue__WEBPACK_IMPORTED_MODULE_6__.unref)(date);\n if (!emp?.id || !d) {\n return null;\n }\n const dateStr = moment__WEBPACK_IMPORTED_MODULE_8___default()(d).format('YYYY-MM-DD');\n const queryParams = new URLSearchParams({\n start: dateStr,\n end: dateStr,\n employee_id: emp.i
Line truncated
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ export function useEmployeeTimeline(
|
|||||||
otherLocalTimeblocks?: Ref<Timeblock[]>,
|
otherLocalTimeblocks?: Ref<Timeblock[]>,
|
||||||
editingBlockerId?: Ref<number | null>,
|
editingBlockerId?: Ref<number | null>,
|
||||||
draftTimeblocks?: Ref<Timeblock[]>,
|
draftTimeblocks?: Ref<Timeblock[]>,
|
||||||
|
allEditingTimeblockIds?: Ref<number[]>,
|
||||||
) {
|
) {
|
||||||
// Fetch employee's tasks for the selected date
|
// Fetch employee's tasks for the selected date
|
||||||
const {
|
const {
|
||||||
@@ -267,6 +268,11 @@ export function useEmployeeTimeline(
|
|||||||
|
|
||||||
if (!tasks || !d) return 0;
|
if (!tasks || !d) return 0;
|
||||||
|
|
||||||
|
// Get IDs of timeblocks being edited locally to exclude them from scheduled time
|
||||||
|
const editingTimeblockIds = allEditingTimeblockIds
|
||||||
|
? new Set(unref(allEditingTimeblockIds).filter((id) => id != null))
|
||||||
|
: new Set();
|
||||||
|
|
||||||
let totalMinutes = 0;
|
let totalMinutes = 0;
|
||||||
|
|
||||||
tasks.forEach((task) => {
|
tasks.forEach((task) => {
|
||||||
@@ -278,6 +284,11 @@ export function useEmployeeTimeline(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip timeblocks that are being edited locally to avoid double-counting
|
||||||
|
if (task._timeblock_id && editingTimeblockIds.has(task._timeblock_id)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
totalMinutes += timelineUtils._getDifferenceInMinutes(
|
totalMinutes += timelineUtils._getDifferenceInMinutes(
|
||||||
task._real_end,
|
task._real_end,
|
||||||
task._real_start,
|
task._real_start,
|
||||||
@@ -287,14 +298,10 @@ export function useEmployeeTimeline(
|
|||||||
return (totalMinutes / 60).toFixed(1);
|
return (totalMinutes / 60).toFixed(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Calculate free/unscheduled time for the day (in hours)
|
// Calculate total planned time including local edits (for display purposes)
|
||||||
const freeTime = computed(() => {
|
const totalPlannedTime = computed(() => {
|
||||||
const emp = unref(employee);
|
|
||||||
const d = unref(date);
|
|
||||||
const scheduled = parseFloat(String(unref(scheduledTime)));
|
const scheduled = parseFloat(String(unref(scheduledTime)));
|
||||||
|
|
||||||
if (!emp || !d) return '0';
|
|
||||||
|
|
||||||
// Calculate duration of other local unsaved timeblocks for the same date
|
// Calculate duration of other local unsaved timeblocks for the same date
|
||||||
let localTimeblocksHours = 0;
|
let localTimeblocksHours = 0;
|
||||||
if (otherLocalTimeblocks) {
|
if (otherLocalTimeblocks) {
|
||||||
@@ -313,9 +320,20 @@ export function useEmployeeTimeline(
|
|||||||
localTimeblocksHours += calculateTimeblockDuration(currentTb);
|
localTimeblocksHours += calculateTimeblockDuration(currentTb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return (scheduled + localTimeblocksHours).toFixed(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Calculate free/unscheduled time for the day (in hours)
|
||||||
|
const freeTime = computed(() => {
|
||||||
|
const emp = unref(employee);
|
||||||
|
const d = unref(date);
|
||||||
|
const totalPlanned = parseFloat(String(unref(totalPlannedTime)));
|
||||||
|
|
||||||
|
if (!emp || !d) return '0';
|
||||||
|
|
||||||
const dailyCapacityHours = emp.work_end - emp.work_start;
|
const dailyCapacityHours = emp.work_end - emp.work_start;
|
||||||
|
|
||||||
return (dailyCapacityHours - scheduled - localTimeblocksHours).toFixed(1);
|
return (dailyCapacityHours - totalPlanned).toFixed(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Detect collisions with current timeblock
|
// Detect collisions with current timeblock
|
||||||
@@ -367,6 +385,7 @@ export function useEmployeeTimeline(
|
|||||||
// Timeline data
|
// Timeline data
|
||||||
timelineTasks,
|
timelineTasks,
|
||||||
scheduledTime,
|
scheduledTime,
|
||||||
|
totalPlannedTime,
|
||||||
freeTime,
|
freeTime,
|
||||||
|
|
||||||
// Collision detection
|
// Collision detection
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
:has-start-time-error="hasStartTimeError"
|
:has-start-time-error="hasStartTimeError"
|
||||||
:has-end-time-error="hasEndTimeError"
|
:has-end-time-error="hasEndTimeError"
|
||||||
:end-time-error-message="endTimeErrorMessage"
|
:end-time-error-message="endTimeErrorMessage"
|
||||||
:planned-time="_scheduledTime"
|
:planned-time="_totalPlannedTime"
|
||||||
:free-time="_freeTime"
|
:free-time="_freeTime"
|
||||||
:employee="employee"
|
:employee="employee"
|
||||||
:index="index"
|
:index="index"
|
||||||
@@ -238,6 +238,13 @@ const otherTimeblocksForSameDate = computed(() => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Get all timeblock IDs being edited locally for this employee (to exclude from server scheduled time)
|
||||||
|
const allEditingTimeblockIds = computed(() => {
|
||||||
|
return props.allEmployeeTimeblocks
|
||||||
|
.filter((tb) => tb.id != null)
|
||||||
|
.map((tb) => tb.id) as number[];
|
||||||
|
});
|
||||||
|
|
||||||
// Use timeline composable
|
// Use timeline composable
|
||||||
const editingBlockerIdRef = computed(() => props.editingBlockerId);
|
const editingBlockerIdRef = computed(() => props.editingBlockerId);
|
||||||
const draftTimeblocksRef = computed(() => props.draftTimeblocks);
|
const draftTimeblocksRef = computed(() => props.draftTimeblocks);
|
||||||
@@ -246,6 +253,7 @@ const {
|
|||||||
isLoading,
|
isLoading,
|
||||||
timelineTasks,
|
timelineTasks,
|
||||||
scheduledTime: _scheduledTime,
|
scheduledTime: _scheduledTime,
|
||||||
|
totalPlannedTime: _totalPlannedTime,
|
||||||
freeTime: _freeTime,
|
freeTime: _freeTime,
|
||||||
timeblockDuration,
|
timeblockDuration,
|
||||||
refetch,
|
refetch,
|
||||||
@@ -256,6 +264,7 @@ const {
|
|||||||
otherTimeblocksForSameDate,
|
otherTimeblocksForSameDate,
|
||||||
editingBlockerIdRef,
|
editingBlockerIdRef,
|
||||||
draftTimeblocksRef,
|
draftTimeblocksRef,
|
||||||
|
allEditingTimeblockIds,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Force refetch when date changes
|
// Force refetch when date changes
|
||||||
|
|||||||
Reference in new issue
Block a user