{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/hercon-views/Wochenuebersicht.vue?1815","webpack:///./src/components/hercon-components/3-templates/Login.component.vue?cee6","webpack:///./src/views/hercon-views/Login.vue?bef1","webpack:///./src/views/hercon-views/Arbeitszeit_Erstellen.vue?09a7","webpack:///./src/App.vue?739a","webpack:///./src/App.vue","webpack:///./src/services/hercon-services/Store.service.ts","webpack:///./src/components/hercon-components/4-page/PageSidebar.component.vue","webpack:///./src/stories/Button.vue","webpack:///src/stories/Button.vue","webpack:///./src/stories/Button.vue?70e9","webpack:///./src/stories/Button.vue?0620","webpack:///./src/components/hercon-components/4-page/PageSidebar.component.vue?dbd6","webpack:///./src/components/hercon-components/4-page/PageSidebar.component.vue?fed6","webpack:///./src/components/hercon-components/4-page/PageSidebar.component.vue?1ea9","webpack:///./src/components/hercon-components/4-page/PageHeader.component.vue","webpack:///./src/components/hercon-components/4-page/PageHeader.component.vue?ce8a","webpack:///./src/components/hercon-components/4-page/PageHeader.component.vue?108e","webpack:///./src/components/hercon-components/4-page/PageHeader.component.vue?f9cb","webpack:///./src/components/hercon-components/4-page/PageMain.component.vue","webpack:///./src/components/hercon-components/4-page/PageMain.component.vue?ae50","webpack:///./src/components/hercon-components/4-page/PageMain.component.vue?a474","webpack:///./src/components/hercon-components/4-page/PageMain.component.vue?35fc","webpack:///./src/components/hercon-components/2-organisms/NavigationItem.component.vue","webpack:///./src/views/hercon-views/Login.vue","webpack:///./src/components/hercon-components/3-templates/Login.component.vue","webpack:///./src/services/hercon-services/Snotify.service.ts","webpack:///./src/services/hercon-services/Url.service.ts","webpack:///./src/library/axios/Axios.ts","webpack:///./src/services/hercon-services/Auth.service.ts","webpack:///./src/components/hercon-components/2-organisms/InputField.component.vue","webpack:///./src/components/hercon-components/2-organisms/InputField.component.vue?1418","webpack:///./src/components/hercon-components/2-organisms/InputField.component.vue?e678","webpack:///./src/components/hercon-components/0-atoms/Button.component.vue?301c","webpack:///./src/components/hercon-components/2-organisms/InputField.component.vue?5f3a","webpack:///./src/components/hercon-components/0-atoms/Button.component.vue","webpack:///./src/components/hercon-components/0-atoms/Button.component.vue?5ab9","webpack:///./src/components/hercon-components/0-atoms/Button.component.vue?dbfa","webpack:///./src/components/hercon-components/3-templates/Login.component.vue?cc47","webpack:///./src/components/hercon-components/3-templates/Login.component.vue?d923","webpack:///./src/components/hercon-components/3-templates/Login.component.vue?688e","webpack:///./src/views/hercon-views/Login.vue?ffa9","webpack:///./src/views/hercon-views/Login.vue?c2ff","webpack:///./src/views/hercon-views/Login.vue?0106","webpack:///./src/views/hercon-views/Wochenuebersicht.vue","webpack:///./src/library/models/interfacesStatistik.ts","webpack:///./src/views/hercon-views/Scripts/Wochenuebersicht.ts","webpack:///./src/components/hercon-components/1-molecules/BaseContainer.component.vue?8e30","webpack:///./src/views/hercon-views/Scripts/Wochenuebersicht.ts?a757","webpack:///./src/views/hercon-views/Wochenuebersicht.vue?0a19","webpack:///./src/views/hercon-views/Arbeitszeit.vue","webpack:///./src/components/hercon-components/1-molecules/BaseContainer.component.vue","webpack:///./src/components/hercon-components/1-molecules/BaseContainer.component.vue?f069","webpack:///./src/components/hercon-components/1-molecules/BaseContainer.component.vue?3cd1","webpack:///./src/components/hercon-components/1-molecules/IconButton.component.vue","webpack:///./src/components/hercon-components/0-atoms/IconFactory.component.vue","webpack:///./src/components/hercon-components/0-atoms/IconFactory.component.vue?dbc2","webpack:///./src/components/hercon-components/0-atoms/IconFactory.component.vue?46de","webpack:///./src/components/hercon-components/1-molecules/IconButton.component.vue?8e65","webpack:///./src/components/hercon-components/0-atoms/IconFactory.component.vue?132a","webpack:///./src/components/hercon-components/1-molecules/IconButton.component.vue?8b39","webpack:///./src/components/hercon-components/1-molecules/IconButton.component.vue?9dc4","webpack:///./src/components/hercon-components/1-molecules/ToolbarIconButton.component.vue?3f8f","webpack:///./src/components/hercon-components/1-molecules/ToolbarIconButton.component.vue?8f80","webpack:///./src/components/hercon-components/1-molecules/ToolbarIconButton.component.vue","webpack:///./src/components/hercon-components/2-organisms/Toolbar.component.vue","webpack:///./src/components/hercon-components/0-atoms/ToolbarVertical.component.vue","webpack:///./src/components/hercon-components/0-atoms/ToolbarVertical.component.vue?67a3","webpack:///./src/components/hercon-components/0-atoms/ToolbarVertical.component.vue?7ecd","webpack:///./src/components/hercon-components/0-atoms/ToolbarVertical.component.vue?271b","webpack:///./src/components/hercon-components/2-organisms/Toolbar.component.vue?6adf","webpack:///./src/components/hercon-components/2-organisms/Toolbar.component.vue?cfe1","webpack:///./src/components/hercon-components/2-organisms/Toolbar.component.vue?77b9","webpack:///./src/library/models/interfacesArbeitstag.ts","webpack:///./src/views/hercon-views/Scripts/Arbeitszeit.ts","webpack:///./src/views/hercon-views/Scripts/Arbeitszeit.ts?0ef8","webpack:///./src/views/hercon-views/Arbeitszeit.vue?2375","webpack:///./src/views/hercon-views/Urlaub.vue","webpack:///./src/library/models/interfacesUrlaubFilter.ts","webpack:///./src/library/models/interfacesUrlaubAntrag.ts","webpack:///./src/views/hercon-views/Scripts/Urlaub.ts","webpack:///./src/views/hercon-views/Scripts/Urlaub.ts?99e6","webpack:///./src/views/hercon-views/Urlaub.vue?67f9","webpack:///./src/views/hercon-views/Urlaubsantrag.vue","webpack:///./src/views/hercon-views/Urlaubsantrag.vue?baf6","webpack:///./src/views/hercon-views/Urlaubsantrag.vue?5aaa","webpack:///./src/views/hercon-views/Urlaubsantrag.vue?8887","webpack:///./src/views/hercon-views/Arbeitszeit_Erstellen.vue","webpack:///./src/library/models/interfacesTaetigkeit.ts","webpack:///./src/library/models/interfacesKwpFilter.ts","webpack:///./src/library/models/interfacesKleinauftragFilter.ts","webpack:///./src/views/hercon-views/Scripts/Arbeitszeit_Erstellen.ts","webpack:///./src/views/hercon-views/Scripts/Arbeitszeit_Erstellen.ts?e0b4","webpack:///./src/views/hercon-views/Arbeitszeit_Erstellen.vue?f220","webpack:///./src/router/index.ts","webpack:///./src/components/hercon-components/2-organisms/NavigationItem.component.vue?1660","webpack:///./src/components/hercon-components/2-organisms/NavigationItem.component.vue?97ef","webpack:///./src/components/hercon-components/2-organisms/NavigationItem.component.vue?790d","webpack:///./src/components/hercon-components/1-molecules/DateTime.component.vue","webpack:///./src/components/hercon-components/1-molecules/DateTime.component.vue?b1b1","webpack:///./src/components/hercon-components/1-molecules/DateTime.component.vue?b5ac","webpack:///./src/components/hercon-components/1-molecules/DateTime.component.vue?1d11","webpack:///./src/views/hercon-views/Logout.vue","webpack:///./src/components/hercon-components/3-templates/Logout.component.vue","webpack:///./src/components/hercon-components/3-templates/Logout.component.vue?fe7a","webpack:///./src/components/hercon-components/3-templates/Logout.component.vue?13c1","webpack:///./src/components/hercon-components/3-templates/Logout.component.vue?26e3","webpack:///./src/views/hercon-views/Logout.vue?34b6","webpack:///./src/views/hercon-views/Logout.vue?e4f1","webpack:///./src/views/hercon-views/Logout.vue?c104","webpack:///./src/App.vue?9844","webpack:///./src/App.vue?17af","webpack:///./src/App.vue?3746","webpack:///./src/store/index.ts","webpack:///./src/plugins/bootstrap-vue.js","webpack:///./src/library/axios/AxiosInterceptor.ts","webpack:///./src/plugins/axios-vue.js","webpack:///./src/plugins/snotify.js","webpack:///./src/plugins/feather-vue.js","webpack:///./src/main.ts","webpack:///./src/views/hercon-views/Arbeitszeit.vue?3fab"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_c","_self","_setupProxy","attrs","isLoggedIn","staticClass","staticStyle","_v","_s","userName","scopedSlots","_u","fn","expanded","on","$event","modalShow","_e","model","callback","$$v","expression","closeModal","staticRenderFns","StoreService","Vue","undefined","mitarbeiter","tokens","accessToken","logOut","item","JSON","stringify","setLocalStorage","error","console","log","removeLocalStorage","getLocalStorage","loginInfo","parse","warn","emptyLoginInfo","getLoginItem","gleitzeitAusblenden","itemName","localStorage","getItem","obj","setItem","removeItem","refreshToken","personalNummer","teamNummer","_t","class","classes","style","onClick","label","props","type","required","primary","default","size","validator","backgroundColor","computed","methods","component","PageSidebarComponent","Component","components","Button","PageHeaderComponent","PageMainComponent","isActive","disabled","onClicked","id","feather","imgNormal","imgActive","isNotificationEnabled","notificationNumber","text","onLoginExecuted","stopPropagation","preventDefault","onLogin","arguments","authentication","username","$set","password","localLogin","showSpinner","spinnerClass","meldungen","SnotifyService","typ","service","newAlert","$snotify","success","warning","info","nr","getColorFromNr","setSnotifyModel","ok","okColor","cancel","cancelColor","btnSize","color","message","title","yesNo","yesFn","noFn","confirm","doConfirm","okVar","cancelVar","$bvModal","msgBoxConfirm","buttonSize","okVariant","okTitle","cancelVariant","cancelTitle","footerClass","hideHeaderClose","centered","noCloseOnBackdrop","noCloseOnEsc","then","catch","err","doAlert","getPort","location","port","getUrl","hostname","getBaseUrl","baseUrl","BaseUrl","Axios","axios","baseURL","headers","Accept","defaults","urlLogin","urlLogout","urlRefresh","AuthService","credentials","post","params","benutzername","getUsername","timeout","loggedInItem","parsed","res","dispatchEvent","CustomEvent","logIn","token","common","Sizes","getOuterClass","isSetLabelText","labelText","getAreaClass","ref","getClass","placeholder","readonly","autocomplete","maxlength","pattern","getDatalistId","minlength","domProps","indexOf","_k","keyCode","emitTrigger","updateValue","target","hasLeftSlot","hasRightSlot","useDatalist","_l","datalist","index","isSetUnitText","unitText","InputFieldComponent","$slots","left","right","getInnerPaddingClass","getSizeClass","minimum","tiny","big","small","large","maximum","medium","margin","checkValid","$refs","input","checkValidity","$emit","__decorate","Prop","Boolean","ColorSchemes","GetClass","Click","ButtonComponent","GetSizeClass","GetColorClass","normal","secondary","white","good","failure","neutral","String","Emit","LoginComponent","constructor","usernameMinLength","passwordMinLength","focusPassword","inputErrorOnLastTry","init","addEventListener","errors","inputErrors","validate","forEach","inputError","login","status","Error","statusText","setAxiosToken","$router","response","request","debug","Login","detail","loading","statistikObject","urlaub","isHiddenGleitzeit","gleitzeit","arbeitszeit","_b","year","month","day","fetchWeekList","datum","datepickerlabels","de","backwardDate","forwardDate","showHideWochenende","isWochenende","wochenuebersichtList","statusArbeitstag","getArbeitstag","tag","statusBuchung","isAbgegeben","btnAbgebenColor","wocheAbgeben","INewStatistik","statistik","Wochenuebersicht","formatDateToDatePicker","Date","toLocaleDateString","buchungen","labelPrevDecade","labelPrevYear","labelPrevMonth","labelCurrentMonth","labelNextMonth","labelNextYear","labelNextDecade","labelToday","labelNoDateSelected","labelCalendar","labelNav","labelHelp","$route","query","getGlobaleStatistiken","$store","state","tempData","elementForSamstag","document","getElementById","elementForSonntag","classList","remove","add","responseStatistik","personalnummer","formatDateFromDatePicker","getArbeitszeit","x","arbeitstagdatum","path","isArbeitstag","includes","rowNumber","arbeitsTagObject","async","currentDate","afterAWeek","beforeAWeek","padTo2Digits","num","toString","padStart","date","partsOfDate","split","reverse","join","parseInt","weekday","fetchArbeitszeitAsync","editValues","calcArbeitszeit","kommen","gehen","wertList","pause","gebuchteZeit","taetigkeiten","selectItem","projekt","trim","buchungsart","wert","einheit","bemerkung","selectedItem","showCopyArbeitstagModalShow","showTaetigkeit","editTaetigkeit","deleteTaetigkeit","newTaetigkeit","backToHomepage","isDisabledSaveButton","saveArbeitstag","directives","rawName","modifiers","copyArbeitstagModalShow","copyDate","copyTaetigkeit","hideCopyArbeitstagModalShow","hasHeaderText","header","isVisible","getContentClass","BaseContainerComponent","parent","content","contentClass","getColorschemeClass","iconClass","customClasses","getShadowClass","active","isDisabled","hasImageOwnBackground","ShowImageBackground","ShowFeather","ShowImageNormal","ShowImageActive","IconFactoryComponent","IconButtonComponent","inputfield","failureAlt","shadowless","ToolbarIconButtonComponent","IconButton","disabledGroup","setFirstVl","setLeftVl","setCenterVl","setRightVl","ToolbarVerticalComponent","ToolbarComponent","hasFirstSection","hasLeftSection","hasCenterSection","hasRightSection","hasLastSection","newArbeitstag","arbeitstag","Arbeitszeit","isExistsEntry","buchungenGenericList","timepickerlabels","labelHours","labelMinutes","labelSeconds","labelIncrement","labelDecrement","labelSelected","labelNoTimeSelected","labelCloseButton","getWertList","getBuchungen","checkWochenStatus","onPropertyChanged","calcGebuchteZeit","getDay","sum","taetigkeit","isAnwesenheitFreigegeben","find","klartext","parseFloat","replace","toFixed","e","kommenHour","gehenHour","pauseHour","kommenMinute","gehenMinute","pauseMinute","minuteDifference","hourDifference","responseBuchungen","autoId","delete","targetDate","selectedTaetigkeit","hasErrors","isChange","existsEntry","put","dayOfWeek","convertMinuteOfPauseTime","afterADay","fetchDateByDate","beforeADay","newValue","errorList","validateEnteredValues","isChanged","Watch","isMessage","messageType","jahrList","executeUrlaubFilter","jahr","antragstatusList","urlaubFilterResponse","von","bis","arbeitstage","deleteAntrag","art","beantragt","bearbeitet","bearbeiter","openNewAntragModal","showModal","isMessageModal","antragtypenList","editValuesModal","calcArbeitstage","closeNewAntragModal","saveUrlaubAntrag","newIUrlaubFilter","urlaubFilter","newIUrlaubAntrag","urlaubantrag","Urlaub","isAntragMessage","feiertageList","fetchAllLists","getFullYear","workDaysCount","getWorkDaysCount","startDate","endDate","_startDate","_endDate","dateList","Array","feiertagDateList","selectedDate","setDate","getDate","difference","filter","getDateToDatePicker","formatDateFieldsUrlaubFilterResponse","replaceMitarbeiterNumberToName","values","deleteObj","reponse","formatDate","substring","Promise","all","responseAntragtypen","responseAntragstatus","responseJahr","reponseStatistik","responseFeiertage","unshift","antragstyp","options","selected","buchungenList","buchungsartSelected","buchungOptionValue","taetigkeitenList","isTaetigkeitFreigegeben","taetigkeitOptionValue","cacheProjekteList","isProjektauswahlFreigegeben","showKwpProjektModal","kwpProjektModalShow","showHideKwpFilterBereich","kwpFilterBereichShow","kwpProjektBezeichnung","editValuesKwpFilter","projektnummer","mitarbeiterList","projektleiter","kunde","suchtext","executeKwpProjekteFilter","kwpProjekteList","selectKwpProjekt","projektNummer","bezeichnung","hideKwpProjektModal","showKleinauftragModal","kleinauftragModalShow","showHideKleinauftragFilterBereich","kleinauftragFilterBereichShow","editValuesKleinauftragFilter","projektLeiter","statusKleinauftragList","statusKleinauftrag","executeKleinauftragFilter","kleinauftragProjekteList","selectKleinauftragProjekt","beschreibung","hideKleinauftragModal","orteList","inActive","ort","checkInputNachweis","nachweis","decreaseWert","checkZeitFormat","increaseWert","inValidFormat","inValidFormatMessage","backToArbeitszeit","transactionType","saveTaetigkeit","newITaetigkeit","newIKwpFilter","projektStatus","newIKleinauftragFilter","kleinauftragFilter","kwpProjektnummer","isKwpProjekteAbgeschlossen","decimalRegex","pageLoading","isError","taetigkeitenGenericList","tempTaetigkeitenList","projektStatusList","datepickerValue","fetchCacheProjekteListAsync","initForm","_taetigkeitValue","nummer","buchungObject","test","isSuccess","update","projektname","projektNamen","buchungObjekt","responseTaetigkeiten","responseOrte","responseMitarbeiter","reponseStatusKleinauftrag","element","fetchBuchungenListAsync","fetchTaetigkeitenListAsync","fetchtOrteListAsync","fetchMitarbeiterListAsync","fetchKleinauftragListAsync","errorMessage","formatZeit","aa","bb","getMonth","getHours","getMinutes","getSeconds","a","use","VueRouter","routes","meta","requiresAuth","Urlaubsantrag","Arbeitszeit_Erstellen","router","base","process","beforeEach","to","from","next","matched","some","record","NavigationItemComponent","selfDetermineActive","setActive","routerPathName","routerPathUrl","activateRouterPush","activateRouterPushPathName","activateRouterPushPathUrl","isRouterLinkSet","isRouterLinkSetName","isRouterLinkSetUrl","emitClick","onUrlChange","newVal","Number","immediate","deep","initialized","getDatetimeClass","hoursDisplay","minutesDisplay","seconds","secondsDisplay","version","DateTimeComponent","timerID","setInterval","increaseSecond","secondsCounter","dayDisplay","monthDisplay","yearDisplay","mounted","refreshData","destroy","clearInterval","currentTimeAndDate","authUsername","hidePopover","cancelModal","onLogout","LogoutComponent","logout","Statuscode","removeAxiosToken","Logout","authPassword","showNow","App","showPopover","userInitials","beforeCreate","getUserInitials","triggerLogout","closePopOverWindow","openPopOverWindow","fullName","firstNameLetter","indexFirstSpace","secondNameLetter","Vuex","Store","mutations","actions","BootstrapVue","BootstrapVueIcons","axiosInterceptorResponseReject","originalRequest","config","_retry","trace","refresh","reject","setAxiosInterceptors","interceptors","VueAxios","toast","position","SnotifyPosition","rightBottom","showProgressBar","closeOnClick","pauseOnHover","Snotify","VueFeather","productionTip","store","h","$mount"],"mappings":"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","file":"js/app.d0bdf229.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wochenuebersicht.vue?vue&type=style&index=0&id=11a70aff&prod&lang=css&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.component.vue?vue&type=style&index=0&id=711cfdd9&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=64ce1038&prod&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Arbeitszeit_Erstellen.vue?vue&type=style&index=0&id=438085a5&prod&lang=css&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=089758b8&prod&scoped=true&lang=css&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('section',{attrs:{\"id\":\"app\"}},[_c('div',[(_vm.isLoggedIn)?_c('b-navbar',{attrs:{\"toggleable\":\"\",\"variant\":\"dark\",\"type\":\"dark\"}},[_c('b-navbar-brand',[_c('img',{staticClass:\"navbar-logo\",staticStyle:{\"vertical-align\":\"baseline\"},attrs:{\"src\":\"/app1.ico\",\"alt\":\"Herrmann Logo\"}}),_vm._v(\"  \"),_c('b-icon',{attrs:{\"icon\":\"person\"}}),_vm._v(\" \"+_vm._s(_vm.userName)+\" \")],1),_c('b-navbar-toggle',{staticStyle:{\"margin-right\":\"10px\",\"border\":\"solid\",\"color\":\"white\"},attrs:{\"target\":\"navbar-toggle-collapse\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ expanded }){return [(expanded)?_c('b-icon',{attrs:{\"icon\":\"chevron-bar-up\"}}):_c('b-icon',{attrs:{\"icon\":\"chevron-bar-down\"}})]}}],null,false,1828389767)}),_c('b-collapse',{attrs:{\"id\":\"navbar-toggle-collapse\",\"is-nav\":\"\"}},[_c('hr',{staticClass:\"solid\",staticStyle:{\"color\":\"white\"}}),_c('b-navbar-nav',{staticClass:\"ml-auto\"},[_c('b-nav-item',{attrs:{\"to\":\"./\"}},[_c('feather',{staticStyle:{\"vertical-align\":\"middle\"},attrs:{\"type\":\"list\"}}),_vm._v(\" Wochenübersicht\")],1),_c('b-nav-item',{attrs:{\"to\":\"/Urlaub\",\"align-items-center\":\"\"}},[_c('feather',{staticStyle:{\"vertical-align\":\"middle\"},attrs:{\"type\":\"sun\"}}),_vm._v(\" Urlaub\")],1),_c('hr',{staticClass:\"solid\",staticStyle:{\"color\":\"white\"}}),_c('b-nav-item',{attrs:{\"align-items-center\":\"\"},on:{\"click\":function($event){_vm.modalShow = !_vm.modalShow}}},[_c('feather',{staticStyle:{\"vertical-align\":\"middle\"},attrs:{\"type\":\"log-out\"}}),_vm._v(\" Abmelden\")],1)],1)],1)],1):_vm._e()],1),_c('hc-page-main'),_c('hr',{staticClass:\"solid\"}),_c('div',{staticClass:\"mx-auto\"},[_vm._v(\"v1.4\")]),_c('vue-snotify'),_c('b-modal',{attrs:{\"hide-header\":true,\"hide-header-close\":true,\"hide-footer\":true},model:{value:(_vm.modalShow),callback:function ($$v) {_vm.modalShow=$$v},expression:\"modalShow\"}},[_c('Logout',{on:{\"hidePopover\":_vm.closeModal}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from \"vue\";\r\nimport { LoginInfo } from \"@/services/hercon-services/models/LoginInfo\";\r\n\r\n/**\r\n * Ein Service für das Speichern von\r\n * Anmelde-Informationen im lokalen Speicher.\r\n *\r\n * @type Funktions-Service\r\n *\r\n * @remarks\r\n * Dieser Service stellt Funktionen zum Verwalten der Anmeldedaten bereit,\r\n * die bei der Authentifizierung und Generieren von Tokens ermittelt werden.\r\n */\r\nexport class StoreService extends Vue {\r\n static emptyLoginInfo = {\r\n tokens: {\r\n accessToken: \"\",\r\n refreshToken: \"\",\r\n },\r\n mitarbeiter: {\r\n name: \"\",\r\n personalNummer: 0,\r\n teamNummer: 0,\r\n gleitzeitAusblenden: false,\r\n },\r\n } as LoginInfo;\r\n public static logIn(data: LoginInfo): void {\r\n try {\r\n if (\r\n data.mitarbeiter.name == undefined ||\r\n data.tokens.accessToken.length == 0 ||\r\n data.mitarbeiter.name.length == 0\r\n ) {\r\n this.logOut();\r\n } else {\r\n const item = JSON.stringify(data);\r\n this.setLocalStorage(\"loggedin\", item);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n this.logOut();\r\n }\r\n }\r\n\r\n /*\r\n public static logIn(data: LoginInfo): void {\r\n console.log(\"data:LoginInfo \", data);\r\n try {\r\n if (\r\n data.username == undefined ||\r\n data.tokens.accessToken.length == 0 ||\r\n data.username.length == 0\r\n ) {\r\n this.logOut();\r\n } else {\r\n const item = JSON.stringify(data);\r\n console.log(\"item \", item);\r\n this.setLocalStorage(\"loggedin\", item);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n this.logOut();\r\n }\r\n }\r\n */\r\n public static logOut() {\r\n this.removeLocalStorage(\"loggedin\");\r\n }\r\n public static isLoggedIn(): boolean {\r\n const object = this.getLocalStorage(\"loggedin\");\r\n if (object === null || object === undefined) {\r\n return false;\r\n }\r\n //console.log(JSON.parse(object));\r\n return true;\r\n }\r\n\r\n public static getLoginItem(): LoginInfo {\r\n if (this.isLoggedIn()) {\r\n let loginInfo: LoginInfo;\r\n try {\r\n loginInfo = JSON.parse(this.getLocalStorage(\"loggedin\")) as LoginInfo;\r\n } catch (error) {\r\n console.warn(\r\n `Login-Objekt kann nicht geparst werden: ${error}\\n \r\n Login-Objekt: ${this.getLocalStorage(\"loggedin\")}`\r\n );\r\n this.logOut();\r\n return this.emptyLoginInfo;\r\n }\r\n return loginInfo;\r\n } else return this.emptyLoginInfo;\r\n }\r\n public static getUsername(): string {\r\n if (this.isLoggedIn()) {\r\n return this.getLoginItem().mitarbeiter.name;\r\n }\r\n return \"\";\r\n }\r\n\r\n public static isHiddenGleitzeit(): boolean {\r\n if (this.isLoggedIn()) {\r\n return this.getLoginItem().mitarbeiter.gleitzeitAusblenden;\r\n }\r\n return false;\r\n }\r\n\r\n public static getTokens(): any {\r\n if (this.isLoggedIn()) {\r\n return this.getLoginItem().tokens;\r\n }\r\n return {}; // TODO: Prüfen ob diese Variante Auswirkungen hat --- Vorher: return \"{}\"\r\n }\r\n public static getLocalStorage(itemName: string): any {\r\n try {\r\n if (localStorage.getItem(itemName)) {\r\n const item = localStorage.getItem(itemName);\r\n return JSON.parse(item || \"{}\");\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n return undefined;\r\n }\r\n return undefined;\r\n }\r\n public static setLocalStorage(itemName: string, obj: any): boolean {\r\n try {\r\n const item = JSON.stringify(obj);\r\n localStorage.setItem(itemName, item);\r\n return true;\r\n } catch (error) {\r\n console.log(error);\r\n return false;\r\n }\r\n }\r\n public static removeLocalStorage(itemName: string): boolean {\r\n try {\r\n localStorage.removeItem(itemName);\r\n return true;\r\n } catch (error) {\r\n console.log(error);\r\n return false;\r\n }\r\n }\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('nav',{attrs:{\"id\":\"h-page-sidebar-nav\"}},[_c('div',{attrs:{\"id\":\"h-page-sidebar-inner-nav\"}},[_vm._t(\"default\")],2),_c('div',{attrs:{\"id\":\"h-page-sidebar-inner-nav\"}},[_vm._t(\"bottom\")],2),_c('div',{attrs:{\"id\":\"h-page-sidebar-inner-nav\"}},[_vm._t(\"right\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',{class:_vm.classes,style:(_vm.style),attrs:{\"type\":\"button\"},on:{\"click\":_vm.onClick}},[_vm._v(_vm._s(_vm.label))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Button.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Button.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Button.vue?vue&type=template&id=fa90736a&\"\nimport script from \"./Button.vue?vue&type=script&lang=js&\"\nexport * from \"./Button.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport Button from \"@/stories/Button.vue\";\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: { Button },\r\n})\r\nexport default class PageSidebarComponent extends Vue {}\r\nVue.component(\"hc-page-sidebar\", PageSidebarComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageSidebar.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageSidebar.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PageSidebar.component.vue?vue&type=template&id=e5e30b32&\"\nimport script from \"./PageSidebar.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./PageSidebar.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('header',{attrs:{\"id\":\"h-page-header\"}},[_c('div',{staticClass:\"h-page-header-first\"},[_vm._t(\"first\")],2),_c('div',{staticClass:\"h-page-header-left\"},[_vm._t(\"left\")],2),_c('div',{staticClass:\"h-page-header-center\"},[_vm._t(\"center\")],2),_c('div',{staticClass:\"h-page-header-right\"},[_vm._t(\"right\")],2),_c('div',{staticClass:\"h-page-header-last\"},[_vm._t(\"last\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class PageHeaderComponent extends Vue {}\r\nVue.component(\"hc-page-header\", PageHeaderComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageHeader.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageHeader.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PageHeader.component.vue?vue&type=template&id=33979907&\"\nimport script from \"./PageHeader.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./PageHeader.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('main',{attrs:{\"id\":\"h-page-main\"}},[_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\n@Component({ \r\n components: {} \r\n})\r\nexport default class PageMainComponent extends Vue {}\r\nVue.component(\"hc-page-main\", PageMainComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageMain.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageMain.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PageMain.component.vue?vue&type=template&id=0d9e7f01&\"\nimport script from \"./PageMain.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./PageMain.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"h-nav-item\",attrs:{\"active\":_vm.isActive,\"disabled\":_vm.disabled},on:{\"click\":_vm.onClicked}},[_c('button',{staticClass:\"h-nav-item-button\",attrs:{\"disabled\":_vm.disabled,\"active\":_vm.isActive,\"id\":_vm.id}},[_c('hc-icon-factory',{attrs:{\"iconClass\":\"h-nav-item-icon\",\"feather\":_vm.feather,\"imgNormal\":_vm.imgNormal,\"imgActive\":_vm.imgActive,\"hasImageOwnBackground\":false,\"active\":_vm.isActive,\"disabled\":_vm.disabled}}),(_vm.isNotificationEnabled)?_c('span',{staticClass:\"h-nav-item-notifier\",attrs:{\"disabled\":_vm.disabled}},[_vm._v(\" \"+_vm._s(this.notificationNumber)+\" \")]):_vm._e()],1),_c('label',{staticClass:\"h-nav-item-text\",attrs:{\"disabled\":_vm.disabled}},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-container',[_c('b-card',{staticClass:\"mx-auto\"},[_c('b-card-body',[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"2\"}},[_c('b-card-img',{staticClass:\"float-end\",staticStyle:{\"max-width\":\"2rem\"},attrs:{\"src\":\"./app.ico\",\"alt\":\"Image\"}})],1),_c('b-col',{attrs:{\"cols\":\"10\"}},[_c('b-card-title',{staticClass:\"mt-2 float-start\"},[_vm._v(\" hercon Projekt-Zeit \")])],1)],1),_c('hr'),_c('hc-login',{on:{\"loginExecuted\":function($event){return _vm.onLoginExecuted()}}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"h-login\"},[_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onLogin.apply(null, arguments)}}},[_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"id\":\"input-group-1\",\"label\":\"Benutzername\",\"label-for\":\"input-1\"}},[_c('b-form-input',{attrs:{\"id\":\"input-1\",\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Nachname, Vorname\"},on:{\"trigger\":function($event){return _vm.onLogin()}},model:{value:(_vm.authentication.username),callback:function ($$v) {_vm.$set(_vm.authentication, \"username\", $$v)},expression:\"authentication.username\"}})],1),_c('b-form-group',{staticClass:\"mb-3\",attrs:{\"id\":\"input-group-2\",\"label\":\"Passwort\",\"label-for\":\"input-2\"}},[_c('b-form-input',{attrs:{\"id\":\"input-2\",\"placeholder\":\"Passwort\",\"type\":\"password\",\"required\":\"\"},on:{\"trigger\":function($event){return _vm.onLogin()}},model:{value:(_vm.authentication.password),callback:function ($$v) {_vm.$set(_vm.authentication, \"password\", $$v)},expression:\"authentication.password\"}})],1),_c('b-row',{staticClass:\"text-center\"},[_c('b-col',[(!_vm.localLogin)?_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"primary\"}},[(_vm.showSpinner)?_c('b-spinner',{class:_vm.spinnerClass,attrs:{\"variant\":\"Light\",\"small\":\"\"}}):_vm._e(),_vm._v(_vm._s(_vm.showSpinner ? \"\" : \"Anmelden\")+\" \")],1):_vm._e()],1)],1)],1),_c('div',[_vm._v(_vm._s(_vm.meldungen))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Vue } from \"vue-property-decorator\"\nimport { SnotifyModel } from \"@/services/hercon-services/models/SnotifyModel\"\n\n/**\n * Dieser Service stellen Funktionen bereit.\n * \n * @type Funktions-Service\n * \n * @remarks\n * Dieser Service stellt Funktionen zum Konfigurieren \n * und Ausgeben von Meldungen bereit, basierend auf dem Paket \"Snotify\".\n */\nexport class SnotifyService extends Vue {\n [x: string]: any\n\n /** \n * Aufrufen einer Benachrichtigung, die nur ein paar Sekunden andauert.\n * \n * @param typ - Die Nummer für die Art der Ausgabe\n * 0 = Erfolgreich, \n * 1 = Achtung, \n * 2 = Fehler, \n * Rest = NotDefined => \"Fehler\" \n * @param text - Ausgabetext\n */\n public static newAlert(typ: number, text: string): void {\n const service = new SnotifyService()\n service.newAlert(typ, text)\n }\n\n /** \n * Aufrufen einer Benachrichtigung.\n * \n * @param typ - Die Nummer für die Art der Ausgabe\n * 0 = Erfolgreich, \n * 1 = Achtung, \n * 2 = Fehler, \n * Rest = NotDefined => \"Fehler\" \n * @param text - Ausgabetext\n */\n public newAlert(typ: number, text: string): void {\n switch (typ) {\n case 0:\n this.$snotify.success(text, \"Erfolgreich\")\n break\n case 1:\n this.$snotify.warning(text, \"Achtung\")\n break\n case 2:\n this.$snotify.error(text, \"Fehler\")\n break\n case 3:\n this.$snotify.info(text, \"Info\")\n break\n }\n }\n\n /**\n * Ermitteln der Farbe anhand der Nummer.\n * \n * @param nr - Die Nummer für die Farbauswahl\n * 0 = \"\", \n * 1 = success, \n * 2 = warning, \n * 3 = danger, \n * 4 = secondary, \n * 5 = info, \n * 6 = light, \n * 7 = dark, \n * Rest => \"primary\" \n * @returns Bezeichnung für die zugehörige Nummer\n */\n public static getColorFromNr(nr: number): string {\n const service = new SnotifyService()\n return service.getColorFromNr(nr)\n }\n\n /**\n * Ermitteln der Farbe anhand der Nummer.\n * \n * @param nr - Die Nummer für die Farbauswahl\n * 0 = \"\", \n * 1 = success, \n * 2 = warning, \n * 3 = danger, \n * 4 = secondary, \n * 5 = info, \n * 6 = light, \n * 7 = dark, \n * Rest => \"primary\" \n * @returns Bezeichnung für die zugehörige Nummer\n */\n public getColorFromNr(nr: number): string {\n switch (nr) {\n case -10:\n return \"warning\"\n break\n case 0:\n return \"\"\n break\n case 1:\n return \"success\"\n break\n case 2:\n return \"warning\"\n break\n case 3:\n return \"danger\"\n break\n case 4:\n return \"secondary\"\n break\n case 5:\n return \"info\"\n break\n case 6:\n return \"light\"\n break\n case 7:\n return \"dark\"\n break\n default:\n return \"primary\"\n }\n }\n\n public setSnotifyModel(ok: string, okColor: string, cancel: string, cancelColor: string, btnSize: string): SnotifyModel {\n const data: SnotifyModel = {\n btnSize: btnSize,\n cancel: {\n color: cancelColor,\n text: cancel,\n },\n ok: {\n color: okColor,\n text: ok,\n },\n }\n return data\n }\n\n public static doConfirm(message: string, title: string, yesNo: boolean, yesFn: any, noFn?: any, confirm?: SnotifyModel): void {\n const service = new SnotifyService()\n service.doConfirm(message, title, yesNo, yesFn, noFn, confirm)\n }\n \n doConfirm(message: string, title: string, yesNo: boolean, yesFn: any, noFn?: any, confirm?: SnotifyModel): boolean {\n let ok = yesNo ? \"Ja\" : \"Ok\"\n let cancel = yesNo ? \"Nein\" : \"Abbrechen\"\n let okVar = \"danger\"\n let cancelVar = \"primary\"\n let btnSize = \"sm\"\n \n if (confirm != undefined) {\n ok = confirm.ok.text\n okVar = confirm.ok.color\n cancel = confirm.cancel.text\n cancelVar = confirm.cancel.color\n btnSize = confirm.btnSize\n }\n this.$bvModal\n .msgBoxConfirm(message, {\n title: title,\n size: \"sm\",\n buttonSize: btnSize,\n okVariant: okVar,\n okTitle: ok,\n cancelVariant: cancelVar,\n cancelTitle: cancel,\n footerClass: \"p-2\",\n hideHeaderClose: true,\n centered: true,\n noCloseOnBackdrop: true,\n noCloseOnEsc: true,\n })\n .then((value: boolean) => {\n if (value) {\n yesFn()\n } else {\n if (noFn != undefined) {\n noFn()\n } else {\n this.newAlert(1, `\"${title}\" abgebrochen`)\n }\n }\n })\n .catch((err: string) => {\n console.log(err)\n return false\n })\n return false\n }\n\n doAlert(message: string, title: string): void {\n this.$bvModal.msgBoxConfirm(message, {\n title: title,\n size: \"sm\",\n buttonSize: \"lg\",\n okVariant: \"primary\",\n okTitle: \"OK\",\n footerClass: \"p-2\",\n hideHeaderClose: true,\n centered: true,\n noCloseOnBackdrop: true,\n noCloseOnEsc: true,\n })\n }\n}","function getPort() {\r\n if (process.env.NODE_ENV === \"production\") {\r\n return window.location.port;\r\n }\r\n return \"44313\";\r\n}\r\n\r\nfunction getUrl(port: string) {\r\n if (process.env.VUE_APP_USE_ENV_URL === \"TRUE\") {\r\n return process.env.VUE_APP_URL_FULL;\r\n }\r\n return `https://${window.location.hostname}:${port}/${process.env.VUE_APP_URL_APP_ADDON}`;\r\n}\r\n\r\nfunction getBaseUrl() {\r\n const port = getPort();\r\n const baseUrl = getUrl(port);\r\n return baseUrl;\r\n}\r\n\r\n/**\r\n * Dieser Service stellt Daten bereit.\r\n *\r\n * @type Daten-Service\r\n *\r\n * @remarks\r\n * Dieser Service generiert die Basis-URL.\r\n */\r\nexport const BaseUrl = getBaseUrl();\r\n","import axios, { AxiosStatic } from \"axios\";\r\nimport { BaseUrl } from \"@/services/hercon-services/Url.service\";\r\n\r\nconst Axios = axios.create({\r\n baseURL: BaseUrl,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"*/*\",\r\n },\r\n});\r\n\r\nAxios.defaults.baseURL = BaseUrl;\r\nexport default Axios;\r\n\r\ndeclare module \"vue/types/vue\" {\r\n interface Vue {\r\n axios: AxiosStatic;\r\n }\r\n}\r\n","import Axios from \"@/library/axios/Axios\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport { BaseUrl } from \"@/services/hercon-services/Url.service\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport { AuthCredentials } from \"@/services/hercon-services/models/AuthCredentials\";\r\nimport { LoginInfo } from \"./models/LoginInfo\";\r\n\r\nconst urlLogin = \"auth/login\";\r\nconst urlLogout = \"auth/logout\";\r\nconst urlRefresh = \"auth/refresh\";\r\n\r\n/**\r\n * Ein Service für die Authentifizierung.\r\n *\r\n * @type Service-Klasse\r\n *\r\n * @remarks\r\n * Dieser Service stellt Funktionen zur Authentifizierung\r\n * und dem Handling der dabei generierten Tokens bereit.\r\n */\r\nexport class AuthService {\r\n static async login(\r\n credentials: AuthCredentials\r\n ): Promise> {\r\n return Axios.post(`${BaseUrl + urlLogin}`, JSON.stringify(credentials));\r\n }\r\n static async logout(): Promise> {\r\n return await Axios.post(\r\n urlLogout,\r\n {},\r\n { params: { benutzername: StoreService.getUsername() }, timeout: 20000 }\r\n );\r\n }\r\n static async refresh() {\r\n const loggedInItem = StoreService.getLoginItem();\r\n\r\n if (loggedInItem) {\r\n const parsed = JSON.stringify(loggedInItem.tokens);\r\n\r\n try {\r\n const res = await Axios.post(urlRefresh, parsed);\r\n\r\n if (res.data) {\r\n if (res.data == \"error\") {\r\n window.dispatchEvent(new CustomEvent(\"token-invalid\"));\r\n StoreService.logOut();\r\n return \"\";\r\n }\r\n const loginInfo: LoginInfo = res.data;\r\n\r\n // Das Backend hat den 'alten' login schon überschrieben.\r\n // Dieser muss mitgetragen werden.\r\n //*******loginInfo.datumLogin = loggedInItem.datumLogin\r\n StoreService.logIn(loginInfo);\r\n\r\n return res.data.tokens.accessToken;\r\n }\r\n } catch (error) {\r\n StoreService.logOut();\r\n window.dispatchEvent(new CustomEvent(\"token-invalid\"));\r\n return \"\";\r\n }\r\n }\r\n }\r\n static setAxiosToken(token: string) {\r\n Axios.defaults.headers.common[\"Authorization\"] = \"Bearer \" + token;\r\n }\r\n static removeAxiosToken() {\r\n Axios.defaults.headers.common[\"Authorization\"] = \"\";\r\n }\r\n}\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.getOuterClass,attrs:{\"disabled\":_vm.disabled}},[(_vm.isSetLabelText)?_c('div',{staticClass:\"h-top-label-area\"},[_c('label',{staticClass:\"h-label\"},[_vm._v(_vm._s(_vm.labelText))])]):_vm._e(),_c('div',{staticClass:\"h-input-field-area-description\"},[_c('div',{class:_vm.getAreaClass},[_c('input',{ref:\"input\",class:_vm.getClass,attrs:{\"id\":_vm.id,\"type\":_vm.type,\"placeholder\":_vm.placeholder,\"disabled\":_vm.disabled,\"readonly\":_vm.readonly,\"autocomplete\":_vm.autocomplete,\"maxlength\":_vm.maxlength,\"required\":_vm.required,\"pattern\":_vm.pattern,\"list\":_vm.getDatalistId,\"minlength\":_vm.minlength},domProps:{\"value\":_vm.value},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.emitTrigger.apply(null, arguments)},\"input\":function($event){return _vm.updateValue($event.target.value)}}}),(_vm.hasLeftSlot)?_c('div',{staticClass:\"h-input-field-left-addition\"},[_vm._t(\"left\")],2):_vm._e(),(_vm.hasRightSlot)?_c('div',{staticClass:\"h-input-field-right-addition\"},[_vm._t(\"right\")],2):_vm._e(),_vm._t(\"datalist\",function(){return [(_vm.useDatalist)?_c('datalist',{attrs:{\"id\":_vm.getDatalistId}},_vm._l((_vm.datalist),function(value,index){return _c('option',{key:index},[_vm._v(\" \"+_vm._s(value)+\" \")])}),0):_vm._e()]})],2),(_vm.isSetUnitText)?_c('label',{staticClass:\"h-input-field-unit-label\",attrs:{\"after\":\"inputf\",\"disabled\":_vm.disabled}},[_vm._v(_vm._s(_vm.unitText)+\" \")]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\n\r\nenum Sizes {\r\n minimum = \"h-input-field-size-minimum\",\r\n tiny = \"h-input-field-size-tiny\",\r\n small = \"h-input-field-size-small\",\r\n medium = \"h-input-field-size-medium\",\r\n big = \"h-input-field-size-big\",\r\n large = \"h-input-field-size-large\",\r\n maximum = \"h-input-field-size-maximum\",\r\n}\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class InputFieldComponent extends Vue {\r\n \r\n // #region PROPS\r\n \r\n @Prop({}) id!: string;\r\n @Prop({ default: () => [] }) datalist!: string[];\r\n @Prop({ default: \"\" }) placeholder!: string;\r\n @Prop({ default: \"\" }) labelText!: string;\r\n @Prop({ default: \"\" }) unitText!: string;\r\n @Prop({ default: false }) readonly!: boolean;\r\n @Prop({ default: false }) disabled!: boolean;\r\n @Prop({ default: \"text\" }) type!: string;\r\n\r\n @Prop({}) value!: any;\r\n\r\n @Prop({}) autocomplete!: string;\r\n @Prop({ default: 0 }) minlength!: number;\r\n @Prop({ default: -1 }) maxlength!: number;\r\n @Prop({ default: false }) required!: boolean;\r\n @Prop({}) pattern!: string;\r\n\r\n @Prop(Boolean) minimum!: boolean;\r\n @Prop(Boolean) tiny!: boolean;\r\n @Prop(Boolean) small!: boolean;\r\n @Prop(Boolean) big!: boolean;\r\n @Prop(Boolean) large!: boolean;\r\n @Prop(Boolean) maximum!: boolean;\r\n @Prop(Boolean) margin!: boolean;\r\n\r\n // #endregion\r\n\r\n // #region COMPUTED PROPERTIES\r\n \r\n get hasLeftSlot(): boolean {\r\n return !!this.$slots.left;\r\n }\r\n\r\n get hasRightSlot(): boolean {\r\n return !!this.$slots.right;\r\n }\r\n\r\n /** \r\n * Gibt zurück, ob Einträge vorhanden sind. \r\n * Da die Id auch gesetzt sein muss, wird sie hier auch geprüft.\r\n */\r\n get useDatalist(): boolean {\r\n if (this.id == undefined) return false;\r\n if (this.datalist.length <= 0) return false;\r\n return true;\r\n }\r\n\r\n /**\r\n * Kombiniert die h-input-field klasse mit der Paddingklasse.\r\n *\r\n * @returns\r\n * String mit der Elementklasse und der Paddings für das linke und rechte Unterelement.\r\n */\r\n get getClass(): string {\r\n return `h-input-field ${this.getInnerPaddingClass}`;\r\n }\r\n\r\n /** \r\n * Gibt der beigefügten Datalist eine ID. \r\n * Diese ist zwingend notwendig, um die Einträge an das Input-Element zu binden.\r\n */\r\n get getDatalistId(): string {\r\n return this.id + \"_datalist\";\r\n }\r\n\r\n /**\r\n * Kombiniert die h-input-field-area klasse mit der Größenklasse.\r\n * Div limitiert das eigentliche Inputfield. Da das Inputfield aber selbst\r\n * noch einige Elemente kontrollieren muss, wurde die Einstellung der Breite\r\n * in ein anderes Element ausgelagert.\r\n *\r\n * @returns\r\n * String mit der Elementklasse und der Größenklasse\r\n */\r\n get getAreaClass(): string {\r\n return `h-input-field-area ${this.getSizeClass}`;\r\n }\r\n\r\n /**\r\n * Bestimmt anhand der übergebenen Flags für die Größe die Größenklasse.\r\n *\r\n * @returns\r\n * String mit der Größenklasse.\r\n */\r\n get getSizeClass(): string {\r\n if (this.minimum) return Sizes.minimum;\r\n if (this.tiny) return Sizes.tiny;\r\n if (this.big) return Sizes.big;\r\n if (this.small) return Sizes.small;\r\n if (this.large) return Sizes.large;\r\n if (this.maximum) return Sizes.maximum;\r\n return Sizes.medium;\r\n }\r\n\r\n get getInnerPaddingClass(): string {\r\n if (this.hasLeftSlot && this.hasRightSlot) return \"h-input-field-innerpadding-leftright\";\r\n if (this.hasLeftSlot) return \"h-input-field-innerpadding-left\";\r\n if (this.hasRightSlot) return \"h-input-field-innerpadding-right\";\r\n return \"h-input-field-innerpadding-none\";\r\n }\r\n\r\n get getOuterClass(): string {\r\n return `h-input-field-container${\r\n this.margin ? \" h-input-field-outermargin-default\" : \"\"\r\n }`;\r\n }\r\n\r\n /**\r\n * Gibt an, ob ein Label mit einem Label-Text angezeigt werden soll.\r\n * Dabei wird nur geprüft ob ein Text für dieses Label angegeben wurde.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns\r\n * Boolean, welcher angibt ob ein Text gesetzt wurde und somit angezeigt\r\n * werden soll.\r\n */\r\n get isSetLabelText(): boolean {\r\n return this.labelText != \"\";\r\n }\r\n\r\n /**\r\n * Gibt an, ob ein Label mit einem Unit-Text angezeigt werden soll.\r\n * Dabei wird nur geprüft ob ein Text für die Einheit angegeben wurde.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns\r\n * Boolean, welcher angibt ob ein Text für die Einheit gesetzt wurde und\r\n * somit angezeigt werden soll.\r\n */\r\n get isSetUnitText(): boolean {\r\n return this.unitText != \"\";\r\n }\r\n\r\n // #endregion\r\n\r\n // #region METHODS\r\n \r\n /**\r\n * Validierung des Eingabe-Elements.\r\n *\r\n * @returns\r\n * Resultat der internen Validitätsprüfung.\r\n *\r\n * @remarks\r\n * Interne Prüfung abhängig vom Typ.\r\n */\r\n checkValid(): boolean {\r\n return (\r\n this.$refs.input as Vue & { checkValidity: () => boolean }\r\n ).checkValidity();\r\n }\r\n\r\n /**\r\n * Wird für die Bindung mit v-model benötigt.\r\n *\r\n * @emits\r\n * Emittet den Wert des Eingabefeldes unter \"input\".\r\n */\r\n updateValue(value: any): void {\r\n this.$emit(\"input\", value);\r\n }\r\n\r\n emitTrigger() {\r\n this.$emit(\"trigger\");\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-input-field\", InputFieldComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputField.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputField.component.vue?vue&type=script&lang=ts&\"","\r\nimport { Vue, Component, Prop, Emit } from \"vue-property-decorator\";\r\n\r\nenum Sizes {\r\n normal = \"h-button-size-medium\",\r\n small = \"h-button-size-small\",\r\n tiny = \"h-button-size-tiny\",\r\n}\r\n\r\nenum ColorSchemes {\r\n primary = \"h-colorscheme-primary\",\r\n secondary = \"h-colorscheme-secondary\",\r\n white = \"h-colorscheme-white\",\r\n failure = \"h-colorscheme-failure\",\r\n warning = \"h-colorscheme-warning\",\r\n good = \"h-colorscheme-good\",\r\n neutral = \"h-colorscheme-neutral\",\r\n}\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class ButtonComponent extends Vue {\r\n \r\n // #region PROPS\r\n\r\n @Prop(Boolean) small!: boolean;\r\n @Prop(Boolean) tiny!: boolean;\r\n\r\n @Prop(Boolean) readonly primary!: boolean;\r\n @Prop(Boolean) readonly secondary!: boolean;\r\n @Prop(Boolean) readonly white!: boolean;\r\n @Prop(Boolean) readonly failure!: boolean;\r\n @Prop(Boolean) readonly warning!: boolean;\r\n @Prop(Boolean) readonly good!: boolean;\r\n @Prop(Boolean) readonly neutral!: boolean;\r\n\r\n @Prop(String) readonly text!: string;\r\n\r\n // #endregion\r\n\r\n // #region COMPUTED PROPERTIES\r\n\r\n /**\r\n * Computed Wert, welcher die benutzte Klassen für das Layout und die Farbe\r\n * für den Button von ihren entsprechenden Computed-Werten kombiniert und\r\n * als einen String zurückgibt.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns Die Klassenkombination der benutzten Klasse für die Größe und des Farbschemas des Buttons\r\n *\r\n */\r\n get GetClass(): string {\r\n return (\r\n this.GetSizeClass +\r\n \" \" +\r\n this.GetColorClass +\r\n (this.primary ? \" is-primary\" : \"\")\r\n );\r\n }\r\n\r\n /**\r\n * Computed Wert welcher die benutzte Klasse für die Größe des Buttons,\r\n * abhängig von gesetzten Properties bestimmt.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns Die Klasse für die Größe des Buttons.\r\n */\r\n get GetSizeClass(): string {\r\n if (this.small) return Sizes.small;\r\n if (this.tiny) return Sizes.tiny;\r\n return Sizes.normal;\r\n }\r\n\r\n /**\r\n * Computed Wert welcher die benutzte Klasse für die Farbe des Buttons,\r\n * abhängig von gesetzten Properties bestimmt.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns Die Klasse für die Farbe des Buttons.\r\n */\r\n get GetColorClass(): string {\r\n if (this.secondary) return ColorSchemes.secondary;\r\n if (this.white) return ColorSchemes.white;\r\n if (this.good) return ColorSchemes.good;\r\n if (this.warning) return ColorSchemes.warning;\r\n if (this.failure) return ColorSchemes.failure;\r\n if (this.neutral) return ColorSchemes.neutral;\r\n return ColorSchemes.primary;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region EMIT\r\n\r\n @Emit(\"click\")\r\n Click(): void {\r\n return;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-button\", ButtonComponent);\r\n","import { render, staticRenderFns } from \"./InputField.component.vue?vue&type=template&id=451397f4&\"\nimport script from \"./InputField.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputField.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('button',{class:_vm.GetClass,attrs:{\"type\":\"button\"},on:{\"click\":_vm.Click}},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.text))]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Button.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Button.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Button.component.vue?vue&type=template&id=633c83cc&\"\nimport script from \"./Button.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./Button.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\nimport { SnotifyService } from \"@/services/hercon-services/Snotify.service\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport { AuthService } from \"@/services/hercon-services/Auth.service\";\r\nimport { AuthCredentials } from \"@/services/hercon-services/models/AuthCredentials\";\r\nimport { LoginInfo } from \"@/services/hercon-services/models/LoginInfo\";\r\nimport InputFieldComponent from \"@/components/hercon-components/2-organisms/InputField.component.vue\";\r\nimport ButtonComponent from \"@/components/hercon-components/0-atoms/Button.component.vue\";\r\n\r\n@Component({\r\n components: {\r\n InputFieldComponent,\r\n ButtonComponent,\r\n },\r\n})\r\nexport default class LoginComponent extends Vue {\r\n // #region DATA PROPERTIES\r\n\r\n private usernameMinLength = 4;\r\n private passwordMinLength = 8;\r\n\r\n //usernameValidationMessage: string = \"\";\r\n //passwordValidationMessage: string = \"\";\r\n\r\n private showSpinner = false;\r\n private spinnerClass = \"m-1\";\r\n\r\n private focusPassword = true;\r\n private inputErrorOnLastTry = false;\r\n\r\n private meldungen = \"\";\r\n private localLogin = StoreService.isLoggedIn();\r\n\r\n private authentication: AuthCredentials = {\r\n username: StoreService.getUsername(),\r\n password: \"\",\r\n };\r\n\r\n // #endregion\r\n\r\n // #region VUE LIFECYCLE HOOKS\r\n\r\n /* # Schritte im Vue lifecycle\r\n 1. beforeCreate\r\n 2. created\r\n 3. beforeMount\r\n 4. mounted\r\n 5. beforeUpdated\r\n 6. updated\r\n 7. beforeDestroyed\r\n 8. destroyed\r\n */\r\n async created(): Promise {\r\n this.init();\r\n\r\n // Bereitstellen des h-login-Signals über diese Klasse hinaus.\r\n window.addEventListener(\"globalIsLogedIn\", () => {\r\n this.init();\r\n });\r\n\r\n return;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region METHODS\r\n\r\n /**\r\n * Initialisierung der Login Komponente.\r\n */\r\n async init(): Promise {\r\n this.authentication.username = StoreService.getUsername();\r\n this.authentication.password = \"\";\r\n this.localLogin = StoreService.isLoggedIn();\r\n return;\r\n }\r\n\r\n /**\r\n * Validierung der eingegebenen Texte.\r\n * Es wird geprüft ob die Mindestlänge der eingegebenen Zeichen überschritten wurde.\r\n *\r\n * @returns\r\n * Array mit Fehlertexten bei denen die Mindestlänge überschritten wurde.\r\n */\r\n /*\r\n validation(): void {\r\n if (this.authentication.username.length < this.usernameMinLength) {\r\n this.usernameValidationMessage = `Der Benutzername muss eine Mindestlänge von ${this.usernameMinLength} Zeichen haben.`;\r\n }\r\n\r\n if (this.authentication.password.length < this.passwordMinLength) {\r\n this.passwordValidationMessage = `Das Passwort muss eine Mindestlänge von ${this.passwordMinLength} Zeichen haben.`;\r\n }\r\n }\r\n */\r\n /**\r\n * Validierung der eingegebenen Texte.\r\n * Es wird geprüft ob die Mindestlänge der eingegebenen Zeichen überschritten wurde.\r\n *\r\n * @returns\r\n * Array mit Fehlertexten bei denen die Mindestlänge überschritten wurde.\r\n */\r\n async validate(): Promise {\r\n const errors: string[] = [];\r\n if (this.authentication.username.length < this.usernameMinLength) {\r\n errors.push(\r\n `Der Benutzername muss eine Mindestlänge von ${this.usernameMinLength} Zeichen haben.`\r\n );\r\n }\r\n if (this.authentication.password.length < this.passwordMinLength) {\r\n errors.push(\r\n `Das Passwort muss eine Mindestlänge von ${this.passwordMinLength} Zeichen haben.`\r\n );\r\n }\r\n return errors;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region EVENT HANDLER\r\n\r\n /**\r\n * Event-Handler beim Anmelden.\r\n */\r\n async onLogin(): Promise {\r\n this.meldungen = \"\";\r\n\r\n // Eingaben prüfen.\r\n const inputErrors = await this.validate();\r\n if (inputErrors.length > 0) {\r\n this.inputErrorOnLastTry = true;\r\n\r\n inputErrors.forEach((inputError) => {\r\n SnotifyService.newAlert(2, inputError);\r\n console.log(`Fehler: ${inputError}`);\r\n });\r\n\r\n return;\r\n }\r\n\r\n try {\r\n this.showSpinner = true;\r\n this.inputErrorOnLastTry = false;\r\n\r\n const res = await AuthService.login(this.authentication);\r\n\r\n // Passwort zurücksetzen.\r\n this.authentication.password = \"\";\r\n\r\n if (res.status === 200) {\r\n this.localLogin = true;\r\n\r\n if (res.data) {\r\n AuthService.setAxiosToken(res.data.tokens.accessToken);\r\n\r\n const loginInfo: LoginInfo = res.data;\r\n StoreService.logIn(loginInfo);\r\n\r\n SnotifyService.newAlert(0, \"Anmeldung erfolgreich.\");\r\n this.showSpinner = false;\r\n //console.trace(\"Eingeloggt. Weiterleitung zur Landingpage.\");\r\n this.$emit(\"loginExecuted\");\r\n this.$router.push(\"/\");\r\n }\r\n } else {\r\n console.warn(\r\n \"Der Statuscode der Antwort entspricht nicht dem erwarteten Statuscode.\"\r\n );\r\n throw new Error(\r\n `Login Versuch resultiert in Statuscode: ${res.status} ${res.statusText}`\r\n );\r\n }\r\n } catch (error: any) {\r\n if (error.response) {\r\n // Der Client hat einen Fehler-Response (5xx, 4xx) erhalten.\r\n SnotifyService.newAlert(2, \"Login fehlgeschlagen.\");\r\n\r\n this.meldungen = error?.response?.data\r\n ? `Fehler: ${error?.response?.data}`\r\n : \"Login Fehlgeschlagen.\";\r\n } else if (error.request) {\r\n // Der Client hat nie eine Antwort erhalten,\r\n // oder die Anfrage wurde nie abgeschickt.\r\n SnotifyService.newAlert(2, \"Keine Verbindung.\");\r\n\r\n this.meldungen =\r\n \"Fehler: Verbindung zum Backend kann nicht hergestellt werden.\";\r\n\r\n if (error.message) {\r\n SnotifyService.newAlert(2, error.message);\r\n }\r\n } else {\r\n // Alle anderen Varianten.\r\n SnotifyService.newAlert(2, \"Login fehlgeschlagen.\");\r\n this.meldungen = \"Fehler: Login fehlgeschlagen.\";\r\n }\r\n console.debug(error);\r\n }\r\n\r\n this.showSpinner = false;\r\n return;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-login\", LoginComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Login.component.vue?vue&type=template&id=711cfdd9&scoped=true&\"\nimport script from \"./Login.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./Login.component.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Login.component.vue?vue&type=style&index=0&id=711cfdd9&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"711cfdd9\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport LoginComponent from \"@/components/hercon-components/3-templates/Login.component.vue\";\r\n\r\n@Component({\r\n components: {\r\n LoginComponent,\r\n },\r\n})\r\nexport default class Login extends Vue {\r\n // #region VUE LIFECYCLE HOOKS\r\n\r\n /* # Schritte im Vue lifecycle\r\n 1. beforeCreate\r\n 2. created\r\n 3. beforeMount\r\n 4. mounted\r\n 5. beforeUpdated\r\n 6. updated\r\n 7. beforeDestroyed\r\n 8. destroyed\r\n */\r\n\r\n async mounted(): Promise {\r\n if (StoreService.isLoggedIn()) {\r\n this.$router.push(\"/\");\r\n return;\r\n }\r\n\r\n window.dispatchEvent(new CustomEvent(\"activePage\", { detail: \"\" }));\r\n return;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region METHODS\r\n\r\n async onLoginExecuted(): Promise {\r\n try {\r\n if (StoreService.isLoggedIn()) {\r\n window.dispatchEvent(new CustomEvent(\"globalIsLogedIn\"));\r\n this.$emit(\"isLoggedIn\", \"login\");\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n return;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hv-login\", Login);\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=64ce1038&scoped=true&\"\nimport script from \"./Login.vue?vue&type=script&lang=ts&\"\nexport * from \"./Login.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=64ce1038&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"64ce1038\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-container',[_c('b-row',[_c('b-col',[_c('b-alert',{attrs:{\"variant\":\"info\",\"show\":_vm.loading}},[(_vm.loading == true)?_c('b-spinner',{attrs:{\"small\":\"\"}}):_vm._e(),_vm._v(\" Daten werden geladen...\")],1)],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-list-group',[_c('b-list-group-item',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('b',[_vm._v(\"Resturlaub\")]),_c('span',[_vm._v(_vm._s(_vm.statistikObject.urlaub))])]),(!_vm.isHiddenGleitzeit)?_c('b-list-group-item',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('b',[_vm._v(\"Gleitzeit\")]),_c('span',[_vm._v(_vm._s(_vm.statistikObject.gleitzeit))])]):_vm._e(),_c('b-list-group-item',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('b',[_vm._v(\"Arbeitszeit\")]),_c('span',{attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(_vm.arbeitszeit))])])],1)],1)],1),_c('b-row',{staticClass:\"mb-2\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"datepicker1\"}},[_c('b',[_vm._v(\"Datum\")])]),_c('b-input-group',{staticClass:\"mb-1\"},[_c('b-form-datepicker',_vm._b({ref:\"datepickerDate\",attrs:{\"id\":\"datepicker-date\",\"calendar-width\":\"100%\",\"menu-class\":\"w-100\",\"date-format-options\":{\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n },\"hide-header\":true,\"start-weekday\":\"1\",\"show-decade-nav\":true,\"locale\":\"de\"},on:{\"input\":function($event){return _vm.fetchWeekList(_vm.datum)}},model:{value:(_vm.datum),callback:function ($$v) {_vm.datum=$$v},expression:\"datum\"}},'b-form-datepicker',_vm.datepickerlabels.de,false)),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"primary\"}},[_c('b-icon',{attrs:{\"icon\":\"arrow-left\",\"aria-hidden\":\"true\"},on:{\"click\":function($event){return _vm.backwardDate()}}})],1),_c('b-button',{attrs:{\"variant\":\"primary\"}},[_c('b-icon',{attrs:{\"icon\":\"arrow-right\",\"aria-hidden\":\"true\"},on:{\"click\":function($event){return _vm.forwardDate()}}})],1)],1)],1)],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-card',[_c('div',{staticClass:\"card-body\"},[_c('b-row',{attrs:{\"align-v\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"9\"}},[_c('h4',[_vm._v(\"Wochenübersicht\")])]),_c('b-col',{staticClass:\"float-right\",attrs:{\"cols\":\"3\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"checkbox-1\",\"name\":\"checkbox-1\"},on:{\"change\":function($event){return _vm.showHideWochenende()}},model:{value:(_vm.isWochenende),callback:function ($$v) {_vm.isWochenende=$$v},expression:\"isWochenende\"}},[_vm._v(\"  \"),_c('b-icon',{attrs:{\"icon\":\"calendar2\",\"font-scale\":\"1.5\"}})],1)],1)],1),_c('hr'),_c('ul',{staticClass:\"list-group list-group-light\"},_vm._l((_vm.wochenuebersichtList),function(t,key){return _c('li',{key:key,staticClass:\"list-group-item d-flex justify-content-between align-items-center\",attrs:{\"id\":key},on:{\"click\":function($event){t.statusArbeitstag == 'Feiertag'\n ? function () {\n return;\n }\n : _vm.getArbeitstag(t.datum, t.statusArbeitstag)}}},[_c('div',[_c('div',{staticClass:\"fw-bold\"},[_vm._v(_vm._s(t.datum)+\" - \"+_vm._s(t.tag))]),_c('small',[_vm._v(\"Status: \"+_vm._s(t.statusBuchung))]),_c('br'),(t.statusArbeitstag != 'Arbeitstag')?_c('small',{staticClass:\"text-muted\"},[_c('b-icon',{staticClass:\"rounded-circle\",attrs:{\"icon\":\"exclamation-circle-fill\",\"variant\":\"primary\"}}),_vm._v(\" \"+_vm._s(t.statusArbeitstag))],1):_vm._e()]),_c('b-button-group',[(t.statusBuchung == 'Offen')?_c('b-icon',{staticClass:\"h1 rounded-circle\",attrs:{\"icon\":\"exclamation-circle-fill\",\"variant\":\"danger\"}}):_vm._e(),(t.statusBuchung == 'Unvollständig')?_c('b-icon',{staticClass:\"h1 rounded-circle\",attrs:{\"icon\":\"exclamation-triangle-fill\",\"variant\":\"warning\"}}):_vm._e(),(t.statusBuchung == 'Ok')?_c('b-icon',{staticClass:\"h1\",attrs:{\"icon\":\"check-circle-fill\",\"variant\":\"success\"}}):_vm._e()],1)],1)}),0)],1),_c('hr')])],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[(_vm.wochenuebersichtList.length > 0)?_c('b-button',{staticClass:\"float-end\",attrs:{\"disabled\":_vm.isAbgegeben,\"variant\":_vm.btnAbgebenColor,\"size\":\"lg\"},on:{\"click\":function($event){return _vm.wocheAbgeben()}}},[_vm._v(\"Abgeben\")]):_c('b-button',{staticClass:\"float-end\",attrs:{\"disabled\":\"\",\"variant\":_vm.btnAbgebenColor,\"size\":\"lg\"}},[_vm._v(\"Abgeben\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface IStatistik {\r\n urlaub: number;\r\n gleitzeit: number;\r\n}\r\n\r\nexport function INewStatistik() {\r\n const statistik: IStatistik = {\r\n urlaub: 0,\r\n gleitzeit: 0,\r\n };\r\n return statistik;\r\n}\r\n","import Axios from \"@/library/axios/Axios\";\r\nimport { SnotifyService } from \"@/services/hercon-services/Snotify.service\";\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { IWochenUebersichtResponse } from \"@/library/models/interfacesWochenuebersichtResponse\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport {\r\n IArbeitstag,\r\n newArbeitstag,\r\n} from \"@/library/models/interfacesArbeitstag\";\r\nimport { newITaetigkeit } from \"@/library/models/interfacesTaetigkeit\";\r\nimport {\r\n IStatistik,\r\n INewStatistik,\r\n} from \"@/library/models/interfacesStatistik\";\r\nimport { Store } from \"vuex\";\r\n\r\n@Component({\r\n components: {},\r\n})\r\nexport default class Wochenuebersicht extends Vue {\r\n loading: boolean = false;\r\n //isMessage: boolean = false;\r\n //messageType: string = \"\";\r\n //message: string = \"\";\r\n\r\n isAbgegeben: boolean = false;\r\n btnAbgebenColor: string = \"primary\";\r\n\r\n personalNummer: number = StoreService.getLoginItem().mitarbeiter\r\n .personalNummer;\r\n isHiddenGleitzeit: boolean = StoreService.isHiddenGleitzeit();\r\n\r\n datum: string = this.formatDateToDatePicker(new Date().toLocaleDateString());\r\n wochenuebersichtList: IWochenUebersichtResponse[] = [];\r\n isWochenende: boolean = false;\r\n elementForSamstag: any;\r\n elementForSonntag: any;\r\n\r\n statistikObject: IStatistik = INewStatistik();\r\n arbeitszeit: string = \"0,00\";\r\n\r\n buchungen: string[] = [\r\n \"Urlaubstag\",\r\n \"Sonderurlaub\",\r\n \"Urlaubstag halb\",\r\n \"Gleitzeittag\",\r\n \"Krankheitstag\",\r\n ];\r\n\r\n //#region Die Übersetzungen auf Deutsch der Felder von DatePicker\r\n datepickerlabels: any = {\r\n de: {\r\n labelPrevDecade: \"Vorheriges Jahrzehnt\",\r\n labelPrevYear: \"Vorheriges Jahr\",\r\n labelPrevMonth: \"Vorheriger Monat\",\r\n labelCurrentMonth: \"Aktueller Monat\",\r\n labelNextMonth: \"Nächster Monat\",\r\n labelNextYear: \"Nächstes Jahr\",\r\n labelNextDecade: \"Nächstes Jahrzehnt\",\r\n labelToday: \"Heute\",\r\n labelNoDateSelected: \"Kein Datum gewählt\",\r\n labelCalendar: \"Kalender\",\r\n labelNav: \"Kalendernavigation\",\r\n labelHelp: \"Mit den Pfeiltasten durch den Kalender navigieren\",\r\n },\r\n };\r\n //#endregion\r\n\r\n async mounted(): Promise {\r\n if (typeof this.$route.query.datum !== \"undefined\") {\r\n this.datum = this.formatDateToDatePicker(\r\n this.$route.query.datum as string\r\n ); ////um die gültige Woche zurückzugehen\r\n }\r\n await this.fetchWeekList(this.datum);\r\n await this.getGlobaleStatistiken();\r\n\r\n this.$store.state.tempData = null;\r\n\r\n this.elementForSamstag = document.getElementById(\"5\") as HTMLElement;\r\n this.elementForSonntag = document.getElementById(\"6\") as HTMLElement;\r\n if (this.elementForSamstag != null && this.elementForSonntag != null) {\r\n if (this.isWochenende) {\r\n this.elementForSamstag.classList.remove(\"d-none\");\r\n this.elementForSonntag.classList.remove(\"d-none\");\r\n } else {\r\n this.elementForSamstag.classList.add(\"d-none\");\r\n this.elementForSonntag.classList.add(\"d-none\");\r\n }\r\n }\r\n\r\n this.elementForSamstag;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Holt die Arbeitstage der ganzen Woche\r\n * @param datum Das ausgewählte Datum\r\n */\r\n async getGlobaleStatistiken(): Promise {\r\n await Axios.get(\"statistiken/globale/\" + this.personalNummer).then(\r\n (responseStatistik) => {\r\n this.statistikObject = responseStatistik.data as IStatistik;\r\n }\r\n );\r\n }\r\n\r\n async getArbeitszeit(datum: string): Promise {\r\n await Axios.get(\"wochenbuchungen/arbeitszeit/\", {\r\n params: {\r\n personalnummer: this.personalNummer,\r\n datum: this.formatDateFromDatePicker(datum),\r\n },\r\n }).then((response) => {\r\n this.arbeitszeit = response.data as string;\r\n });\r\n }\r\n\r\n /**\r\n * @summary\r\n * Holt die Arbeitstage der ganzen Woche\r\n * @param datum Das ausgewählte Datum\r\n */\r\n async fetchWeekList(datum: string): Promise {\r\n this.loading = true;\r\n //this.isMessage = false;\r\n await this.getArbeitszeit(datum);\r\n\r\n try {\r\n await Axios.get(\"wochenbuchungen\", {\r\n params: {\r\n personalnummer: this.personalNummer,\r\n datum: this.formatDateFromDatePicker(datum),\r\n },\r\n })\r\n .then((result) => {\r\n this.wochenuebersichtList = result.data as IWochenUebersichtResponse[];\r\n //Abrufen des Wochenstatus, ob abgegeben ist\r\n Axios.get(\"wochenbuchungen/wochenstatus\", {\r\n params: {\r\n personalnummer: this.personalNummer,\r\n datum: this.formatDateFromDatePicker(datum),\r\n },\r\n }).then((x) => {\r\n if (x.status == 200 || x.status == 201) {\r\n if (x.data == true) {\r\n this.isAbgegeben = true;\r\n ////this.$store.state.isAbgegeben = true;\r\n this.btnAbgebenColor = \"success\";\r\n } else {\r\n this.isAbgegeben = false;\r\n ////this.$store.state.isAbgegeben = false;\r\n this.btnAbgebenColor = \"primary\";\r\n }\r\n }\r\n });\r\n this.loading = false;\r\n })\r\n .catch((error) => {\r\n //this.message = error;\r\n //this.isMessage = true;\r\n //this.messageType = \"danger\";\r\n SnotifyService.newAlert(2, error);\r\n });\r\n } catch (err) {\r\n if (err instanceof Error) {\r\n console.log(err.message);\r\n } else {\r\n console.log(\"Unexpected error\", err);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * Der Benutzer wird ins Arbeitszeit-Display weitergeleitet\r\n * @param arbeitstagdatum Das Datum des ausgewählten Tages\r\n */\r\n async getArbeitstag(\r\n arbeitstagdatum: string,\r\n statusArbeitstag: string\r\n ): Promise {\r\n this.$router.push({\r\n path: \"/Arbeitszeit\",\r\n query: { datum: arbeitstagdatum },\r\n });\r\n }\r\n\r\n /**\r\n * @summary\r\n * Der Benutzer wird ins Arbeitszeit-Display weitergeleitet\r\n * @param arbeitstagdatum Das Datum des ausgewählten Tages\r\n */\r\n async getArbeitstag_Backup(\r\n arbeitstagdatum: string,\r\n statusArbeitstag: string\r\n ): Promise {\r\n //arbeitstagdatum = this.formatDateFromDatePicker(arbeitstagdatum);\r\n var isArbeitstag = this.buchungen.includes(statusArbeitstag) ? false : true;\r\n if (isArbeitstag) {\r\n this.$router.push({\r\n path: \"/Arbeitszeit\",\r\n query: { datum: arbeitstagdatum },\r\n });\r\n } else {\r\n await Axios.get(\"arbeitstag\", {\r\n params: { personalnummer: this.personalNummer, datum: arbeitstagdatum },\r\n }).then((response) => {\r\n if (response.status == 200 || response.status == 201) {\r\n if (typeof response.data != undefined) {\r\n var obj = response.data;\r\n this.$router.push({\r\n path: \"/arbeitszeiterstellen\",\r\n name: \"Arbeitszeit_Erstellen\",\r\n params: {\r\n type: this.isAbgegeben ? \"show\" : \"edit\",\r\n rowNumber: \"-1\",\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n /*\r\n var obj = newArbeitstag();\r\n obj.datum = this.formatDateToDatePicker(arbeitstagdatum);\r\n\r\n obj.personalNummer = this.personalNummer;\r\n obj.taetigkeiten.push(newITaetigkeit());\r\n obj.taetigkeiten[0].buchungsart = statusArbeitstag;\r\n\r\n this.$router.push({\r\n path: \"/arbeitszeiterstellen\",\r\n name: \"Arbeitszeit_Erstellen\",\r\n params: {\r\n type: \"edit\",\r\n rowNumber: \"0\",\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n */\r\n\r\n /*\r\n var obj = { datum: arbeitstagdatum, isAbgegeben: this.isAbgegeben };\r\n\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n wochenuebersichtTransferData: JSON.stringify(obj),\r\n },\r\n });\r\n */\r\n }\r\n\r\n /**\r\n * @summary\r\n * Wenn Benutzer einen Arbeitstag am Wochenende erstellen möchte\r\n * kann er das Wochenende in der Wochenübersicht einblenden oder ausblenden\r\n * @param arbeitstagdatum Das Datum des ausgewählten Tages\r\n */\r\n showHideWochenende() {\r\n if (this.elementForSamstag != null && this.elementForSonntag != null) {\r\n if (this.isWochenende) {\r\n this.elementForSamstag.classList.remove(\"d-none\");\r\n this.elementForSonntag.classList.remove(\"d-none\");\r\n } else {\r\n this.elementForSamstag.classList.add(\"d-none\");\r\n this.elementForSonntag.classList.add(\"d-none\");\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * Prüft die Woche, ob alles in Ordnung ist\r\n */\r\n async checkWoche(): Promise {\r\n return true;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Gibt eine Woche ab, wenn sie vollständig ist\r\n */\r\n async wocheAbgeben(): Promise {\r\n //Das Modale Fenster wird beim Klicken erstellt\r\n\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten Sie die Woche abgeben?\", {\r\n title: \"Abgeben\",\r\n okVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n this.isAbgegeben = true;\r\n ////this.$store.state.isAbgegeben = true;\r\n //this.message = \"Die Woche wird abgegeben...\";\r\n //this.messageType = \"primary\";\r\n //this.isMessage = true;\r\n SnotifyService.newAlert(3, \"Die Woche wird abgegeben...\");\r\n\r\n await Axios.get(\"wochenbuchungen/abgeben\", {\r\n params: {\r\n personalnummer: this.personalNummer,\r\n datum: this.wochenuebersichtList[0].datum,\r\n },\r\n })\r\n .then((x) => {\r\n if (x.status == 200 || x.status == 201) {\r\n if (x.data == true) {\r\n this.btnAbgebenColor = \"warning\";\r\n //this.message = \"Die Woche wurde abgegeben.\";\r\n //this.messageType = \"success\";\r\n SnotifyService.newAlert(0, \"Die Woche wurde abgegeben.\");\r\n } else {\r\n this.isAbgegeben = false;\r\n ////this.$store.state.isAbgegeben = false;\r\n this.btnAbgebenColor = \"primary\";\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n this.isAbgegeben = false;\r\n //this.$store.state.isAbgegeben = false;\r\n //this.message = err.response.data;\r\n //this.messageType = \"danger\";\r\n //this.isMessage = true;\r\n this.loading = false;\r\n SnotifyService.newAlert(2, err.response.data);\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n SnotifyService.newAlert(2, error);\r\n //this.message = error;\r\n //this.messageType = \"danger\";\r\n //this.isMessage = true;\r\n });\r\n }\r\n\r\n async forwardDate(): Promise {\r\n var currentDate = Date.parse(this.datum);\r\n var afterAWeek = currentDate + 7 * 24 * 60 * 60 * 1000;\r\n this.datum = this.formatDateToDatePicker(\r\n new Date(afterAWeek).toLocaleDateString()\r\n );\r\n await this.fetchWeekList(this.datum);\r\n }\r\n\r\n async backwardDate(): Promise {\r\n var currentDate = Date.parse(this.datum);\r\n var beforeAWeek = currentDate - 7 * 24 * 60 * 60 * 1000;\r\n this.datum = this.formatDateToDatePicker(\r\n new Date(beforeAWeek).toLocaleDateString()\r\n );\r\n await this.fetchWeekList(this.datum);\r\n }\r\n\r\n padTo2Digits(num: number) {\r\n return num.toString().padStart(2, \"0\");\r\n }\r\n //To 2022-01-01\r\n formatDateToDatePicker(date: string) {\r\n var partsOfDate = date.split(\".\").reverse();\r\n return partsOfDate.join(\"-\");\r\n }\r\n //To 01.01.2022\r\n formatDateFromDatePicker(date: string): string {\r\n var partsOfDate = date.split(\"-\");\r\n return (\r\n this.padTo2Digits(parseInt(partsOfDate[2])).toString() +\r\n \".\" +\r\n this.padTo2Digits(parseInt(partsOfDate[1])).toString() +\r\n \".\" +\r\n partsOfDate[0]\r\n );\r\n }\r\n}\r\n","\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\n\r\nenum Sizes {\r\n parent = \"h-base-container-size-parent\",\r\n content = \"h-base-container-size-content\",\r\n}\r\n\r\n@Component({\r\n components: {},\r\n})\r\nexport default class BaseContainerComponent extends Vue {\r\n // #region PROPS\r\n\r\n @Prop({ default: \"\" }) header!: string;\r\n @Prop({ default: \".normalize\" }) readonly contentClass!: string;\r\n @Prop(Boolean) readonly content!: boolean;\r\n @Prop(Boolean) readonly parent!: boolean;\r\n\r\n // #endregion\r\n\r\n // #region COMPUTED PROPERTIES\r\n\r\n get hasHeaderText(): boolean {\r\n return this.header.length > 0;\r\n }\r\n\r\n get isVisible(): boolean {\r\n return this.header.length > 0;\r\n }\r\n\r\n get getClass(): string {\r\n return `h-base-container ${this.parent ? Sizes.parent : Sizes.content}`;\r\n }\r\n\r\n get getContentClass(): string {\r\n return \"h-base-container-content \" + this.contentClass;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-base-container\", BaseContainerComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!./Wochenuebersicht.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!./Wochenuebersicht.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Wochenuebersicht.vue?vue&type=template&id=11a70aff&\"\nimport script from \"./Scripts/Wochenuebersicht?vue&type=script&lang=ts&\"\nexport * from \"./Scripts/Wochenuebersicht?vue&type=script&lang=ts&\"\nimport style0 from \"./Wochenuebersicht.vue?vue&type=style&index=0&id=11a70aff&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',[_c('b-alert',{attrs:{\"variant\":\"info\",\"show\":_vm.loading}},[(_vm.loading == true)?_c('b-spinner',{attrs:{\"small\":\"\"}}):_vm._e(),_vm._v(\" Daten werden geladen...\")],1)],1)],1),_c('b-row',[_c('label',{attrs:{\"for\":\"datepicker1\"}},[_c('b',[_vm._v(\"Datum\")])]),_c('b-col',[_c('b-input-group',{staticClass:\"mb-1\"},[_c('b-form-datepicker',_vm._b({ref:\"datepickerArbeitszeit\",attrs:{\"description\":_vm.day,\"id\":\"datepicker-arbeitszeit\",\"calendar-width\":\"100%\",\"menu-class\":\"w-100\",\"date-format-options\":{\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n },\"hide-header\":true,\"start-weekday\":\"1\",\"show-decade-nav\":true,\"locale\":\"de\"},on:{\"input\":function($event){return _vm.fetchArbeitszeitAsync(_vm.editValues.datum)}},model:{value:(_vm.editValues.datum),callback:function ($$v) {_vm.$set(_vm.editValues, \"datum\", $$v)},expression:\"editValues.datum\"}},'b-form-datepicker',_vm.datepickerlabels.de,false)),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"primary\"}},[_c('b-icon',{attrs:{\"icon\":\"arrow-left\",\"aria-hidden\":\"true\"},on:{\"click\":function($event){return _vm.backwardDate()}}})],1),_c('b-button',{attrs:{\"variant\":\"primary\"}},[_c('b-icon',{attrs:{\"icon\":\"arrow-right\",\"aria-hidden\":\"true\"},on:{\"click\":function($event){return _vm.forwardDate()}}})],1)],1)],1)],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"kommen\"}},[_c('b',[_vm._v(\"Kommen\")])]),_c('b-form-input',{attrs:{\"id\":\"kommen\",\"type\":\"time\",\"disabled\":_vm.isAbgegeben},on:{\"change\":function($event){return _vm.calcArbeitszeit()}},model:{value:(_vm.editValues.kommen),callback:function ($$v) {_vm.$set(_vm.editValues, \"kommen\", $$v)},expression:\"editValues.kommen\"}})],1),_c('b-col',[_c('label',{attrs:{\"for\":\"gehen\"}},[_c('b',[_vm._v(\"Gehen\")])]),_c('b-form-input',{attrs:{\"id\":\"kommen\",\"type\":\"time\",\"disabled\":_vm.isAbgegeben},on:{\"change\":function($event){return _vm.calcArbeitszeit()}},model:{value:(_vm.editValues.gehen),callback:function ($$v) {_vm.$set(_vm.editValues, \"gehen\", $$v)},expression:\"editValues.gehen\"}})],1),_c('b-col',[_c('label',{attrs:{\"for\":\"pause\"}},[_c('b',[_vm._v(\"Pause\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"wert\",\"options\":_vm.wertList,\"disabled\":_vm.isAbgegeben},model:{value:(_vm.editValues.pause),callback:function ($$v) {_vm.$set(_vm.editValues, \"pause\", $$v)},expression:\"editValues.pause\"}})],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"arbeitszeit\"}},[_c('b',[_vm._v(\"Arbeitszeit\")])]),_c('b-form-input',{attrs:{\"id\":\"arbeitszeit\",\"readonly\":\"\"},model:{value:(_vm.editValues.arbeitszeit),callback:function ($$v) {_vm.$set(_vm.editValues, \"arbeitszeit\", $$v)},expression:\"editValues.arbeitszeit\"}})],1),_c('b-col',[(_vm.gebuchteZeit != '')?_c('label',{attrs:{\"for\":\"gebucht\"}},[_c('b',[_vm._v(\"Offene Stunden\")])]):_vm._e(),(_vm.gebuchteZeit != '')?_c('b-form-input',{attrs:{\"id\":\"gebucht\",\"readonly\":\"\"},model:{value:(_vm.gebuchteZeit),callback:function ($$v) {_vm.gebuchteZeit=$$v},expression:\"gebuchteZeit\"}}):_vm._e()],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-card',{attrs:{\"title\":\"Tätigkeiten\"}},[_c('hr'),(_vm.editValues.taetigkeiten.length == 0)?_c('ul',{staticClass:\"list-group list-group-light\",staticStyle:{\"max-height\":\"300px\",\"overflow-y\":\"auto\"}},[_c('li',{staticClass:\"list-group-item d-flex justify-content-between align-items-center\"},[_c('span',[_vm._v(\"Keine Tätigkeit eingetragen\")])])]):_c('b-list-group',{staticClass:\"list-group list-group-light\",staticStyle:{\"max-height\":\"300px\",\"overflow-y\":\"auto\"}},_vm._l((_vm.editValues.taetigkeiten),function(t,key){return _c('b-list-group-item',{key:key,staticClass:\"d-flex justify-content-between align-items-center\",attrs:{\"active\":_vm.isActive == key},on:{\"click\":function($event){return _vm.selectItem(t, key)}}},[(t.projekt.trim() == '')?_c('div',[_c('div',{staticClass:\"fw-bold\"},[_vm._v(_vm._s(t.buchungsart))]),(t.wert != '')?_c('span',[_vm._v(_vm._s(t.wert)+\" \"+_vm._s(t.einheit)+\" |\")]):_vm._e(),_vm._v(\" \"+_vm._s(t.bemerkung.slice(0, 27))+\"... \")]):_c('div',[_c('div',{staticClass:\"fw-bold\"},[_vm._v(_vm._s(t.projekt))]),_c('small',[(t.wert != '')?_c('span',[_vm._v(_vm._s(t.wert)+\" \"+_vm._s(t.einheit)+\" |\")]):_vm._e(),_vm._v(\" \"+_vm._s(t.bemerkung.slice(0, 27))+\"... \")])])])}),1),_c('hr'),_c('footer',{attrs:{\"align\":\"right\"}},[_c('hc-toolbar',[_c('hc-toolbar-icon-button',{attrs:{\"feather\":\"copy\",\"disabled\":!_vm.selectedItem.hasOwnProperty('obj')},on:{\"click\":function($event){return _vm.showCopyArbeitstagModalShow()}}}),(_vm.isAbgegeben)?_c('hc-toolbar-icon-button',{attrs:{\"feather\":\"eye\",\"disabled\":!_vm.selectedItem.hasOwnProperty('obj')},on:{\"click\":function($event){return _vm.showTaetigkeit()}}}):_c('hc-toolbar-icon-button',{attrs:{\"feather\":\"edit\",\"disabled\":!_vm.selectedItem.hasOwnProperty('obj')},on:{\"click\":function($event){return _vm.editTaetigkeit()}}}),_c('hc-toolbar-icon-button',{attrs:{\"feather\":\"trash\",\"disabled\":!_vm.selectedItem.hasOwnProperty('obj') || _vm.isAbgegeben},on:{\"click\":function($event){return _vm.deleteTaetigkeit()}}}),_c('hc-toolbar-icon-button',{attrs:{\"feather\":\"plus\",\"disabled\":_vm.isAbgegeben},on:{\"click\":function($event){return _vm.newTaetigkeit()}}})],1)],1)],1)],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('b-button',{staticClass:\"float-start\",attrs:{\"size\":\"lg\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.backToHomepage()}}},[_vm._v(\" Zurück \")])],1),_c('b-col',[_c('b-button',{staticClass:\"float-end\",attrs:{\"variant\":\"primary\",\"size\":\"lg\",\"disabled\":_vm.isDisabledSaveButton || _vm.isAbgegeben},on:{\"click\":function($event){return _vm.saveArbeitstag(_vm.editValues)}}},[_vm._v(\"Speichern\")])],1)],1),_c('b-modal',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-footer\",modifiers:{\"modal-footer\":true}}],attrs:{\"id\":\"modal-center\",\"title\":\"Auf welches Datum soll der Arbeitstag kopiert werden?\",\"hide-footer\":true,\"hide-header-close\":\"\"},model:{value:(_vm.copyArbeitstagModalShow),callback:function ($$v) {_vm.copyArbeitstagModalShow=$$v},expression:\"copyArbeitstagModalShow\"}},[_c('div',{staticClass:\"mb-2\"},[_c('b-row',{staticClass:\"mb-2\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"datepicker1\"}},[_c('b',[_vm._v(\"Datum Auswählen\")])]),_c('b-input-group',{staticClass:\"mb-1\"},[_c('b-form-datepicker',_vm._b({ref:\"datepickerCopyArbeitszeit\",attrs:{\"id\":\"datepicker-copyarbeitszeit\",\"calendar-width\":\"100%\",\"menu-class\":\"w-100\",\"date-format-options\":{\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n },\"hide-header\":true,\"start-weekday\":\"1\",\"show-decade-nav\":true,\"locale\":\"de\"},model:{value:(_vm.copyDate),callback:function ($$v) {_vm.copyDate=$$v},expression:\"copyDate\"}},'b-form-datepicker',_vm.datepickerlabels.de,false)),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.copyTaetigkeit(_vm.copyDate)}}},[_c('b-icon',{attrs:{\"icon\":\"check\",\"aria-hidden\":\"true\"}})],1)],1)],1)],1)],1)],1),_c('b-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-footer-sm\",modifiers:{\"modal-footer-sm\":true}}],staticClass:\"mb-2\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.hideCopyArbeitstagModalShow()}}},[_vm._v(\" Schließen \")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.getClass},[(_vm.hasHeaderText)?_c('label',{staticClass:\"h-base-container-label\"},[_vm._v(_vm._s(_vm.header))]):_vm._e(),_c('hr',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isVisible),expression:\"isVisible\"}],staticClass:\"h-base-container-line\"}),_c('div',{class:_vm.getContentClass},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseContainer.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseContainer.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseContainer.component.vue?vue&type=template&id=1b1951fe&\"\nimport script from \"./BaseContainer.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseContainer.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('button',{class:[\n _vm.getColorschemeClass,\n _vm.getSizeClass,\n _vm.iconClass,\n _vm.customClasses,\n _vm.getShadowClass,\n { active: _vm.active === true },\n ],attrs:{\"disabled\":_vm.isDisabled},on:{\"click\":_vm.Click}},[_c('hc-icon-factory',{attrs:{\"iconClass\":\"h-icon-button-icon\",\"feather\":_vm.feather,\"imgNormal\":_vm.imgNormal,\"imgActive\":_vm.imgActive,\"hasImageOwnBackground\":_vm.hasImageOwnBackground,\"active\":_vm.active,\"disabled\":_vm.isDisabled}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:[_vm.iconClass],attrs:{\"active\":_vm.ShowImageBackground}},[_vm._t(\"default\",function(){return [(_vm.ShowFeather)?_c('feather',{attrs:{\"type\":_vm.feather}}):_vm._e(),(_vm.ShowImageNormal)?_c('img',{attrs:{\"src\":_vm.imgNormal}}):_vm._e(),(_vm.ShowImageActive)?_c('img',{attrs:{\"src\":_vm.imgActive}}):_vm._e()]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class IconFactoryComponent extends Vue {\r\n \r\n // #region PROPS\r\n \r\n @Prop({ default: \"\" }) feather!: string;\r\n @Prop({ default: \"\" }) imgNormal!: string;\r\n @Prop({ default: \"\" }) imgActive!: string;\r\n @Prop({ default: false }) active!: boolean;\r\n @Prop({ default: false }) hasImageOwnBackground!: boolean;\r\n @Prop({ default: \"h-icon-factory-default\" }) iconClass!: string;\r\n\r\n // #endregion\r\n\r\n // #region COMPUTED PROPERTIES\r\n \r\n /**\r\n * Prüft, ob ein Image angezeigt werden soll.\r\n *\r\n * @remarks Computed Wert (get).\r\n *\r\n * @returns Bool Wert, welcher aussagt ob überhaupt eine der möglichen\r\n * Bildquellen angegeben wurde (und somit ob überhaupt ein Bild angezeigt\r\n * werden soll).\r\n */\r\n get ShowImage(): boolean {\r\n if (this.ShowFeather || this.imgNormal == \"\") return false;\r\n else return true;\r\n }\r\n\r\n /**\r\n * Prüft, ob ein FeatherIcon(svg) angezeigt werden soll (Ob das Prop einen\r\n * Wert hat).\r\n *\r\n * @remarks Computed Wert (get).\r\n *\r\n * @returns Bool Wert, welcher aussagt ob ein Feather-Icon angezeigt werden\r\n * soll.\r\n */\r\n get ShowFeather(): boolean {\r\n return !(this.feather == \"\");\r\n }\r\n\r\n /**\r\n * Prüft, ob das \"normale\" (nicht als aktiv markiertes) Bild angezeigt\r\n * werden soll.\r\n *\r\n * @remarks Dabei wird geprüft ob das \"normale\" Bild gesetzt ist und ob\r\n * das \"aktiv\" Flag nicht gesetzt ist.\r\n *\r\n * @returns Boolean, welcher Aussagt dass:\r\n * true:\r\n * - \"normales\" Bild gesetzt und das \"aktiv\" Flag false\r\n * false:\r\n * - kein \"normales\" Bild gesetzt oder \"aktiv\" Flag true\r\n *\r\n * und Die entsprechende Sektion (v-if) anzeigt.\r\n */\r\n get ShowImageNormal(): boolean {\r\n return !this.active && this.imgNormal != \"\";\r\n }\r\n\r\n /**\r\n * Prüft, ob das \"aktiv\" Bild angezeigt werden soll.\r\n *\r\n * @remarks Dabei wird geprüft ob das \"aktiv\" Bild gesetzt ist und ob\r\n * das \"aktiv\" Flag gesetzt ist.\r\n *\r\n * @returns Boolean, welcher Aussagt dass:\r\n * true:\r\n * - \"aktiv\" Bild gesetzt und das \"aktiv\" Flag true\r\n * false:\r\n * - kein \"aktiv\" Bild gesetzt oder \"aktiv\" Flag false\r\n *\r\n * und Die entsprechende Sektion (v-if) anzeigt.\r\n */\r\n get ShowImageActive(): boolean {\r\n return this.active && this.imgActive != \"\";\r\n }\r\n\r\n /**\r\n * Prüft, ob der \"aktiv\" Hintergrund angezeigt werden soll.\r\n * Wird verwendet, um den Wert des \"active\"-Tag der Komponente zu setzen.\r\n *\r\n * @remarks Dafür wrid das \"aktiv\" Flag geprüft und ob das Bild einen\r\n * eigenen Hintergrund (im \"aktiv\" Bild hat) hat (durch ein Flag).\r\n *\r\n * @returns Boolean, welcher Aussagt dass:\r\n * true:\r\n * - Eigener-Hintergrund-Flag false und \"aktiv\"\r\n * false:\r\n * - Eigener-Hintergrund-Flag true oder nicht \"aktiv\"\r\n */\r\n get ShowImageBackground(): boolean {\r\n return !this.hasImageOwnBackground && this.active;\r\n }\r\n // #endregion\r\n}\r\n\r\nVue.component(\"hc-icon-factory\", IconFactoryComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconFactory.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconFactory.component.vue?vue&type=script&lang=ts&\"","\r\nimport { Vue, Component, Prop, Emit } from \"vue-property-decorator\";\r\nimport IconFactoryComponent from \"@/components/hercon-components/0-atoms/IconFactory.component.vue\";\r\n\r\nenum Sizes {\r\n inputfield = \"h-icon-button-size-inputfield\",\r\n medium = \"h-icon-button-size-medium\",\r\n small = \"h-icon-button-size-small\",\r\n}\r\n\r\nenum ColorSchemes {\r\n primary = \"h-colorscheme-primary\",\r\n secondary = \"h-colorscheme-secondary\",\r\n white = \"h-colorscheme-white\",\r\n failure = \"h-colorscheme-failure\",\r\n failureAlt = \"h-colorscheme-failure-alt\",\r\n warning = \"h-colorscheme-warning\",\r\n good = \"h-colorscheme-good\",\r\n neutral = \"h-colorscheme-neutral\",\r\n}\r\n\r\n@Component({\r\n components: {\r\n IconFactoryComponent\r\n }\r\n})\r\nexport default class IconButtonComponent extends Vue {\r\n \r\n // #region PROPS\r\n \r\n @Prop({ default: \"\" }) feather!: string;\r\n @Prop({ default: \"\" }) imgNormal!: string;\r\n @Prop({ default: \"\" }) imgActive!: string;\r\n @Prop({ default: \"h-icon-button\" }) iconClass!: string;\r\n @Prop({ default: false }) hasImageOwnBackground!: boolean;\r\n @Prop({ default: false }) active!: boolean;\r\n @Prop({}) disabled!: boolean;\r\n\r\n @Prop(Boolean) small!: boolean;\r\n @Prop(Boolean) inputfield!: boolean;\r\n\r\n @Prop(Boolean) readonly primary!: boolean;\r\n @Prop(Boolean) readonly secondary!: boolean;\r\n @Prop(Boolean) readonly white!: boolean;\r\n @Prop(Boolean) readonly good!: boolean;\r\n @Prop(Boolean) readonly warning!: boolean;\r\n @Prop(Boolean) readonly failure!: boolean;\r\n @Prop(Boolean) readonly failureAlt!: boolean;\r\n @Prop(Boolean) readonly neutral!: boolean;\r\n\r\n @Prop({ default: \"\" }) customClasses!: string;\r\n @Prop(Boolean) readonly shadowless!: boolean;\r\n\r\n // #endregion\r\n\r\n // #region COMPUTED PROPERTIES\r\n \r\n /**\r\n * Computed Wert welcher die benutzte Klasse für die Größe des Iconbuttons,\r\n * abhängig von gesetzten Properties bestimmt.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns Die Klasse für die Größe des Iconbuttons.\r\n */\r\n get getSizeClass(): string {\r\n if (this.small) return Sizes.small;\r\n if (this.inputfield) return Sizes.inputfield;\r\n return Sizes.medium;\r\n }\r\n\r\n /**\r\n * Computed Wert welcher die benutzte Klasse für die Farbe des Buttons,\r\n * abhängig von gesetzten Properties bestimmt.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns Die Klasse für die Farbe des Buttons.\r\n */\r\n get getColorschemeClass(): string {\r\n if (this.primary) return ColorSchemes.primary;\r\n if (this.secondary) return ColorSchemes.secondary;\r\n if (this.white) return ColorSchemes.white;\r\n if (this.good) return ColorSchemes.good;\r\n if (this.warning) return ColorSchemes.warning;\r\n if (this.failure) return ColorSchemes.failure;\r\n if (this.failureAlt) return ColorSchemes.failureAlt;\r\n if (this.neutral) return ColorSchemes.neutral;\r\n return \"\";\r\n }\r\n\r\n /**\r\n * @summary\r\n * Gibt die eingetragene Klasse für Schatten zurück. Wenn shadowlesss gesetzt\r\n * ist, dann wird ein leerer String zurückgegeben.\r\n *\r\n * @returns\r\n * Klasse für Schatten als String.\r\n */\r\n get getShadowClass(): string {\r\n if (this.shadowless) return \"\";\r\n else return \"h-icon-button-shadow\";\r\n }\r\n\r\n /**\r\n * Computed Prop welche den Disabled-Status an die interne Komponente\r\n * weitergibt.\r\n *\r\n * @returns Gibt den gesetzten \"disabled\" Wert weiter.\r\n */\r\n get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region EMIT\r\n \r\n /**\r\n * Emit, welcher den Klick auf den Button zur Parent-Komponente weiterleitet.\r\n */\r\n @Emit(\"click\")\r\n Click(): void {\r\n return;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-icon-button\", IconButtonComponent);\r\n","import { render, staticRenderFns } from \"./IconFactory.component.vue?vue&type=template&id=d6aa4e40&\"\nimport script from \"./IconFactory.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./IconFactory.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconButton.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconButton.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./IconButton.component.vue?vue&type=template&id=aab8981c&\"\nimport script from \"./IconButton.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./IconButton.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\nimport IconButton from \"@/components/hercon-components/1-molecules/IconButton.component.vue\";\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class ToolbarIconButtonComponent extends IconButton {\r\n \r\n // #region PROPS\r\n \r\n @Prop({ default: \"h-toolbar-icon-button\" }) iconClass = \"h-toolbar-icon-button\";\r\n @Prop({ default: false, type: Boolean }) disabledGroup!: boolean;\r\n\r\n // #endregion\r\n\r\n // #region COMPUTED PROPERTIES\r\n \r\n get getSizeClass() {\r\n return \"h-icon-button-size-small\";\r\n }\r\n\r\n /** Überschriebener Computed-Wert, welcher hier auch noch auf die neue\r\n * disabledGroup Variable reagiert.\r\n *\r\n * @remarks Computed Wert, von geerbter Klasse Überschrieben.\r\n *\r\n * @returns\r\n * Boolean, welcher zurückgibt ob die disabled oder disabledGroup\r\n * variable auf \"true\" gesetzt ist.\r\n */\r\n get isDisabled(): boolean {\r\n return this.disabled || this.disabledGroup;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-toolbar-icon-button\", ToolbarIconButtonComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToolbarIconButton.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToolbarIconButton.component.vue?vue&type=script&lang=ts&\"","var render, staticRenderFns\nimport script from \"./ToolbarIconButton.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./ToolbarIconButton.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"h-toolbar\"},[_c('div',{staticClass:\"h-toolbar-area\"},[_vm._t(\"h-toolbar-first\")],2),(this.setFirstVl)?_c('h-toolbar-vertical'):_vm._e(),_c('div',{staticClass:\"h-toolbar-area\"},[_vm._t(\"h-toolbar-left\")],2),(this.setLeftVl)?_c('h-toolbar-vertical'):_vm._e(),_c('div',{staticClass:\"h-toolbar-area\"},[_vm._t(\"default\")],2),(this.setCenterVl)?_c('h-toolbar-vertical'):_vm._e(),_c('div',{staticClass:\"h-toolbar-area\"},[_vm._t(\"h-toolbar-right\")],2),(this.setRightVl)?_c('h-toolbar-vertical'):_vm._e(),_c('div',{staticClass:\"h-toolbar-area\"},[_vm._t(\"h-toolbar-last\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('hr',{staticClass:\"h-toolbar-vertical-line\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class ToolbarVerticalComponent extends Vue {}\r\nVue.component(\"hc-toolbar-vertical\", ToolbarVerticalComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToolbarVertical.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToolbarVertical.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ToolbarVertical.component.vue?vue&type=template&id=0de1d886&\"\nimport script from \"./ToolbarVertical.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./ToolbarVertical.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\nimport ToolbarVerticalComponent from \"@/components/hercon-components/0-atoms/ToolbarVertical.component.vue\";\r\n\r\n@Component({ \r\n components: { \r\n ToolbarVerticalComponent \r\n } \r\n})\r\nexport default class ToolbarComponent extends Vue {\r\n \r\n // #region COMPUTED PROPERTIES\r\n \r\n /** \r\n * Prüfen ob der Slot \"first\" einen Inhalt hat.\r\n * \r\n * @returns \r\n * true wenn Inhalt gesetzt wurde\r\n */\r\n get hasFirstSection(): boolean {\r\n return !!this.$slots[\"h-toolbar-first\"];\r\n }\r\n\r\n /** \r\n * Prüfen ob der Slot \"left\" einen Inhalt hat.\r\n * \r\n * @returns \r\n * true wenn Inhalt gesetzt wurde\r\n */\r\n get hasLeftSection(): boolean {\r\n return !!this.$slots[\"h-toolbar-left\"];\r\n }\r\n\r\n /** \r\n * Prüfen ob der Slot \"default\" einen Inhalt hat.\r\n * \r\n * @returns \r\n * true wenn Inhalt gesetzt wurde\r\n */\r\n get hasCenterSection(): boolean {\r\n return !!this.$slots[\"default\"];\r\n }\r\n\r\n /** \r\n * Prüfen ob der Slot \"right\" einen Inhalt hat.\r\n * \r\n * @returns \r\n * true wenn Inhalt gesetzt wurde\r\n */\r\n get hasRightSection(): boolean {\r\n return !!this.$slots[\"h-toolbar-right\"];\r\n }\r\n\r\n /** \r\n * Prüfen ob der Slot \"last\" einen Inhalt hat.\r\n * \r\n * @returns \r\n * true wenn Inhalt gesetzt wurde\r\n */\r\n get hasLastSection(): boolean {\r\n return !!this.$slots[\"h-toolbar-last\"];\r\n }\r\n\r\n /** \r\n * Prüfen ob die vertikale Linie nach dem \"first\" Element gesetzt werden muss. \r\n * Es müssen dafür das \"first\" Element gesetzt sein und danach ein weiterer Slot mit Inhalt existieren.\r\n * \r\n * @returns \r\n * true wenn die vertikale Linie nach dem \"first\" Slot gesetzt wird\r\n */\r\n get setFirstVl(): boolean {\r\n if (this.hasFirstSection) {\r\n return (\r\n this.hasLeftSection ||\r\n this.hasCenterSection ||\r\n this.hasRightSection ||\r\n this.hasLastSection\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n /** \r\n * Prüfen ob die vertikale Linie nach dem \"left\" Element gesetzt werden muss. \r\n * Es müssen dafür das \"left\" Element gesetzt sein und danach ein weiterer Slot mit Inhalt existieren.\r\n * \r\n * @returns \r\n * true wenn die vertikale Linie nach dem \"left\" Slot gesetzt wird\r\n */\r\n get setLeftVl(): boolean {\r\n if (this.hasLeftSection) {\r\n return (\r\n this.hasCenterSection || this.hasRightSection || this.hasLastSection\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n /** \r\n * Prüfen ob die vertikale Linie nach dem \"default\" Element gesetzt werden muss. \r\n * Es müssen dafür das \"default\" Element gesetzt sein und danach ein weiterer Slot mit Inhalt existieren.\r\n * \r\n * @returns \r\n * true wenn die vertikale Linie nach dem \"default\" Slot gesetzt wird\r\n */\r\n get setCenterVl(): boolean {\r\n if (this.hasCenterSection) {\r\n return this.hasRightSection || this.hasLastSection;\r\n }\r\n return false;\r\n }\r\n\r\n /** \r\n * Prüfen ob die vertikale Linie nach dem \"right\" Element gesetzt werden muss. \r\n * Es müssen dafür das \"right\" Element gesetzt sein und danach ein weiterer Slot mit Inhalt existieren.\r\n * \r\n * @returns \r\n * true wenn die vertikale Linie nach dem \"right\" Slot gesetzt wird\r\n */\r\n get setRightVl(): boolean {\r\n if (this.hasRightSection) {\r\n return this.hasLastSection;\r\n }\r\n return false;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-toolbar\", ToolbarComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toolbar.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toolbar.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Toolbar.component.vue?vue&type=template&id=64b61054&\"\nimport script from \"./Toolbar.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./Toolbar.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { ITaetigkeit } from \"@/library/models/interfacesTaetigkeit\";\r\n\r\nexport interface IArbeitstag {\r\n personalNummer: number;\r\n datum: string;\r\n kommen: string;\r\n gehen: string;\r\n pause: string;\r\n arbeitszeit: string;\r\n taetigkeiten: ITaetigkeit[];\r\n}\r\n\r\nexport function newArbeitstag() {\r\n const arbeitstag: IArbeitstag = {\r\n personalNummer: 0,\r\n datum: new Date().toLocaleDateString(),\r\n kommen: \"\",\r\n gehen: \"\",\r\n pause: \"0,00\",\r\n arbeitszeit: \"0,00\",\r\n taetigkeiten: [],\r\n };\r\n return arbeitstag;\r\n}\r\n","// #region imports /////////////////////////////////////////\r\nimport Axios from \"@/library/axios/Axios\";\r\nimport { SnotifyService } from \"@/services/hercon-services/Snotify.service\";\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport BaseContainerComponent from \"@/components/hercon-components/1-molecules/BaseContainer.component.vue\";\r\nimport Button from \"@/stories/Button.vue\";\r\nimport ToolbarIconButtonComponent from \"@/components/hercon-components/1-molecules/ToolbarIconButton.component.vue\";\r\nimport ToolbarComponent from \"@/components/hercon-components/2-organisms/Toolbar.component.vue\";\r\nimport {\r\n IArbeitstag,\r\n newArbeitstag,\r\n} from \"@/library/models/interfacesArbeitstag\";\r\nimport {\r\n ITaetigkeit,\r\n newITaetigkeit,\r\n} from \"@/library/models/interfacesTaetigkeit\";\r\nimport { IBuchungstyp } from \"@/library/models/interfacesBuchungstyp\";\r\nimport { BvModal } from \"bootstrap-vue\";\r\nimport { SnotifyPosition } from \"vue-snotify\";\r\n\r\n//#endregion\r\n@Component({\r\n components: {\r\n BaseContainerComponent,\r\n Button,\r\n ToolbarIconButtonComponent,\r\n ToolbarComponent,\r\n },\r\n})\r\nexport default class Arbeitszeit extends Vue {\r\n // #region VARIABLEN & KONSTANTEN\r\n //isMessage: boolean = false;\r\n //selectedItem;\r\n //messageType: string = \"\";\r\n //message: string = \"\";\r\n loading: boolean = false;\r\n isDisabledSaveButton: boolean = false;\r\n isActive: number = -1;\r\n copyArbeitstagModalShow: boolean = false;\r\n isAbgegeben: boolean = false;\r\n\r\n personalNummer: number = StoreService.getLoginItem().mitarbeiter\r\n .personalNummer; //this.$store.state.personalNummer;\r\n teamNummer: number = StoreService.getLoginItem().mitarbeiter.teamNummer; //this.$store.state.teamNummer;\r\n /*\r\n datepickerValue: string = this.formatDateToDatePicker(\r\n new Date().toLocaleDateString()\r\n );\r\n */\r\n editValues: IArbeitstag = newArbeitstag();\r\n copyDate: string = \"\";\r\n gebuchteZeit: string = \"0,00\";\r\n selectedItem: any = {};\r\n isExistsEntry: boolean = false;\r\n weekday: any = [\r\n \"Sonntag\",\r\n \"Montag\",\r\n \"Dienstag\",\r\n \"Mittwoch\",\r\n \"Donnerstag\",\r\n \"Freitag\",\r\n \"Samstag\",\r\n ];\r\n day: string = \"\";\r\n wertList: string[] = []; //Es wird für Pausezeitangaben verwendet\r\n buchungenGenericList: IBuchungstyp[] = [];\r\n //#endregion\r\n\r\n // #region VUE LIFECYCLE METHODEN\r\n\r\n /* # Schritte im Vue lifecycle\r\n 1. beforeCreate\r\n 2. created\r\n 3. beforeMount\r\n 4. mounted\r\n 5. beforeUpdated\r\n 6. updated\r\n 7. beforeDestroyed\r\n 8. destroyed\r\n */\r\n\r\n /**\r\n * @summary\r\n * mounted wird nach dem Laden der Komponente aufgerufen. Hier wird der\r\n * Schreibzugriff des Benutzers abgerufen und die Überschrift festgelegt.\r\n * Danach werden die Nachzuladenden Daten geladen. (Hier wird auch der\r\n * Filter aufgerufen).\r\n */\r\n async mounted(): Promise {\r\n await this.getWertList();\r\n await this.getBuchungen();\r\n await this.fetchArbeitszeitAsync(this.$route.query.datum as string);\r\n await this.checkWochenStatus(this.$route.query.datum as string);\r\n }\r\n\r\n /*\r\n async mounted(): Promise {\r\n await this.getWertList();\r\n if (typeof this.$route.params.arbeitsTagObject === \"undefined\") {\r\n //await this.initForm();\r\n await this.fetchArbeitszeitAsync(this.$route.query.datum as string);\r\n await this.checkWochenStatus(this.$route.query.datum as string);\r\n //this.getDay(this.$route.query.datum as string);\r\n } else {\r\n //await this.updateForm();\r\n await this.fetchArbeitszeitAsync(\r\n JSON.parse(this.$route.params.arbeitsTagObject).datum\r\n );\r\n await this.checkWochenStatus(\r\n JSON.parse(this.$route.params.arbeitsTagObject).datum as string\r\n );\r\n //this.getDay(JSON.parse(this.$route.params.arbeitsTagObject).datum);\r\n }\r\n //this.isAbgegeben = this.$store.state.isAbgegeben;\r\n //this.$store.state.tempData == null;\r\n }\r\n */\r\n\r\n /**\r\n * @summary\r\n * Bei der Änderung der Pausenzeit, wird es gefeuert\r\n */\r\n\r\n @Watch(\"editValues.pause\")\r\n onPropertyChanged(value: string) {\r\n this.calcArbeitszeit();\r\n }\r\n\r\n async destroyed(): Promise {\r\n this.editValues = newArbeitstag();\r\n //this.tempData = newArbeitstag();\r\n //this.isMessage = false;\r\n this.gebuchteZeit = \"0,00\";\r\n }\r\n\r\n async initForm(): Promise {\r\n await this.fetchArbeitszeitAsync(this.$route.query.datum as string);\r\n }\r\n\r\n async updateForm(): Promise {\r\n //var editedArbeitstag = JSON.parse(this.$route.params.arbeitsTagObject); //this.$store.state.tempData;\r\n this.editValues = JSON.parse(this.$route.params.arbeitsTagObject);\r\n\r\n if (this.editValues.taetigkeiten.length > 0) {\r\n //this.gebuchteZeit = await this.calcGebuchteZeit(editedArbeitstag);\r\n await this.calcGebuchteZeit();\r\n }\r\n //this.editValues = editedArbeitstag;\r\n }\r\n\r\n getDay(date: string): void {\r\n date = this.formatDateToDatePicker(date);\r\n const d = new Date(date);\r\n this.day = this.weekday[d.getDay()];\r\n }\r\n\r\n /**\r\n * @summary\r\n * Berechnet die noch zu verbuchende Zeit des Tages\r\n */\r\n async calcGebuchteZeit(): Promise {\r\n var sum = 0;\r\n var wert = 0;\r\n var arbeitstag = { ...this.editValues };\r\n arbeitstag.taetigkeiten.forEach((taetigkeit: any) => {\r\n var isAnwesenheitFreigegeben = this.buchungenGenericList.find((item) => {\r\n return item.klartext == taetigkeit.buchungsart;\r\n })?.isAnwesenheitFreigegeben as boolean;\r\n\r\n if (taetigkeit.einheit == \"std\" && isAnwesenheitFreigegeben) {\r\n if (taetigkeit.wert.indexOf(\",\") > -1) {\r\n wert = parseFloat(taetigkeit.wert.replace(\",\", \".\"));\r\n } else {\r\n wert = parseFloat(taetigkeit.wert);\r\n }\r\n sum += wert;\r\n }\r\n });\r\n\r\n var arbeitszeit = arbeitstag.arbeitszeit;\r\n\r\n const result = (parseFloat(arbeitszeit.replace(\",\", \".\")) - sum)\r\n .toFixed(2)\r\n .replace(\".\", \",\");\r\n this.gebuchteZeit = result;\r\n //return result;\r\n }\r\n //#endregion\r\n\r\n /**\r\n * @summary\r\n * Aufruf der Daten eines Arbeitstages.\r\n */\r\n async fetchArbeitszeitAsync(date: string): Promise {\r\n if (date.includes(\"-\")) {\r\n date = await this.formatDateFromDatePicker(date);\r\n }\r\n\r\n this.loading = true;\r\n\r\n try {\r\n await Axios.get(\"arbeitstag\", {\r\n params: { personalnummer: this.personalNummer, datum: date },\r\n }).then((response) => {\r\n if (response.status == 200 || response.status == 201) {\r\n if (typeof response.data != undefined) {\r\n this.editValues = response.data as IArbeitstag;\r\n\r\n if (this.editValues.taetigkeiten.length > 0) {\r\n this.editValues.taetigkeiten.forEach((item) => {\r\n if (item.wert != \"\") {\r\n if (item.wert.indexOf(\",\") < 0) {\r\n item.wert = parseFloat(item.wert)\r\n .toFixed(2)\r\n .replace(\".\", \",\");\r\n }\r\n }\r\n\r\n /*\r\n item.projekt =\r\n item.projekt.trim() == \"\"\r\n ? \"!!!!!_Projekt_unbekannt_!!!!!\"\r\n : item.projekt;\r\n */\r\n });\r\n }\r\n //Dieses Objekt wird verwendet, um zu prüfen, ob eine Änderung bei dem Arbeitstagsobjekt gemacht wurde\r\n this.$store.state.tempData = { ...this.editValues };\r\n\r\n //Nach der Abfrage muss das Datum nach DatePicker formattiert werden\r\n this.editValues.datum = this.formatDateToDatePicker(\r\n this.editValues.datum\r\n );\r\n\r\n this.calcArbeitszeit();\r\n //this.gebuchteZeit = await this.calcGebuchteZeit(this.editValues);\r\n }\r\n }\r\n });\r\n } catch (e) {\r\n //this.editValues.datum = this.formatDateToDatePicker(date);\r\n //this.$store.state.isExistsEntry = false;\r\n }\r\n this.loading = false;\r\n //console.log(\"this.editValues \", this.editValues);\r\n }\r\n\r\n /**\r\n * @summary\r\n * Listener für das Datumsfeld, wenn es sich ändert, wird diese Funktion gefeuert\r\n */\r\n async fetchDateByDate(date: string): Promise {\r\n this.editValues = newArbeitstag();\r\n //this.$store.state.isExistsEntry = false;\r\n date = await this.formatDateFromDatePicker(date);\r\n //this.isAbgegeben = await this.checkWochenStatus(date);\r\n await this.fetchArbeitszeitAsync(date);\r\n }\r\n\r\n /**\r\n * @summary\r\n * Berechnet die Arbeitszeit\r\n */\r\n async calcArbeitszeit(): Promise {\r\n if (this.editValues.kommen != \"\" && this.editValues.gehen != \"\") {\r\n var kommenHour = parseInt(this.editValues.kommen.split(\":\")[0]);\r\n var gehenHour = parseInt(this.editValues.gehen.split(\":\")[0]);\r\n var pauseHour = parseInt(this.editValues.pause.split(\",\")[0]);\r\n\r\n var kommenMinute = parseFloat(\r\n (parseInt(this.editValues.kommen.split(\":\")[1]) / 60).toFixed(2)\r\n );\r\n var gehenMinute = parseFloat(\r\n (parseInt(this.editValues.gehen.split(\":\")[1]) / 60).toFixed(2)\r\n );\r\n var pauseMinute = parseFloat(\r\n (parseInt(this.editValues.pause.split(\",\")[1]) / 100).toFixed(2)\r\n );\r\n\r\n var minuteDifference = gehenMinute - (kommenMinute + pauseMinute);\r\n var hourDifference = gehenHour - (kommenHour + pauseHour);\r\n\r\n this.editValues.arbeitszeit = (hourDifference + minuteDifference)\r\n .toFixed(2)\r\n .toString()\r\n .replace(\".\", \",\");\r\n }\r\n //Aktualisieren die gebuchten Zeit\r\n await this.calcGebuchteZeit();\r\n //this.gebuchteZeit = await this.calcGebuchteZeit(this.editValues);\r\n }\r\n\r\n /**\r\n * @summary\r\n * Holt alle Buchungstypen. Damit die gebuchte Zeit richtig berechnet werden kann\r\n * Es gibt keine Zeitbezogene Buchungstypen. Sie müssen beim Berechnen der gebuchten Zeit nicht berücksichtigt werden.\r\n */\r\n async getBuchungen(): Promise {\r\n await Axios.get(\"taetigkeit/buchungen\").then((responseBuchungen) => {\r\n this.buchungenGenericList = responseBuchungen.data as IBuchungstyp[];\r\n });\r\n }\r\n\r\n /**\r\n * @summary\r\n * Frägt den Benutzer ob der Entrag wirklich gelöscht werden soll\r\n * Wenn der Eintrag noch nie in der DB vorhanden war, wird er nur aus der Liste\r\n * entfert ansonsten sowohl aus der DB als auch aus der Liste gelöscht\r\n */\r\n async deleteTaetigkeit(): Promise {\r\n //Wenn ein Element wirklich vorhanden ist, wird es der \"autoId\" Parameter berücksichtigt ansonsten der \"key\" Parameter\r\n var autoId = this.selectedItem.obj.autoId;\r\n var key = this.selectedItem.key;\r\n\r\n //Das Modale Fenster wird beim Klicken erstellt\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten den Eintrag wirklich löschen?\", {\r\n title: \"Eintrag löschen\",\r\n okVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n if (autoId != 0 && typeof autoId !== \"undefined\" && autoId != null) {\r\n const result = Axios.delete(\"arbeitstag/\" + autoId)\r\n .then(() => {\r\n this.editValues.taetigkeiten.splice(key, 1);\r\n })\r\n .catch(() => {\r\n console.error(\"Es ist einen Fehler aufgetreten!\");\r\n });\r\n } else {\r\n this.editValues.taetigkeiten.splice(key, 1);\r\n }\r\n //this.gebuchteZeit = await this.calcGebuchteZeit(this.editValues);\r\n await this.calcGebuchteZeit();\r\n delete this.selectedItem.autoId;\r\n delete this.selectedItem.key;\r\n }\r\n })\r\n .catch(() => {\r\n console.error(\"Es ist einen Fehler aufgetreten!\");\r\n });\r\n }\r\n\r\n /**\r\n * @summary\r\n * Bearbeitet einen Eintrag\r\n */\r\n async editTaetigkeit(): Promise {\r\n //this.$store.state.tempData = { ...this.editValues };\r\n var obj = { ...this.editValues };\r\n var key = this.selectedItem.key;\r\n\r\n /*\r\n if (autoId != 0) {\r\n this.$store.state.editDataAutoId = autoId;\r\n } else {\r\n this.$store.state.editDataKey = key;\r\n }\r\n */\r\n\r\n this.$router.push({\r\n path: \"/arbeitszeiterstellen\",\r\n name: \"Arbeitszeit_Erstellen\",\r\n params: {\r\n type: \"edit\",\r\n rowNumber: key,\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n //\r\n //.createUrlTree(['/hero', {my_object: JSON.stringify(this.Obj)}]));\r\n //this.$router.push(\"/arbeitszeiterstellen\");\r\n }\r\n\r\n /**\r\n * @summary\r\n * Zeigt einen Eintrag an\r\n */\r\n\r\n async showTaetigkeit(): Promise {\r\n var obj = { ...this.editValues };\r\n var key = this.selectedItem.key;\r\n\r\n this.$router.push({\r\n path: \"/arbeitszeiterstellen\",\r\n name: \"Arbeitszeit_Erstellen\",\r\n params: {\r\n type: \"show\",\r\n rowNumber: key,\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * @summary\r\n * Kopiert einen Eintrag\r\n */\r\n async copyTaetigkeit(targetDate: string): Promise {\r\n await this.checkWochenStatus(\r\n await this.formatDateFromDatePicker(targetDate)\r\n );\r\n //Wenn die Woche schon abgegeben ist\r\n if (this.isAbgegeben) {\r\n SnotifyService.newAlert(\r\n 2,\r\n \"Das Kopieren der Tätigkeit ist nicht möglich da der Tag bereits abgegeben ist!\"\r\n );\r\n return;\r\n } else {\r\n var selectedTaetigkeit = { ...this.selectedItem.obj }; //damit sich die echte Daten nicht ändert\r\n if (selectedTaetigkeit.hasOwnProperty(\"autoId\")) {\r\n delete selectedTaetigkeit.autoId;\r\n }\r\n var obj = { ...this.editValues };\r\n\r\n //wenn die Tätigkeit für den gleichen Tag kopiert werden soll, wird sie in der Liste hinzugefügt\r\n if (obj.datum == targetDate) {\r\n this.editValues.taetigkeiten.push(selectedTaetigkeit);\r\n await this.calcGebuchteZeit();\r\n this.copyArbeitstagModalShow = false;\r\n return;\r\n } else {\r\n try {\r\n const result = await Axios.get(\"arbeitstag\", {\r\n params: {\r\n personalnummer: this.personalNummer,\r\n datum: targetDate,\r\n },\r\n });\r\n\r\n if (result.status == 200 || result.status == 201) {\r\n if (result.data != undefined) {\r\n //Ein Arbeitstag könnte schon eingetragen sein und das kopierende Objekt soll an den Tag nicht überschrieben werden\r\n obj = newArbeitstag();\r\n obj = result.data as IArbeitstag;\r\n selectedTaetigkeit[\"datum\"] = obj.datum;\r\n obj.taetigkeiten.push(selectedTaetigkeit);\r\n this.$router.push({\r\n path: \"/arbeitszeiterstellen\",\r\n name: \"Arbeitszeit_Erstellen\",\r\n params: {\r\n type: \"copy\",\r\n rowNumber: (obj.taetigkeiten.length - 1).toString(),\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n SnotifyService.newAlert(\r\n 2,\r\n \"Beim Kopieren der Tätigkeit ist es einen Fehler aufgetreten !\"\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * Geht zur \"Arbeitszeit_Erstellen\" Seite, um eine neue Tätigkeiten erstellt zu werden\r\n */\r\n async newTaetigkeit(): Promise {\r\n if (this.editValues.datum == \"\") {\r\n SnotifyService.newAlert(1, \"Bitte wählen Sie ein Datum aus.\");\r\n //this.isMessage = true;\r\n //this.message = \"Bitte wählen Sie ein Datum aus.\";\r\n //this.messageType = \"danger\";\r\n return;\r\n }\r\n var obj = { ...this.editValues };\r\n this.$router.push({\r\n path: \"/arbeitszeiterstellen\",\r\n name: \"Arbeitszeit_Erstellen\",\r\n params: {\r\n type: \"new\",\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n //this.$store.state.tempData = { ...this.editValues }; //um die Daten zum Display \"arbeitszeiterstellen\" zu übertragen\r\n //this.$router.push(\"/arbeitszeiterstellen\");\r\n }\r\n\r\n async saveArbeitstag(editValues: IArbeitstag): Promise {\r\n if (await this.hasErrors()) return;\r\n if (!(await this.isChange())) return; //Wenn es keine Änderung in der Maske gibt\r\n this.isDisabledSaveButton = true;\r\n var obj = { ...this.editValues };\r\n obj.personalNummer = this.personalNummer;\r\n obj.datum = await this.formatDateFromDatePicker(obj.datum);\r\n\r\n var existsEntry = false;\r\n //Wenn ein Objekt eine autoId hat, heißt es, dass der Arbeitstag vorhanden ist und aktualisiert werden soll\r\n obj.taetigkeiten.forEach((item) => {\r\n if (item.hasOwnProperty(\"autoId\") && item.autoId != 0) {\r\n existsEntry = true;\r\n return;\r\n }\r\n });\r\n\r\n var result;\r\n if (existsEntry) {\r\n result = await Axios.put(\"arbeitstag\", JSON.stringify(obj));\r\n SnotifyService.newAlert(\r\n 0,\r\n \"Der Arbeitstag wurde erfolgreich aktualisiert.\"\r\n );\r\n //this.message = \"Der Arbeitstag wurde erfolgreich aktualisiert.\";\r\n } else {\r\n result = await Axios.post(\"arbeitstag\", JSON.stringify(obj));\r\n SnotifyService.newAlert(0, \"Der Arbeitstag wurde erfolgreich erstellt.\");\r\n //this.message = \"Der Arbeitstag wurde erfolgreich erstellt.\";\r\n }\r\n\r\n if (\r\n result?.status == 200 ||\r\n result?.status == 201 ||\r\n result?.status == 204\r\n ) {\r\n //this.isMessage = true;\r\n //this.messageType = \"success\";\r\n await this.fetchArbeitszeitAsync(obj.datum);\r\n } else {\r\n //this.isMessage = true;\r\n //this.message = \"Der Arbeitstag konnte nicht erstellt werden!\";\r\n //this.messageType = \"danger\";\r\n SnotifyService.newAlert(\r\n 2,\r\n \"Der Arbeitstag konnte nicht erstellt werden!\"\r\n );\r\n }\r\n\r\n this.isDisabledSaveButton = false;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Prüft bei jeder Datum-Änderung, ob die Woche abgegeben ist oder nicht\r\n */\r\n\r\n async checkWochenStatus(dayOfWeek: string): Promise {\r\n await Axios.get(\"wochenbuchungen/wochenstatus\", {\r\n params: {\r\n personalnummer: this.personalNummer,\r\n datum: dayOfWeek,\r\n },\r\n }).then((x) => {\r\n if (x.status == 200 || x.status == 201) {\r\n if (x.data == true) {\r\n this.isAbgegeben = true;\r\n } else {\r\n this.isAbgegeben = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n async selectItem(obj: ITaetigkeit, key: number): Promise {\r\n this.selectedItem.obj = obj;\r\n this.selectedItem.key = key;\r\n this.isActive = key;\r\n //console.log(this.selectedItem);\r\n }\r\n\r\n /**\r\n * @summary\r\n * Berechnet den echten Wert z.B 0,25 => 0,15 Minute\r\n */\r\n convertMinuteOfPauseTime(value: number): number {\r\n return ((value - 100) / 100) * 60 + 60;\r\n }\r\n\r\n async forwardDate(): Promise {\r\n var currentDate = Date.parse(this.editValues.datum);\r\n var afterADay = currentDate + 24 * 60 * 60 * 1000;\r\n //this.getDay(new Date(afterADay).toLocaleDateString());\r\n this.editValues.datum = this.formatDateToDatePicker(\r\n new Date(afterADay).toLocaleDateString()\r\n );\r\n await this.fetchDateByDate(this.editValues.datum);\r\n await this.checkWochenStatus(new Date(afterADay).toLocaleDateString());\r\n }\r\n\r\n async backwardDate(): Promise {\r\n var currentDate = Date.parse(this.editValues.datum);\r\n var beforeADay = currentDate - 24 * 60 * 60 * 1000;\r\n //this.getDay(new Date(beforeADay).toLocaleDateString());\r\n this.editValues.datum = this.formatDateToDatePicker(\r\n new Date(beforeADay).toLocaleDateString()\r\n );\r\n\r\n await this.fetchDateByDate(this.editValues.datum);\r\n await this.checkWochenStatus(new Date(beforeADay).toLocaleDateString());\r\n }\r\n\r\n async increasePauseTime(value: string): Promise {\r\n value = value.replace(\",\", \".\");\r\n var newValue = parseFloat(value) + 0.25;\r\n this.editValues.pause = newValue.toFixed(2).toString().replace(\".\", \",\");\r\n await this.calcArbeitszeit();\r\n }\r\n async decreasePauseTime(value: string): Promise {\r\n value = value.replace(\",\", \".\");\r\n if (parseFloat(value) > 0) {\r\n var newValue = parseFloat(value) - 0.25;\r\n this.editValues.pause = newValue.toFixed(2).toString().replace(\".\", \",\");\r\n await this.calcArbeitszeit();\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * Prüft, ob in den Eingabefeldern Fehler festgestellt werden können.\r\n *\r\n * @returns\r\n * Boolean, welcher aussagt ob Fehler gefunden worden sind.\r\n */\r\n async hasErrors(): Promise {\r\n const errorList = await this.validateEnteredValues();\r\n if (errorList.length > 0) {\r\n SnotifyService.newAlert(2, errorList[0]);\r\n /*\r\n this.isMessage = true;\r\n this.message = errorList[0];\r\n this.messageType = \"danger\";\r\n */\r\n //errorList.forEach((error) => {});\r\n return true;\r\n } else {\r\n //this.isMessage = false;\r\n return false;\r\n }\r\n }\r\n\r\n /** Prüfung, ob alle Werte\r\n * sinnvoll eingegeben worden sind.\r\n */\r\n async validateEnteredValues(): Promise {\r\n const message: string[] = [];\r\n\r\n if (this.editValues.datum == \"\")\r\n message.push(\"Bitte wählen ein Datum aus.\");\r\n if (this.editValues.kommen == \"\")\r\n message.push(\"Bitte füllen das Feld 'Kommen' aus.\");\r\n if (this.editValues.gehen == \"\")\r\n message.push(\"Bitte füllen das Feld 'Gehen' aus.\");\r\n if (this.editValues.taetigkeiten.length == 0)\r\n message.push(\"Sie haben keine Tätigkeit eingetragen.\");\r\n\r\n return message;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Prüft, ob es bei der Tätigkeit eine Änderung gibt\r\n */\r\n async isChange(): Promise {\r\n var tempData = JSON.parse(\r\n JSON.stringify(this.$store.state.tempData)\r\n ) as IArbeitstag;\r\n\r\n var editValues = { ...this.editValues }; //Damit die Felder nicht betroffen werden, werden die Daten geklont\r\n\r\n if (editValues.datum.indexOf(\"-\") > -1) {\r\n editValues.datum = await this.formatDateFromDatePicker(editValues.datum);\r\n }\r\n if (tempData.datum.indexOf(\"-\") > -1) {\r\n tempData.datum = await this.formatDateFromDatePicker(tempData.datum);\r\n }\r\n\r\n if (tempData.arbeitszeit != editValues.arbeitszeit) return true;\r\n if (tempData.datum != editValues.datum) return true;\r\n if (tempData.kommen != editValues.kommen) return true;\r\n if (tempData.gehen != editValues.gehen) return true;\r\n if (tempData.pause != editValues.pause) return true;\r\n\r\n /*\r\n if (tempData.taetigkeiten.length != this.editValues.taetigkeiten.length) {\r\n return true;\r\n } else {\r\n for (var i = 0; i < tempData.taetigkeiten.length; i++) {\r\n if (\r\n tempData.taetigkeiten[i].buchungsart !=\r\n this.editValues.taetigkeiten[i].buchungsart\r\n )\r\n return true;\r\n if (\r\n tempData.taetigkeiten[i].taetigkeit !=\r\n this.editValues.taetigkeiten[i].taetigkeit\r\n )\r\n return true;\r\n if (\r\n tempData.taetigkeiten[i].projekt !=\r\n this.editValues.taetigkeiten[i].projekt\r\n )\r\n return true;\r\n if (tempData.taetigkeiten[i].ort != this.editValues.taetigkeiten[i].ort)\r\n return true;\r\n\r\n if (\r\n tempData.taetigkeiten[i].wert != this.editValues.taetigkeiten[i].wert\r\n )\r\n return true;\r\n if (\r\n tempData.taetigkeiten[i].bemerkung !=\r\n this.editValues.taetigkeiten[i].bemerkung\r\n )\r\n return true;\r\n }\r\n }\r\n */\r\n return false;\r\n }\r\n\r\n showCopyArbeitstagModalShow() {\r\n this.copyArbeitstagModalShow = true;\r\n this.copyDate = this.editValues.datum;\r\n }\r\n\r\n hideCopyArbeitstagModalShow() {\r\n this.copyArbeitstagModalShow = false;\r\n }\r\n\r\n async backToHomepage(): Promise {\r\n var date = await this.formatDateFromDatePicker(this.editValues.datum);\r\n\r\n var isChanged = await this.isChange();\r\n if (isChanged) {\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten Sie die Daten speichern?\", {\r\n title: \"Zurück zur Arbeitszeit\",\r\n okVariant: \"primary\",\r\n cancelVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n await this.saveArbeitstag(this.editValues);\r\n this.$router.push({ path: \"/\", query: { datum: date } });\r\n return;\r\n } else {\r\n SnotifyService.newAlert(\r\n 1,\r\n \"Der Arbeitstag wurde nicht gespeichert.\"\r\n );\r\n this.$router.push({ path: \"/\", query: { datum: date } });\r\n return;\r\n }\r\n })\r\n .catch((error) => {\r\n SnotifyService.newAlert(2, error);\r\n });\r\n } else {\r\n this.$router.push({ path: \"/\", query: { datum: date } });\r\n return;\r\n }\r\n\r\n /*\r\n var date = await this.formatDateFromDatePicker(this.editValues.datum);\r\n //this.$router.push({ path: \"/\", query: { datum: date } });\r\n const errorList = await this.validateEnteredValues();\r\n\r\n if (this.isAbgegeben) {\r\n this.$router.push({ path: \"/\", query: { datum: date } });\r\n } else {\r\n if (errorList.length > 0) {\r\n this.$router.push({ path: \"/\", query: { datum: date } });\r\n } else {\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten Sie die Daten speichern?\", {\r\n title: \"Zurück zur Arbeitszeit\",\r\n okVariant: \"success\",\r\n cancelVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n SnotifyService.newAlert(3, \"Der Arbeitstag wurde gespeichert.\");\r\n await this.saveArbeitstag(this.editValues);\r\n this.$router.push({ path: \"/\", query: { datum: date } });\r\n } else {\r\n SnotifyService.newAlert(\r\n 1,\r\n \"Der Arbeitstag wurde nicht gespeichert.\"\r\n );\r\n this.$router.push({ path: \"/\", query: { datum: date } });\r\n }\r\n })\r\n .catch((error) => {\r\n SnotifyService.newAlert(2, error);\r\n });\r\n }\r\n }\r\n */\r\n }\r\n\r\n /**\r\n * @summary\r\n * Generiert die Zeitangaben wie sie sein sollen. z.B \"0,25\", \"0,50\", \"0,75\", \"1,00\" ...\r\n *\r\n */\r\n async getWertList(): Promise {\r\n this.wertList.push(\"0,00\");\r\n for (var i = 0; i < 23; i++) {\r\n for (var j = 0; j < 4; j++) {\r\n i = i + 0.25;\r\n this.wertList.push(i.toFixed(2).replace(\".\", \",\"));\r\n }\r\n i--;\r\n }\r\n return this.wertList;\r\n }\r\n\r\n padTo2Digits(num: number) {\r\n return num.toString().padStart(2, \"0\");\r\n }\r\n //To 2022-01-01\r\n formatDateToDatePicker(date: string) {\r\n var partsOfDate = date.split(\".\");\r\n return partsOfDate[2] + \"-\" + partsOfDate[1] + \"-\" + partsOfDate[0];\r\n }\r\n //To 01.01.2022\r\n async formatDateFromDatePicker(date: string): Promise {\r\n var partsOfDate = date.split(\"-\");\r\n partsOfDate = partsOfDate.reverse();\r\n return partsOfDate.join(\".\");\r\n /*\r\n return (\r\n this.padTo2Digits(parseInt(partsOfDate[2])).toString() +\r\n \".\" +\r\n this.padTo2Digits(parseInt(partsOfDate[1])).toString() +\r\n \".\" +\r\n partsOfDate[0]\r\n );\r\n */\r\n }\r\n\r\n timepickerlabels: any = {\r\n de: {\r\n labelHours: \"Stunden\",\r\n labelMinutes: \"Minuten\",\r\n labelSeconds: \"Sekunden\",\r\n labelIncrement: \"Erhöhen\",\r\n labelDecrement: \"Verringern\",\r\n labelSelected: \"\",\r\n labelNoTimeSelected: \"Keine Zeit ausgewählt\",\r\n labelCloseButton: \"Schließen\",\r\n },\r\n };\r\n\r\n datepickerlabels: any = {\r\n de: {\r\n labelPrevDecade: \"Vorheriges Jahrzehnt\",\r\n labelPrevYear: \"Vorheriges Jahr\",\r\n labelPrevMonth: \"Vorheriger Monat\",\r\n labelCurrentMonth: \"Aktueller Monat\",\r\n labelNextMonth: \"Nächster Monat\",\r\n labelNextYear: \"Nächstes Jahr\",\r\n labelNextDecade: \"Nächstes Jahrzehnt\",\r\n labelToday: \"Heute\",\r\n labelNoDateSelected: \"Kein Datum gewählt\",\r\n labelCalendar: \"Kalender\",\r\n labelNav: \"Kalendernavigation\",\r\n labelHelp: \"Mit den Pfeiltasten durch den Kalender navigieren\",\r\n },\r\n };\r\n\r\n /*\r\nkw: any = {};\r\n\r\n currentDate: any = new Date();\r\n currentDay: any = this.currentDate.getDay();\r\n startDate: any = new Date(this.currentDate.getFullYear(), 0, 1);\r\n numberOfWeek: string = \"\";\r\n\r\n years: any = {\r\n selected: \"2022\",\r\n options: [\r\n { value: \"2022\", text: \"2022\" },\r\n { value: \"2021\", text: \"2021\" },\r\n { value: \"2020\", text: \"2020\" },\r\n { value: \"2019\", text: \"2019\" },\r\n ],\r\n };\r\n tag: any = {\r\n selected: this.currentDate.getDay(),\r\n options: [\r\n { value: \"1\", text: \"Montag\" },\r\n { value: \"2\", text: \"Dienstag\" },\r\n { value: \"3\", text: \"Mittwoch\" },\r\n { value: \"4\", text: \"Donnerstag\" },\r\n { value: \"5\", text: \"Freitag\" },\r\n { value: \"6\", text: \"Samstag\" },\r\n { value: \"0\", text: \"Sonntag\" },\r\n ],\r\n };\r\n\r\n\r\n getNumberOfWeek(): number {\r\n var numberOfDays = Math.ceil(\r\n (this.currentDate - this.startDate) / (24 * 60 * 60 * 1000)\r\n );\r\n var result = Math.floor((numberOfDays + this.startDate.getDay()) / 7);\r\n\r\n return result;\r\n }\r\n\r\n\r\n created(): void {\r\n this.numberOfWeek = this.getNumberOfWeek().toString();\r\n console.log(\"this.numberOfWeek \", this.numberOfWeek);\r\n }\r\n\r\n beforeMount(): void {\r\n this.numberOfWeek = this.getNumberOfWeek().toString();\r\n\r\n this.kw = {\r\n selected: this.numberOfWeek,\r\n options: [\r\n { value: \"1\", text: \"KW 1\" },\r\n { value: \"2\", text: \"KW 2\" },\r\n { value: \"3\", text: \"KW 3\" },\r\n { value: \"4\", text: \"KW 4\" },\r\n { value: \"5\", text: \"KW 5\" },\r\n { value: \"6\", text: \"KW 6\" },\r\n { value: \"7\", text: \"KW 7\" },\r\n { value: \"8\", text: \"KW 8\" },\r\n { value: \"9\", text: \"KW 9\" },\r\n { value: \"10\", text: \"KW 10\" },\r\n { value: \"11\", text: \"KW 11\" },\r\n { value: \"12\", text: \"KW 12\" },\r\n { value: \"13\", text: \"KW 13\" },\r\n { value: \"14\", text: \"KW 14\" },\r\n { value: \"15\", text: \"KW 15\" },\r\n { value: \"16\", text: \"KW 16\" },\r\n { value: \"17\", text: \"KW 17\" },\r\n { value: \"18\", text: \"KW 18\" },\r\n { value: \"19\", text: \"KW 19\" },\r\n { value: \"20\", text: \"KW 20\" },\r\n { value: \"21\", text: \"KW 21\" },\r\n { value: \"22\", text: \"KW 22\" },\r\n { value: \"23\", text: \"KW 23\" },\r\n { value: \"24\", text: \"KW 24\" },\r\n { value: \"25\", text: \"KW 25\" },\r\n { value: \"26\", text: \"KW 26\" },\r\n { value: \"27\", text: \"KW 27\" },\r\n { value: \"28\", text: \"KW 28\" },\r\n { value: \"29\", text: \"KW 29\" },\r\n { value: \"30\", text: \"KW 30\" },\r\n { value: \"31\", text: \"KW 31\" },\r\n { value: \"32\", text: \"KW 32\" },\r\n { value: \"33\", text: \"KW 33\" },\r\n { value: \"34\", text: \"KW 34\" },\r\n { value: \"35\", text: \"KW 35\" },\r\n { value: \"36\", text: \"KW 36\" },\r\n { value: \"37\", text: \"KW 37\" },\r\n { value: \"38\", text: \"KW 38\" },\r\n { value: \"39\", text: \"KW 39\" },\r\n { value: \"40\", text: \"KW 40\" },\r\n { value: \"41\", text: \"KW 41\" },\r\n { value: \"42\", text: \"KW 42\" },\r\n { value: \"43\", text: \"KW 43\" },\r\n { value: \"44\", text: \"KW 44\" },\r\n { value: \"45\", text: \"KW 45\" },\r\n { value: \"46\", text: \"KW 46\" },\r\n { value: \"47\", text: \"KW 47\" },\r\n { value: \"48\", text: \"KW 48\" },\r\n { value: \"49\", text: \"KW 49\" },\r\n { value: \"50\", text: \"KW 50\" },\r\n { value: \"51\", text: \"KW 51\" },\r\n { value: \"52\", text: \"KW 52\" },\r\n ],\r\n };\r\n }\r\n */\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!./Arbeitszeit.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!./Arbeitszeit.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Arbeitszeit.vue?vue&type=template&id=48dfb711&\"\nimport script from \"./Scripts/Arbeitszeit?vue&type=script&lang=ts&\"\nexport * from \"./Scripts/Arbeitszeit?vue&type=script&lang=ts&\"\nimport style0 from \"./Arbeitszeit.vue?vue&type=style&index=0&id=48dfb711&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',[_c('b-alert',{attrs:{\"variant\":\"info\",\"show\":_vm.loading}},[(_vm.loading == true)?_c('b-spinner',{attrs:{\"small\":\"\"}}):_vm._e(),_vm._v(\" Daten werden geladen...\")],1)],1)],1),_c('b-row',[_c('b-col',[_c('b-alert',{attrs:{\"show\":_vm.isMessage,\"variant\":_vm.messageType}},[_vm._v(_vm._s(_vm.message))])],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"year\"}},[_c('b',[_vm._v(\"Jahr\")])]),_c('b-form-select',{staticClass:\"form-select\",attrs:{\"id\":\"year\",\"options\":_vm.jahrList},on:{\"change\":function($event){return _vm.executeUrlaubFilter(_vm.editValues)}},model:{value:(_vm.editValues.jahr),callback:function ($$v) {_vm.$set(_vm.editValues, \"jahr\", $$v)},expression:\"editValues.jahr\"}})],1),_c('b-col',[_c('label',{attrs:{\"for\":\"status\"}},[_c('b',[_vm._v(\"Status\")])]),_c('b-form-select',{staticClass:\"form-select\",attrs:{\"id\":\"status\",\"options\":_vm.antragstatusList},on:{\"change\":function($event){return _vm.executeUrlaubFilter(_vm.editValues)}},model:{value:(_vm.editValues.status),callback:function ($$v) {_vm.$set(_vm.editValues, \"status\", $$v)},expression:\"editValues.status\"}})],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-card',{attrs:{\"title\":\"Anträge\"}},[_c('hr'),(_vm.urlaubFilterResponse.length == 0)?_c('ul',{staticClass:\"list-group list-group-light\",staticStyle:{\"max-height\":\"100px\",\"overflow-y\":\"auto\"}},[_c('li',{staticClass:\"list-group-item d-flex justify-content-between align-items-center\"},[_c('span',[_vm._v(\"Keine Anträge\")])])]):_c('div',{staticClass:\"panel list-group\",staticStyle:{\"max-height\":\"400px\",\"overflow-y\":\"auto\"}},_vm._l((_vm.urlaubFilterResponse),function(item,key){return _c('ul',{key:key,staticClass:\"list-group list-group-light\"},[_c('li',{staticClass:\"list-group-item d-flex justify-content-between align-items-center\",attrs:{\"role\":\"tab\"}},[_c('div',[_c('div',{staticClass:\"fw-bold\"},[_vm._v(\" \"+_vm._s(item.von)+\" - \"+_vm._s(item.bis)+\" \")]),_c('div',{staticClass:\"text-muted\"},[_vm._v(\" \"+_vm._s(item.arbeitstage)+\" \"+_vm._s(item.arbeitstage > 1 ? \"Tage\" : \"Tag\")+\" \"+_vm._s(item.status)+\" \")])]),_c('div',{staticClass:\"d-flex justify-content-end\"},[(item.status != 'genehmigt')?_c('hc-toolbar-icon-button',{attrs:{\"feather\":\"trash\"},on:{\"click\":function($event){return _vm.deleteAntrag(item)}}}):_vm._e(),_c('hc-toolbar-icon-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle\",value:('accordion-' + key),expression:\"'accordion-' + key\"}],attrs:{\"feather\":\"info\"}})],1)]),_c('ul',{staticClass:\"list-group\"},[_c('li',{staticClass:\"list-group-item\",attrs:{\"role\":\"tabpanel\"}},[_c('b-collapse',{attrs:{\"id\":'accordion-' + key}},[_c('b-table-simple',[_c('b-tbody',[_c('b-tr',[_c('b-td',[_c('span',[_c('b',[_vm._v(\"Art\")])])]),_c('b-td',[_vm._v(_vm._s(item.art))])],1),_c('b-tr',[_c('b-td',[_c('span',[_c('b',[_vm._v(\"Beantragt\")])])]),_c('b-td',[_vm._v(_vm._s(item.beantragt))])],1),_c('b-tr',[_c('b-td',[_c('span',[_c('b',[_vm._v(\"Bearbeitet\")])])]),_c('b-td',[_vm._v(_vm._s(item.bearbeitet))])],1),_c('b-tr',[_c('b-td',[_c('span',[_c('b',[_vm._v(\"Bearbeiter\")])])]),_c('b-td',[_vm._v(_vm._s(item.bearbeiter))])],1),_c('b-tr',[_c('b-td',[_c('span',[_c('b',[_vm._v(\"Info\")])])]),_c('b-td',[_vm._v(_vm._s(item.info))])],1)],1)],1)],1)],1)])])}),0),_c('hr'),_c('footer',{attrs:{\"align\":\"right\"}},[_c('hc-toolbar',[_c('hc-toolbar-icon-button',{attrs:{\"feather\":\"plus\"},on:{\"click\":function($event){return _vm.openNewAntragModal()}}})],1)],1)])],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',[_c('b-button',{staticClass:\"float-end\",attrs:{\"variant\":\"primary\",\"size\":\"lg\"},on:{\"click\":function($event){return _vm.backToHomepage()}}},[_vm._v(\"Zurück\")])],1)],1),_c('b-modal',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-footer\",modifiers:{\"modal-footer\":true}}],attrs:{\"id\":\"modal-center\",\"title\":\"Neuer Antrag\",\"hide-footer\":true,\"hide-header-close\":\"\"},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('b-alert',{attrs:{\"show\":_vm.isMessageModal,\"variant\":_vm.messageType}},[_vm._v(_vm._s(_vm.message))])],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"primary\"}},[_vm._v(\"Resturlaub: \"+_vm._s(_vm.statistikObject.urlaub))])],1),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"success\"}},[_vm._v(\"Gleitzeit: \"+_vm._s(_vm.statistikObject.gleitzeit))])],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"antragstyp\"}},[_c('b',[_vm._v(\"Antrag\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"antragstyp\",\"options\":_vm.antragtypenList},model:{value:(_vm.editValuesModal.art),callback:function ($$v) {_vm.$set(_vm.editValuesModal, \"art\", $$v)},expression:\"editValuesModal.art\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"datepicker1\"}},[_c('b',[_vm._v(\"Von\")])]),_c('b-form-datepicker',{attrs:{\"id\":\"datepicker-dateformat1\",\"calendar-width\":\"100%\",\"menu-class\":\"w-100\",\"date-format-options\":{\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n },\"start-weekday\":\"1\",\"locale\":\"de\"},on:{\"input\":function($event){return _vm.calcArbeitstage()}},model:{value:(_vm.editValuesModal.von),callback:function ($$v) {_vm.$set(_vm.editValuesModal, \"von\", $$v)},expression:\"editValuesModal.von\"}})],1)],1),_c('b-row',{staticClass:\"mb-2\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"datepicker2\"}},[_c('b',[_vm._v(\"Bis\")])]),_c('b-form-datepicker',{attrs:{\"id\":\"datepicker-dateformat2\",\"calendar-width\":\"100%\",\"menu-class\":\"w-100\",\"date-format-options\":{\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n },\"start-weekday\":\"1\",\"locale\":\"de\"},on:{\"input\":function($event){return _vm.calcArbeitstage()}},model:{value:(_vm.editValuesModal.bis),callback:function ($$v) {_vm.$set(_vm.editValuesModal, \"bis\", $$v)},expression:\"editValuesModal.bis\"}})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"primary\"}},[_vm._v(\"Arbeitstage: \"+_vm._s(_vm.editValuesModal.arbeitstage))])],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"info\"}},[_c('b',[_vm._v(\"Info\")])]),_c('b-form-textarea',{attrs:{\"id\":\"info\",\"placeholder\":\"\",\"rows\":\"3\",\"max-rows\":\"6\"},model:{value:(_vm.editValuesModal.info),callback:function ($$v) {_vm.$set(_vm.editValuesModal, \"info\", $$v)},expression:\"editValuesModal.info\"}})],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',[_c('b-button',{staticClass:\"float-start\",attrs:{\"variant\":\"primary\",\"size\":\"lg\"},on:{\"click\":function($event){return _vm.closeNewAntragModal()}}},[_vm._v(\"Schließen\")]),_c('b-button',{staticClass:\"float-end\",attrs:{\"variant\":\"primary\",\"size\":\"lg\"},on:{\"click\":function($event){return _vm.saveUrlaubAntrag(_vm.editValuesModal)}}},[_vm._v(\"Abgeben\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface IUrlaubFilter {\r\n personalNummer: number;\r\n status: string;\r\n jahr: string;\r\n}\r\n\r\nexport function newIUrlaubFilter() {\r\n const urlaubFilter: IUrlaubFilter = {\r\n personalNummer: 0,\r\n status: \"\",\r\n jahr: \"\",\r\n };\r\n return urlaubFilter;\r\n}\r\n","export interface IUrlaubAntrag {\r\n personalNummer: number;\r\n art: string;\r\n von: string;\r\n bis: string;\r\n arbeitstage: number;\r\n info: string;\r\n}\r\n\r\nexport function newIUrlaubAntrag() {\r\n const urlaubantrag: IUrlaubAntrag = {\r\n personalNummer: 0,\r\n art: \"\",\r\n von: \"\",\r\n bis: \"\",\r\n arbeitstage: 0,\r\n info: \"\",\r\n };\r\n return urlaubantrag;\r\n}\r\n","import Axios from \"@/library/axios/Axios\";\r\nimport { SnotifyService } from \"@/services/hercon-services/Snotify.service\";\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport BaseContainerComponent from \"@/components/hercon-components/1-molecules/BaseContainer.component.vue\";\r\nimport Button from \"@/stories/Button.vue\";\r\nimport ToolbarIconButtonComponent from \"@/components/hercon-components/1-molecules/ToolbarIconButton.component.vue\";\r\nimport ToolbarComponent from \"@/components/hercon-components/2-organisms/Toolbar.component.vue\";\r\nimport {\r\n IUrlaubFilter,\r\n newIUrlaubFilter,\r\n} from \"@/library/models/interfacesUrlaubFilter\";\r\nimport {\r\n IUrlaubFilterResponse,\r\n newIUrlaubFilterResponse,\r\n} from \"@/library/models/interfacesUrlaubFilterResponse\";\r\nimport {\r\n IStatistik,\r\n INewStatistik,\r\n} from \"@/library/models/interfacesStatistik\";\r\nimport {\r\n IUrlaubAntrag,\r\n newIUrlaubAntrag,\r\n} from \"@/library/models/interfacesUrlaubAntrag\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport { IFeiertag } from \"@/library/models/interfacesFeiertag\";\r\n\r\n@Component({\r\n components: {\r\n BaseContainerComponent,\r\n Button,\r\n ToolbarIconButtonComponent,\r\n ToolbarComponent,\r\n },\r\n})\r\nexport default class Urlaub extends Vue {\r\n loading: boolean = false;\r\n isMessage: boolean = false;\r\n isMessageModal: boolean = false;\r\n isAntragMessage: boolean = false;\r\n messageType: string = \"\";\r\n message: string = \"\";\r\n showModal: boolean = false;\r\n\r\n antragtypenList: string[] = [];\r\n antragstatusList: string[] = [];\r\n jahrList: string[] = [];\r\n statistikObject: IStatistik = INewStatistik();\r\n feiertageList: IFeiertag[] = [];\r\n\r\n editValues: IUrlaubFilter = newIUrlaubFilter();\r\n editValuesModal: IUrlaubAntrag = newIUrlaubAntrag();\r\n tempData: IUrlaubAntrag = newIUrlaubAntrag();\r\n urlaubFilterResponse: IUrlaubFilterResponse[] = [];\r\n\r\n personalNummer: number = StoreService.getLoginItem().mitarbeiter\r\n .personalNummer;\r\n\r\n async mounted(): Promise {\r\n await this.fetchAllLists();\r\n this.editValues.jahr = new Date().getFullYear().toString();\r\n this.editValues.personalNummer = this.personalNummer;\r\n this.editValuesModal.personalNummer = this.personalNummer;\r\n\r\n this.executeUrlaubFilter(this.editValues);\r\n }\r\n\r\n async calcArbeitstage(): Promise {\r\n /*\r\n var diffTime = 0;\r\n var diffDays = 0;\r\n */\r\n var workDaysCount = 0;\r\n if (\r\n new Date(this.editValuesModal.bis) < new Date(this.editValuesModal.von)\r\n ) {\r\n //SnotifyService.newAlert(2, \"Das Startdatum muss kleiner als Enddatum sein!\");\r\n\r\n this.isMessageModal = true;\r\n this.messageType = \"danger\";\r\n this.message = \"Das Startdatum muss kleiner als Enddatum sein!\";\r\n\r\n return;\r\n } else {\r\n this.isMessageModal = false;\r\n }\r\n if (this.editValuesModal.von == this.editValuesModal.bis) {\r\n this.editValuesModal.arbeitstage = 1;\r\n } else {\r\n workDaysCount = await this.getWorkDaysCount(\r\n this.editValuesModal.von,\r\n this.editValuesModal.bis\r\n );\r\n this.editValuesModal.arbeitstage = workDaysCount;\r\n /*\r\n const date1 = new Date(this.editValuesModal.von);\r\n const date2 = new Date(this.editValuesModal.bis);\r\n\r\n diffTime = Math.abs(date2.getTime() - date1.getTime());\r\n diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\r\n this.editValuesModal.arbeitstage = diffDays;\r\n */\r\n }\r\n if (this.statistikObject.urlaub < workDaysCount) {\r\n if (this.editValuesModal.art.toString() == \"Urlaub\") {\r\n this.isMessageModal = true;\r\n this.messageType = \"danger\";\r\n this.message =\r\n \"Die Anzahl der ausgewählten Tage hat die verbleibenden Urlaubstage überschritten.\";\r\n //SnotifyService.newAlert(2, \"Die Anzahl der ausgewählten Tage hat die verbleibenden Urlaubstage überschritten.\");\r\n }\r\n }\r\n /*\r\n if (this.statistikObject.urlaub < diffDays) {\r\n if (this.editValuesModal.art.toString() == \"Urlaub\") {\r\n this.isMessageModal = true;\r\n this.messageType = \"danger\";\r\n this.message =\r\n \"Die Anzahl der ausgewählten Tage hat die verbleibenden Urlaubstage überschritten.\";\r\n //SnotifyService.newAlert(2, \"Die Anzahl der ausgewählten Tage hat die verbleibenden Urlaubstage überschritten.\");\r\n }\r\n }\r\n */\r\n }\r\n\r\n async getWorkDaysCount(startDate: string, endDate: string): Promise {\r\n var counter = 0;\r\n const _startDate = new Date(startDate);\r\n const _endDate = new Date(endDate);\r\n\r\n //Ausgewähltes Datumsintervall\r\n var dateList = new Array();\r\n\r\n //Datumsliste der Feiertagen\r\n var feiertagDateList = new Array();\r\n\r\n //feiertageList beinhaltet die Namen der Feiertagen. Deswegen wird die Liste in eine String \"Datum\" Liste umgewandelt\r\n this.feiertageList.forEach((item) => {\r\n feiertagDateList.push(item.datum);\r\n });\r\n\r\n while (_startDate <= _endDate) {\r\n //im Format YYYY-MM-DD\r\n var selectedDate = this.formatDateToDatePicker(\r\n new Date(_startDate).toLocaleDateString()\r\n );\r\n const dayOfWeek = _startDate.getDay();\r\n if (dayOfWeek !== 0 && dayOfWeek !== 6) {\r\n dateList.push(selectedDate); //Wochenende ausschließen\r\n counter++;\r\n }\r\n _startDate.setDate(_startDate.getDate() + 1);\r\n }\r\n //Feiertage aus der Liste entfernen. Das Resultat entsprict der richtigen Anzahl der Urlaubstagen\r\n var difference = dateList.filter((x) => !feiertagDateList.includes(x));\r\n\r\n return difference.length;\r\n }\r\n\r\n getDateToDatePicker(): string {\r\n const date = new Date();\r\n date.setDate(date.getDate() + 1);\r\n return this.formatDateToDatePicker(date.toLocaleDateString().toString());\r\n }\r\n\r\n /**\r\n * @summary\r\n * Nach eingegebenen Filtern liefert die DB die Urlaubsanträge zurück\r\n */\r\n async executeUrlaubFilter(filter: IUrlaubFilter): Promise {\r\n this.loading = true;\r\n //this.isMessage = false;\r\n\r\n if (filter.status == \"\") {\r\n //Es sind hier nur die Personalnummer und das Jahr erforderlich\r\n await Axios.get(\"urlaub\", {\r\n params: { personalnummer: filter.personalNummer, jahr: filter.jahr },\r\n })\r\n .then((result) => {\r\n this.urlaubFilterResponse = result.data as IUrlaubFilterResponse[];\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n /*\r\n this.isMessage = true;\r\n this.messageType = \"warning\";\r\n this.message = error.response.data;\r\n */\r\n SnotifyService.newAlert(2, error.response.data);\r\n this.urlaubFilterResponse = [];\r\n }\r\n });\r\n } else {\r\n await Axios.post(\"urlaub/filter\", JSON.stringify(filter))\r\n .then((result) => {\r\n this.urlaubFilterResponse = result.data as IUrlaubFilterResponse[];\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n /*\r\n this.isMessage = true;\r\n this.messageType = \"warning\";\r\n this.message = error.response.data;\r\n */\r\n SnotifyService.newAlert(2, error.response.data);\r\n this.urlaubFilterResponse = [];\r\n }\r\n });\r\n }\r\n\r\n //Formattieren die Datumsfelder\r\n await this.formatDateFieldsUrlaubFilterResponse();\r\n //item.bearbeiter beinhaltet die Mitarbeiternummer\r\n await this.replaceMitarbeiterNumberToName();\r\n this.loading = false;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Speichert den Antrag mit eingegebenen Daten\r\n */\r\n async saveUrlaubAntrag(values: IUrlaubAntrag): Promise {\r\n //values.von = this.formatDateFromDatePicker(values.von);\r\n //values.bis = this.formatDateFromDatePicker(values.bis);\r\n await Axios.post(\"urlaub\", JSON.stringify(values))\r\n .then((response) => {\r\n this.editValuesModal = newIUrlaubAntrag();\r\n //this.showModal = false;\r\n this.executeUrlaubFilter(this.editValues);\r\n this.showModal = false;\r\n })\r\n .catch((error) => {\r\n /*\r\n this.isAntragMessage = true;\r\n this.message = error.response.data;\r\n this.messageType = \"danger\";\r\n */\r\n SnotifyService.newAlert(2, error.response.data);\r\n });\r\n }\r\n\r\n openNewAntragModal(): void {\r\n this.showModal = true;\r\n this.editValuesModal.von = this.getDateToDatePicker();\r\n this.editValuesModal.bis = this.getDateToDatePicker();\r\n this.editValuesModal.info = \"\";\r\n this.editValuesModal.arbeitstage = 1;\r\n this.tempData = { ...this.editValuesModal };\r\n }\r\n\r\n async closeNewAntragModal(): Promise {\r\n //this.tempData leeren\r\n\r\n var isChanged = await this.isChange();\r\n if (isChanged) {\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten Sie die Daten speichern?\", {\r\n title: \"Zurück zur Urlaubsanträge\",\r\n okVariant: \"primary\",\r\n cancelVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n await this.saveUrlaubAntrag(this.editValuesModal);\r\n SnotifyService.newAlert(3, \"Die Urlaubsantrag wurde gespeichert.\");\r\n this.showModal = false;\r\n this.isMessageModal = false;\r\n this.tempData = newIUrlaubAntrag();\r\n return;\r\n } else {\r\n SnotifyService.newAlert(\r\n 1,\r\n \"Die Urlaubsantrag wurde nicht gespeichert.\"\r\n );\r\n this.showModal = false;\r\n this.isMessageModal = false;\r\n return;\r\n }\r\n })\r\n .catch((error) => {\r\n SnotifyService.newAlert(2, error);\r\n });\r\n } else {\r\n this.showModal = false;\r\n this.isMessageModal = false;\r\n }\r\n /*\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten Sie die Daten speichern?\", {\r\n title: \"Zurück zur Urlaubsanträge\",\r\n okVariant: \"primary\",\r\n cancelVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n await this.saveUrlaubAntrag(this.editValuesModal);\r\n SnotifyService.newAlert(3, \"Die Urlaubsantrag wurde gespeichert.\");\r\n this.showModal = false;\r\n this.isMessageModal = false;\r\n } else {\r\n SnotifyService.newAlert(\r\n 1,\r\n \"Die Urlaubsantrag wurde nicht gespeichert.\"\r\n );\r\n this.showModal = false;\r\n this.isMessageModal = false;\r\n }\r\n })\r\n .catch((error) => {\r\n SnotifyService.newAlert(2, error);\r\n });\r\n */\r\n }\r\n\r\n /**\r\n * @summary\r\n * Prüft, ob es bei dem Urlaubsantrag eine Änderung gibt\r\n */\r\n async isChange(): Promise {\r\n if (this.tempData.arbeitstage != this.editValuesModal.arbeitstage)\r\n return true;\r\n if (this.tempData.art != this.editValuesModal.art) return true;\r\n if (this.tempData.von != this.editValuesModal.von) return true;\r\n if (this.tempData.bis != this.editValuesModal.bis) return true;\r\n if (this.tempData.info != this.editValuesModal.info) return true;\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Löscht das Object und entfernt es aus der Liste nach der Key Nummer\r\n */\r\n deleteAntrag(obj: any, key: number): void {\r\n //Das Modale Fenster wird beim Klicken erstellt\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten den Eintrag wirklich löschen?\", {\r\n title: \"Eintrag löschen\",\r\n okVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n cancelVariant: \"primary\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then((value) => {\r\n if (value) {\r\n type myType = {\r\n personalNummer: number;\r\n beantragt: string;\r\n status: string;\r\n art: string;\r\n von: string;\r\n bis: string;\r\n };\r\n\r\n const deleteObj: myType = {\r\n personalNummer: obj.personalNummer,\r\n beantragt: obj.beantragt,\r\n status: obj.status,\r\n art: obj.art,\r\n von: obj.von,\r\n bis: obj.bis,\r\n };\r\n\r\n Axios.delete(\"urlaub\", {\r\n data: deleteObj,\r\n })\r\n .then((response) => {\r\n this.urlaubFilterResponse.splice(key, 1);\r\n })\r\n .catch((error) => {\r\n /*\r\n this.isMessage = true;\r\n this.messageType = \"danger\";\r\n this.message = error.response.data;\r\n */\r\n SnotifyService.newAlert(2, error.response.data);\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @summary\r\n * Schickt die Mitarbeiternummer in die Db und holt den Namen des Mitarbeiters\r\n */\r\n async replaceMitarbeiterNumberToName(): Promise {\r\n this.urlaubFilterResponse.forEach((item) => {\r\n if (parseInt(item.bearbeiter) != 0) {\r\n Axios.get(\"mitarbeiter/\" + item.bearbeiter).then((reponse) => {\r\n item.bearbeiter = reponse.data.name;\r\n });\r\n } else {\r\n item.bearbeiter = \"\";\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @summary\r\n *\r\n */\r\n async formatDateFieldsUrlaubFilterResponse(): Promise {\r\n this.urlaubFilterResponse.forEach((item) => {\r\n item.von = this.formatDate(item.von);\r\n item.bis = this.formatDate(item.bis);\r\n item.beantragt = item.beantragt.replace(\"T\", \" \"); //this.formatDate(item.beantragt);\r\n item.bearbeitet = this.formatDate(item.bearbeitet);\r\n });\r\n }\r\n\r\n //von 2022-01-01 zu 01.01.2022\r\n formatDate(date: string): string {\r\n var partsOfDate = date.substring(0, 10).split(\"-\");\r\n return (\r\n partsOfDate[2].toString().padStart(2, \"0\") +\r\n \".\" +\r\n partsOfDate[1].toString().padStart(2, \"0\") +\r\n \".\" +\r\n partsOfDate[0]\r\n );\r\n }\r\n\r\n //von 01.01.2022 zu 2022-01-01\r\n formatDateToDatePicker(date: string) {\r\n var partsOfDate = date.split(\".\");\r\n return (\r\n partsOfDate[2] +\r\n \"-\" +\r\n partsOfDate[1].toString().padStart(2, \"0\") +\r\n \"-\" +\r\n partsOfDate[0].toString().padStart(2, \"0\")\r\n );\r\n }\r\n //To 01.01.2022\r\n formatDateFromDatePicker(date: string): string {\r\n var partsOfDate = date.split(\"-\");\r\n return (\r\n partsOfDate[2].toString().padStart(2, \"0\") +\r\n \".\" +\r\n partsOfDate[1].toString().padStart(2, \"0\") +\r\n \".\" +\r\n partsOfDate[0]\r\n );\r\n }\r\n\r\n /**\r\n * @summary\r\n * Beschaffung aller Listen.\r\n */\r\n async fetchAllLists(): Promise {\r\n try {\r\n Promise.all([\r\n Axios.get(\"urlaub/antragtypen\"),\r\n Axios.get(\"urlaub/antragstatus\"),\r\n Axios.get(\"urlaub/jahr\"),\r\n Axios.get(\"statistiken/globale/\" + this.personalNummer),\r\n Axios.get(\"urlaub/feiertage\", {\r\n params: { jahr: new Date().getFullYear() },\r\n }),\r\n ]).then(\r\n ([\r\n responseAntragtypen,\r\n responseAntragstatus,\r\n responseJahr,\r\n reponseStatistik,\r\n responseFeiertage,\r\n ]) => {\r\n this.antragtypenList = responseAntragtypen.data as string[];\r\n this.editValuesModal.art = this.antragtypenList[0];\r\n this.antragstatusList = responseAntragstatus.data as string[];\r\n //Hinzufügen eine leere Zeile in die Status Combobox\r\n this.antragstatusList.unshift(\"\");\r\n this.jahrList = responseJahr.data as string[];\r\n this.statistikObject = reponseStatistik.data as IStatistik;\r\n this.feiertageList = responseFeiertage.data as IFeiertag[];\r\n //Das Datumsformat wird ins \"YYYY-MM-DD\" Format umgewandelt\r\n this.feiertageList.forEach((item) => {\r\n item.datum = item.datum.substring(0, 10);\r\n });\r\n }\r\n );\r\n } catch (error) {\r\n console.error(\"Die Daten konnten nicht geladen werden!\");\r\n }\r\n }\r\n\r\n backToHomepage(): void {\r\n this.$router.push(\"/\");\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!./Urlaub.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!./Urlaub.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Urlaub.vue?vue&type=template&id=e9b299fa&\"\nimport script from \"./Scripts/Urlaub?vue&type=script&lang=ts&\"\nexport * from \"./Scripts/Urlaub?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('section',{attrs:{\"id\":\"h-page-main-inner-full\"}},[_c('h1',[_vm._v(\"Benutzername\")])]),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"primary\"}},[_vm._v(\"Resturlaub: 4\")])],1),_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"success\"}},[_vm._v(\"Gleitzeit: 10\")])],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"antragstyp\"}},[_c('b',[_vm._v(\"Antrag\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"antragstyp\",\"options\":_vm.antragstyp.options},model:{value:(_vm.antragstyp.selected),callback:function ($$v) {_vm.$set(_vm.antragstyp, \"selected\", $$v)},expression:\"antragstyp.selected\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"datepicker1\"}},[_c('b',[_vm._v(\"Von\")])]),_c('b-form-datepicker',{attrs:{\"id\":\"datepicker-dateformat1\",\"date-format-options\":{\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n },\"locale\":\"de\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"datepicker2\"}},[_c('b',[_vm._v(\"Bis\")])]),_c('b-form-datepicker',{attrs:{\"id\":\"datepicker-dateformat2\",\"date-format-options\":{\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n },\"locale\":\"de\"}})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\"}},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"primary\"}},[_vm._v(\"Arbeitstage: 0\")])],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"info\"}},[_c('b',[_vm._v(\"Info\")])]),_c('b-form-textarea',{attrs:{\"id\":\"info\",\"placeholder\":\"\",\"rows\":\"3\",\"max-rows\":\"6\"}})],1)],1),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',[_c('b-button',{staticClass:\"float-end\",attrs:{\"variant\":\"primary\",\"size\":\"lg\"}},[_vm._v(\"Speichern\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport BaseContainerComponent from \"@/components/hercon-components/1-molecules/BaseContainer.component.vue\";\r\nimport Button from \"@/stories/Button.vue\";\r\nimport ToolbarIconButtonComponent from \"@/components/hercon-components/1-molecules/ToolbarIconButton.component.vue\";\r\nimport ToolbarComponent from \"@/components/hercon-components/2-organisms/Toolbar.component.vue\";\r\n\r\n@Component({\r\n components: {\r\n BaseContainerComponent,\r\n Button,\r\n ToolbarIconButtonComponent,\r\n ToolbarComponent,\r\n },\r\n})\r\nexport default class Arbeitszeit extends Vue {\r\n antragstyp: any = {\r\n selected: \"0\",\r\n options: [\r\n { value: \"0\", text: \"Urlaub\" },\r\n { value: \"1\", text: \"Gleitzeit\" },\r\n ],\r\n };\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Urlaubsantrag.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Urlaubsantrag.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Urlaubsantrag.vue?vue&type=template&id=6a0ab9c6&\"\nimport script from \"./Urlaubsantrag.vue?vue&type=script&lang=ts&\"\nexport * from \"./Urlaubsantrag.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',[_c('label',{attrs:{\"for\":\"datum\"}},[_c('b',[_vm._v(\"Datum\")])]),_c('b-form-input',{attrs:{\"id\":\"datum\",\"type\":\"text\",\"readonly\":\"\"},model:{value:(_vm.editValues.datum),callback:function ($$v) {_vm.$set(_vm.editValues, \"datum\", $$v)},expression:\"editValues.datum\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"buchung\"}},[_c('b',[_vm._v(\"Buchung\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"buchung\",\"options\":_vm.buchungenList,\"disabled\":_vm.isAbgegeben},on:{\"change\":function($event){return _vm.buchungsartSelected(_vm.buchungOptionValue)}},model:{value:(_vm.buchungOptionValue),callback:function ($$v) {_vm.buchungOptionValue=$$v},expression:\"buchungOptionValue\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"buchung\"}},[_c('b',[_vm._v(\"Tätigkeit\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"taetigkeit\",\"options\":_vm.taetigkeitenList,\"disabled\":_vm.isAbgegeben || _vm.isTaetigkeitFreigegeben},model:{value:(_vm.taetigkeitOptionValue),callback:function ($$v) {_vm.taetigkeitOptionValue=$$v},expression:\"taetigkeitOptionValue\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"projekt\"}},[_c('b',[_vm._v(\"Projekt\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"projekt\",\"options\":_vm.cacheProjekteList,\"disabled\":_vm.isAbgegeben || _vm.isProjektauswahlFreigegeben},model:{value:(_vm.editValues.projekt),callback:function ($$v) {_vm.$set(_vm.editValues, \"projekt\", $$v)},expression:\"editValues.projekt\"}})],1)],1),_c('b-row',[_c('b-col',[_c('b-button',{staticClass:\"mb-2\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.isAbgegeben || _vm.isProjektauswahlFreigegeben},on:{\"click\":function($event){return _vm.showKwpProjektModal()}}},[_c('b-icon',{attrs:{\"icon\":\"search\",\"aria-hidden\":\"true\"}}),_vm._v(\" KWP Projekt \")],1),_c('b-modal',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-footer\",modifiers:{\"modal-footer\":true}}],attrs:{\"id\":\"modal-center\",\"title\":\"KWP Projekte\",\"hide-footer\":true,\"hide-header-close\":\"\"},model:{value:(_vm.kwpProjektModalShow),callback:function ($$v) {_vm.kwpProjektModalShow=$$v},expression:\"kwpProjektModalShow\"}},[_c('div',{staticClass:\"mb-2\"},[_c('b-row',{staticClass:\"mb-2\"},[_c('b-col',[_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.showHideKwpFilterBereich()}}},[_vm._v(_vm._s(_vm.kwpFilterBereichShow == true ? \"Filterbereich zuklappen\" : \"Filterbereich aufklappen\"))])],1)],1),_c('b-collapse',{staticClass:\"mt-2 mb-2\",attrs:{\"id\":\"collapse-1\"},model:{value:(_vm.kwpFilterBereichShow),callback:function ($$v) {_vm.kwpFilterBereichShow=$$v},expression:\"kwpFilterBereichShow\"}},[_c('b-card',[_c('b-row',[_c('b-col',[_c('label',{attrs:{\"for\":\"projektStatus\"}},[_c('b',[_vm._v(\"Projekt Status\")])]),_c('b-form-input',{attrs:{\"id\":\"projektStatus\",\"type\":\"text\",\"readonly\":\"\"},model:{value:(_vm.kwpProjektBezeichnung),callback:function ($$v) {_vm.kwpProjektBezeichnung=$$v},expression:\"kwpProjektBezeichnung\"}})],1)],1),_c('b-row',[_c('b-col',[_c('label',{attrs:{\"for\":\"projektNummer\"}},[_c('b',[_vm._v(\"Projekt Nummer\")])]),_c('b-form-input',{attrs:{\"id\":\"projektNummer\",\"type\":\"text\"},model:{value:(_vm.editValuesKwpFilter.projektnummer),callback:function ($$v) {_vm.$set(_vm.editValuesKwpFilter, \"projektnummer\", $$v)},expression:\"editValuesKwpFilter.projektnummer\"}})],1)],1),_c('b-row',[_c('b-col',[_c('label',{attrs:{\"for\":\"projektLeiter\"}},[_c('b',[_vm._v(\"Projekt Leiter\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"projektLeiter\",\"options\":_vm.mitarbeiterList},model:{value:(_vm.editValuesKwpFilter.projektleiter),callback:function ($$v) {_vm.$set(_vm.editValuesKwpFilter, \"projektleiter\", $$v)},expression:\"editValuesKwpFilter.projektleiter\"}})],1)],1),_c('b-row',[_c('b-col',[_c('label',{attrs:{\"for\":\"teamNummer\"}},[_c('b',[_vm._v(\"Team Nummer\")])]),_c('b-form-input',{attrs:{\"id\":\"teamNummer\",\"type\":\"number\"},model:{value:(_vm.editValuesKwpFilter.teamNummer),callback:function ($$v) {_vm.$set(_vm.editValuesKwpFilter, \"teamNummer\", $$v)},expression:\"editValuesKwpFilter.teamNummer\"}})],1)],1),_c('b-row',[_c('b-col',[_c('label',{attrs:{\"for\":\"kunde\"}},[_c('b',[_vm._v(\"Kunde\")])]),_c('b-form-input',{attrs:{\"id\":\"kunde\",\"type\":\"text\"},model:{value:(_vm.editValuesKwpFilter.kunde),callback:function ($$v) {_vm.$set(_vm.editValuesKwpFilter, \"kunde\", $$v)},expression:\"editValuesKwpFilter.kunde\"}})],1)],1),_c('b-row',{staticClass:\"mb-2\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"suchText\"}},[_c('b',[_vm._v(\"Suchtext\")])]),_c('b-form-input',{attrs:{\"id\":\"suchText\",\"type\":\"text\"},model:{value:(_vm.editValuesKwpFilter.suchtext),callback:function ($$v) {_vm.$set(_vm.editValuesKwpFilter, \"suchtext\", $$v)},expression:\"editValuesKwpFilter.suchtext\"}})],1)],1),_c('b-row',[_c('b-col',[_c('b-button',{staticClass:\"float-end\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.executeKwpProjekteFilter(_vm.editValuesKwpFilter)}}},[(_vm.loading == true)?_c('b-spinner',{attrs:{\"small\":\"\"}}):_c('span',[_vm._v(\"Filtern\")])],1)],1)],1)],1)],1),(_vm.kwpProjekteList.length > 0)?_c('ul',{staticClass:\"list-group list-group-light\",staticStyle:{\"max-height\":\"450px\",\"overflow-y\":\"auto\"}},_vm._l((_vm.kwpProjekteList),function(projekt,key){return _c('li',{key:key,staticClass:\"list-group-item d-flex justify-content-between align-items-center\",on:{\"click\":function($event){return _vm.selectKwpProjekt(projekt)}}},[_c('div',[_c('div',{staticClass:\"fw-bold\"},[_vm._v(\" \"+_vm._s(projekt.projektNummer)+\" \"+_vm._s(projekt.bezeichnung)+\" \")])])])}),0):_vm._e()],1),_c('b-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-footer-sm\",modifiers:{\"modal-footer-sm\":true}}],staticClass:\"mb-2\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.hideKwpProjektModal()}}},[_vm._v(\" Schließen \")])],1)],1),_c('b-col',[_c('b-button',{staticClass:\"mb-2 float-end\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.isAbgegeben || _vm.isProjektauswahlFreigegeben},on:{\"click\":function($event){return _vm.showKleinauftragModal()}}},[_c('b-icon',{attrs:{\"icon\":\"justify\",\"aria-hidden\":\"true\"}}),_vm._v(\" Kleinauftrag \")],1),_c('b-modal',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-footer\",modifiers:{\"modal-footer\":true}}],attrs:{\"id\":\"modal-center\",\"title\":\"Kleinaufträge\",\"hide-footer\":true,\"hide-header-close\":\"\"},model:{value:(_vm.kleinauftragModalShow),callback:function ($$v) {_vm.kleinauftragModalShow=$$v},expression:\"kleinauftragModalShow\"}},[_c('div',{staticClass:\"mb-2\"},[_c('b-row',{staticClass:\"mb-2\"},[_c('b-col',[_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.showHideKleinauftragFilterBereich()}}},[_vm._v(_vm._s(_vm.kleinauftragFilterBereichShow == true ? \"Filterbereich zuklappen\" : \"Filterbereich aufklappen\"))])],1)],1),_c('b-collapse',{staticClass:\"mt-2 mb-2\",attrs:{\"id\":\"collapse-1\"},model:{value:(_vm.kleinauftragFilterBereichShow),callback:function ($$v) {_vm.kleinauftragFilterBereichShow=$$v},expression:\"kleinauftragFilterBereichShow\"}},[_c('b-card',[_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"kleinauftragProjektLeiter\"}},[_c('b',[_vm._v(\"Projektleiter\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"kleinauftragProjektLeiter\",\"options\":_vm.mitarbeiterList},model:{value:(_vm.editValuesKleinauftragFilter.projektLeiter),callback:function ($$v) {_vm.$set(_vm.editValuesKleinauftragFilter, \"projektLeiter\", $$v)},expression:\"editValuesKleinauftragFilter.projektLeiter\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"kleinauftragTeamNummer\"}},[_c('b',[_vm._v(\"Team Nummer\")])]),_c('b-form-input',{attrs:{\"id\":\"kleinauftragTeamNummer\",\"type\":\"number\"},model:{value:(_vm.editValuesKleinauftragFilter.teamNummer),callback:function ($$v) {_vm.$set(_vm.editValuesKleinauftragFilter, \"teamNummer\", $$v)},expression:\"editValuesKleinauftragFilter.teamNummer\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"statusKleinauftrag\"}},[_c('b',[_vm._v(\"Status Kleinauftrag\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"statusKleinauftrag\",\"options\":_vm.statusKleinauftragList},model:{value:(_vm.editValuesKleinauftragFilter.statusKleinauftrag),callback:function ($$v) {_vm.$set(_vm.editValuesKleinauftragFilter, \"statusKleinauftrag\", $$v)},expression:\"editValuesKleinauftragFilter.statusKleinauftrag\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"kwpProjektNummer\"}},[_c('b',[_vm._v(\"KWP Projektnummer\")])]),_c('b-form-input',{attrs:{\"id\":\"kwpProjektNummer\",\"type\":\"text\"},model:{value:(_vm.editValuesKleinauftragFilter.projektNummer),callback:function ($$v) {_vm.$set(_vm.editValuesKleinauftragFilter, \"projektNummer\", $$v)},expression:\"editValuesKleinauftragFilter.projektNummer\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"kleinauftragSuchText\"}},[_c('b',[_vm._v(\"Suchtext\")])]),_c('b-form-input',{attrs:{\"id\":\"kleinauftragSuchText\",\"type\":\"text\"},model:{value:(_vm.editValuesKleinauftragFilter.suchtext),callback:function ($$v) {_vm.$set(_vm.editValuesKleinauftragFilter, \"suchtext\", $$v)},expression:\"editValuesKleinauftragFilter.suchtext\"}})],1)],1),_c('hr'),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('b-button',{staticClass:\"float-end\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.executeKleinauftragFilter(_vm.editValuesKleinauftragFilter)}}},[(_vm.loading == true)?_c('b-spinner',{attrs:{\"small\":\"\"}}):_c('span',[_vm._v(\"Filtern\")])],1)],1)],1)],1)],1),(_vm.kleinauftragProjekteList.length > 0)?_c('ul',{staticClass:\"list-group list-group-light\",staticStyle:{\"max-height\":\"450px\",\"overflow-y\":\"auto\"}},_vm._l((_vm.kleinauftragProjekteList),function(projekt,key){return _c('li',{key:key,staticClass:\"list-group-item d-flex justify-content-between align-items-center\",on:{\"click\":function($event){return _vm.selectKleinauftragProjekt(projekt)}}},[_c('div',[_c('div',{staticClass:\"fw-bold\"},[_vm._v(_vm._s(projekt.name))]),_c('div',{staticClass:\"text-muted\"},[_vm._v(_vm._s(projekt.beschreibung))])])])}),0):_vm._e()],1),_c('b-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-footer-sm\",modifiers:{\"modal-footer-sm\":true}}],staticClass:\"mb-2\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.hideKleinauftragModal()}}},[_vm._v(\" Schließen \")])],1)],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('label',{attrs:{\"for\":\"projekt\"}},[_c('b',[_vm._v(\"Ort\")])]),_c('b-form-select',{staticClass:\"form-select mb-1\",attrs:{\"id\":\"ort\",\"options\":_vm.orteList,\"disabled\":_vm.isAbgegeben || _vm.inActive},model:{value:(_vm.editValues.ort),callback:function ($$v) {_vm.$set(_vm.editValues, \"ort\", $$v)},expression:\"editValues.ort\"}})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('label',{attrs:{\"for\":\"projekt\"}},[_c('b',[_vm._v(\"Nachweis\")])]),_c('b-form-input',{attrs:{\"id\":\"nachweis\",\"type\":\"text\",\"formatter\":_vm.checkInputNachweis,\"disabled\":_vm.isAbgegeben || _vm.inActive},model:{value:(_vm.editValues.nachweis),callback:function ($$v) {_vm.$set(_vm.editValues, \"nachweis\", $$v)},expression:\"editValues.nachweis\"}})],1),_c('b-col',{attrs:{\"cols\":\"4\"}},[(_vm.einheit == 'km')?_c('b-col',[_c('label',{attrs:{\"for\":\"km\"}},[_c('b',[_vm._v(\"Km\")])]),_c('b-form-input',{attrs:{\"id\":\"wert\",\"type\":\"text\",\"disabled\":_vm.isAbgegeben},model:{value:(_vm.editValues.wert),callback:function ($$v) {_vm.$set(_vm.editValues, \"wert\", $$v)},expression:\"editValues.wert\"}})],1):_vm._e(),(_vm.einheit == '€')?_c('b-col',[_c('label',{attrs:{\"for\":\"Betrag\"}},[_c('b',[_vm._v(\"Euro\")])]),_c('b-form-input',{attrs:{\"id\":\"wert\",\"type\":\"text\",\"disabled\":_vm.isAbgegeben},model:{value:(_vm.editValues.wert),callback:function ($$v) {_vm.$set(_vm.editValues, \"wert\", $$v)},expression:\"editValues.wert\"}})],1):_vm._e(),(_vm.einheit == 'tag')?_c('b-col',[_c('label',{attrs:{\"for\":\"Betrag\"}},[_c('b',[_vm._v(\"Tage\")])]),_c('b-form-input',{attrs:{\"id\":\"wert\",\"type\":\"text\",\"disabled\":_vm.isAbgegeben},model:{value:(_vm.editValues.wert),callback:function ($$v) {_vm.$set(_vm.editValues, \"wert\", $$v)},expression:\"editValues.wert\"}})],1):_vm._e()],1)],1),(_vm.einheit == 'std')?_c('b-row',{staticClass:\"mb-1\"},[_c('label',{attrs:{\"for\":\"zeit\"}},[_c('b',[_vm._v(\"Zeit\")])]),_c('b-input-group',[_c('b-input-group-prepend',[_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.decreaseWert()}}},[_c('b-icon',{attrs:{\"icon\":\"arrow-left\",\"aria-hidden\":\"true\"}})],1)],1),_c('b-form-input',{attrs:{\"id\":\"zeit\",\"type\":\"text\"},on:{\"input\":function($event){return _vm.checkZeitFormat()}},model:{value:(_vm.editValues.wert),callback:function ($$v) {_vm.$set(_vm.editValues, \"wert\", $$v)},expression:\"editValues.wert\"}}),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.increaseWert()}}},[_c('b-icon',{attrs:{\"icon\":\"arrow-right\",\"aria-hidden\":\"true\"}})],1)],1)],1)],1):_vm._e(),(_vm.inValidFormat)?_c('b-row',{staticClass:\"mb-1\"},[_c('span',{staticStyle:{\"color\":\"red\"}},[_vm._v(_vm._s(_vm.inValidFormatMessage))])]):_vm._e(),_c('b-row',{staticClass:\"mb-3\"},[_c('b-col',[_c('label',{attrs:{\"for\":\"info\"}},[_c('b',[_vm._v(\"Info\")])]),_c('b-form-textarea',{attrs:{\"id\":\"info\",\"placeholder\":\"Bemerkung\",\"disabled\":_vm.isAbgegeben},model:{value:(_vm.editValues.bemerkung),callback:function ($$v) {_vm.$set(_vm.editValues, \"bemerkung\", $$v)},expression:\"editValues.bemerkung\"}})],1)],1),_c('b-row',{staticClass:\"mb-1\"},[_c('b-col',[_c('b-button',{attrs:{\"size\":\"lg\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.backToArbeitszeit()}}},[_vm._v(\" Zurück \")])],1),_c('b-col',[_c('b-button',{staticClass:\"float-end\",attrs:{\"size\":\"lg\",\"variant\":\"danger\",\"disabled\":_vm.transactionType != 'edit'},on:{\"click\":function($event){return _vm.deleteTaetigkeit()}}},[_c('b-icon-trash')],1)],1),_c('b-col',[_c('b-button',{attrs:{\"size\":\"lg\",\"variant\":\"primary\",\"disabled\":_vm.isDisabledSaveButton || _vm.isAbgegeben},on:{\"click\":function($event){return _vm.saveTaetigkeit()}}},[_vm._v(\"Speichern\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface ITaetigkeit {\r\n autoId?: number;\r\n datum: string;\r\n wert: string;\r\n einheit: string;\r\n buchungsart: string;\r\n taetigkeit: string;\r\n projekt: string;\r\n ort: string;\r\n bemerkung: string;\r\n nachweis: string;\r\n}\r\n\r\nexport interface INumberText {\r\n nummer: number;\r\n klartext: string;\r\n}\r\n\r\nexport function newITaetigkeit() {\r\n const taetigkeit: ITaetigkeit = {\r\n autoId: 0,\r\n datum: \"\",\r\n wert: \"\", //\"0,00\",\r\n einheit: \"\", //\"std\",\r\n buchungsart: \"\",\r\n taetigkeit: \"\",\r\n projekt: \"\",\r\n ort: \"\",\r\n bemerkung: \"\",\r\n nachweis: \"\",\r\n };\r\n\r\n return taetigkeit;\r\n}\r\n","export interface IKwpFilter {\r\n projektStatus: number;\r\n projektnummer: string;\r\n projektleiter: string;\r\n teamNummer: number;\r\n kunde: string;\r\n suchtext: string;\r\n}\r\n\r\nexport interface IKwpProjekt {\r\n bezeichnung: string;\r\n projektNummer: string;\r\n}\r\n\r\nexport function newIKwpFilter() {\r\n return {\r\n projektStatus: 0,\r\n projektnummer: \"\",\r\n projektleiter: \"\",\r\n teamNummer: 0,\r\n kunde: \"\",\r\n suchtext: \"\",\r\n };\r\n}\r\n","export interface IKleinauftragFilter {\r\n personalNummer: number;\r\n projektLeiter: string;\r\n teamNummer: number;\r\n statusKleinauftrag: string;\r\n kwpProjektnummer: string;\r\n suchtext: string;\r\n isKwpProjekteAbgeschlossen: boolean;\r\n}\r\n\r\nexport interface IKleinauftragProjekt {\r\n name: string;\r\n kwpProjekt: string;\r\n beschreibung: string;\r\n kunde: string;\r\n teamNummer: number;\r\n}\r\n\r\nexport function newIKleinauftragFilter(): IKleinauftragFilter {\r\n const kleinauftragFilter = {\r\n personalNummer: 0,\r\n projektLeiter: \"\",\r\n teamNummer: 0,\r\n statusKleinauftrag: \"\",\r\n kwpProjektnummer: \"\",\r\n suchtext: \"\",\r\n isKwpProjekteAbgeschlossen: false,\r\n };\r\n return kleinauftragFilter;\r\n}\r\n","// #region imports /////////////////////////////////////////\r\n////////////////////////////////////////////////////////////\r\nimport Axios from \"@/library/axios/Axios\";\r\nimport { SnotifyService } from \"@/services/hercon-services/Snotify.service\";\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport BaseContainerComponent from \"@/components/hercon-components/1-molecules/BaseContainer.component.vue\";\r\nimport Button from \"@/stories/Button.vue\";\r\nimport ToolbarIconButtonComponent from \"@/components/hercon-components/1-molecules/ToolbarIconButton.component.vue\";\r\nimport ToolbarComponent from \"@/components/hercon-components/2-organisms/Toolbar.component.vue\";\r\nimport { IBuchungstyp } from \"@/library/models/interfacesBuchungstyp\";\r\nimport {\r\n ITaetigkeit,\r\n newITaetigkeit,\r\n INumberText,\r\n} from \"@/library/models/interfacesTaetigkeit\";\r\nimport {\r\n IKwpFilter,\r\n newIKwpFilter,\r\n IKwpProjekt,\r\n} from \"@/library/models/interfacesKwpFilter\";\r\nimport {\r\n IArbeitstag,\r\n newArbeitstag,\r\n} from \"@/library/models/interfacesArbeitstag\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport {\r\n IKleinauftragFilter,\r\n newIKleinauftragFilter,\r\n IKleinauftragProjekt,\r\n} from \"@/library/models/interfacesKleinauftragFilter\";\r\nimport { BIconSlashCircle, BIconThreeDotsVertical } from \"bootstrap-vue\";\r\n//#endregion\r\n\r\n@Component({\r\n components: {\r\n BaseContainerComponent,\r\n Button,\r\n ToolbarIconButtonComponent,\r\n ToolbarComponent,\r\n },\r\n})\r\nexport default class Arbeitszeit extends Vue {\r\n // #region VARIABLEN & KONSTANTEN\r\n\r\n //um Zeinangaben zu prüfen\r\n decimalRegex: RegExp = /^(\\d{2},\\d{2}|\\d,\\d|\\d,\\d{2}|\\d{2},\\d|\\d{1}|\\d{2})$/;\r\n inValidFormat: boolean = false;\r\n inValidFormatMessage: string =\r\n \"Bitte geben Sie die Zeit im richtigen Format ein!\";\r\n\r\n pageLoading: boolean = false;\r\n loading: boolean = false;\r\n kwpProjektModalShow: boolean = false;\r\n kleinauftragModalShow: boolean = false;\r\n kwpFilterBereichShow: boolean = true;\r\n kleinauftragFilterBereichShow: boolean = true;\r\n isError: boolean = false;\r\n isAbgegeben: boolean = false;\r\n inActive: boolean = false;\r\n isDisabledSaveButton: boolean = false;\r\n\r\n isProjektauswahlFreigegeben: boolean = false;\r\n isTaetigkeitFreigegeben: boolean = false;\r\n\r\n //errorMessage: string = \"\";\r\n\r\n editValues: ITaetigkeit = newITaetigkeit();\r\n editValuesKwpFilter: IKwpFilter = newIKwpFilter();\r\n editValuesKleinauftragFilter: IKleinauftragFilter = newIKleinauftragFilter();\r\n\r\n //buchungenList: string[] = [];\r\n buchungenGenericList: IBuchungstyp[] = [];\r\n buchungenList: any[] = [];\r\n taetigkeitenGenericList: INumberText[] = [];\r\n taetigkeitenList: any[] = [];\r\n tempTaetigkeitenList: any[] = [];\r\n\r\n //taetigkeitenList: string[] = [];\r\n\r\n orteList: string[] = [];\r\n cacheProjekteList: string[] = [];\r\n kwpProjekteList: IKwpProjekt[] = [];\r\n kleinauftragProjekteList: IKleinauftragProjekt[] = [];\r\n kwpProjektBezeichnung: string = \"\";\r\n wertList: string[] = [];\r\n //kleinauftragList\r\n projektStatusList: any[] = [];\r\n mitarbeiterList: any[] = [];\r\n statusKleinauftragList: any[] = [];\r\n\r\n //bei new rowNumber = undefined, bei edit rowNumber = -1,0,1,2.., bei show rowNumber = -1, bei copy rowNumber = 0\r\n rowNumber: any = -1;\r\n arbeitsTagObject: IArbeitstag = newArbeitstag();\r\n tempData: ITaetigkeit = newITaetigkeit();\r\n //Typ des Prozess; Kopieren, Bearbeiten oder Erstellen einer Tätigkeit\r\n transactionType: string = \"\";\r\n statusArbeitstag: string = \"\";\r\n einheit: string = \"std\";\r\n\r\n //Die beide wurden für Comboboxen definiert\r\n buchungOptionValue: string = \"\";\r\n taetigkeitOptionValue: string = \"\";\r\n\r\n buchungen: string[] = [\r\n \"Urlaubstag\",\r\n \"Sonderurlaub\",\r\n \"Urlaubstag halb\",\r\n \"Gleitzeittag\",\r\n \"Krankheitstag\",\r\n ];\r\n\r\n datepickerValue: string = this.formatDate(new Date());\r\n\r\n personalNummer: number = StoreService.getLoginItem().mitarbeiter\r\n .personalNummer;\r\n teamNummer: number = StoreService.getLoginItem().mitarbeiter.teamNummer;\r\n\r\n timepickerlabels: any = {\r\n de: {\r\n labelHours: \"Stunden\",\r\n labelMinutes: \"Minuten\",\r\n labelSeconds: \"Sekunden\",\r\n labelIncrement: \"Erhöhen\",\r\n labelDecrement: \"Verringern\",\r\n labelSelected: \"\",\r\n labelNoTimeSelected: \"Keine Zeit ausgewählt\",\r\n labelCloseButton: \"Schließen\",\r\n },\r\n };\r\n\r\n datepickerlabels: any = {\r\n de: {\r\n labelPrevDecade: \"Vorheriges Jahrzehnt\",\r\n labelPrevYear: \"Vorheriges Jahr\",\r\n labelPrevMonth: \"Vorheriger Monat\",\r\n labelCurrentMonth: \"Aktueller Monat\",\r\n labelNextMonth: \"Nächster Monat\",\r\n labelNextYear: \"Nächstes Jahr\",\r\n labelNextDecade: \"Nächstes Jahrzehnt\",\r\n labelToday: \"Heute\",\r\n labelNoDateSelected: \"Kein Datum gewählt\",\r\n labelCalendar: \"Kalender\",\r\n labelNav: \"Kalendernavigation\",\r\n labelHelp: \"Mit den Pfeiltasten durch den Kalender navigieren\",\r\n },\r\n };\r\n // #endregion\r\n\r\n // #region VUE LIFECYCLE METHODEN\r\n\r\n /* # Schritte im Vue lifecycle\r\n 1. beforeCreate\r\n 2. created\r\n 3. beforeMount\r\n 4. mounted\r\n 5. beforeUpdated\r\n 6. updated\r\n 7. beforeDestroyed\r\n 8. destroyed\r\n */\r\n\r\n /**\r\n * @summary\r\n * mounted wird nach dem Laden der Komponente aufgerufen. Hier wird der\r\n * Schreibzugriff des Benutzers abgerufen und die Überschrift festgelegt.\r\n * Danach werden die Nachzuladenden Daten geladen. (Hier wird auch der\r\n * Filter aufgerufen).\r\n */\r\n async mounted(): Promise {\r\n this.transactionType = this.$route.params.type;\r\n this.arbeitsTagObject = JSON.parse(this.$route.params.arbeitsTagObject);\r\n this.editValuesKwpFilter.projektStatus = 8;\r\n this.kwpProjektBezeichnung = \"08 Auftrag eingegangen\";\r\n this.editValuesKwpFilter.teamNummer = this.teamNummer;\r\n this.editValuesKleinauftragFilter.teamNummer = this.teamNummer;\r\n this.editValuesKleinauftragFilter.personalNummer = this.personalNummer;\r\n\r\n this.rowNumber =\r\n typeof this.$route.params.rowNumber != \"undefined\"\r\n ? parseInt(this.$route.params.rowNumber)\r\n : this.$route.params.rowNumber;\r\n\r\n this.isAbgegeben = this.transactionType == \"show\" ? true : false;\r\n\r\n //Liste der Arbeitszeitangaben\r\n await this.getWertList();\r\n //Wenn Cache leer ist, wirft es einen Fehler. Deswegen wird diese Request hier seperat aufgerufen\r\n await this.fetchCacheProjekteListAsync();\r\n await this.fetchAllLists();\r\n await this.initForm();\r\n }\r\n //#endregion\r\n\r\n //#region Variablen ///////////////////////////////////////\r\n\r\n /**\r\n * @summary\r\n * Die Felder werden entsprechend der Daten ausgefüllt.\r\n */\r\n async initForm(): Promise {\r\n //if (typeof this.$route.params.rowNumber != \"undefined\")\r\n this.editValues.wert =\r\n this.editValues.wert.trim() == \"\" ? \"0,00\" : this.editValues.wert;\r\n\r\n if (\r\n this.transactionType == \"edit\" ||\r\n this.transactionType == \"copy\" ||\r\n this.transactionType == \"show\"\r\n ) {\r\n //Urlaubstag, Gleitzeittag... usw.\r\n if (this.rowNumber.toString() == \"-1\") {\r\n this.editValues = {\r\n ...this.arbeitsTagObject.taetigkeiten[0],\r\n };\r\n //this.rowNumber = 0;\r\n this.inActive = true;\r\n this.isProjektauswahlFreigegeben = true;\r\n this.isTaetigkeitFreigegeben = true;\r\n } else {\r\n this.editValues = {\r\n ...this.arbeitsTagObject.taetigkeiten[this.rowNumber],\r\n };\r\n\r\n this.einheit = this.editValues.einheit;\r\n\r\n var _taetigkeitValue = this.taetigkeitenGenericList.find((item) => {\r\n return item.klartext == this.editValues.taetigkeit;\r\n })?.nummer as number;\r\n\r\n this.taetigkeitOptionValue = _taetigkeitValue.toString();\r\n\r\n /*\r\n this.buchungOptionValue = this.buchungenGenericList.find((item) => {\r\n return item.klartext == this.editValues.buchungsart;\r\n })?.typ as string;\r\n */\r\n\r\n if (\r\n this.cacheProjekteList.indexOf(\r\n //this.arbeitsTagObject.taetigkeiten[this.rowNumber].projekt\r\n this.editValues.projekt\r\n ) < 0\r\n ) {\r\n this.cacheProjekteList.push(\r\n //this.arbeitsTagObject.taetigkeiten[this.rowNumber].projekt\r\n this.editValues.projekt\r\n );\r\n }\r\n }\r\n\r\n var buchungObject = this.buchungenGenericList.find((item) => {\r\n return item.klartext == this.editValues.buchungsart;\r\n }) as IBuchungstyp;\r\n\r\n this.buchungOptionValue = buchungObject.typ;\r\n this.isTaetigkeitFreigegeben = !buchungObject.isTaetigkeitFreigegeben;\r\n this.isProjektauswahlFreigegeben = !buchungObject.isProjektauswahlFreigegeben;\r\n\r\n if (this.editValues.einheit == \"std\") {\r\n if (this.editValues.wert.toString().trim() != \"\") {\r\n if (!(this.editValues.wert.indexOf(\",\") > -1)) {\r\n this.editValues.wert = parseFloat(this.editValues.wert)\r\n .toFixed(2)\r\n .replace(\".\", \",\");\r\n } else {\r\n this.editValues.wert = parseFloat(\r\n this.editValues.wert.replace(\",\", \".\")\r\n )\r\n .toFixed(2)\r\n .replace(\".\", \",\");\r\n }\r\n }\r\n }\r\n\r\n //Wenn es leer ist, geht der Buchungstyp am Backend verloren\r\n /*\r\n this.editValues.wert =\r\n this.editValues.wert.trim() == \"\" ? \"0,00\" : this.editValues.wert;\r\n */\r\n }\r\n\r\n //yyyy-MM-dd to dd.MM.yyyy\r\n this.editValues.datum = this.arbeitsTagObject.datum.includes(\"-\")\r\n ? await this.formatDateFromDatePicker(this.arbeitsTagObject.datum)\r\n : this.arbeitsTagObject.datum;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Prüft, ob es bei der Tätigkeit eine Änderung gibt\r\n */\r\n async isChange(): Promise {\r\n var tempData = this.arbeitsTagObject.taetigkeiten[this.rowNumber];\r\n var data = { ...(this.editValues as ITaetigkeit) };\r\n\r\n //Nachdem das JSON Objekt geklont wurde, geht die 0 in der Dezimalzahl verloren\r\n tempData.wert = parseFloat(tempData.wert.replace(\",\", \".\"))\r\n .toFixed(2)\r\n .replace(\".\", \",\");\r\n\r\n if (tempData.buchungsart != data.buchungsart) return true;\r\n if (tempData.taetigkeit != data.taetigkeit) return true;\r\n if (tempData.projekt != data.projekt) return true;\r\n if (tempData.ort != data.ort) return true;\r\n if (tempData.wert != data.wert) return true;\r\n if (tempData.bemerkung != data.bemerkung) return true;\r\n\r\n return false;\r\n }\r\n /**\r\n * @summary\r\n * Prüft, ob die Zeitangabe im richtigen Format ist\r\n */\r\n checkZeitFormat(): void {\r\n this.inValidFormat = !this.decimalRegex.test(this.editValues.wert);\r\n }\r\n\r\n /**\r\n * @summary\r\n * Der Benutzer gibt hiermit die Bestätigung, dass die eingetragenen\r\n * Daten verarbeitet werden. Dafür müssen diese zuerst Geprüft werden\r\n * und dann an die richtige Methode übergeben werden.\r\n */\r\n async saveTaetigkeit(): Promise {\r\n if (await this.hasErrors()) return;\r\n this.loading = true;\r\n this.isDisabledSaveButton = true;\r\n\r\n //Aus den Comboboxen kommen die Keys. Deswegen werden die entsprechende Werte der Key gefunden werden.\r\n this.editValues.buchungsart = this.buchungenGenericList.find((item) => {\r\n return item.typ == this.buchungOptionValue;\r\n })?.klartext as string;\r\n\r\n this.editValues.taetigkeit = this.taetigkeitenGenericList.find((item) => {\r\n return item.nummer == parseInt(this.taetigkeitOptionValue);\r\n })?.klartext as string;\r\n /**************************/\r\n\r\n if (\r\n this.transactionType == \"new\" &&\r\n this.arbeitsTagObject.taetigkeiten.length > 0\r\n ) {\r\n this.arbeitsTagObject.taetigkeiten.push({ ...this.editValues });\r\n var isSuccess = await this.update(this.arbeitsTagObject);\r\n if (isSuccess) {\r\n this.$store.state.tempData = { ...this.arbeitsTagObject };\r\n SnotifyService.newAlert(\r\n 0,\r\n \"Die Tätigkeit wurde erfolgreich aktualisiert.\"\r\n );\r\n }\r\n }\r\n if (\r\n this.transactionType == \"new\" &&\r\n this.arbeitsTagObject.taetigkeiten.length == 0\r\n ) {\r\n this.arbeitsTagObject.taetigkeiten.push({ ...this.editValues });\r\n var isSuccess = await this.create(this.arbeitsTagObject);\r\n if (isSuccess) {\r\n this.$store.state.tempData = { ...this.arbeitsTagObject };\r\n SnotifyService.newAlert(0, \"Die Tätigkeit wurde erfolgreich erstellt.\");\r\n }\r\n }\r\n\r\n //Wenn ein Arbeitstag schon vorhanden ist und eine Tätigkeit bearbeitet werden möchte\r\n //Aktualisieren einer Tätigkeit\r\n if (\r\n (this.arbeitsTagObject.taetigkeiten.length > 0 &&\r\n this.transactionType == \"edit\") ||\r\n this.transactionType == \"copy\"\r\n ) {\r\n this.arbeitsTagObject.taetigkeiten[this.rowNumber] = {\r\n ...this.editValues,\r\n };\r\n var isSuccess = await this.update(this.arbeitsTagObject);\r\n if (isSuccess) {\r\n this.$store.state.tempData = { ...this.arbeitsTagObject };\r\n SnotifyService.newAlert(\r\n 0,\r\n \"Die Tätigkeit wurde erfolgreich aktualisiert.\"\r\n );\r\n } else {\r\n SnotifyService.newAlert(2, \"Die Tätigkeit wurde nicht aktualisiert.\");\r\n this.loading = false;\r\n this.isDisabledSaveButton = false;\r\n return;\r\n }\r\n }\r\n /*****************************************************************************************/\r\n\r\n this.loading = false;\r\n this.isDisabledSaveButton = false;\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Der Benutzer gibt hiermit die Bestätigung, dass die eingetragenen\r\n * Daten verarbeitet werden. Dafür müssen diese zuerst Geprüft werden\r\n * und dann an die richtige Methode übergeben werden.\r\n */\r\n async saveTaetigkeit1(): Promise {\r\n //if (await this.hasErrors()) return;\r\n this.loading = true;\r\n this.isDisabledSaveButton = true;\r\n\r\n //Aus den Comboboxen kommen die Keys. Deswegen werden die entsprechende Werte der Key gefunden werden.\r\n this.editValues.buchungsart = this.buchungenGenericList.find((item) => {\r\n return item.typ == this.buchungOptionValue;\r\n })?.klartext as string;\r\n\r\n this.editValues.taetigkeit = this.taetigkeitenGenericList.find((item) => {\r\n return item.nummer == parseInt(this.taetigkeitOptionValue);\r\n })?.klartext as string;\r\n /**************************/\r\n\r\n //Hier muss erweitert werden\r\n if (this.inActive) {\r\n //Wenn der Tag ein Arbeitstag ist und Tätigkeiten schon vorhanden sind\r\n //darf es als Urlaubstag, Gleitzeittag usw. nicht erstellt werden\r\n if (\r\n (this.transactionType == \"new\" &&\r\n this.arbeitsTagObject.taetigkeiten.length > 0) ||\r\n (this.transactionType == \"edit\" && this.rowNumber.toString() != \"-1\")\r\n ) {\r\n SnotifyService.newAlert(\r\n 2,\r\n \"Zuerst müssen die Tätigkeiten gelöscht werden!\"\r\n );\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n\r\n if (this.transactionType == \"edit\" && this.rowNumber.toString() == \"-1\") {\r\n this.arbeitsTagObject.taetigkeiten[0] = { ...this.editValues };\r\n await this.update(this.arbeitsTagObject);\r\n this.$router.push({\r\n path: \"/wochenuebersicht\",\r\n name: \"Wochenuebersicht\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n\r\n if (\r\n this.transactionType == \"new\" &&\r\n typeof this.rowNumber == \"undefined\"\r\n ) {\r\n this.arbeitsTagObject.taetigkeiten.push(this.editValues);\r\n await this.create(this.arbeitsTagObject);\r\n this.$router.push({\r\n path: \"/wochenuebersicht\",\r\n name: \"Wochenuebersicht\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n }\r\n //Wenn ein Arbeitstag schon vorhanden ist und eine neue Tätigkeit erstellt werden möchte\r\n //Erstellen einer neuen Tätigkeit\r\n if (\r\n this.arbeitsTagObject.taetigkeiten.length > 0 &&\r\n this.transactionType == \"new\"\r\n ) {\r\n this.arbeitsTagObject.taetigkeiten.push({ ...this.editValues });\r\n var isSuccess = await this.update(this.arbeitsTagObject);\r\n if (isSuccess) {\r\n this.$store.state.tempData = { ...this.arbeitsTagObject };\r\n SnotifyService.newAlert(\r\n 0,\r\n \"Die Tätigkeit wurde erfolgreich aktualisiert.\"\r\n );\r\n this.loading = false;\r\n this.isDisabledSaveButton = false;\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n } else {\r\n SnotifyService.newAlert(2, \"Die Tätigkeit wurde nicht aktualisiert.\");\r\n this.loading = false;\r\n this.isDisabledSaveButton = false;\r\n return;\r\n }\r\n }\r\n /*****************************************************************************************/\r\n\r\n //Wenn der Tag als Urlaubstag, Gleitzeittag usw. erstellt wurde aber jetzt als ein normaler Arbeitstag erstellt werden möchte\r\n if (typeof this.rowNumber !== \"undefined\") {\r\n if (this.rowNumber.toString() == \"-1\" && this.transactionType == \"edit\") {\r\n this.arbeitsTagObject.taetigkeiten[0] = { ...this.editValues };\r\n this.update(this.arbeitsTagObject);\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n }\r\n\r\n /*****************************************************************************************/\r\n\r\n //Wenn ein Arbeitstag schon vorhanden ist und eine Tätigkeit bearbeitet werden möchte\r\n //Aktualisieren einer Tätigkeit\r\n if (\r\n (this.arbeitsTagObject.taetigkeiten.length > 0 &&\r\n this.transactionType == \"edit\") ||\r\n this.transactionType == \"copy\"\r\n ) {\r\n this.arbeitsTagObject.taetigkeiten[this.rowNumber] = {\r\n ...this.editValues,\r\n };\r\n var isSuccess = await this.update(this.arbeitsTagObject);\r\n if (isSuccess) {\r\n this.$store.state.tempData = { ...this.arbeitsTagObject };\r\n SnotifyService.newAlert(\r\n 0,\r\n \"Die Tätigkeit wurde erfolgreich aktualisiert.\"\r\n );\r\n this.loading = false;\r\n this.isDisabledSaveButton = false;\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n } else {\r\n SnotifyService.newAlert(2, \"Die Tätigkeit wurde nicht aktualisiert.\");\r\n this.loading = false;\r\n this.isDisabledSaveButton = false;\r\n return;\r\n }\r\n }\r\n /*****************************************************************************************/\r\n\r\n //Erstellen eines neuen Arbeitstag\r\n if (\r\n this.arbeitsTagObject.taetigkeiten.length == 0 &&\r\n this.transactionType == \"new\"\r\n ) {\r\n this.arbeitsTagObject.taetigkeiten.push({ ...this.editValues });\r\n var isSuccess = await this.create(this.arbeitsTagObject);\r\n if (isSuccess) {\r\n this.$store.state.tempData = { ...this.arbeitsTagObject };\r\n SnotifyService.newAlert(0, \"Die Tätigkeit erfolgreich erstellt.\");\r\n this.loading = false;\r\n this.isDisabledSaveButton = false;\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n } else {\r\n SnotifyService.newAlert(2, \"Die Tätigkeit wurde nicht erstellt.\");\r\n this.loading = false;\r\n this.isDisabledSaveButton = false;\r\n return;\r\n }\r\n }\r\n /*****************************************************************************************/\r\n }\r\n\r\n //Axios Put, aktualisieren eines Arbeitstages\r\n async update(obj: any): Promise {\r\n var result = false;\r\n await Axios.put(\"arbeitstag\", JSON.stringify(obj))\r\n .then(() => {\r\n result = true;\r\n })\r\n .catch(() => {\r\n result = false;\r\n });\r\n return result;\r\n }\r\n\r\n //Axios Post, erstellen eines Arbeitstages\r\n async create(obj: any): Promise {\r\n var result = false;\r\n await Axios.post(\"arbeitstag\", JSON.stringify(obj))\r\n .then(() => {\r\n result = true;\r\n })\r\n .catch(() => {\r\n result = false;\r\n });\r\n return result;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Speichert ausgewählten Projektnamen zum Cache\r\n */\r\n async saveProjektnameToCache(projektname: string): Promise {\r\n //Request Body muss wie folgendes sein\r\n /*\r\n {\r\n \"personalNummer\": 0,\r\n \"projektNamen\": [\r\n \"string\"\r\n ]\r\n }\r\n */\r\n type myType = {\r\n personalNummer: number;\r\n projektNamen: string[];\r\n };\r\n\r\n const obj: myType = {\r\n personalNummer: StoreService.getLoginItem().mitarbeiter.personalNummer, //this.$store.state.personalNummer,\r\n projektNamen: [],\r\n };\r\n\r\n try {\r\n const res = await Axios.get(\"base/projekt/cache/\" + this.personalNummer);\r\n if (res != undefined && res.data != undefined) {\r\n if (res.data.indexOf(projektname) == -1) {\r\n res.data.push(projektname);\r\n obj.projektNamen = res.data;\r\n\r\n await Axios.put(\"base/projekt/cache/\", JSON.stringify(obj)).catch(\r\n (error) => {\r\n console.error(\r\n \"Der Projektname konnte im Cache nicht gespeichert werden 1!\"\r\n );\r\n }\r\n );\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * KWP Projekte werden gefiltert. Ohne Filter werden alle Projekte aufgelistet\r\n */\r\n async executeKwpProjekteFilter(filter?: IKwpFilter): Promise {\r\n if (filter?.teamNummer.toString().trim() == \"\") {\r\n filter.teamNummer = 0;\r\n }\r\n\r\n try {\r\n this.loading = true;\r\n\r\n const result = await Axios.post(\"kwp/filter\", filter);\r\n if (result.status == 200 || result.status == 201) {\r\n if (result.data != undefined) {\r\n this.kwpProjekteList = result.data as IKwpProjekt[];\r\n this.kwpFilterBereichShow = false;\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n this.loading = false;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Kleinaufträge werden gefiltert. Ohne Filter werden alles aufgelistet\r\n */\r\n async executeKleinauftragFilter(filter?: IKleinauftragFilter): Promise {\r\n if (filter?.teamNummer.toString().trim() == \"\") {\r\n filter.teamNummer = 0;\r\n }\r\n if (typeof filter?.teamNummer == \"string\") {\r\n filter.teamNummer = parseInt(filter.teamNummer);\r\n }\r\n /*\r\n if (typeof filter?.isKwpProjekteAbgeschlossen == \"string\") {\r\n filter.isKwpProjekteAbgeschlossen = Boolean(\r\n filter.isKwpProjekteAbgeschlossen\r\n );\r\n }\r\n */\r\n\r\n try {\r\n this.loading = true;\r\n const result = await Axios.post(\"kleinauftrag/filter\", filter);\r\n if (result.status == 200 || result.status == 201) {\r\n if (result.data != undefined) {\r\n this.kleinauftragProjekteList = result.data as IKleinauftragProjekt[];\r\n this.kleinauftragFilterBereichShow = false;\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n this.loading = false;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Löscht eine Tätigkeit\r\n */\r\n async deleteTaetigkeit(): Promise {\r\n //Das Modale Fenster wird beim Klicken erstellt\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten die Tätigkeit wirklich löschen?\", {\r\n title: \"Eintrag löschen\",\r\n okVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n var rowNumber = this.rowNumber == \"-1\" ? 0 : this.rowNumber;\r\n var autoId = this.arbeitsTagObject.taetigkeiten[rowNumber].autoId;\r\n if (autoId != 0 && typeof autoId !== \"undefined\" && autoId != null) {\r\n const result = Axios.delete(\"arbeitstag/\" + autoId)\r\n .then(() => {\r\n this.arbeitsTagObject.taetigkeiten.splice(rowNumber, 1);\r\n this.$store.state.tempData = this.arbeitsTagObject; //Aktualisieren das haupt Objekt weil die Tätigkeit in der Db gelöscht ist\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n /* \r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(this.arbeitsTagObject),\r\n },\r\n });\r\n */\r\n return;\r\n })\r\n .catch(() => {\r\n console.error(\"Es ist einen Fehler aufgetreten!\");\r\n });\r\n } else {\r\n this.arbeitsTagObject.taetigkeiten.splice(this.rowNumber, 1);\r\n this.$store.state.tempData = this.arbeitsTagObject; //Aktualisieren das haupt Objekt weil die Tätigkeit in der Db gelöscht ist\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n /*\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(this.arbeitsTagObject),\r\n },\r\n });\r\n */\r\n return;\r\n }\r\n }\r\n })\r\n .catch(() => {\r\n console.error(\"Es ist einen Fehler aufgetreten!\");\r\n });\r\n }\r\n\r\n //Fahrstunden Fahrer - typ: 130\r\n //Fahrstunden Mitfahrer - typ: 131\r\n //Fahrkilometer Firmenfahrzeug - typ: 601\r\n //Fahrkilometer Privatfahrzeug - typ: 602\r\n //Fahrkilometer Privatfahrzeug (über 20km) - typ: 603\r\n\r\n async buchungsartSelected(buchungsart: number): Promise {\r\n //const employees: { name: string; department: string }[] = [];\r\n if (this.tempTaetigkeitenList.length == 0) {\r\n this.tempTaetigkeitenList = JSON.parse(\r\n JSON.stringify({ ...this.taetigkeitenList })\r\n );\r\n }\r\n\r\n var buchungObjekt = this.buchungenGenericList.find(\r\n (x) => x.typ == buchungsart.toString()\r\n ) as IBuchungstyp;\r\n\r\n //fahrstunden_fahrer, fahrstunden_mitfahrer, kilometer_firmen_pkw, kilometer_privat_pkw, kilometer_privat_pkw_ab20\r\n if (buchungObjekt.isTaetigkeitFreigegeben) {\r\n if (\r\n buchungObjekt.typ.toString() == \"130\" ||\r\n buchungObjekt.typ.toString() == \"131\" ||\r\n buchungObjekt.typ.toString() == \"601\" ||\r\n buchungObjekt.typ.toString() == \"602\" ||\r\n buchungObjekt.typ.toString() == \"603\"\r\n ) {\r\n this.taetigkeitenList = Object.values(this.tempTaetigkeitenList).filter(\r\n (item) => {\r\n return (\r\n item.value.toString() == \"0\" ||\r\n item.value.toString() == \"32\" ||\r\n item.value.toString() == \"75\"\r\n );\r\n }\r\n );\r\n } else {\r\n //this.taetigkeitenList = this.tempTaetigkeitenList as any[];\r\n this.taetigkeitenList = this.tempTaetigkeitenList;\r\n }\r\n }\r\n\r\n this.einheit = buchungObjekt.einheit;\r\n this.editValues.wert = buchungObjekt.wert;\r\n\r\n this.isTaetigkeitFreigegeben = !buchungObjekt.isTaetigkeitFreigegeben;\r\n this.isProjektauswahlFreigegeben = !buchungObjekt.isProjektauswahlFreigegeben;\r\n\r\n //this.inActive = this.buchungen.includes(buchungsartNummer) ? true : false;\r\n //Ob der Tag ein Urlaubstag\r\n this.inActive =\r\n buchungObjekt.isTaetigkeitFreigegeben == false &&\r\n buchungObjekt.isProjektauswahlFreigegeben == false\r\n ? true\r\n : false;\r\n }\r\n\r\n async backToArbeitszeit(): Promise {\r\n if (this.inActive) {\r\n this.$router.push({\r\n path: \"/wochenuebersicht\",\r\n name: \"Wochenuebersicht\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n //var obj = this.arbeitsTagObject;\r\n\r\n if (this.transactionType == \"show\") {\r\n /*\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n */\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n if (this.transactionType == \"new\") {\r\n //Wenn Felder unvollständig sind, wird es nicht abgefragt ob man die Daten speichern möchte\r\n const errorList = await this.validateEnteredValues();\r\n\r\n if (errorList.length > 0) {\r\n /*\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n */\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten Sie die Daten speichern?\", {\r\n title: \"Zurück zur Arbeitszeit\",\r\n okVariant: \"primary\",\r\n cancelVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n //if (await this.hasErrors()) return;\r\n await this.saveTaetigkeit();\r\n SnotifyService.newAlert(3, \"Die Tätigkeit wurde gespeichert.\");\r\n return;\r\n } else {\r\n SnotifyService.newAlert(\r\n 1,\r\n \"Die Tätigkeit wurde nicht gespeichert.\"\r\n );\r\n /*this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });*/\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n })\r\n .catch((error) => {\r\n SnotifyService.newAlert(2, error);\r\n });\r\n return;\r\n }\r\n if (this.transactionType == \"copy\") {\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten Sie die Daten speichern?\", {\r\n title: \"Zurück zur Arbeitszeit\",\r\n okVariant: \"primary\",\r\n cancelVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n await this.saveTaetigkeit();\r\n SnotifyService.newAlert(3, \"Die Tätigkeit wurde gespeichert.\");\r\n return;\r\n } else {\r\n SnotifyService.newAlert(\r\n 1,\r\n \"Die Tätigkeit wurde nicht gespeichert.\"\r\n );\r\n /*\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n */\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n })\r\n .catch((error) => {\r\n SnotifyService.newAlert(2, error);\r\n });\r\n return;\r\n }\r\n\r\n /*\r\n const errorList = await this.validateEnteredValues();\r\n //Wenn Felder unvollständig ausgefüllt sind, wird es nicht abgefragt ob man die Daten speichern möchte\r\n if (errorList.length > 0) {\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n return;\r\n }\r\n */\r\n\r\n //Es wird kontrolliert, ob es bei den Felder eine Änderung gemacht wurde\r\n if (await this.isChange()) {\r\n this.$bvModal\r\n .msgBoxConfirm(\"Möchten Sie die Daten speichern?\", {\r\n title: \"Zurück zur Arbeitszeit\",\r\n okVariant: \"primary\",\r\n cancelVariant: \"danger\",\r\n okTitle: \"Ja\",\r\n buttonSize: \"lg\",\r\n cancelTitle: \"Nein\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: true,\r\n centered: true,\r\n })\r\n .then(async (value) => {\r\n if (value) {\r\n await this.saveTaetigkeit();\r\n SnotifyService.newAlert(3, \"Die Tätigkeit wurde gespeichert.\");\r\n return;\r\n } else {\r\n SnotifyService.newAlert(\r\n 1,\r\n \"Die Tätigkeit wurde nicht gespeichert.\"\r\n );\r\n /*\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n */\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n return;\r\n }\r\n })\r\n .catch((error) => {\r\n SnotifyService.newAlert(2, error);\r\n });\r\n return;\r\n }\r\n\r\n /*\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n params: {\r\n arbeitsTagObject: JSON.stringify(obj),\r\n },\r\n });\r\n */\r\n this.$router.push({\r\n path: \"/arbeitszeit\",\r\n name: \"Arbeitszeit\",\r\n query: { datum: this.editValues.datum },\r\n });\r\n }\r\n\r\n /**\r\n * @summary\r\n * Beschaffung und Sortierung aller Listen.\r\n */\r\n async fetchAllLists(): Promise {\r\n // Einzelaufrufe Ersetzt durch Axios.all, aufgrund schlechter perfomrance.\r\n // (Axios.all: ~1800ms, Standard: ~5000ms)\r\n\r\n try {\r\n await Promise.all([\r\n Axios.get(\"taetigkeit/buchungen\"),\r\n Axios.get(\"taetigkeit\"),\r\n Axios.get(\"taetigkeit/orte\"),\r\n //Axios.get(\"base/projekt/status\"),\r\n Axios.get(\"mitarbeiter\"),\r\n Axios.get(\"kleinauftrag/status\"),\r\n Axios.get(\"base/projekt/cache/\" + this.personalNummer),\r\n ]).then(\r\n ([\r\n responseBuchungen,\r\n responseTaetigkeiten,\r\n responseOrte,\r\n //responseProjektStatus,\r\n responseMitarbeiter,\r\n reponseStatusKleinauftrag,\r\n //responseCacheProjekteList,\r\n ]) => {\r\n //this.buchungenList = responseBuchungen.data as string[];\r\n this.buchungenGenericList = responseBuchungen.data as IBuchungstyp[];\r\n this.buchungenGenericList.forEach(async (item) => {\r\n this.buchungenList.push({ value: item.typ, text: item.klartext });\r\n });\r\n\r\n // console.log(\"buchungen :\", responseBuchungen.data);\r\n //this.taetigkeitenList = responseTaetigkeiten.data;\r\n this.taetigkeitenGenericList = responseTaetigkeiten.data as INumberText[];\r\n this.taetigkeitenGenericList.forEach((element) => {\r\n this.taetigkeitenList.push({\r\n value: element.nummer,\r\n text: element.klartext,\r\n });\r\n });\r\n\r\n this.orteList = responseOrte.data as string[];\r\n //this.projektStatusList = responseProjektStatus.data;\r\n this.mitarbeiterList = responseMitarbeiter.data;\r\n this.statusKleinauftragList = reponseStatusKleinauftrag.data as string[];\r\n //this.cacheProjekteList = responseCacheProjekteList.data as string[];\r\n if (\r\n !this.cacheProjekteList.includes(\"!!!!!_Projekt_unbekannt_!!!!!\")\r\n ) {\r\n this.cacheProjekteList.splice(\r\n 0,\r\n 0,\r\n \"!!!!!_Projekt_unbekannt_!!!!!\"\r\n );\r\n }\r\n }\r\n );\r\n } catch (error) {\r\n this.fetchBuchungenListAsync();\r\n this.fetchTaetigkeitenListAsync();\r\n this.fetchtOrteListAsync();\r\n //this.fetchtProjektStatusListAsync();\r\n this.fetchMitarbeiterListAsync();\r\n this.fetchKleinauftragListAsync();\r\n this.fetchCacheProjekteListAsync();\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * Einzelaufruf der Liste für Buchungen. Wird als alternative\r\n * Datenbeschaffung in \"fetchAllLists\" benutzt.\r\n */\r\n async fetchBuchungenListAsync(): Promise {\r\n try {\r\n const res = await Axios.get(\"taetigkeit/buchungen\");\r\n if (res != undefined && res.data != undefined) {\r\n //this.buchungenList = res.data as string[];\r\n this.buchungenGenericList = res.data as IBuchungstyp[];\r\n\r\n this.buchungenGenericList.forEach(async (item) => {\r\n this.buchungenList.push({ value: item.typ, text: item.klartext });\r\n });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * Einzelaufruf der Liste für Tätigkeiten. Wird als alternative\r\n * Datenbeschaffung in \"fetchAllLists\" benutzt.\r\n */\r\n async fetchTaetigkeitenListAsync(): Promise {\r\n try {\r\n const res = await Axios.get(\"taetigkeit\");\r\n if (res != undefined && res.data != undefined) {\r\n this.taetigkeitenList = res.data as any[];\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n /**\r\n * @summary\r\n * Einzelaufruf der Liste für Orte. Wird als alternative\r\n * Datenbeschaffung in \"fetchAllLists\" benutzt.\r\n */\r\n async fetchtOrteListAsync(): Promise {\r\n try {\r\n const res = await Axios.get(\"taetigkeit/orte\");\r\n if (res != undefined && res.data != undefined) {\r\n this.orteList = res.data as string[];\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * Einzelaufruf der Liste für Projekt Status. Wird als alternative\r\n * Datenbeschaffung in \"fetchAllLists\" benutzt.\r\n */\r\n async fetchtProjektStatusListAsync(): Promise {\r\n try {\r\n const res = await Axios.get(\"projekt/status\");\r\n if (res != undefined && res.data != undefined) {\r\n this.projektStatusList = res.data as string[];\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n /**\r\n * @summary\r\n * Einzelaufruf der Liste für die Mitarbeiter-Liste. Wird als alternative\r\n * Datenbeschaffung in \"fetchAllLists\" benutzt.\r\n */\r\n async fetchMitarbeiterListAsync(): Promise {\r\n try {\r\n const res = await Axios.get(\"mitarbeiter\");\r\n if (res != undefined && res.data != undefined) {\r\n this.mitarbeiterList = res.data as string[];\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n /**\r\n * @summary\r\n * Einzelaufruf der Liste für die Kleinauftrag-Status-Liste. Wird als alternative\r\n * Datenbeschaffung in \"fetchAllLists\" benutzt.\r\n */\r\n async fetchKleinauftragListAsync(): Promise {\r\n try {\r\n const res = await Axios.get(\"kleinauftrag/status\");\r\n if (res != undefined && res.data != undefined) {\r\n this.statusKleinauftragList = res.data as string[];\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n /**\r\n * @summary\r\n * Einzelaufruf der Liste für die gespeicherten Projekt-Liste. Wird als alternative\r\n * Datenbeschaffung in \"fetchAllLists\" benutzt.\r\n */\r\n async fetchCacheProjekteListAsync(): Promise {\r\n try {\r\n const res = await Axios.get(\"base/projekt/cache/\" + this.personalNummer);\r\n if (res != undefined && res.data != undefined) {\r\n this.cacheProjekteList = res.data as string[];\r\n if (!this.cacheProjekteList.includes(\"!!!!!_Projekt_unbekannt_!!!!!\")) {\r\n this.cacheProjekteList.splice(0, 0, \"!!!!!_Projekt_unbekannt_!!!!!\");\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n //this.cacheProjekteList.splice(0, 0, \"!!!!!_Projekt_unbekannt_!!!!!\");\r\n }\r\n\r\n /**\r\n * @summary\r\n * Prüft, ob in den Eingabefeldern Fehler festgestellt werden können.\r\n *\r\n * @returns\r\n * Boolean, welcher aussagt ob Fehler gefunden worden sind.\r\n */\r\n async hasErrors(): Promise {\r\n if (this.inActive) return false;\r\n const errorList = await this.validateEnteredValues();\r\n if (errorList.length > 0) {\r\n //this.isError = true;\r\n //this.errorMessage = errorList[0];\r\n SnotifyService.newAlert(2, errorList[0]);\r\n //errorList.forEach((error) => {});\r\n return true;\r\n } else {\r\n this.isError = false;\r\n return false;\r\n }\r\n }\r\n\r\n /** Prüfung, ob alle Werte\r\n * sinnvoll eingegeben worden sind.\r\n */\r\n async validateEnteredValues(): Promise {\r\n const errorMessage: string[] = [];\r\n\r\n if (this.inValidFormat) {\r\n errorMessage.push(this.inValidFormatMessage);\r\n }\r\n\r\n if (this.taetigkeitOptionValue == \"\" && !this.isTaetigkeitFreigegeben)\r\n errorMessage.push(\"Bitte wählen eine Tätigkeit aus.\");\r\n if (this.editValues.projekt == \"\" && !this.isProjektauswahlFreigegeben)\r\n errorMessage.push(\"Bitte wählen ein Projekt aus.\");\r\n //hier\r\n\r\n /*\r\n if (this.buchungOptionValue == \"\")\r\n errorMessage.push(\"Bitte wählen einen Buchungstyp aus.\");\r\n\r\n if (this.editValues.wert == \"0,00\")\r\n errorMessage.push(\"Bitte geben Sie eine Zeit ein.\");\r\n if (this.editValues.bemerkung.trim() == \"\")\r\n errorMessage.push(\"Bitte füllen das Info-Feld aus.\");\r\n */\r\n\r\n // TODO : Dinge checken und errors in die errorMessage pushen.\r\n // Warnung in Konsole.\r\n\r\n return errorMessage;\r\n }\r\n\r\n /**\r\n * @summary\r\n * Generiert die Zeitangaben wie sie sein sollen. z.B \"0,25\", \"0,50\", \"0,75\", \"1,00\" ...\r\n *\r\n */\r\n async getWertList(): Promise {\r\n var temp = 0;\r\n for (var i = 0; i < 23; i++) {\r\n for (var j = 0; j < 4; j++) {\r\n i = i + 0.25;\r\n this.wertList.push(i.toFixed(2).replace(\".\", \",\"));\r\n }\r\n i--;\r\n }\r\n }\r\n\r\n formatZeit(value: string): void {\r\n var aa = parseFloat(value).toString();\r\n console.log(\"aa \", aa);\r\n var bb = parseFloat(value).toFixed(2).toString().replace(\".\", \",\");\r\n console.log(\"bb \", bb);\r\n\r\n this.editValues.wert = bb;\r\n /*\r\n console.log(\"value: \", value);\r\n console.log(\"value.length: \", value.length);\r\n if (value.length == 1 || value.length == 2) {\r\n this.editValues.wert == \"\";\r\n this.editValues.wert = \"0,\" + value;\r\n }\r\n if (value.length > 4) {\r\n this.editValues.wert == \"\";\r\n this.editValues.wert = value.charAt(2) + \",\" + value;\r\n }\r\n */\r\n }\r\n\r\n increaseWert(): void {\r\n var value = this.editValues.wert.replace(\",\", \".\");\r\n var newValue = parseFloat(value) + 0.25;\r\n this.editValues.wert = newValue.toFixed(2).toString().replace(\".\", \",\");\r\n }\r\n decreaseWert(): void {\r\n var value = this.editValues.wert.replace(\",\", \".\");\r\n if (parseFloat(value) > 0) {\r\n var newValue = parseFloat(value) - 0.25;\r\n this.editValues.wert = newValue.toFixed(2).toString().replace(\".\", \",\");\r\n }\r\n }\r\n\r\n selectKwpProjekt(item: IKwpProjekt) {\r\n this.editValues.projekt = item.projektNummer + \" \" + item.bezeichnung;\r\n this.cacheProjekteList.push(item.projektNummer + \" \" + item.bezeichnung);\r\n this.hideKwpProjektModal();\r\n }\r\n\r\n selectKleinauftragProjekt(item: IKleinauftragProjekt) {\r\n this.editValues.projekt = item.name + \" \" + item.beschreibung;\r\n this.cacheProjekteList.push(item.name + \" \" + item.beschreibung);\r\n this.hideKleinauftragModal();\r\n }\r\n\r\n showHideKwpFilterBereich() {\r\n if (this.kwpFilterBereichShow == true) this.kwpFilterBereichShow = false;\r\n else this.kwpFilterBereichShow = true;\r\n }\r\n showHideKleinauftragFilterBereich() {\r\n if (this.kleinauftragFilterBereichShow == true)\r\n this.kleinauftragFilterBereichShow = false;\r\n else this.kleinauftragFilterBereichShow = true;\r\n }\r\n\r\n showKwpProjektModal() {\r\n this.kwpProjektModalShow = true;\r\n }\r\n hideKwpProjektModal() {\r\n this.kwpProjektModalShow = false;\r\n }\r\n showKleinauftragModal() {\r\n this.kleinauftragModalShow = true;\r\n }\r\n hideKleinauftragModal() {\r\n this.kleinauftragModalShow = false;\r\n }\r\n\r\n //To 2022-01-01\r\n formatDateToDatePicker(date: string) {\r\n var partsOfDate = date.split(\".\");\r\n return partsOfDate[2] + \"-\" + partsOfDate[1] + \"-\" + partsOfDate[0];\r\n }\r\n\r\n //To 01.01.2022\r\n formatDateFromDatePicker(date: string): string {\r\n var partsOfDate = date.split(\"-\");\r\n return partsOfDate[2] + \".\" + partsOfDate[1] + \".\" + partsOfDate[0];\r\n }\r\n\r\n padTo2Digits(num: number) {\r\n return num.toString().padStart(2, \"0\");\r\n }\r\n\r\n formatDate(date: Date) {\r\n return (\r\n [\r\n date.getFullYear(),\r\n this.padTo2Digits(date.getMonth() + 1),\r\n this.padTo2Digits(date.getDate()),\r\n ].join(\"-\") +\r\n \" \" +\r\n [\r\n this.padTo2Digits(date.getHours()),\r\n this.padTo2Digits(date.getMinutes()),\r\n this.padTo2Digits(date.getSeconds()),\r\n ].join(\":\")\r\n );\r\n }\r\n\r\n /**\r\n * @summary\r\n * Begrenzt die Eingabe auf 8 Ziffern\r\n *\r\n */\r\n checkInputNachweis(a: any): string {\r\n return String(a).substring(0, 8);\r\n }\r\n //#endregion\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!./Arbeitszeit_Erstellen.ts?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!./Arbeitszeit_Erstellen.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Arbeitszeit_Erstellen.vue?vue&type=template&id=438085a5&\"\nimport script from \"./Scripts/Arbeitszeit_Erstellen?vue&type=script&lang=ts&\"\nexport * from \"./Scripts/Arbeitszeit_Erstellen?vue&type=script&lang=ts&\"\nimport style0 from \"./Arbeitszeit_Erstellen.vue?vue&type=style&index=0&id=438085a5&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport VueRouter, { RouteConfig } from \"vue-router\";\n//import Home from \"../views/hercon-views/Home.vue\";\nimport Login from \"../views/hercon-views/Login.vue\";\nimport Wochenuebersicht from \"../views/hercon-views/Wochenuebersicht.vue\";\nimport Arbeitszeit from \"../views/hercon-views/Arbeitszeit.vue\";\nimport Urlaub from \"../views/hercon-views/Urlaub.vue\";\nimport Urlaubsantrag from \"../views/hercon-views/Urlaubsantrag.vue\";\nimport Arbeitszeit_Erstellen from \"../views/hercon-views/Arbeitszeit_Erstellen.vue\";\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\n\nVue.use(VueRouter);\n\nconst routes: Array = [\n {\n path: \"/login\",\n name: \"Login\",\n component: Login,\n },\n {\n path: \"/\",\n name: \"Wochenuebersicht\",\n component: Wochenuebersicht,\n meta: {\n requiresAuth: true,\n },\n props: true,\n },\n {\n path: \"/arbeitszeit\",\n name: \"Arbeitszeit\",\n component: Arbeitszeit,\n meta: {\n requiresAuth: true,\n },\n props: {},\n },\n {\n path: \"/urlaub\",\n name: \"Urlaub\",\n component: Urlaub,\n meta: {\n requiresAuth: true,\n },\n props: true,\n },\n {\n path: \"/urlaubsantrag\",\n name: \"Urlaubsantrag\",\n component: Urlaubsantrag,\n meta: {\n requiresAuth: true,\n },\n props: true,\n },\n {\n path: \"/arbeitszeiterstellen\",\n name: \"Arbeitszeit_Erstellen\",\n component: Arbeitszeit_Erstellen,\n meta: {\n requiresAuth: true,\n },\n },\n {\n path: \"*\",\n name: \"Wochenuebersicht\",\n component: Wochenuebersicht,\n meta: {\n requiresAuth: true,\n },\n },\n];\n\nconst router = new VueRouter({\n //mode: \"history\",\n base: process.env.BASE_URL,\n routes,\n});\n\n/**\n * Global Guard.\n *\n * @remarks\n * Prüft vor jedem Aufruf ob die Zielseite einen Login erfordert und ob der aktuelle Benutzer eingeloggt ist.\n * Wenn die Zielseite einen Login erfordert und der Benutzer nicht eingeloggt ist, so wird zur Loginseite umgeleitet.\n * Ansonsten wird auf die angeforderte Seite weitergeleitet.\n */\nrouter.beforeEach((to, from, next) => {\n var isLoggedIn = StoreService.isLoggedIn();\n\n // Zielseite benötigt Anmeldung UND Benutzer ist NICHT angemeldet.\n if (to.matched.some((record) => record.meta.requiresAuth)) {\n if (!isLoggedIn) {\n next({\n path: \"/login\",\n //query: { redirect: to.fullPath },\n });\n } else {\n next();\n }\n } else {\n next();\n }\n /*\n if (to.matched.some((record) => record.meta.requiresAuth) && !isLoggedIn) {\n \n try {\n // !WICHTIG!\n // - REDIRECT ZUM LOGIN, DEN EIGENTLICHEN PFAD ALS REDIRECT SPEICHERN\n // - DAMIT NACH DEM LOGIN DAS EIGENTLICHE ZIEL ERREICHT WERDEN KANN\n if (from.path != \"/login\") {\n if (from.path == to.path) {\n //console.log(\"Same Path! \" + to.path + \" - \" + to.fullPath);\n }\n router.push({ name: \"Login\", query: { redirect: to.path } });\n }\n } catch {\n console.log(\"Redirect zur Loginseite nicht möglich.\");\n }\n return;\n \n }\n \n // Zielseite benötigt keine Anmeldung oder Benutzer ist schon angemeldet.\n next();\n */\n});\n\nexport default router;\n","\r\nimport { Vue, Component, Prop, Emit, Watch } from \"vue-property-decorator\";\r\nimport { Route } from \"vue-router\";\r\nimport router from \"@/router\";\r\nimport IconFactoryComponent from \"@/components/hercon-components/0-atoms/IconFactory.component.vue\";\r\n\r\n@Component({\r\n components: {\r\n IconFactoryComponent\r\n }\r\n})\r\nexport default class NavigationItemComponent extends Vue {\r\n \r\n // #region PROPS\r\n\r\n @Prop({}) readonly id!: string;\r\n @Prop({ default: -1, type: Number }) readonly notificationNumber!: number;\r\n @Prop({ default: \"\" }) text!: string;\r\n @Prop({ default: \"\" }) feather!: string;\r\n @Prop({ default: \"\" }) imgNormal!: string;\r\n @Prop({ default: \"\" }) imgActive!: string;\r\n @Prop({ default: \"\" }) routerPathName!: string;\r\n @Prop({ default: \"\" }) routerPathUrl!: string;\r\n @Prop({ default: false }) disabled!: boolean;\r\n @Prop({ default: false }) setActive!: boolean;\r\n\r\n // #endregion\r\n\r\n // #region DATA PROPERTIES\r\n\r\n private selfDetermineActive = false;\r\n\r\n // #endregion\r\n \r\n // #region COMPUTED PROPERTIES\r\n\r\n get isActive(): boolean {\r\n return this.selfDetermineActive || this.setActive;\r\n }\r\n\r\n get isNotificationEnabled(): boolean {\r\n return this.notificationNumber >= 0;\r\n }\r\n\r\n get isRouterLinkSetName(): boolean {\r\n return this.routerPathName != \"\";\r\n }\r\n\r\n get isRouterLinkSetUrl(): boolean {\r\n return this.routerPathUrl != \"\";\r\n }\r\n\r\n // #endregion\r\n\r\n // #region METHODS\r\n\r\n activateRouterPush(): void {\r\n if (this.routerPathName != \"\") {\r\n this.activateRouterPushPathName();\r\n } else {\r\n this.activateRouterPushPathUrl();\r\n }\r\n }\r\n\r\n activateRouterPushPathName(): void {\r\n if (this.routerPathName != this.$route.name) {\r\n router.push({\r\n name: this.routerPathName,\r\n });\r\n }\r\n }\r\n\r\n activateRouterPushPathUrl(): void {\r\n if (this.routerPathUrl != this.$route.path) {\r\n router.push({\r\n path: this.routerPathUrl,\r\n });\r\n }\r\n }\r\n\r\n isRouterLinkSet(): boolean {\r\n return this.isRouterLinkSetName || this.isRouterLinkSetUrl;\r\n }\r\n\r\n // #endregion\r\n \r\n // #region EVENT HANDLER\r\n\r\n onClicked(): void {\r\n if (!this.disabled) {\r\n this.emitClick();\r\n if (this.isRouterLinkSet()) {\r\n this.activateRouterPush();\r\n }\r\n }\r\n }\r\n\r\n // #endregion\r\n \r\n // #region EMIT\r\n\r\n @Emit(\"click\")\r\n emitClick(): void {\r\n return;\r\n }\r\n\r\n // #endregion\r\n \r\n // #region WATCHERS\r\n\r\n @Watch(\"$route\", { immediate: true, deep: true })\r\n onUrlChange(newVal: Route): void {\r\n /** Ohne hinterlegten Link, false. (Routerlink prüft ob wenigstens eine\r\n * der beide Varianten hinterlegt sind). */\r\n if (!this.isRouterLinkSet) {\r\n this.selfDetermineActive = false;\r\n return;\r\n }\r\n /** Wenn die Link URL die gleiche URL des aktiven Pfades ist. */\r\n if (this.isRouterLinkSetUrl && newVal.path === this.routerPathUrl) {\r\n this.selfDetermineActive = true;\r\n return;\r\n }\r\n /** Wenn der Linkname der gleiche Name des aktiven Pfades ist. */\r\n if (this.isRouterLinkSetName && newVal.name === this.routerPathName) {\r\n this.selfDetermineActive = true;\r\n return;\r\n }\r\n /** Wenn Links gesetzt sind, aber keine Übereinstimmung gefunden wurde. */\r\n this.selfDetermineActive = false;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-navigation-item\", NavigationItemComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationItem.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationItem.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavigationItem.component.vue?vue&type=template&id=5fdc6740&\"\nimport script from \"./NavigationItem.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavigationItem.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"h-date-time\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.initialized),expression:\"initialized\"}],class:_vm.getDatetimeClass},[_c('div',{staticClass:\"h-date-time-hour\"},[_vm._v(_vm._s(this.hoursDisplay))]),_c('div',{staticClass:\"h-date-time-separator\"},[_vm._v(\":\")]),_c('div',{staticClass:\"h-date-time-minutes\"},[_vm._v(_vm._s(this.minutesDisplay))]),(_vm.seconds)?_c('div',{staticClass:\"h-date-time-separator\"},[_vm._v(\":\")]):_vm._e(),(_vm.seconds)?_c('div',{staticClass:\"h-date-time-seconds\"},[_vm._v(_vm._s(this.secondsDisplay))]):_vm._e()]),_c('div',{staticClass:\"h-date-time-date\"},[_vm._v(_vm._s(this.date))]),_c('div',{staticClass:\"h-date-time-version\"},[_vm._v(\"v\"+_vm._s(this.version))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class DateTimeComponent extends Vue {\r\n \r\n // #region PROPS\r\n\r\n @Prop(Boolean) seconds!: boolean;\r\n\r\n // #endregion\r\n\r\n // #region DATA PROPERTIES\r\n\r\n private timerID = setInterval(this.increaseSecond, 1000);\r\n\r\n /** Unterdrückt das Anzeigen der Doppelpunkte. */\r\n private initialized = false;\r\n\r\n private secondsCounter = 99;\r\n private secondsDisplay = \"\";\r\n private minutesDisplay = \"\";\r\n private hoursDisplay = \"\";\r\n private dayDisplay = \"\";\r\n private monthDisplay = \"\";\r\n private yearDisplay = \"\";\r\n\r\n // #endregion\r\n \r\n // #region VUE LIFECYCLE HOOKS\r\n \r\n /* # Schritte im Vue lifecycle\r\n 1. beforeCreate\r\n 2. created\r\n 3. beforeMount\r\n 4. mounted\r\n 5. beforeUpdated\r\n 6. updated\r\n 7. beforeDestroyed\r\n 8. destroyed\r\n */\r\n\r\n mounted(): void {\r\n this.refreshData();\r\n this.initialized = true;\r\n }\r\n\r\n destroy(): void {\r\n clearInterval(this.timerID);\r\n }\r\n\r\n // #endregion\r\n \r\n // #region COMPUTED PROPERTIES\r\n \r\n get version() {\r\n if (process.env.VUE_APP_VERSION == undefined) return \"\";\r\n return process.env.VUE_APP_VERSION;\r\n }\r\n\r\n get getDatetimeClass() {\r\n if (this.seconds) return \"h-date-time-daytime-hms\";\r\n else return \"h-date-time-daytime-hm\";\r\n }\r\n\r\n /**\r\n * Stellt die lesbare Zeit als String zur verfügung. Dafür wird die\r\n * Stundenvariable(string) mit einem Doppelpunkt und der Minutenvariable\r\n * (string) kombiniert.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns Stringrepräsentation der Uhrzeit.\r\n */\r\n get daytime(): string {\r\n return `${this.hoursDisplay}:${this.minutesDisplay}${\r\n this.seconds ? \":\" + this.secondsDisplay : \"\"\r\n }`;\r\n }\r\n\r\n /**\r\n * Baut den String des lesbaren Datums zusammen. Dafür werden die String-\r\n * Variablen für den Tag(Zahl), den Monat(Zahl) und das Jahr, mit Punkten\r\n * zwischen den Variablen, aneinandergehängt.\r\n *\r\n * @remarks\r\n * Da es sich um eine Computed-Variable handelt (get), wird der Wert nur bei\r\n * einer Änderung der benutzten Variablen erneuert.\r\n *\r\n * @returns Stringrepräsentation des Datums\r\n */\r\n get date(): string {\r\n return this.dayDisplay + \".\" + this.monthDisplay + \".\" + this.yearDisplay;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region METHODS\r\n \r\n /**\r\n * Funktion für das erhöhen des Sekundenzählers. (Wird vom Intervall benutzt).\r\n *\r\n * @remarks\r\n * Wenn der Sekundenzähler über 59 ist wird er auf 0 zurückgesetzt und eine\r\n * erneuerung der Zeit/Datumswerte wird angestoßen.\r\n * Ist der Sekundenzähler unter 59 dann wird er nur inkrementiert.\r\n */\r\n increaseSecond(): void {\r\n if (this.secondsCounter >= 59) {\r\n this.secondsCounter = 0;\r\n this.refreshData();\r\n } else {\r\n this.secondsCounter++;\r\n }\r\n this.secondsDisplay = this.secondsCounter.toString().padStart(2, \"0\");\r\n }\r\n\r\n /**\r\n * Erstellt ein neues \"Date\" Objekt mit aktuellem Datum/aktueller Uhrzeit.\r\n * Die Werte für Datum/Uhrzeit werden in den lokalen Variablen gespeichert.\r\n *\r\n * @remarks\r\n * Die Monate des \"Date\" Objekts sind 0-bound. Diese müssen für die korrekte\r\n * Anzeige um 1 erhöht werden.\r\n *\r\n * @returns void\r\n */\r\n refreshData(): void {\r\n const currentTimeAndDate = new Date();\r\n this.secondsCounter = currentTimeAndDate.getSeconds();\r\n\r\n this.hoursDisplay = currentTimeAndDate\r\n .getHours()\r\n .toString()\r\n .padStart(2, \"0\");\r\n this.minutesDisplay = currentTimeAndDate\r\n .getMinutes()\r\n .toString()\r\n .padStart(2, \"0\");\r\n this.secondsDisplay = currentTimeAndDate\r\n .getSeconds()\r\n .toString()\r\n .padStart(2, \"0\");\r\n\r\n this.dayDisplay = currentTimeAndDate.getDate().toString().padStart(2, \"0\");\r\n this.monthDisplay = (currentTimeAndDate.getMonth() + 1)\r\n .toString()\r\n .padStart(2, \"0\");\r\n this.yearDisplay = currentTimeAndDate.getFullYear().toString();\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-date-time\", DateTimeComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateTime.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateTime.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DateTime.component.vue?vue&type=template&id=03bb4e2a&\"\nimport script from \"./DateTime.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateTime.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('hc-logout',{attrs:{\"lightSpin\":\"true\",\"username\":_vm.authUsername},on:{\"loggedOut\":function($event){return _vm.hidePopover()},\"cancelModal\":function($event){return _vm.hidePopover()}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-card',{attrs:{\"title\":\"Abmelden\"}},[_c('hr'),_c('b-row',[_c('b-col',[_vm._v(_vm._s(_vm.authentication.username))])],1),_c('b-row',[_c('b-col',[_c('p',{staticClass:\"my-4\"},[_vm._v(\"Möchten Sie sich abmelden?\")])])],1),_c('b-row',[_c('b-col',[_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.cancelModal()}}},[_vm._v(\"Abbrechen\")])],1),_c('b-col',[_c('b-button',{attrs:{\"variant\":\"danger\"},on:{\"click\":function($event){return _vm.onLogout()}}},[_vm._v(\"Abmelden\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport { AuthService } from \"@/services/hercon-services/Auth.service\";\r\nimport { AuthCredentials } from \"@/services/hercon-services/models/AuthCredentials\";\r\nimport ButtonComponent from \"@/components/hercon-components/0-atoms/Button.component.vue\";\r\n\r\n@Component({\r\n components: {\r\n ButtonComponent,\r\n },\r\n})\r\nexport default class LogoutComponent extends Vue {\r\n // #region PROPS\r\n\r\n @Prop({ default: true }) lightSpin!: boolean;\r\n\r\n // #endregion\r\n\r\n // #region DATA PROPERTIES\r\n\r\n private showSpinner = false;\r\n private spinnerClass = \"m-1\";\r\n\r\n private localLogin = StoreService.isLoggedIn();\r\n\r\n private authentication: AuthCredentials = {\r\n username: StoreService.getUsername(),\r\n password: \"\",\r\n };\r\n\r\n // #endregion\r\n\r\n // #region METHODS\r\n\r\n /**\r\n * Abmelden des Benutzers.\r\n *\r\n * @remarks\r\n * Es wird eine Nachricht an das Backend geschickt.\r\n * Bei einer erfolgreichen Abmeldung werden die gespeicherten Token gelöscht.\r\n */\r\n async onLogout(): Promise {\r\n this.showSpinner = true;\r\n\r\n try {\r\n await AuthService.logout();\r\n } catch (error: any) {\r\n if (error.Statuscode) {\r\n console.debug(`Logout nur im Frontend ausgeführt.`);\r\n console.debug(`Statuscode vom Backend: ${error.Statuscode}`);\r\n } else {\r\n console.debug(`Logout nur im Frontend ausgeführt.`);\r\n console.debug(`Kein Statuscode vom Backend erhalten.`);\r\n }\r\n }\r\n\r\n // Löschen der Token aus dem StoreService und aus Axios.\r\n StoreService.logOut();\r\n AuthService.removeAxiosToken();\r\n\r\n // Mitteilen, dass man nicht mehr eingeloggt ist.\r\n this.localLogin = false;\r\n this.$emit(\"loggedOut\");\r\n window.dispatchEvent(new CustomEvent(\"globalIsLogedOut\"));\r\n this.showSpinner = false;\r\n\r\n return;\r\n }\r\n\r\n async cancelModal(): Promise {\r\n this.$emit(\"cancelModal\");\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hc-logout\", LogoutComponent);\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.component.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.component.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Logout.component.vue?vue&type=template&id=9dc75306&\"\nimport script from \"./Logout.component.vue?vue&type=script&lang=ts&\"\nexport * from \"./Logout.component.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component, Watch, Emit } from \"vue-property-decorator\";\r\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\r\nimport LogoutComponent from \"@/components/hercon-components/3-templates/Logout.component.vue\";\r\n\r\n@Component({\r\n components: {\r\n LogoutComponent,\r\n },\r\n})\r\nexport default class Logout extends Vue {\r\n // #region DATA PROPERTIES\r\n\r\n private authPassword = \"\";\r\n private showNow = false;\r\n\r\n // #endregion\r\n\r\n // #region VUE LIFECYCLE HOOKS\r\n\r\n /* # Schritte im Vue lifecycle\r\n 1. beforeCreate\r\n 2. created\r\n 3. beforeMount\r\n 4. mounted\r\n 5. beforeUpdated\r\n 6. updated\r\n 7. beforeDestroyed\r\n 8. destroyed\r\n */\r\n async mounted(): Promise {\r\n this.showNow = false;\r\n return;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region COMPUTED PROPERTIES\r\n\r\n get popOverTitle(): string {\r\n if (StoreService.isLoggedIn()) {\r\n return \"Benutzer\";\r\n }\r\n return \"Login\";\r\n }\r\n\r\n get authUsername(): string {\r\n return StoreService.getUsername();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region METHODS\r\n\r\n async onClose(): Promise {\r\n this.showNow = false;\r\n return;\r\n }\r\n\r\n async loginChecked(): Promise {\r\n try {\r\n this.showNow = false;\r\n this.hidePopover();\r\n } catch (error: any) {\r\n console.log(error);\r\n }\r\n return;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region EMIT\r\n\r\n @Emit(\"showPopover\")\r\n async showPopover(): Promise {\r\n this.$emit(\"showPopover\");\r\n return;\r\n }\r\n\r\n @Emit(\"hidePopover\")\r\n async hidePopover(): Promise {\r\n this.$emit(\"hidePopover\");\r\n return;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region WATCHERS\r\n\r\n @Watch(\"showNow\")\r\n async onShowNowChanged(): Promise {\r\n this.$emit(\"activeChanged\", this.showNow);\r\n return;\r\n }\r\n\r\n // #endregion\r\n}\r\nVue.component(\"hv-logout\", Logout);\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Logout.vue?vue&type=template&id=2a8c02f2&\"\nimport script from \"./Logout.vue?vue&type=script&lang=ts&\"\nexport * from \"./Logout.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { StoreService } from \"@/services/hercon-services/Store.service\";\nimport PageSidebarComponent from \"@/components/hercon-components/4-page/PageSidebar.component.vue\";\nimport PageHeaderComponent from \"@/components/hercon-components/4-page/PageHeader.component.vue\";\nimport PageMainComponent from \"@/components/hercon-components/4-page/PageMain.component.vue\";\nimport NavigationItemComponent from \"@/components/hercon-components/2-organisms/NavigationItem.component.vue\";\nimport DateTimeComponent from \"@/components/hercon-components/1-molecules/DateTime.component.vue\";\nimport Logout from \"@/views/hercon-views/Logout.vue\";\n\n@Component({\n components: {\n PageSidebarComponent,\n PageHeaderComponent,\n PageMainComponent,\n NavigationItemComponent,\n DateTimeComponent,\n Logout,\n },\n})\nexport default class App extends Vue {\n // #region DATA PROPERTIES\n\n private showPopover = false;\n private userInitials = \"Einloggen\";\n private isLoggedIn = StoreService.isLoggedIn();\n\n userName: string = \"\";\n //public userName = StoreService.getUsername();\n\n private modalShow = false;\n\n // #endregion\n\n // #region VUE LIFECYCLE HOOKS\n\n /* # Schritte im Vue lifecycle\n 1. beforeCreate\n 2. created\n 3. beforeMount\n 4. mounted\n 5. beforeUpdated\n 6. updated\n 7. beforeDestroyed\n 8. destroyed\n */\n /*\n get userName(): string {\n return StoreService.getUsername();\n }\n */\n\n beforeCreate() {\n window.addEventListener(\"globalIsLogedIn\", () => {\n this.isLoggedIn = true;\n this.getUserInitials();\n });\n window.addEventListener(\"globalIsLogedOut\", () => {\n this.triggerLogout();\n //this.getUserInitials();\n });\n window.addEventListener(\"token-invalid\", () => {\n this.triggerLogout();\n this.getUserInitials();\n });\n }\n\n closeModal(): void {\n this.modalShow = false;\n }\n\n mounted() {\n this.init();\n }\n\n // #endregion\n\n // #region METHODS\n\n init() {\n this.isLoggedIn = StoreService.isLoggedIn();\n this.getUserInitials();\n }\n\n closePopOverWindow() {\n this.showPopover = false;\n }\n\n openPopOverWindow() {\n this.showPopover = true;\n }\n\n triggerLogout() {\n this.isLoggedIn = false;\n this.$router.push(\"login\");\n }\n\n getUserInitials(): void {\n if (!StoreService.isLoggedIn()) {\n // Benutzer ist nicht eingeloggt.\n this.userInitials = \"Einloggen\";\n }\n\n const fullName = StoreService.getUsername();\n this.userName = StoreService.getUsername();\n\n if (fullName === undefined || fullName.length === 0) {\n this.userInitials = \"--\";\n }\n\n const firstNameLetter = fullName.substring(0, 1);\n const indexFirstSpace = fullName.indexOf(\" \");\n\n if (indexFirstSpace < 0 || fullName.length <= indexFirstSpace + 2) {\n this.userInitials = firstNameLetter + \"-\";\n }\n\n const secondNameLetter = fullName.substring(\n indexFirstSpace + 1,\n indexFirstSpace + 2\n );\n\n this.userInitials = firstNameLetter + secondNameLetter;\n }\n\n // #endregion\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=089758b8&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=089758b8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"089758b8\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport Vuex from 'vuex'\n\n\nVue.use(Vuex)\n\n\nexport default new Vuex.Store({\n state: {\n },\n mutations: {\n },\n actions: {\n },\n modules: {\n }\n})\n","import { Vue } from \"vue-property-decorator\";\n\nimport { BootstrapVue, BootstrapVueIcons } from \"bootstrap-vue\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport \"bootstrap-vue/dist/bootstrap-vue.css\";\n\nVue.use(BootstrapVue);\nVue.use(BootstrapVueIcons);\n","import { AxiosResponse, AxiosStatic } from \"axios\";\r\nimport { AuthService } from \"@/services/hercon-services/Auth.service\";\r\nimport router from \"@/router\";\r\n\r\n/**\r\n * Verarbeiten aller fehlerhaften Antworten bei der Autorisierung (401 Unauthorized).\r\n *\r\n * @remarks\r\n * Beim Statuscode 401 wird versucht neue Tokens zu beantragen.\r\n * Mit den neuen Tokens im HTTP Header wird der fehlgeschlagene Aufruf wiederholt.\r\n * Sollte es sich schon um eine Widerholung handeln, oder der Refresh fehlschlagen,\r\n * so wird der eigentliche Aufruf nur weitergeleitet.\r\n *\r\n * @param axios - die zu manipulierende Axios-Instanz\r\n * @param error - Error-Objekt, welches beim Reject erzeugt wurde\r\n *\r\n * @returns\r\n * Original Request mit aktualisiertem Header, oder Reject.\r\n */\r\nasync function axiosInterceptorResponseReject(\r\n axios: AxiosStatic,\r\n error: any\r\n): Promise> {\r\n const originalRequest = error.config;\r\n\r\n // Bei Statuscode 401 und kein Retry, dann Refresh versuchen.\r\n if (error?.response?.status === 401 && !originalRequest._retry) {\r\n console.trace(\"Statuscode 401. Es wird versucht die Tokens zu erneuern.\");\r\n originalRequest._retry = true;\r\n\r\n try {\r\n const accessToken = await AuthService.refresh();\r\n\r\n // Setze die AKTIVEN Standartheader auf die neuen Werte.\r\n axios.defaults.headers.common[\"Authorization\"] = \"Bearer \" + accessToken;\r\n\r\n // Setze die Standartheader der ZUM FEHLER FÜHRENDEN ANFRAGE auf die neuen Werte.\r\n originalRequest.headers[\"Authorization\"] = \"Bearer \" + accessToken;\r\n\r\n console.trace(\"Token aktualisiert. Erneuter Versuch der Orginalanfrage.\");\r\n\r\n // Führe die ZUM FEHLER FÜHRENDEN ANFRAGE mit NEUEN HEADERN nochmal aus.\r\n return axios(originalRequest);\r\n } catch (error) {\r\n // Wenn der Refresh fehlschlägt muss sich der Benutzer wider anmelden,\r\n // egal an was es liegt. Die Anmeldung übernimmt aber nicht der Interceptor.\r\n // Somit wird die originale Fehlermeldung zurückgegeben.\r\n console.trace(\"Token aktualisierung fehlgeschlagen.\");\r\n return Promise.reject(error);\r\n }\r\n }\r\n\r\n // Wenn trotz Refresh-Versuch 401 geworfen wird (Retry flag schon gesetzt).\r\n if (error?.response?.status === 401 && originalRequest._retry) {\r\n console.trace(\"Statuscode 401 (Endgültig).\");\r\n router.push(\"/login\");\r\n return Promise.reject(error);\r\n }\r\n\r\n return Promise.reject(error);\r\n}\r\n\r\n/**\r\n * Setzen von Interceptors.\r\n *\r\n * @param axios AxiosStatik Objekt\r\n */\r\nexport async function setAxiosInterceptors(axios: AxiosStatic) {\r\n axios.interceptors.request.use((request) => {\r\n return request;\r\n });\r\n axios.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n return axiosInterceptorResponseReject(axios, error);\r\n }\r\n );\r\n}\r\n","import { Vue } from 'vue-property-decorator'\nimport Axios from '@/library/axios/Axios'\nimport VueAxios from 'vue-axios'\nimport { setAxiosInterceptors } from '@/library/axios/AxiosInterceptor'\n\nsetAxiosInterceptors(Axios)\nVue.use(VueAxios, Axios)\n","import { Vue } from \"vue-property-decorator\";\nimport Snotify, { SnotifyPosition } from \"vue-snotify\";\n\nconst options = {\n toast: {\n position: SnotifyPosition.rightBottom,\n timeout: 2000,\n showProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n },\n};\n\nVue.use(Snotify, options);\n","import { Vue } from \"vue-property-decorator\";\nimport VueFeather from \"vue-feather\";\n\nVue.use(VueFeather);\n","import { Vue } from 'vue-property-decorator';\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\n\r\nimport '@/assets/styles/main.scss';\r\nimport './plugins/bootstrap-vue';\r\nimport 'bootstrap/dist/css/bootstrap.css'\r\n\r\n\r\nimport './plugins/axios-vue';\r\nimport './plugins/snotify';\r\nimport './plugins/feather-vue';\r\n\r\n\r\n\r\nVue.config.productionTip = false;\r\n\r\n\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n render: h => h(App)\r\n}).$mount('#app');\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Arbeitszeit.vue?vue&type=style&index=0&id=48dfb711&prod&lang=css&\""],"sourceRoot":""}