From ec0e46d986964a9e5768244b4d5158941cefb422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Glasn=C3=A1k?= Date: Wed, 25 Jun 2025 06:57:42 +0200 Subject: [PATCH] build(dev) --- app/dist/js/index.js | 2 +- ...in_ts-src_plugins_tm_dashboard_tasks__utils_timeli-4305f7.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/dist/js/index.js b/app/dist/js/index.js index 15a27e9..b51bee9 100644 --- a/app/dist/js/index.js +++ b/app/dist/js/index.js @@ -279,7 +279,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mod /***/ (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 */ \"I18n\": function() { return /* binding */ I18n; }\n/* harmony export */ });\n/* harmony import */ var _Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/defineProperty.js */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\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 axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! axios */ \"./node_modules/axios/lib/axios.js\");\n/* harmony import */ var vue_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-i18n */ \"./node_modules/vue-i18n/dist/vue-i18n.esm-bundler.js\");\n/* harmony import */ var _capacitor_preferences__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @capacitor/preferences */ \"./node_modules/@capacitor/preferences/dist/esm/index.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\nclass I18n {\n constructor(properties) {\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"currentLanguage\", (0,vue__WEBPACK_IMPORTED_MODULE_1__.ref)());\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"availableLanguages\", void 0);\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"vendorI18n\", void 0);\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"defaultLanguage\", void 0);\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"languageKey\", void 0);\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_missingTranslation\", (locale, key, instance, type) => {\n return key;\n });\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_postTranslation\", translated => {\n return translated;\n });\n this.availableLanguages = properties.languages || [];\n this.defaultLanguage = properties.languages.find(language => language.value == properties.defaultLanguage);\n this.languageKey = properties.languageKey || ({\"VUE_APP_WAXIOS_URL\":\"https://taskmanager.internal.studiotem.com/api/\",\"NODE_ENV\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_PLATFORM + '_language' || 0;\n this.vendorI18n = (0,vue_i18n__WEBPACK_IMPORTED_MODULE_3__.createI18n)({\n legacy: true,\n fallbackLocale: this.defaultLanguage.value,\n messages: this._loadLocaleMessages(),\n missing: this._missingTranslation,\n postTranslation: this._postTranslation\n });\n this.changeLanguage({\n title: \"Slovenský\",\n flag: \"sk\",\n value: \"sk\"\n });\n this.initCurrentLanguage();\n }\n async initCurrentLanguage() {\n const {\n value\n } = await _capacitor_preferences__WEBPACK_IMPORTED_MODULE_2__.Preferences.get({\n key: this.languageKey\n });\n if (value) {\n this.currentLanguage.value = JSON.parse(value);\n } else if (this.defaultLanguage) {\n this.currentLanguage.value = this.defaultLanguage;\n } else if (this.availableLanguages[0]) {\n this.currentLanguage.value = this.availableLanguages[0];\n } else {\n return console.error('[w18n] Could not init current language');\n }\n const availableLanguages = {};\n this.availableLanguages.forEach(language => {\n availableLanguages[language.value] = language.title;\n });\n this.changeLanguage(this.currentLanguage.value);\n // Translations.setup(this.currentLanguage.value.value, availableLanguages)\n this._addAxiosHeaders();\n }\n changeLanguage(language) {\n this.currentLanguage.value = language;\n this._addAxiosHeaders();\n _capacitor_preferences__WEBPACK_IMPORTED_MODULE_2__.Preferences.set({\n key: this.languageKey,\n value: JSON.stringify(language)\n });\n this.vendorI18n.global.locale = language.value;\n }\n _addAxiosHeaders() {\n axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].interceptors.request.use(config => {\n if (this.currentLanguage.value && this.currentLanguage.value.value) {\n config.headers['Accept-Language'] = this.currentLanguage.value.value;\n }\n return config;\n });\n axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].interceptors.response.use(response => {\n return response;\n }, error => {\n if (error.response) {\n axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].post('https://logger.wezeo.dev/cms/api/data/new', {\n data: JSON.stringify(error)\n });\n }\n return Promise.reject(error?.response || error);\n });\n }\n _loadLocaleMessages(path = '@/locales') {\n let locales;\n try {\n locales = __webpack_require__(\"./src/locales sync recursive [A-Za-z0-9-_,\\\\s]+\\\\.json$/\");\n } catch (error) {\n console.warn('[@wezeo/i18n] Could not initialize i18n. Missing folder /src/locales.');\n return {};\n }\n const messages = {};\n locales.keys().forEach(key => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\n if (matched && matched.length > 1) {\n const locale = matched[1];\n messages[locale] = locales(key);\n }\n });\n return messages;\n }\n}\n\n//# sourceURL=webpack://jandl/./src/plugins/w/i18n/models/i18n.ts?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"I18n\": function() { return /* binding */ I18n; }\n/* harmony export */ });\n/* harmony import */ var _Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/esm/defineProperty.js */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\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 axios__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! axios */ \"./node_modules/axios/lib/axios.js\");\n/* harmony import */ var vue_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-i18n */ \"./node_modules/vue-i18n/dist/vue-i18n.esm-bundler.js\");\n/* harmony import */ var _capacitor_preferences__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @capacitor/preferences */ \"./node_modules/@capacitor/preferences/dist/esm/index.js\");\n/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ \"./node_modules/console-browserify/index.js\");\n\n\n\n\n\nclass I18n {\n constructor(properties) {\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"currentLanguage\", (0,vue__WEBPACK_IMPORTED_MODULE_1__.ref)());\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"availableLanguages\", void 0);\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"vendorI18n\", void 0);\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"defaultLanguage\", void 0);\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"languageKey\", void 0);\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_missingTranslation\", (locale, key, instance, type) => {\n return key;\n });\n (0,_Users_matejglasnak_gitrepo_jandl_taskmanager_app_app_node_modules_babel_runtime_helpers_esm_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, \"_postTranslation\", translated => {\n return translated;\n });\n this.availableLanguages = properties.languages || [];\n this.defaultLanguage = properties.languages.find(language => language.value == properties.defaultLanguage);\n this.languageKey = properties.languageKey || ({\"VUE_APP_WAXIOS_URL\":\"https://taskmanager.internal.studiotem.com/api/\",\"NODE_ENV\":\"development\",\"BASE_URL\":\"/\"}).VUE_APP_PLATFORM + '_language' || 0;\n this.vendorI18n = (0,vue_i18n__WEBPACK_IMPORTED_MODULE_3__.createI18n)({\n legacy: true,\n fallbackLocale: this.defaultLanguage.value,\n messages: this._loadLocaleMessages(),\n missing: this._missingTranslation,\n postTranslation: this._postTranslation\n });\n this.changeLanguage({\n title: \"Slovenský\",\n flag: \"sk\",\n value: \"sk\"\n });\n this.initCurrentLanguage();\n }\n async initCurrentLanguage() {\n const {\n value\n } = await _capacitor_preferences__WEBPACK_IMPORTED_MODULE_2__.Preferences.get({\n key: this.languageKey\n });\n if (value) {\n this.currentLanguage.value = JSON.parse(value);\n } else if (this.defaultLanguage) {\n this.currentLanguage.value = this.defaultLanguage;\n } else if (this.availableLanguages[0]) {\n this.currentLanguage.value = this.availableLanguages[0];\n } else {\n return console.error('[w18n] Could not init current language');\n }\n const availableLanguages = {};\n this.availableLanguages.forEach(language => {\n availableLanguages[language.value] = language.title;\n });\n this.changeLanguage(this.currentLanguage.value);\n // Translations.setup(this.currentLanguage.value.value, availableLanguages)\n this._addAxiosHeaders();\n }\n changeLanguage(language) {\n this.currentLanguage.value = language;\n this._addAxiosHeaders();\n _capacitor_preferences__WEBPACK_IMPORTED_MODULE_2__.Preferences.set({\n key: this.languageKey,\n value: JSON.stringify(language)\n });\n this.vendorI18n.global.locale = language.value;\n }\n _addAxiosHeaders() {\n axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].interceptors.request.use(config => {\n if (this.currentLanguage.value && this.currentLanguage.value.value) {\n config.headers['Accept-Language'] = this.currentLanguage.value.value;\n }\n return config;\n });\n axios__WEBPACK_IMPORTED_MODULE_4__[\"default\"].interceptors.response.use(response => {\n return response;\n }, error => {\n return Promise.reject(error?.response || error);\n });\n }\n _loadLocaleMessages(path = '@/locales') {\n let locales;\n try {\n locales = __webpack_require__(\"./src/locales sync recursive [A-Za-z0-9-_,\\\\s]+\\\\.json$/\");\n } catch (error) {\n console.warn('[@wezeo/i18n] Could not initialize i18n. Missing folder /src/locales.');\n return {};\n }\n const messages = {};\n locales.keys().forEach(key => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\n if (matched && matched.length > 1) {\n const locale = matched[1];\n messages[locale] = locales(key);\n }\n });\n return messages;\n }\n}\n\n//# sourceURL=webpack://jandl/./src/plugins/w/i18n/models/i18n.ts?"); /***/ }), 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 859efe4..45e1ffc 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 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?"); +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 if (!date1 || !date2) return 0;\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?"); /***/ }),