Files
Harald Bamberger d89191b7f7 update bundles
2026-03-12 16:28:48 +01:00

5 lines
138 KiB
JavaScript

import t from"../../../../../index.ci.php/public/js/components/primevue/listbox/listbox.esm.min.js";import e from"../../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js";import n from"../../../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js";import r from"../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js";import i from"../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js";var s={render(){return this.$slots&&this.$slots.default?this.$slots.default():null}},a={components:{FhcFragment:s},provide(){return{$registerToForm:t=>{this.inputs.indexOf(t)<0&&this.inputs.push(t)},$clearValidationForName:this.clearValidationForName}},props:{tag:{type:String,default:"form"}},data:()=>({inputs:[]}),computed:{sortedInputs(){return this.inputs.reduce((t,e)=>{let n=e.name||"_default";return t[n]||(t[n]=[]),t[n].push(e),"checkbox"==e.lcType&&"]"==n.substr(-1)&&n.indexOf("[")&&(n=n.substr(0,n.lastIndexOf("[")),t[n]||(t[n]=[]),t[n].push(e)),t},{})},factory(){console.warn("<form>.factory is deprecated! Use <form>.call() instead.");const t=Object.create(Object.getPrototypeOf(this.$fhcApi.factory),Object.getOwnPropertyDescriptors(this.$fhcApi.factory));return t.$fhcApi={get:this.get,post:this.post,_defaultErrorHandlers:this.$fhcApi._defaultErrorHandlers},t}},methods:{get(...t){return"object"==typeof t[0]&&t[0].clearValidation&&t[0].setFeedback?t[0]=this:t.unshift(this),this.$api?this.$api.get(...t):this.$fhcApi.get(...t)},post(...t){return"object"==typeof t[0]&&t[0].clearValidation&&t[0].setFeedback?t[0]=this:t.unshift(this),this.$api?this.$api.post(...t):this.$fhcApi.post(...t)},call(t,e){return this.$api.call(t,e,this)},_sendFeedbackToInput(t,e,n){return t.length?(t.forEach(t=>t.setFeedback(n,e)),!1):!this.$fhcAlert||(this.$fhcAlert[n?"alertSuccess":"alertError"](e),!1)},setFeedback(t,e){if(Array.isArray(e)){let n=e.filter(e=>this._sendFeedbackToInput(this.sortedInputs._default||[],e,t));return n.length?n:null}if("object"==typeof e){let n=Object.entries(e).filter(([e,n])=>this._sendFeedbackToInput(this.sortedInputs[e.split(".")[0]+e.split(".").slice(1).map(t=>`[${t}]`).join("")]||this.sortedInputs._default||[],n,t));return n.length?Object.fromEntries(n):null}return this._sendFeedbackToInput(this.sortedInputs._default||[],e,t)?e:null},clearValidation(){this.inputs.forEach(t=>t.clearValidation())},send(t){return new Promise((e,n)=>{t.then(t=>{if(200==t?.status&&t.data){if("object"!=typeof t.data||!t.data.hasOwnProperty("retval"))return n(t);if(t.data.error)return n(t);const r=t.data.retval;return 1==t.data.code&&this.setFeedback(!0,r),e(r)}n(t)}).catch(t=>{if(400==t?.response?.status&&t.response.data){if("object"!=typeof t.response.data||!t.response.data.hasOwnProperty("retval"))return n(t);this.clearValidation();const e=this.setFeedback(!1,t.response.data.retval);if(e)return t.response.data.retval=e,n(t)}else{if(500!=t?.response?.status)return n(t);if(!this.$fhcAlert)return n(t);this.$fhcAlert.handleSystemError(t)}})})},clearValidationForName(t){(this.sortedInputs[t.split(".")[0]+t.split(".").slice(1).map(t=>`[${t}]`).join("")]||this.sortedInputs._default||[]).forEach(t=>t.clearValidation())}},template:'\n\t<component :is="tag || \'FhcFragment\'" v-bind="$attrs">\n\t\t<slot></slot>\n\t</component>'};let o={};var l={name:"FormInput",inheritAttrs:!1,components:{FhcFragment:s},inject:{registerToForm:{from:"$registerToForm",default:null},clearValidationForName:{from:"$clearValidationForName",default:null}},props:{bsFeedback:Boolean,noAutoClass:Boolean,noFeedback:Boolean,inputGroup:Boolean,type:String,name:String,containerClass:[String,Array,Object],label:String,onInput:[Array,Function],"onUpdate:modelValue":[Array,Function]},data:()=>({valid:void 0,feedback:[],modelValueDummy:void 0}),computed:{hasContainer(){if(!this.bsFeedback)return!0;if(this.containerClass)return!0;for(const t in this.autoContainerClass)if(Object.hasOwn(this.autoContainerClass,t))return!0;return!1},acc(){return this.containerClass?"string"==typeof this.containerClass||this.containerClass instanceof String?this.containerClass.split(" ").reduce((t,e)=>(t[e]=!0,t),{}):Array.isArray(this.containerClass)?this.containerClass.reduce((t,e)=>(t[e]=!0,t),{}):this.containerClass:{}},autoContainerClass(){if(this.noAutoClass)return this.acc;const t={...this.acc};return this.inputGroup&&(t["input-group-item"]=!0),"radio"!=this.lcType&&"checkbox"!=this.lcType||(t["form-check"]=!0),this.inputGroup&&t["form-check"]&&(t["input-group-item"]=!1,t["form-check"]=!1,t["input-group-text"]=!0),t},lcType(){return this.type?this.type.toLowerCase():"text"},tag(){switch(this.lcType){case"textarea":case"select":return this.lcType;case"datepicker":return"VueDatePicker";case"autocomplete":return"PvAutocomplete";case"uploadimage":return"UploadImage";case"uploadfile":case"uploaddms":return"UploadDms";default:return"input"}},validationClass(){const t=[];if(this.valid?t.push("is-valid"):!1===this.valid&&t.push("is-invalid"),!this.noAutoClass){let e=this.$attrs.class?this.$attrs.class.split(" "):[];switch(this.lcType){case"select":e.includes("form-select")||t.push("form-select");break;case"range":e.includes("form-range")||t.push("form-range");break;case"radio":case"checkbox":e.includes("form-check-input")||e.includes("btn-check")||t.push("form-check-input");break;case"color":e.includes("form-control-color")||t.push("form-control-color"),e.includes("form-control")||t.push("form-control");break;case"autocomplete":case"datepicker":t.push("p-0"),t.push("border-0"),e.includes("form-control")||t.push("form-control");break;case"text":case"number":case"password":case"textarea":e.includes("form-control")||t.push("form-control")}}return t},feedbackClass(){return this.feedback&&!0!==this.feedback?this.bsFeedback?{"valid-feedback":!0===this.valid,"invalid-feedback":!1===this.valid}:{"valid-tooltip":!0===this.valid,"invalid-tooltip":!1===this.valid}:""},modelValueCmp:{get(){return this.$attrs.hasOwnProperty("modelValue")?this.$attrs.modelValue:this.modelValueDummy},set(t){this.$attrs.hasOwnProperty("modelValue")||(this.modelValueDummy=t),this.$emit("update:modelValue",t)}},idCmp(){let t=this.$attrs.id;if("datepicker"==this.lcType&&(t=this.$attrs.uid),!t&&this.label&&(t="fhc-form-input"),t)return"datepicker"==this.lcType&&(t="dp-input-"+t),void 0===o[t]&&(o[t]=0),t+"-"+o[t]++}},methods:{clearValidation(){this.valid=void 0,this.feedback=[]},clearValidationForThisName(){void 0!==this.valid&&(this.clearValidationForName&&this.name?this.clearValidationForName(this.name):this.clearValidation())},setFeedback(t,e){if(e||(e=[]),Array.isArray(e)||(e=[e]),this.valid=t,this.name&&("radio"==this.lcType||"checkbox"==this.lcType)){const t='input[type="'+this.lcType+'"][name="'+this.name+'"]';if([...this.$el.parentNode.querySelectorAll(t)].pop()!=this.$refs.input)return}this.feedback=e},_loadComponents(){"VueDatePicker"!=this.tag||this._.components.VueDatePicker?"PvAutocomplete"!=this.tag||this._.components.PvAutocomplete?"UploadImage"!=this.tag||this._.components.UploadImage?"UploadDms"!=this.tag||this._.components.UploadDms||(this._.components.UploadDms=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return Ft}))):this._.components.UploadImage=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return _t})):this._.components.PvAutocomplete=primevue.autocomplete:this._.components.VueDatePicker=Vue.defineAsyncComponent(()=>import("../../../../js/components/vueDatepicker.js.php"))}},beforeMount(){this._loadComponents()},beforeUpdate(){this._loadComponents()},mounted(){this.registerToForm&&this.registerToForm(this)},template:'\n\t<component :is="!hasContainer ? \'FhcFragment\' : \'div\'" class="position-relative" :class="autoContainerClass">\n\t\t<label v-if="label && lcType != \'radio\' && lcType != \'checkbox\'" :class="!noAutoClass && \'form-label\'" :for="idCmp">{{label}}</label>\n\t\t<input v-if="tag == \'input\'" :type="lcType" ref="input" v-model="modelValueCmp" v-bind="$attrs" :id="idCmp" :name="name" :class="validationClass" :modelValue="undefined" @input="clearValidationForThisName(); $emit(\'input\', $event)">\n\t\t<textarea v-else-if="tag == \'textarea\'" ref="input" v-model="modelValueCmp" v-bind="$attrs" :id="idCmp" :name="name" :class="validationClass" :modelValue="undefined" @input="clearValidationForThisName(); $emit(\'input\', $event)"></textarea>\n\t\t<select v-else-if="tag == \'select\'" ref="input" v-model="modelValueCmp" v-bind="$attrs" :id="idCmp" :name="name" :class="validationClass" :modelValue="undefined" @input="clearValidationForThisName(); $emit(\'input\', $event)">\n\t\t\t<slot></slot>\n\t\t</select>\n\t\t<component\n\t\t\tv-else-if="tag == \'VueDatePicker\'"\n\t\t\tref="input"\n\t\t\t:is="tag"\n\t\t\t:type="type"\n\t\t\tv-model="modelValueCmp"\n\t\t\tv-bind="$attrs"\n\t\t\t:uid="idCmp ? idCmp.substr(9) : idCmp"\n\t\t\t:name="name"\n\t\t\t:class="validationClass"\n\t\t\t:input-class-name=\n\t\t\t"[...Object.entries({\'form-control\': !noAutoClass, \'is-valid\': valid === true, \'is-invalid\': valid === false}).reduce((a,[k,v]) => {if(v) a.push(k);return a}, []), ...($attrs[\'input-class-name\'] ? $attrs[\'input-class-name\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t<slot></slot>\n\t\t</component>\n\t\t<component\n\t\t\tv-else-if="tag == \'PvAutocomplete\'"\n\t\t\tref="input"\n\t\t\t:is="tag"\n\t\t\t:type="type"\n\t\t\tv-model="modelValueCmp"\n\t\t\tv-bind="$attrs"\n\t\t\t:id="idCmp"\n\t\t\t:input-props="{name}"\n\t\t\t:class="validationClass"\n\t\t\t:input-class="[...Object.entries({\'form-control\': !noAutoClass, \'is-valid\': valid === true, \'is-invalid\': valid === false}).reduce((a,[k,v]) => {if(v) a.push(k);return a}, []), ...($attrs[\'input-class\'] ? $attrs[\'input-class\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t<slot></slot>\n\t\t\t<template #chip="data"><slot name="chip" v-bind="data"></slot></template>\n\t\t\t<template #header="data"><slot name="header" v-bind="data"></slot></template>\n\t\t\t<template #footer="data"><slot name="footer" v-bind="data"></slot></template>\n\t\t\t<template #selectedItem="data"><slot name="selectedItem" v-bind="data"></slot></template>\n\t\t\t<template #option="data"><slot name="option" v-bind="data"></slot></template>\n\t\t\t<template #optiongroup="data"><slot name="optiongroup" v-bind="data"></slot></template>\n\t\t\t<template #content="data"><slot name="content" v-bind="data"></slot></template>\n\t\t\t<template #loader="data"><slot name="loader" v-bind="data"></slot></template>\n\t\t\t<template #empty="data"><slot name="empty" v-bind="data"></slot></template>\n\t\t\t<template #dropdownicon="data"><slot name="dropdownicon" v-bind="data"></slot></template>\n\t\t\t<template #removetokenicon="data"><slot name="removetokenicon" v-bind="data"></slot></template>\n\t\t\t<template #loadingicon="data"><slot name="loadingicon" v-bind="data"></slot></template>\n\t\t</component>\n\t\t<component\n\t\t\tv-else-if="tag == \'UploadDms\'"\n\t\t\tref="input"\n\t\t\t:is="tag"\n\t\t\t:type="type"\n\t\t\tv-model="modelValueCmp"\n\t\t\tv-bind="$attrs"\n\t\t\t:id="idCmp"\n\t\t\t:name="name"\n\t\t\t:class="validationClass"\n\t\t\t:input-class="validationClass"\n\t\t\t:no-list="inputGroup"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t<slot></slot>\n\t\t</component>\n\t\t<component\n\t\t\tv-else\n\t\t\tref="input"\n\t\t\t:is="tag"\n\t\t\t:type="type"\n\t\t\tv-model="modelValueCmp"\n\t\t\tv-bind="$attrs"\n\t\t\t:id="idCmp"\n\t\t\t:name="name"\n\t\t\t:class="validationClass"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t<slot></slot>\n\t\t</component>\n\t\t<label v-if="label && (lcType == \'radio\' || lcType == \'checkbox\')" :for="idCmp" :class="!noAutoClass && \'form-check-label\'" v-html="label"></label>\n\t\t<div v-if="valid !== undefined && feedback.length && !noFeedback" :class="feedbackClass">\n\t\t\t<template v-for="(msg, i) in feedback" :key="i">\n\t\t\t\t<hr v-if="i" class="m-0">\n\t\t\t\t{{msg}}\n\t\t\t</template>\n\t\t</div>\n\t</component>\n\t'};const d={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t<slot v-if="loading" name="loading">\n\t\t\t<div class="fetch-loader">Loading...</div>\n\t\t</slot>\n\t\t<slot v-else-if="error" name="error" :error-message="errorMessage">\n\t\t\t<div class="fetch-error">{{ errorMessage }}</div>\n\t\t</slot>\n\t\t<slot v-else></slot>\n\t'},p="Filter Component New Filter";var u={props:{filters:{type:Array,default:[]},columns:{type:Array,default:[]},fields:{type:Array,default:[]}},emits:{switchFilter:["filterId"],applyFilterConfig:["filterFields"],saveCustomFilter:["customFilterName"]},data:function(){return{currentFields:[]}},computed:{types(){return this.columns.reduce((t,e)=>{let n=e.type.toLowerCase();return n.indexOf("int")>=0?t[e.name]="Numeric":n.indexOf("varchar")>=0||n.indexOf("text")>=0||n.indexOf("bpchar")>=0?t[e.name]="Text":n.indexOf("timestamp")>=0||n.indexOf("date")>=0?t[e.name]="Date":t[e.name]="",t},{})}},watch:{fields(t){this.currentFields=t}},methods:{switchFilter(t){this.$emit("switchFilter",t.currentTarget.value)},applyFilterConfig(){const t=this.currentFields.filter(t=>t.name!=p);t.filter(t=>""==t.condition).length?alert("Please fill all the filter options"):this.$emit("applyFilterConfig",t)},addField(t){this.currentFields.push({name:p})},removeField(t){this.currentFields.splice(t,1)}},template:'\n\t<div class="filter-config">\n\t\t<div class="card">\n\t\t\t<div class="card-body">\n\t\t\t\t<div v-if="filters.length" class="mb-4">\n\t\t\t\t\t<select class="form-select" @change="switchFilter">\n\t\t\t\t\t\t<option value="">Bitte auswählen...</option>\n\t\t\t\t\t\t<option v-for="filter in filters" :value="filter.id">\n\t\t\t\t\t\t\t{{ filter.description }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<button class="btn btn-outline-dark" type="button" @click=addField>\n\t\t\t\t\t\t<span class="fa-solid fa-plus" aria-hidden="true"></span> Neuer Filter\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<div class="filter-config-fields my-3">\n\t\t\t\t\t<div v-for="(filterField, index) in currentFields" class="filter-config-field row">\n\n\t\t\t\t\t\t<div class="col-5">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-text">Filter {{ index + 1 }}</span>\n\t\t\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t\t\tclass="form-select"\n\t\t\t\t\t\t\t\t\tv-model="filterField.name"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<option value="">Feld zum Filter hinzufügen...</option>\n\t\t\t\t\t\t\t\t\t<option v-for="col in columns" :value="col.name">\n\t\t\t\t\t\t\t\t\t\t{{ col.title }}\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\x3c!-- Numeric --\x3e\n\t\t\t\t\t\t<template v-if="types[filterField.name] == \'Numeric\'">\n\t\t\t\t\t\t\t<div class="col-2">\n\t\t\t\t\t\t\t\t<select class="form-select" v-model="filterField.operation">\n\t\t\t\t\t\t\t\t\t<option value="equal">Gleich</option>\n\t\t\t\t\t\t\t\t\t<option value="nequal">Nicht gleich</option>\n\t\t\t\t\t\t\t\t\t<option value="gt">Größer als</option>\n\t\t\t\t\t\t\t\t\t<option value="lt">Weniger als</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-3">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" v-model="filterField.condition">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\n\t\t\t\t\t\t\x3c!-- Text --\x3e\n\t\t\t\t\t\t<template v-if="types[filterField.name] == \'Text\'">\n\t\t\t\t\t\t\t<div class="col-2">\n\t\t\t\t\t\t\t\t<select class="form-select" v-model="filterField.operation">\n\t\t\t\t\t\t\t\t\t<option value="equal">Gleich</option>\n\t\t\t\t\t\t\t\t\t<option value="nequal">Nicht gleich</option>\n\t\t\t\t\t\t\t\t\t<option value="contains">Enthält</option>\n\t\t\t\t\t\t\t\t\t<option value="ncontains">Enthält nicht</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-3">\n\t\t\t\t\t\t\t\t<input type="text" class="form-control" v-model="filterField.condition">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\n\t\t\t\t\t\t\x3c!-- Timestamp and date --\x3e\n\t\t\t\t\t\t<template v-if="types[filterField.name] == \'Date\'">\n\t\t\t\t\t\t\t<div class="col-2">\n\t\t\t\t\t\t\t\t<select class="form-select" v-model="filterField.operation">\n\t\t\t\t\t\t\t\t\t<option value="gt">Größer als</option>\n\t\t\t\t\t\t\t\t\t<option value="lt">Weniger als</option>\n\t\t\t\t\t\t\t\t\t<option value="set">Eingestellt ist</option>\n\t\t\t\t\t\t\t\t\t<option value="nset">Eingestellt nicht ist</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-1">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" v-model="filterField.condition">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-2">\n\t\t\t\t\t\t\t\t<select class="form-select" v-model="filterField.option">\n\t\t\t\t\t\t\t\t\t<option value="minutes">Minuten</option>\n\t\t\t\t\t\t\t\t\t<option value="hours">Stunden</option>\n\t\t\t\t\t\t\t\t\t<option value="days">Tage</option>\n\t\t\t\t\t\t\t\t\t<option value="months">Monate</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</template>\n\n\t\t\t\t\t\t<div class="col text-end">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass="btn btn-outline-dark"\n\t\t\t\t\t\t\t\ttype="button"\n\t\t\t\t\t\t\t\t@click="removeField(index)"\n\t\t\t\t\t\t\t\ttitle="Filter entfernen"\n\t\t\t\t\t\t\t\taria-title="Filter entfernen"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span class="fa-solid fa-minus" aria-hidden="true"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Filter save options --\x3e\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-7">\n\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t<input ref="filterName" type="text" class="form-control" placeholder="Filternamen eingeben...">\n\t\t\t\t\t\t\t<button type="button" class="btn btn-outline-secondary" @click="$emit(\'saveCustomFilter\', $refs.filterName.value)">Filter speichern</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col">\n\t\t\t\t\t\t<button type="button" class="btn btn-outline-dark" @click="applyFilterConfig">Filter anwenden</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t'},c={props:{fields:Array,selected:{type:Array,default:[]},names:{type:Object,default:{}}},emits:{hide:["fieldName"],show:["fieldName"]},data:function(){return{selectedFields:[]}},watch:{selected(t){this.selectedFields=t}},methods:{toggle(t){-1!=this.selectedFields.indexOf(t)?(this.selectedFields.splice(this.selectedFields.indexOf(t),1),this.$emit("hide",t)):(this.selectedFields.push(t),this.$emit("show",t))}},template:'\n\t<div class="filter-columns">\n\t\t<div class="card">\n\t\t\t<div class="d-flex flex-wrap gap-2 p-3 justify-content-center">\n\t\t\t\t<div\n\t\t\t\t\tv-for="fieldToDisplay in fields"\n\t\t\t\t\tclass="btn"\n\t\t\t\t\t:class="selectedFields.indexOf(fieldToDisplay) != -1 ? \'btn-dark\' : \'btn-outline-dark\' "\n\t\t\t\t\t@click="toggle(fieldToDisplay)"\n\t\t\t\t>\n\t\t\t\t\t{{ names[fieldToDisplay] || fieldToDisplay }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t'};const f={jsonLines:"fa-file-lines",xlsx:"fa-file-excel",pdf:"fa-file-pdf",html:"fa-file-code",json:"fa-file",csv:"fa-file-csv"},h={jsonLines:"Download as JSONLINES",xlsx:"Download as XLSX",pdf:"Download as PDF",html:"Download as HTML",json:"Download as JSON",csv:"Download as CSV "};var g={props:{tabulator:Object,config:{type:[Boolean,String,Function,Array,Object],default:!1},iconClass:[String,Array,Object]},computed:{currentConfig(){if(!this.config)return!1;let t=this.config;if(t instanceof Function)return[t];if(null===t)return[];if(!0===this.config&&(t=["csv"]),"[object String]"===Object.prototype.toString.call(t)&&(t=t.split(",")),"object"==typeof t&&!Array.isArray(t)){let i=[];for(var e in t){var n,r=t[e];r&&("[object String]"===Object.prototype.toString.call(r)?null!==(n=this.stringToFileFormatter(r))?i.push({icon:"fa-solid "+f[n],label:r===e?h[n]:e,formatter:n}):null!==(n=this.stringToFileFormatter(e))?i.push({icon:"fa-solid "+f[n],label:r,formatter:n}):alert("neither "+e+" nor "+r+" are supported download file types"):"object"!=typeof r||Array.isArray(r)?null!==(n=this.stringToFileFormatter(e))?i.push({icon:"fa-solid "+f[n],label:h[n],formatter:n}):alert(e+" is not a supported download file type"):null!==(n=this.stringToFileFormatter(e))?(void 0===r.formatter&&(r.formatter=n),void 0===r.label&&(r.label=h[n]),void 0===r.icon&&(r.icon=f[n]),i.push(r)):(void 0===r.label&&(r.label=e),i.push(r)))}t=i}if(Array.isArray(t)){if(t=t.map(t=>{if("[object String]"===Object.prototype.toString.call(t)){let e=this.stringToFileFormatter(t);return null===e?null:{icon:"fa-solid "+f[e],label:h[e],formatter:e}}if(t instanceof Function)return{formatter:t};if("object"==typeof t&&!Array.isArray(t)&&null!==t){if(t.formatter instanceof Function)return t;if(this.validateFileFormatter(t.formatter))return t}return null}).filter(t=>null!==t),t.length<2)return t;if(t.filter(t=>t.label||t.icon).length==t.length)return t;alert("Config not valid")}return[]}},methods:{stringToFileFormatter(t){let e=t.toLowerCase();return"jsonlines"==e?"jsonLines":["xlsx","pdf","html","json","csv"].includes(e)?e:null},validateFileFormatter(t){let e=this.stringToFileFormatter(t);if(!e)return alert(t+" is not a supported file formatter"),!1;if("xlsx"==e&&!window.XLSX)return alert("XLSX Library not loaded"),!1;if("pdf"==e){if(!window.jspdf)return alert("jsPDF Library not loaded"),!1;if(!new jspdf.jsPDF({}).autoTable)return alert("jsPDF-AutoTable Plugin not loaded"),!1}return!0},download(t){this.tabulator.download(t.formatter,t.file,t.options)}},template:'\n\t<template v-if="currentConfig">\n\t\t<template v-if="currentConfig.length == 1">\n\t\t\t<a\n\t\t\t\thref="#"\n\t\t\t\tclass="table-download"\n\t\t\t\tv-bind="$attrs"\n\t\t\t\ttitle="Download"\n\t\t\t\taria-title="Download"\n\t\t\t\t@click.prevent="download(currentConfig[0])"\n\t\t\t>\n\t\t\t\t<span :class="iconClass || \'fa-solid fa-xl fa-download\'" aria-hidden="true"></span>\n\t\t\t</a>\n\t\t</template>\n\t\t<div v-else class="dropdown d-inline">\n\t\t\t<a\n\t\t\t\thref="#"\n\t\t\t\tclass="table-download"\n\t\t\t\tv-bind="$attrs"\n\t\t\t\ttitle="Download"\n\t\t\t\taria-title="Download"\n\t\t\t\trole="button"\n\t\t\t\tdata-bs-toggle="dropdown"\n\t\t\t\taria-expanded="false"\n\t\t\t>\n\t\t\t\t<span :class="iconClass || \'fa-solid fa-xl fa-download\'" aria-hidden="true"></span>\n\t\t\t</a>\n\t\t\t<ul class="dropdown-menu dropdown-menu-end">\n\t\t\t\t<li v-for="(conf, i) in currentConfig" :key="i">\n\t\t\t\t\t<a class="dropdown-item" href="#" @click.prevent="download(conf)">\n\t\t\t\t\t\t<span v-if="conf.icon" :class="conf.icon" aria-hidden="true"></span>\n\t\t\t\t\t\t{{conf.label}}\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t</template>\n\t'};const m=new WeakMap;var v={mounted(t,e){let n=!1;m.set(t,e=>{if(!n)return;if(t.contains(e.target))return;const r=bootstrap.Collapse.getInstance(t);r&&r.hide()}),t.addEventListener("shown.bs.collapse",()=>{n=!0}),t.addEventListener("hide.bs.collapse",()=>{n=!1}),document.addEventListener("click",m.get(t),!0)},beforeUnmount(t,e){document.removeEventListener("click",m.get(t)),delete t.collapsibleAutoHideFunc}};window.Tabulator?.extendModule("layout","modes",{fitDataStretchFrozen(t,e){var n=0,r=this.table.rowManager.element.clientWidth,i=0,s=!1;t.forEach((t,e)=>{t.widthFixed||t.reinitializeWidth(),(this.table.options.responsiveLayout?t.modules.responsive.visible:t.visible&&!t.definition.frozen)&&(s=t),t.visible&&(n+=t.getWidth())}),s?(i=r-n+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),i>0?s.setWidth(i):s.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()}});var A={saveCustomFilter:t=>({method:"post",url:"/api/frontend/v1/filter/saveCustomFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,customFilterName:t.customFilterName}}),removeCustomFilter:t=>({method:"post",url:"/api/frontend/v1/filter/removeCustomFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId}}),applyFilterFields:t=>({method:"post",url:"/api/frontend/v1/filter/applyFilterFields",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterFields:t.filterFields}}),addFilterField:t=>({method:"post",url:"/api/frontend/v1/filter/addFilterField",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField}}),removeFilterField:t=>({method:"post",url:"/api/frontend/v1/filter/removeFilterField",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField}}),getFilterById:t=>({method:"get",url:"/api/frontend/v1/filter/getFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId}}),getFilter:t=>({method:"get",url:"/api/frontend/v1/filter/getFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType}})},b=0;const y={components:{CoreFetchCmpt:d,FilterConfig:u,FilterColumns:c,TableDownload:g},directives:{collapseAutoClose:v},emits:["nwNewEntry","click:new","tableBuilt","uuidDefined","headerFilterOn"],props:{onNwNewEntry:Function,title:String,description:String,sideMenu:{type:Boolean,default:!0},filterType:{type:String},tabulatorOptions:Object,tabulatorEvents:Array,tableOnly:Boolean,noColumnFilter:Boolean,reload:Boolean,reloadBtnInfotext:String,download:{type:[Boolean,String,Function,Array,Object],default:!1},newBtnShow:Boolean,newBtnClass:[String,Array,Object],newBtnDisabled:Boolean,newBtnLabel:String,uniqueId:String,idField:String,parentIdField:String,countOnly:Boolean,useSelectionSpan:{type:Boolean,default:!0}},data:function(){return{uuid:0,filterName:null,filterActive:!1,fields:null,dataset:null,datasetMetadata:null,selectedFields:null,filterFields:null,availableFilters:null,selectedFilter:null,fetchCmptRefresh:!1,fetchCmptApiFunction:null,fetchCmptApiFunctionParams:null,fetchCmptDataFetched:null,fetchResult:null,tabulator:null,tableBuilt:!1,tabulatorHasSelector:!1,selectedData:[],persistence:{sort:!0,columns:!0,filter:!1,headerFilter:!1,group:!1,page:!1}}},computed:{notSelectedFields(){return this.fields&&this.selectedFields?this.fields.filter(t=>-1===this.selectedFields.indexOf(t)):null},filteredData(){return this.dataset?JSON.parse(JSON.stringify(this.dataset)):[]},filteredColumns(){let t=JSON.parse(JSON.stringify(this.fields))||[],e=JSON.parse(JSON.stringify(this.selectedFields))||[],n=null;if(this.tabulatorOptions&&this.tabulatorOptions.hasOwnProperty("columns")&&(n=this.tabulatorOptions.columns),!Array.isArray(n)||Array.isArray(n)&&n.length<t.length){n=[];for(let r of t){let t={title:r,field:r};t.visible=e.indexOf(r)>=0,n.push(t)}}else for(let r of n)r.visible=e.indexOf(r.field)>=0||-1==t.indexOf(r.field),r.hasOwnProperty("resizable")&&(r.resizable=r.visible);return n},fieldIdsForVisibilty(){return this.tableBuilt?this.tabulator.getColumns().filter(t=>{let e=t.getDefinition();return!e.frozen&&e.title&&"responsiveCollapse"!=e.formatter}).map(t=>t.getField()):[]},fieldNames(){return this.tableBuilt?this.tabulator.getColumns().reduce((t,e)=>(t[e.getField()]=e.getDefinition().title,t),{}):{}},idExtra(){return this.uuid?"-"+this.uuid:""},columnsForFilter(){if(!this.filteredColumns||!this.datasetMetadata)return[];const t=this.filteredColumns.reduce((t,e)=>(t[e.field]=e.title,t),{});return this.datasetMetadata.map(e=>({...e,title:t[e.name]}))}},methods:{reloadTable(){this.tableOnly?this.tabulator.setData():this.getFilter()},async initTabulator(){let t="< Phrasen Plugin not loaded! >";this.$p&&(await this.$p.loadCategory("ui"),t=this.$p.t("ui/keineDatenVorhanden")),this.tableOnly||await new Promise(t=>{const e=window.location.hash?window.location.hash.slice(1):null,n=e=>{this.setRenderData(e),t()};null===e?this.startFetchCmpt(t=>this.$api.call(A.getFilter(t)),null,n):this.startFetchCmpt(t=>this.$api.call(A.getFilterById(t)),{filterId:e},n)});let e={layout:"fitDataStretchFrozen",movableColumns:!0,columnDefaults:{tooltip:!0},placeholder:t,persistence:this.persistence,...this.tabulatorOptions||{}};if(void 0===e.height&&void 0===e.minHeight&&void 0===e.maxHeight&&(e.height=500),this.tableOnly?e.columns.forEach(t=>{void 0===t.visible&&(t.visible=!0)}):(e.data=this.filteredData,e.columns=this.filteredColumns),(e.selectable||e.selectableRows||e.columns&&e.columns.filter(t=>"rowSelection"==t.formatter).length)&&(this.tabulatorHasSelector=!0),this.idField&&(this.parentIdField&&(e.dataTree=!0),e.index=this.idField),this.tabulator=new Tabulator(this.$refs.table,e),Array.isArray(this.tabulatorEvents)&&this.tabulatorEvents.length>0)for(let t of this.tabulatorEvents)this.tabulator.on(t.event,t.handler);this.tabulator.on("tableBuilt",()=>{this.tableBuilt=!0,this.$emit("tableBuilt")}),this.tabulator.on("rowSelectionChanged",t=>{this.selectedData=t}),this.parentIdField&&this.idField&&this.tabulator.on("dataLoading",t=>{let e=[];for(let n=0;n<t.length;n++){let r=t[n];r[this.parentIdField]&&this.appendChild(t,r)&&e.push(n)}for(let n=0;n<e.length;n++)t.splice(e[n]-n,1)}),this.tableOnly&&this.tabulator.on("tableBuilt",()=>{const t=this.tabulator.getColumns();this.fields=t.map(t=>t.getField()),this.selectedFields=t.filter(t=>t.isVisible()).map(t=>t.getField()),this.tabulator.options.persistence.headerFilter&&this._setHeaderFilter()}),this.tabulator.on("dataFiltered",t=>{this.filterActive=t.length>0,this.$emit("headerFilterOn",this.filterActive)})},updateTabulator(){this.tabulator&&(this.tableBuilt?this._updateTabulator():this.tabulator.on("tableBuilt",this._updateTabulator))},_updateTabulator(){this.tabulatorHasSelector=this.tabulatorOptions.selectable||this.tabulatorOptions.selectableRows||this.filteredColumns.filter(t=>"rowSelection"==t.formatter).length,this.tabulator.setColumns(this.filteredColumns),this.tabulator.setData(this.filteredData),this._setHeaderFilter()},clearFilters(){this.tabulator.getHeaderFilters().forEach(t=>{this.tabulator.setHeaderFilterValue(t.field,"")}),this.tabulator.clearFilter(),this.filterActive=!1},_setHeaderFilter(){this.tabulator.getHeaderFilters().forEach(t=>{this.tabulator.setHeaderFilterValue(t.field,t.value)})},getFilter(){null===this.selectedFilter?this.startFetchCmpt(t=>this.$api.call(A.getFilter(t)),null,this.render):this.startFetchCmpt(t=>this.$api.call(A.getFilterById(t)),{filterId:this.selectedFilter},this.render)},setRenderData(t){this.fetchResult=t,this.filterName=t.filterName,this.dataset=t.dataset,this.datasetMetadata=t.datasetMetadata,this.fields=t.fields,this.selectedFields=t.selectedFields,this.filterFields=[];for(let e=0;e<t.datasetMetadata.length;e++)for(let n=0;n<t.filters.length;n++)if(t.datasetMetadata[e].name==t.filters[n].name){let r=t.filters[n];r.type=t.datasetMetadata[e].type,this.filterFields.push(r)}},render(t){let e=t;this.setRenderData(e),!0===this.sideMenu?this.setSideMenu(e):this.setDropDownMenu(e),this.updateTabulator()},setSideMenu(t){let e=t.sideMenu.filters,n=t.sideMenu.personalFilters,r=[];for(let t=0;t<e.length;t++){let n=e[t].link;null==n&&(n="#"),r[r.length]={id:e[t].filter_id,link:n+e[t].filter_id,description:e[t].desc,sort:t,onClickCall:this.handlerGetFilterById}}for(let t=0;t<n.length;t++){let e=n[t].link;null==e&&(e="#"),r[r.length]={id:n[t].filter_id,link:e+n[t].filter_id,description:n[t].desc,subscriptDescription:n[t].subscriptDescription,subscriptLinkClass:n[t].subscriptLinkClass,subscriptLinkValue:n[t].subscriptLinkValue,sort:t,onClickCall:this.handlerGetFilterById,onClickSubscriptCall:this.handlerRemoveCustomFilter}}this.availableFilters=r,this.$emit("nwNewEntry",{link:"#",description:"Filters",icon:"filter",children:r})},setDropDownMenu(t){let e=t.sideMenu.filters,n=t.sideMenu.personalFilters,r=[];for(let t=0;t<e.length;t++)e[t].link,r[r.length]={id:e[t].filter_id,option:e[t].filter_id,description:e[t].desc};for(let t=0;t<n.length;t++)n[t].link,r[r.length]={id:n[t].filter_id,option:n[t].filter_id,description:n[t].desc};this.availableFilters=r},startFetchCmpt(t,e,n){this.fetchCmptApiFunction=t,null==e&&(e={}),e.filterUniqueId=FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,e.filterType=this.filterType,this.uniqueId&&(e.filterUniqueId+="_"+this.uniqueId),this.fetchCmptApiFunctionParams=e,this.fetchCmptDataFetched=n,!0===this.fetchCmptRefresh?this.fetchCmptRefresh=!1:this.fetchCmptRefresh=!0},handlerSaveCustomFilter(t){this.selectedFilter=null,this.startFetchCmpt(t=>this.$api.call(A.saveCustomFilter(t)),{customFilterName:t},this.getFilter)},handlerRemoveCustomFilter(t){let e=t.currentTarget.getAttribute("href").substring(1);e===this.selectedFilter&&(this.selectedFilter=null),this.startFetchCmpt(t=>this.$api.call(A.removeCustomFilter(t)),{filterId:e},this.getFilter)},handlerGetFilterById:function(t){let e=null,n=t.currentTarget.getAttribute("href");e=null==n?t.currentTarget.value:n.substring(1),this.switchFilter(e)},switchFilter(t){this.selectedFilter=t,this.getFilter()},applyFilterConfig(t){this.selectedFilter=null,this.startFetchCmpt(t=>this.$api.call(A.applyFilterFields(t)),{filterFields:t},this.getFilter)},appendChild(t,e){let n=e[this.parentIdField];for(let r=0;r<t.length;r++){let i=t[r];if(i[this.idField]==n)return i._children||(i._children=[]),i._children.includes(e)||i._children.push(e),!0;i._children&&this.appendChild(i._children,e)}return!1}},beforeCreate(){!this.tableOnly==!this.filterType&&alert("You can not have a filter-type in table-only mode!")},created(){!this.sideMenu||this.$props.onNwNewEntry&&this.$props.onNwNewEntry instanceof Function||alert('"nwNewEntry" listener is mandatory when sideMenu is true'),this.uuid=b++,this.$emit("uuidDefined",this.uuid)},mounted(){this.initTabulator().then(()=>{this.tableOnly||(this.selectedFilter=window.location.hash?window.location.hash.slice(1):null,this.render(this.fetchResult))})},template:'\n\t\t\x3c!-- Load filter data --\x3e\n\t\t<core-fetch-cmpt\n\t\t\tv-if="!tableOnly && fetchCmptApiFunction"\n\t\t\tv-bind:api-function="fetchCmptApiFunction"\n\t\t\tv-bind:api-function-parameters="fetchCmptApiFunctionParams"\n\t\t\tv-bind:refresh="fetchCmptRefresh"\n\t\t\t@data-fetched="fetchCmptDataFetched">\n\t\t</core-fetch-cmpt>\n\n\t\t<div class="row" v-if="title != null && title != \'\'">\n\t\t\t<div class="col-lg-12">\n\t\t\t\t<h3 class="page-header mt-1 mb-4">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t</div>\n\t\t<div :id="\'filterCollapsables\' + idExtra">\n\n\t\t\t<div class="d-flex flex-row justify-content-between flex-wrap">\n\t\t\t\t<div v-if="newBtnShow || reload || $slots.search || $slots.actions" class="d-flex gap-2 align-items-baseline flex-wrap">\n\t\t\t\t\t<button v-if="newBtnShow" class="btn btn-primary" :class="newBtnClass" :title="newBtnLabel ? undefined : \'New\'" :aria-label="newBtnLabel ? undefined : \'New\'" @click="$emit(\'click:new\', $event)" :disabled="newBtnDisabled">\n\t\t\t\t\t\t<span class="fa-solid fa-plus" aria-hidden="true"></span>\n\t\t\t\t\t\t{{ newBtnLabel }}\n\t\t\t\t\t</button>\n\t\t\t\t\t<button v-if="reload" class="btn btn-outline-secondary" aria-label="Reload" @click="reloadTable">\n\t\t\t\t\t\t<span class="fa-solid fa-rotate-right" aria-hidden="true" :title="reloadBtnInfotext ? reloadBtnInfotext : \'Reload\'" ></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<span v-if="$slots.actions && tabulatorHasSelector && useSelectionSpan">\n\t\t\t\t\t\t<span v-if="countOnly">{{ selectedData.length }} ausgewählt</span>\n\t\t\t\t\t\t<span v-else id="selected-info-text"> Mit {{ selectedData.length }} ausgewählten:</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<slot name="actions" v-bind="{selected: tabulatorHasSelector ? selectedData : []}"></slot>\n\t\t\t\t\t<slot name="search"></slot>\n\t\t\t\t</div>\n\t\t\t\t<div class="d-flex gap-1 align-items-baseline flex-grow-1 justify-content-end">\n\t\t\t\t\t<span v-if="!tableOnly">[ {{ filterName }} ]</span>\n\t\t\t\t\t<span v-else-if="description" v-html="description"></span>\n\t\t\t\t\t<a aria-label="filter" v-if="!tableOnly || $slots.filter" href="#" class="btn btn-link px-0 fhc-text" data-bs-toggle="collapse" :data-bs-target="\'#collapseFilters\' + idExtra">\n\t\t\t\t\t\t<span class="fa-solid fa-xl fa-filter"></span>\n\t\t\t\t\t</a>\n\t\t\t\t\t<a aria-label="filter" v-if="filterActive" class="btn btn-link px-0 fhc-text" :title="$p.t(\'ui\',\'filterdelete\')" @click="clearFilters">\n\t\t\t\t\t\t<span class="fa-solid fa-xl fa-filter-circle-xmark"></span>\n\t\t\t\t\t</a>\n\t\t\t\t\t<a aria-label="filter" href="#" class="btn btn-link px-0 fhc-text" data-bs-toggle="collapse" :data-bs-target="\'#collapseColumns\' + idExtra">\n\t\t\t\t\t\t<span class="fa-solid fa-xl fa-table-columns"></span>\n\t\t\t\t\t</a>\n\t\t\t\t\t<table-download class="btn btn-link px-0 fhc-text" :tabulator="tabulator" :config="download"></table-download>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<filter-columns\n\t\t\t\t:id="\'collapseColumns\' + idExtra"\n\t\t\t\tclass="card-body collapse"\n\t\t\t\t:data-bs-parent="\'#filterCollapsables\' + idExtra"\n\t\t\t\t:fields="fieldIdsForVisibilty"\n\t\t\t\t:selected="selectedFields"\n\t\t\t\t:names="fieldNames"\n\t\t\t\t@hide="tabulator.hideColumn($event)"\n\t\t\t\t@show="tabulator.showColumn($event)"\n\t\t\t\tv-collapse-auto-close\n\t\t\t></filter-columns>\n\n\t\t\t<filter-config\n\t\t\t\tv-if="!tableOnly"\n\t\t\t\t:id="\'collapseFilters\' + idExtra"\n\t\t\t\tclass="card-body collapse"\n\t\t\t\t:data-bs-parent="\'#filterCollapsables\' + idExtra"\n\t\t\t\t:filters="!sideMenu ? (availableFilters || []) : []"\n\t\t\t\t:columns="columnsForFilter"\n\t\t\t\t:fields="filterFields || []"\n\t\t\t\t@switch-filter="switchFilter"\n\t\t\t\t@apply-filter-config="applyFilterConfig"\n\t\t\t\t@save-custom-filter="handlerSaveCustomFilter"\n\t\t\t\tv-collapse-auto-close\n\t\t\t></filter-config>\n\t\t\t<div\n\t\t\t\tv-else-if="$slots.filter"\n\t\t\t\t:id="\'collapseFilters\' + idExtra"\n\t\t\t\tclass="card-body collapse"\n\t\t\t\t:data-bs-parent="\'#filterCollapsables\' + idExtra"\n\t\t\t\tv-collapse-auto-close\n\t\t\t\t>\n\t\t\t\t<slot name="filter"></slot>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Tabulator --\x3e\n\t\t<div ref="table" :id="\'filterTableDataset\' + idExtra" class="filter-table-dataset"></div>\n\t'};var _={getVorlagen:()=>({method:"get",url:"api/frontend/v1/vorlagen/vorlagen/getVorlagen/"}),getVorlagenByLoggedInUser:()=>({method:"get",url:"api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/"})},$={components:{FormForm:a,FormInput:l,CoreFilterCmpt:y},props:{label:{type:String,required:!0},isAdmin:{type:Boolean,required:!1},useLoggedInUserOe:{type:Boolean,required:!1}},data:()=>({vorlagen:[],selectedValue:null,vorlagenOe:[]}),methods:{updateValue(){this.$emit("change",this.selectedValue)},setValue(t){this.selectedValue=t}},created(){this.isAdmin&&this.$api.call(_.getVorlagen()).then(t=>{this.vorlagen=t.data}).catch(this.$fhcAlert.handleSystemError),this.useLoggedInUserOe&&this.$api.call(_.getVorlagenByLoggedInUser()).then(t=>{this.vorlagenOe=t.data}).catch(this.$fhcAlert.handleSystemError)},template:'\n\t<div class="core-vorlagen-dropdown">\n\t\t<div v-if="isAdmin" class="col-sm-12 pt-2">\n\t\t\t<form-input\n\t\t\t\tref="dropdown"\n\t\t\t\ttype="select"\n\t\t\t\t:label="label"\n\t\t\t\t@change="updateValue"\n\t\t\t\tv-model="selectedValue"\n\t\t\t\t>\n\t\t\t\t<option \n\t\t\t\t\tv-for="vorlage in vorlagen" \n\t\t\t\t\t:key="vorlage.vorlage_kurzbz" \n\t\t\t\t\t:value="vorlage.vorlage_kurzbz" \n\t\t\t\t\t>\n\t\t\t\t\t{{vorlage.bezeichnung}}\n\t\t\t\t</option>\n\t\t\t</form-input>\n\t\t</div>\n\t\t\n\t\t<div v-if="useLoggedInUserOe" class="col-sm-12 pt-2">\n\t\t\t<form-input\n\t\t\t\tref="dropdown"\n\t\t\t\ttype="select"\n\t\t\t\t:label="label"\n\t\t\t\t@change="updateValue"\n\t\t\t\tv-model="selectedValue"\n\t\t\t\t>\n\t\t\t\t<option \n\t\t\t\t\tv-for="vorlage in vorlagenOe" \n\t\t\t\t\t:key="vorlage.id" \n\t\t\t\t\t:value="vorlage.id" \n\t\t\t\t\t>\n\t\t\t\t\t{{vorlage.description}}\n\t\t\t\t</option>\n\t\t\t</form-input>\n\t\t</div>\n\t</div>\n\t'},F={getMessages:t=>({method:"get",url:"api/frontend/v1/messages/messages/getMessages/"+t.id+"/"+t.type+"/"+t.size+"/"+t.page}),getVorlagen:()=>({method:"get",url:"api/frontend/v1/messages/messages/getVorlagen/"}),getMsgVarsLoggedInUser:()=>({method:"get",url:"api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/"}),getMessageVarsPerson:(t,e)=>({method:"post",url:"api/frontend/v1/messages/messages/getMessageVarsPerson/"+e,params:{ids:t}}),getMsgVarsPrestudent:(t,e)=>({method:"post",url:"api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+e,params:{ids:t}}),getPersonId:t=>({method:"post",url:"api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id}),getDataVorlage:t=>({method:"get",url:"api/frontend/v1/messages/messages/getDataVorlage/"+t}),getNameOfDefaultRecipients:(t,e)=>({method:"post",url:"api/frontend/v1/messages/messages/getNameOfDefaultRecipients/"+e,params:{ids:t}}),getPreviewText:(t,e)=>({method:"post",url:"api/frontend/v1/messages/messages/getPreviewText/"+t,params:e}),getReplyData:t=>({method:"get",url:"api/frontend/v1/messages/messages/getReplyData/"+t}),sendMessage:(t,e)=>({method:"post",url:"api/frontend/v1/messages/messages/sendMessage/"+t,params:e}),deleteMessage:t=>({method:"post",url:"api/frontend/v1/messages/messages/deleteMessage/"+t})},C={name:"ComponentNewMessages",components:{FormForm:a,FormInput:l,ListBox:t,DropdownComponent:$},props:{openMode:String,typeId:String,id:{type:Array,required:!1},messageId:{type:Number,required:!1}},data:()=>({formData:{recipient:null,subject:null,body:null,vorlage_kurzbz:null,selectedValue:"",relationmessage_id:null},statusNew:!0,vorlagen:[],recipientsArray:[],defaultRecipient:null,defaultRecipients:[],defaultRecipientString:null,editor:null,isVisible:!1,fieldsUser:[],fieldsPerson:[],fieldsPrestudent:[],selectedFieldPrestudent:null,selectedFieldUser:null,selectedFieldPerson:null,itemsPrestudent:[],itemsPerson:[],itemsUser:[],previewText:null,previewBody:"",replyData:null,messageSent:!1}),methods:{initTinyMCE(){const t=this;tinymce.init({target:this.$refs.editor.$refs.input,toolbar:"styleselect | bold italic underline | alignleft aligncenter alignright alignjustify",style_formats:[{title:"Blocks",block:"div"},{title:"Paragraph",block:"p"},{title:"Heading 1",block:"h1"},{title:"Heading 2",block:"h2"},{title:"Heading 3",block:"h3"},{title:"Heading 4",block:"h4"},{title:"Heading 5",block:"h5"},{title:"Heading 6",block:"h6"}],autoresize_bottom_margin:16,setup:e=>{t.editor=e,e.on("input",()=>{const n=e.getContent();t.formData.body=n})}})},updateText(t){this.formData.body=t},sendMessage(){const t=new FormData;return t.append("data",JSON.stringify(this.formData)),t.append("ids",JSON.stringify(this.id)),this.$api.call(F.sendMessage(this.typeId,t)).then(t=>{this.$fhcAlert.alertSuccess(this.$p.t("ui","successSent")),this.hideTemplate(),this.resetForm(),this.messageSent=!0}).catch(this.$fhcAlert.handleSystemError).finally(()=>{"inSamePage"==this.openMode&&1==this.id.length&&this.$emit("reloadTable")})},getDataVorlage(t){return this.$api.call(F.getDataVorlage(t)).then(t=>{this.formData.body=t.data.text,this.formData.subject=t.data.subject}).catch(this.$fhcAlert.handleSystemError)},getPreviewText(){console.log("subj"+this.formData.subject);const t=new FormData;return t.append("data",JSON.stringify(this.formData.body)),t.append("ids",JSON.stringify(this.id)),console.log("subj"+this.formData.subject),this.$api.call(F.getPreviewText(this.typeId,t)).then(t=>{const e=t.data;this.previewText=e[this.defaultRecipient]}).catch(this.$fhcAlert.handleSystemError).finally(()=>{})},insertVariable(t){this.editor?(this.editor.insertContent(t.value+" "),this.editor.fire("input"),this.editor.fire("change"),this.editor.setDirty(!0),this.editor.save()):console.error(this.$p.t("messages","errorEditorNotAvailable"))},resetForm(){this.formData={vorlage_kurzbz:null,body:null,subject:null,recipient:null,selectedValue:null},this.editor&&this.editor.setContent(""),this.previewBody=null},toggleDivNewMessage(){this.isVisible=!this.isVisible},handleSelectedVorlage(t){"string"==typeof t&&this.getDataVorlage(t)},hideTemplate(){"inSamePage"==this.openMode&&(this.isVisible=!1)},showTemplate(){"inSamePage"==this.openMode&&(this.isVisible=!0,this.messageSent=!1)},showPreview(){this.getPreviewText().then(()=>{this.previewBody=this.previewText})},loadReplyData(t){this.$api.call(F.getReplyData(t)).then(e=>{this.replyData=e.data,this.formData.subject=this.replyData[0].replySubject,this.formData.body=this.replyData[0].replyBody,this.formData.relationmessage_id=t}).catch(this.$fhcAlert.handleSystemError)}},watch:{"formData.body":{handler(t){const e=this.editor.getContent();t&&e!=t&&this.editor.setContent(t)}},"formData.vorlage_kurzbz":{handler(t){if(t&&null!=t)return this.formData.subject=t,this.getDataVorlage(t)}}},created(){const t=[];this.typeId||t.push(this.$p.t("messages","errorMissingOrInvalidParameterRecipientTypeId")),(!this.id||this.id.length<1)&&t.push(this.$p.t("messages","errorMissingOrInvalidParameterRecipientIds")),t.length>0?this.$fhcAlert.alertMultiple(t,"warn","Warning",!0):("person_id"!=this.typeId&&"mitarbeiter_uid"!=this.typeId||this.$api.call(F.getMessageVarsPerson(this.id,this.typeId)).then(t=>{this.fieldsPerson=t.data;const e=this.fieldsPerson[0];this.itemsPerson=Object.entries(e).map(([t,e])=>({label:t.toLowerCase(),value:"{"+t.toLowerCase()+"}"}))}).catch(this.$fhcAlert.handleSystemError),"prestudent_id"!=this.typeId&&"uid"!=this.typeId||this.$api.call(F.getMsgVarsPrestudent(this.id,this.typeId)).then(t=>{this.fieldsPrestudent=t.data;const e=this.fieldsPrestudent[0];this.itemsPrestudent=Object.entries(e).map(([t,e])=>({label:t.toLowerCase(),value:"{"+t.toLowerCase()+"}"}))}).catch(this.$fhcAlert.handleSystemError),this.$api.call(F.getMsgVarsLoggedInUser()).then(t=>{this.fieldsUser=t.data;const e=this.fieldsUser;this.itemsUser=Object.entries(e).map(([t,e])=>({label:e,value:"{"+e+"}"}))}).catch(this.$fhcAlert.handleSystemError),this.$api.call(F.getNameOfDefaultRecipients(this.id,this.typeId)).then(t=>{this.defaultRecipients=t.data,this.defaultRecipientString=Object.values(this.defaultRecipients).join("; ")}).catch(this.$fhcAlert.handleSystemError),null!=this.messageId&&this.loadReplyData(this.messageId))},async mounted(){this.initTinyMCE()},beforeDestroy(){this.editor.destroy()},template:'\n\n\t<div class="messages-detail-newmessage-newdiv">\n\t\t\t\x3c!--new page--\x3e\n\t\t\t<div v-if="!messageSent" ref="divNewMessage" class="overflow-auto m-3">\n\t\t\t\t<h4>{{ $p.t(\'messages\', \'neueNachricht\') }}</h4>\n\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t<form-form class="row g-3 mt-2" ref="formMessage">\n\n\t\t\t\t\t\t\t<div class="row mb-3">\n\n\t\t\t\t\t\t\t\t<form-input\n\t\t\t\t\t\t\t\t\ttype="text"\n\t\t\t\t\t\t\t\t\tname="recipient"\n\t\t\t\t\t\t\t\t\t:label="$p.t(\'messages/recipient\')"\n\t\t\t\t\t\t\t\t\tv-model="defaultRecipientString"\n\t\t\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</form-input>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class="row mb-3">\n\t\t\t\t\t\t\t\t<form-input\n\t\t\t\t\t\t\t\t\ttype="text"\n\t\t\t\t\t\t\t\t\tname="subject"\n\t\t\t\t\t\t\t\t\t:label="$p.t(\'global/betreff\') + \' *\'"\n\t\t\t\t\t\t\t\t\tv-model="formData.subject"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</form-input>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!--Tiny MCE--\x3e\n\t\t\t\t\t\t\t<div class="row mb-3">\n\t\t\t\t\t\t\t\t<form-input\n\t\t\t\t\t\t\t\t\tref="editor"\n\t\t\t\t\t\t\t\t\t:label="$p.t(\'global\',\'nachricht\') + \' *\'"\n\t\t\t\t\t\t\t\t\ttype="textarea"\n\t\t\t\t\t\t\t\t\tv-model="formData.body"\n\t\t\t\t\t\t\t\t\tname="text"\n\t\t\t\t\t\t\t\t\trows="15"\n\t\t\t\t\t\t\t\t\tcols="75"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</form-input>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t<DropdownComponent\n\t\t\t\t\t\t\t\t\tref="dropdownComp"\n\t\t\t\t\t\t\t\t\t:label="$p.t(\'global/vorlage\')"\n\t\t\t\t\t\t\t\t\t@change="handleSelectedVorlage"\n\t\t\t\t\t\t\t\t\tuseLoggedInUserOe\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t</DropdownComponent>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t</form-form>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class="col-sm-4">\n\t\t\t\t\t\t<div v-if="this.fieldsPrestudent.length > 0" class="mt-3">\n\t\t\t\t\t\t\t<strong>{{$p.t(\'ui\', \'felder\')}} {{$p.t(\'lehre\', \'prestudent\')}}</strong>\n\n\t\t\t\t\t\t\t<list-box\n\t\t\t\t\t\t\t\tv-model="selectedFieldPrestudent"\n\t\t\t\t\t\t\t\t:options="itemsPrestudent"\n\t\t\t\t\t\t\t\toptionLabel="label"\n\t\t\t\t\t\t\t\tlistStyle="max-height:250px"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t <template #option="slotProps">\n\t\t\t\t\t\t\t\t<div @dblclick="insertVariable(slotProps.option)">\n\t\t\t\t\t\t\t\t {{ slotProps.option.label }}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t </template>\n\t\t\t\t\t\t\t</list-box>\n\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\t<div v-if="this.fieldsPerson.length > 0" class="mt-3">\n\t\t\t\t\t\t\t<strong>Felder Person</strong>\n\n\t\t\t\t\t\t\t<list-box\n\t\t\t\t\t\t\t\tv-model="selectedFieldPerson"\n\t\t\t\t\t\t\t\t:options="itemsPerson"\n\t\t\t\t\t\t\t\toptionLabel="label"\n\t\t\t\t\t\t\t\tlistStyle="max-height:250px"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<template #option="slotProps">\n\t\t\t\t\t\t\t\t\t<div @dblclick="insertVariable(slotProps.option)">\n\t\t\t\t\t\t\t\t\t {{ slotProps.option.label }}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t </template>\n\t\t\t\t\t\t\t</list-box>\n\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<strong>{{$p.t(\'messages\', \'meineFelder\')}}</strong>\n\n\t\t\t\t\t\t\t<list-box\n\t\t\t\t\t\t\t\tv-model="selectedFieldUser"\n\t\t\t\t\t\t\t\t:options="itemsUser"\n\t\t\t\t\t\t\t\toptionLabel="label"\n\t\t\t\t\t\t\t\tlistStyle="max-height:200px"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<template #option="slotProps">\n\t\t\t\t\t\t\t\t\t<div @dblclick="insertVariable(slotProps.option)">\n\t\t\t\t\t\t\t\t\t {{ slotProps.option.label }}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t </template>\n\t\t\t\t\t\t\t</list-box>\n\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<br>\n\n\t\t\t\t\t\t<div class="d-grid gap-2 d-md-flex justify-content-md-end">\n\n\t\t\t\t\t\t\t<button class="btn btn-secondary" @click="resetForm">{{$p.t(\'ui\', \'reset\')}}</button>\n\n\t\t\t\t\t\t\t<button v-if="statusNew" type="button" class="btn btn-primary" @click="sendMessage()">{{$p.t(\'ui\', \'nachrichtSenden\')}}</button>\n\t\t\t\t\t\t\t<button v-else type="button" class="btn btn-primary" @click="replyMessage(formData.message_id)">{{$p.t(\'global\', \'reply\')}}</button>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\n\t\t\t\t<div class="row mt-4">\n\n\t\t\t\t\t<h4>{{ $p.t(\'global\', \'vorschau\') }}:</h4>\n\t\t\t\t\t<div>\n\t\t\t\t\t\n\t\t\t\t\t\t<form-form class="row g-3 mt-2" ref="formPreview">\n\n\t\t\t\t\t\t\t<div class="col-sm-2 mb-3">\n\t\t\t\t\t\t\t\t<form-input\n\t\t\t\t\t\t\t\t\ttype="select"\n\t\t\t\t\t\t\t\t\tname="recipient"\n\t\t\t\t\t\t\t\t\t:label="$p.t(\'messages/recipient\')"\n\t\t\t\t\t\t\t\t\tv-model="defaultRecipient"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<option :value="null">{{ $p.t(\'messages\', \'recipient\') }}...</option>\n\t\t\t\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t\t\t\tv-for="(name, id) in defaultRecipients"\n\t\t\t\t\t\t\t\t\t\t :key="id" \n\t\t\t\t\t\t\t\t\t\t :value="Number(id)"\n\t\t\t\t\t\t\t\t\t\t> {{name}}\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t</form-input>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class="col-md-2 mt-4">\n\t\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t\t<button type="button" class="btn btn-secondary" @click="showPreview(defaultRecipient)">{{ $p.t(\'ui\', \'btnAktualisieren\') }}</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</form-form>\n\n\t\t\t\t\t\t<div class="col-sm-12 overflow-scroll">\n\t\t\t\t\t\t\t\t<div ref="preview">\n\t\t\t\t\t\t\t\t\t<div v-html="previewBody" class="p-3 border rounded overflow-scroll" style="height: 300px;"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\n\t\t</div>\n\t\t\n\t\t\t\t\t\n\t\t<div v-if="messageSent && openMode!=\'inSamePage\'" class="container d-flex justify-content-center align-items-center m-3">\n\t\t\t<div class="card" style="width: 80%">\n\t\t\t <div class="card-body alert alert-success text-dar p-5 rounded">\n\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t<div class="col-6">\n\t\t\t\t\t\t\t\tMessage sent successfully!\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-6">\n\t\t\t\t\t\t\t\tNachricht erfolgreich versandt!\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t<div class="col-6" style="border-right: 1px">\n\t\t\t\t\t\t\t\tYou can safely close this window.\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-6">\n\t\t\t\t\t\t\t\tSie können dieses Fenster schließen.\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="text-center">\n\t\t\t\t\t<p class="signatureblock">\n\t\t\t\t\t\tFachhochschule Technikum Wien | University of Applied Sciences Technikum Wien\n\t\t\t\t\t\t<br>Hoechstaedtplatz 6, 1200 Wien, AUSTRIA\n\t\t\t\t\t\t<br><a class="signatureblocklink" href="https://www.technikum-wien.at">www.technikum-wien.at</a>\n\t\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t</div>\n\t\t\t\t\t\t\n\n\t\t\t</div>\n\t\n\t</div>\n\n\n\t</div>\n\t'},S={search(t,e){return this.$fhcApi.post("/api/frontend/v1/searchbar/search",t,e)},searchAdvanced(t,e){return this.$fhcApi.post("/api/frontend/v1/searchbar/searchAdvanced",t,e)},searchdummy(t){return this.$fhcApi.post("public/js/apps/api/dummyapi.php/Search",t)}},P={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const n={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",n)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},T={getHeader(t){return this.$fhcApi.get("/api/frontend/v1/navigation/header",{navigation_page:t})},getMenu:function(t){return this.$fhcApi.get("/api/frontend/v1/navigation/menu",{navigation_page:t})}},k={saveCustomFilter(t){return this.$fhcApi.post("/api/frontend/v1/filter/saveCustomFilter",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,customFilterName:t.customFilterName})},removeCustomFilter(t){return this.$fhcApi.post("/api/frontend/v1/filter/removeCustomFilter",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId})},applyFilterFields(t){return this.$fhcApi.post("/api/frontend/v1/filter/applyFilterFields",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterFields:t.filterFields})},addFilterField(t){return this.$fhcApi.post("/api/frontend/v1/filter/addFilterField",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField})},removeFilterField(t){return this.$fhcApi.post("/api/frontend/v1/filter/removeFilterField",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField})},getFilterById(t){return this.$fhcApi.get("/api/frontend/v1/filter/getFilter",{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId})},getFilter(t){return this.$fhcApi.get("/api/frontend/v1/filter/getFilter",{filterUniqueId:t.filterUniqueId,filterType:t.filterType})}},E={abmeldung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n},{errorHandling:"strict"})},cancel(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t.studierendenantrag_id},{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t})}},unterbrechung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n,r,i){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:r,attachment:i},{errorHandling:"strict"})},cancel(t){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:t},{errorHandling:"strict"})}},wiederholung:{getDetails(t){const e="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t;return this.$fhcApi.get(e)},getLvs(t){const e="/api/frontend/v1/studstatus/wiederholung/getLvs/"+t;return this.$fhcApi.get(e)},create(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},cancel(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},saveLvs(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:t,mandatoryLvs:e})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(t,e,n){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+t).then(t=>t.data)},getHistory(t){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+t)},getPrestudents(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:t},{signal:e,timeout:3e4})},approve(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t)},reject(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t)},reopen(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t)},pause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t)},unpause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t)},object(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t)},approveObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t)},denyObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t)}}},w={getView:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/getView/${t}`,{})},fotoSperre:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/fotoSperre/${t}`,{})},isStudent:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/isStudent",{uid:t})},isMitarbeiter:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/isMitarbeiter/${t}`,{})},getZustellAdresse:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/getZustellAdresse",{})},getZustellKontakt:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/getZustellKontakt",{})},getGemeinden:function(t,e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/getGemeinden/${t}/${e}`,{})},getAllNationen:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/getAllNationen",{})}},D={
//! API calls for profil update requests
getStatus:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getStatus",{})},getTopic:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getTopic",{})},acceptProfilRequest:function({profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:i}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",{profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:i})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:n,status_message:r}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/denyProfilRequest",{profil_update_id:t,uid:e,topic:n,status_message:r})},insertFile:function(t,e=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,t)},getProfilRequestFiles:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`,{})},selectProfilRequest:function(t=null,e=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...t?{uid:t}:{},...e?{id:e}:{}})},insertProfilRequest:function(t,e,n=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/insertProfilRequest",{topic:t,payload:e,...n?{fileID:n}:{}})},updateProfilRequest:function(t,e,n,r=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/updateProfilRequest",{topic:t,payload:e,ID:n,...r?{fileID:r}:{}})},deleteProfilRequest:function(t){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",{requestID:t})}},z={getRoomInfo(t,e,n){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:n})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,n){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:n})},getLvPlanReservierungen(t,e){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:t,end_date:e})},getLehreinheitStudiensemester(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${t}`,{})},studiensemesterDateInterval(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${t}`,{})},LvPlanEvents(t,e,n){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:n})}},O={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(t){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:t})}}},students:{uid(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},prestudent(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},person(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},verband(t){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+t)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(t){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:t})}},konto:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/konto/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id),only_open:e.filter,studiengang_kz:e.studiengang_kz_intern?e.stg_kz:""}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},checkDoubles(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/checkDoubles",e,{confirmErrorHandler:t=>!0})},insert(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/insert",e)},counter(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",t)},edit(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/update",e)},delete(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:t})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+n.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+n.id)},addNewAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,n)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,n)},deleteAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:t})},getPlaces(t){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+t)},getFirmen(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+t)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+n.id)},addNewBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,n)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,n)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+n.id)},addNewContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,n)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,n)},deleteContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:t})},getStandorteByFirma(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+t)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(t,e){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e))},updatePrestudent(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,n)},getBezeichnungZGV(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungZGV/")},getBezeichnungMZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungMZgv/")},getBezeichnungDZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungDZgv/")},getStgs(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStgs/")},getAusbildung(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAusbildung/")},getAufmerksamdurch(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAufmerksamdurch/")},getBerufstaetigkeit(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBerufstaetigkeit/")},getTypenStg(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getTypenStg/")},getBisstandort(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBisstandort/")},getHistoryPrestudent(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+n.id)},getMaxSem(t){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:t})},advanceStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+n+"/"+r)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+n+"/"+r)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+n+"/"+r)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+n.id)}},status:{insertStatus(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,n)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+n+"/"+r)},updateStatus(t,{prestudent_id:e,status_kurzbz:n,studiensemester_kurzbz:r,ausbildungssemester:i},s){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+n+"/"+r+"/"+i,s)},getStudienplaene(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+t)},getStudiengang(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+t)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+t,e,{errorHeader:t})},changeStatus(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+t,e,{errorHeader:t})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(t,e){let n="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(n)},save(t,e,n,r){let i="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(n);return this.$fhcApi.post(t,i,r)}},exam:{getPruefungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+n.id)},loadPruefung(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+t)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",t)},getLvsByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+t)},getLvsandLesByStudent(t,e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+t+"/"+e)},getLvsAndMas(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+t)},getMitarbeiterLv(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",t)},addPruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/insertPruefung/",e)},updatePruefung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,n)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+n.id)},addNewAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",e)},loadAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:t})},updateAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",e)},deleteAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:t})},getTypenAbschlusspruefung(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/")},getTypenAntritte(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/")},getBeurteilungen(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/")},getAkadGrade(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:t})},getTypStudiengang(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:t})},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+t)},getPruefer(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:t})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(t,e){let n="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getTeacherProposal(t,e){let n="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getRepeaterGrades(t,e){let n="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r},{errorHeader:i})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:t,lv_bezeichnung:e}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:t},{errorHeader:e})},getGradeFromPoints(t,e,n,r){const i=r?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:n},i)}},mobility:{getMobilitaeten(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+n.id)},getProgramsMobility(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getProgramsMobility/")},addNewMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/insertMobility/",e)},loadMobility(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+t)},updateMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/updateMobility/",e)},deleteMobility(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+t)},getLVList(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+t)},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",t)},getLvsandLesByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+t)},getPurposes(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+n.id)},getSupports(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+n.id)},getListPurposes(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListPurposes/")},getListSupports(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListSupports/")},deleteMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+t.bisio_id,t)},addMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+t.bisio_id,t)},deleteMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+t.bisio_id,t)},addMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+t.bisio_id,t)}},archiv:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/archiv/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id)}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(t){return this.$fhcApi.post("api/frontend/v1/documents/archive",t)},archiveSigned(t){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",t)},update(t){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",t)},delete({akte_id:t,studiengang_kz:e}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:t,studiengang_kz:e})}},documents:{getDocumentsUnaccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+n.id+"/"+n.studiengang_kz)},getDocumentsAccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+n.id+"/"+n.studiengang_kz)},deleteZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},createZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},loadAkte(t){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+t)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+t,e)},deleteFile(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+t)},uploadFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+t,e)}},exemptions:{getAnrechnungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+n.id)},getLehrveranstaltungen(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+t)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+t)},getLektoren(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+t)},addNewAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",e)},loadAnrechnung(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+t)},editAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",e)},deleteAnrechnung(t){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+t)}},jointstudies:{getStudies(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+n.id)},getTypenMobility(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/")},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/")},getStudyprograms(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/")},getListPartner(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/")},getStatiPrestudent(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/")},loadStudy(t){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+t)},insertStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",e)},updateStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",e)},deleteStudy(t){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+t)}},courselist:{getCourselist(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+n.student_uid+"/"+n.start_date+"/"+n.end_date+"/"+n.group_consecutiveHours+"/"+n.dbStundenplanTable)},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStudiensemester/")}},configStudent(){return this.$fhcApi.get("api/frontend/v1/stv/config/student")},configStudents(){return this.$fhcApi.get("api/frontend/v1/stv/config/students")}},N={getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,n)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,n)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+t)},isBerechtigt(t,e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}},j={getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPrestudent/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPrestudent/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPrestudent/getMitarbeiter/"+t)}},R={getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizMitarbeiter/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizMitarbeiter/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizMitarbeiter/getMitarbeiter/"+t)}},B={getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/NotizProjekt/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/NotizProjekt/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/NotizProjekt/getMitarbeiter/"+t)}},x={person:N,prestudent:j,mitarbeiter:R,anrechnung:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizAnrechnung/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizAnrechnung/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizAnrechnung/getMitarbeiter/"+t)}},bestellung:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizBestellung/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizBestellung/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizBestellung/getMitarbeiter/"+t)}},lehreinheit:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizLehreinheit/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizLehreinheit/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizLehreinheit/getMitarbeiter/"+t)}},projekt:B,projektphase:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjektphase/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjektphase/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjektphase/getMitarbeiter/"+t)}},projekttask:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjekttask/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjekttask/getUid/")},addNewNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/addNewNotiz/"+t,e)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/updateNotiz/"+t,e)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjekttask/getMitarbeiter/"+t)}}},L={person:{getAllBetriebsmittel(t,e,n){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+n.type+"/"+n.id)},addNewBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,n)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,n)},deleteBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+t)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(t){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+t)}}},H={updatePersonUnrulyStatus(t,e){try{const n={person_id:t,unruly:e},r="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(r,n,null)}catch(t){throw t}},filterPerson(t,e=""){try{const n=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(n,t)}catch(t){throw t}}},V={getContentID(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/ContentID",{ort_kurzbz:t})},getRooms(t,e,n,r,i=0){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getRooms",{datum:t,von:e,bis:n,typ:r,personenanzahl:i})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},M={content(t,e=null,n=null,r=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...n?{sprache:n}:{},...r?{sichtbar:r}:{}})},getNews(t=1,e=10,n){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:n})},news(t){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:t})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},I={getStudentenMail(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Lehre/lvStudentenMail",{lehreinheit_id:t})},getLvInfo(t,e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/LV/${t}/${e}`,{})},getStudentPruefungen(t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/Pruefungen/${t}`,{})}},J={getLvMenu(t,e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/LvMenu/getLvMenu/${t}/${e}`,{})}},U={person:{getMessages(t,e,n){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+n.id+"/"+n.type+"/"+n.size+"/"+n.page)},getVorlagen(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getVorlagen/")},getMsgVarsLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/")},getMessageVarsPerson(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+t.id+"/"+t.type_id)},getMsgVarsPrestudent(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+t.id+"/"+t.type_id)},getPersonId(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id)},getUid(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+t.id+"/"+t.type_id)},getDataVorlage(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+t)},getNameOfDefaultRecipient(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+t.id+"/"+t.type_id)},getPreviewText(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+t.id+"/"+t.type_id,e)},getReplyData(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+t)},sendMessageFromModalContext(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,n)},sendMessage(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+t,e)},deleteMessage(t){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+t)}}},G={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},q={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,n=void 0,r=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:n,studienplan:r})},getStudiengaengeForStudienSemester:function(t){return this.$fhcApi.get(`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${t}`,{})},getStudienplaeneBySemester:function(t,e){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienplaeneBySemester",{studiengang:t,studiensemester:e})},getLvPlanForStudiensemester:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${t}/${e}`,{})},getLvEvaluierungInfo:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/Studium/getLvEvaluierungInfo/${t}/${e}`,{})}},W={search:S,phrasen:P,navigation:T,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:k,studstatus:E,profil:w,profilUpdate:D,lvPlan:z,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(t){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${t}`,{})},update:function({bookmark_id:t,url:e,title:n,tag:r=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:n})},insert:function({url:t,title:e,tag:n}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:n})}},stv:O,notiz:x,betriebsmittel:L,checkperson:H,ampeln:{open:function(){return this.$fhcApi.get("/api/frontend/v1/Ampeln/open",{})},all:function(){return this.$fhcApi.get("/api/frontend/v1/Ampeln/all",{})},confirm:function(t){return this.$fhcApi.get(`/api/frontend/v1/Ampeln/confirm/${t}`,{})}},ort:V,cms:M,lehre:I,addons:J,messages:U,vorlagen:G,addons:J,studiengang:{studiengangInformation:function(){return this.$fhcApi.get("/api/frontend/v1/Studgang/getStudiengangInfo",{})},getStudiengangByKz:function(t){return this.$fhcApi.get("/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz",{studiengang_kz:t})}},menu:{getMenu:function(){return this.$fhcApi.get("/api/frontend/v1/CisMenu/getMenu",{})}},authinfo:{getAuthUID(){return this.$fhcApi.get("/api/frontend/v1/AuthInfo/getAuthUID",{})},getAuthInfo(){return this.$fhcApi.get("/api/frontend/v1/AuthInfo/getAuthInfo",{})}},vertraege:{person:{getAllVertraege(t,e,n){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllVertraege/"+n.person_id)},getAllContractsNotAssigned(t,e,n){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/"+n.person_id)},getAllContractsAssigned(t,e,n){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsAssigned/"+n.person_id+"/"+n.vertrag_id)},getAllContractsNotAssigned2(t){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/"+t)},getStatiOfContract(t,e,n){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getStatiOfContract/"+n.vertrag_id)},getAllContractTypes(){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractTypes/")},getAllContractStati(){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractStati/")},addNewContract(t,e){return this.$fhcApi.post(t,"api/frontend/v1/vertraege/vertraege/addNewContract/",e)},loadContract(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/loadContract/"+t)},updateContract(t,e){return this.$fhcApi.post(t,"api/frontend/v1/vertraege/vertraege/updateContract/",e)},deleteContract(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/deleteContract/"+t)},loadContractStatus(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/loadContractStatus/"+t.vertrag_id,t)},insertContractStatus(t,e){return this.$fhcApi.post(t,"api/frontend/v1/vertraege/vertraege/insertContractStatus/"+e.vertrag_id,e)},updateContractStatus(t,e){return this.$fhcApi.post(t,"api/frontend/v1/vertraege/vertraege/updateContractStatus/"+e.vertrag_id,e)},deleteContractStatus(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/deleteContractStatus/"+t.vertrag_id,t)},deleteLehrauftrag(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/deleteLehrauftrag/"+t.vertrag_id,t)},deleteBetreuung(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/deleteBetreuung/"+t.vertrag_id,t)},getMitarbeiter(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/getMitarbeiter/")},getHeader(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/getHeader/"+t)},getPersonAbteilung(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/getPersonAbteilung/"+t)},getLeitungOrg(t){return this.$fhcApi.post("api/frontend/v1/vertraege/vertraege/getLeitungOrg/"+t)},getMitarbeiterUid(t){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getMitarbeiterUid/"+t)}},configPrintDocument(){return this.$fhcApi.get("api/frontend/v1/vertraege/config/printDocument")}},studium:q,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},Z={install:(t,e)=>{if(t.config.globalProperties.$fhcApi)return void(e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory.addEndpoints(e.factory)));function n(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function r(t){const e=t.data;return delete t.data,e.meta?e.meta.response=t:e.meta={response:t},e}FHC_JS_DATA_STORAGE_OBJECT.app_root,FHC_JS_DATA_STORAGE_OBJECT.ci_router;const i=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});i.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),i.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),r(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),i.getUri({url:t})),get:(t,e,r,s)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,r,s]=n(t,e,r,s),r&&(s?s.params=r:s={params:r}),i.get(e,s)),post:(t,e,r,s)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,r,s]=n(t,e,r,s),i.post(e,r,s)),_defaultErrorHandlers:{validation(e,n){const r=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(r.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>r.alertDefault("error",t,e,!0)),!1)},general(e,n){const r=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n.alertSystemError(r)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var r="";r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),n.alertSystemError(r)},db(e){const n=t.config.globalProperties.$fhcAlert;var r="";void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),n.alertSystemError(r)},auth(e,n){const r=t.config.globalProperties.$fhcAlert;var i="";i+="Controller name: "+e.controller+"\n",i+="Method name: "+e.method+"\n",i+="Required permissions: "+e.required_permissions,n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertDefault("error",e.message,i)}}};class s{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,r,i)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,r,i)),post:(e,n,r,i)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,r,i))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e,!0)}addEndpoints(t,e){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new s(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const a=new s(W);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),a.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=a,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}},K={install:(t,e)=>{if(t.config.globalProperties.$api)return;function n(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,n])=>n.forEach(n=>e(n,t)))}t.config.globalProperties.$fhcAlert||t.use(pt);let r={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(t,e){t.clearValidation(),e.forEach(e=>t.setFeedback(!1,e.messages||e.message))},async toast(e){const n=t.config.globalProperties.$p;if(!n)return Promise.reject("Phrasen plugin not loaded!");async function r(t){t=t.reduce((t,e)=>{switch(e.type){case"not_found":case"site_failed":e.message?t[e.message]=[e.url]:t._default=[e.url];break;case"general":t._default||(t._default=[]),t._default.push(e.message);break;case"validation":Object.entries(e.messages).forEach(([e,n])=>{t[e]||(t[e]=[]),Array.isArray(n)?t[e].push(...n):t[e].push(n)})}return t},{});let e=0;const r=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,r])=>{if("_default"==t){await n.loadCategory("dashboard");t='<dt class="d-none">'+n.t("dashboard/general")+"</dt>"}else t="<dt>"+t+"</dt>";return e+=r.length,t+"<dd>"+r.join("</dd><dd>")+"</dd>"}));return{counter:e,msgs:r}}let i,s;Array.isArray(e)?({counter:i,msgs:s}=await r(e)):({counter:i,msgs:s}=await Object.entries(e).reduce(async(t,[e,n])=>{const i=await t,{counter:s,msgs:a}=await r(n);return i.counter+=s,i.msgs.push("<dt>"+e+"</dt><dd><dl>"+a.join("")+"</dl></dd>"),i},Promise.resolve({counter:0,msgs:[]}))),await n.loadCategory("ui");const a=n.t("ui/n_errors",{n:i});t.config.globalProperties.$fhcAlert.alertDefault("error",a,"<dl>"+s.join("")+"</dl>",!0,!0)},php(e){n(e,(e,n)=>{var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",n,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",n,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n&&(r=n+"\n\n"+r),t.config.globalProperties.$fhcAlert.alertSystemError(r)}})},exception(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},db(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},auth(e){n(e,(e,n)=>{n?n+=": "+e.message:n=e.message;var r="";r+="Controller name: "+e.controller+"\n",r+="Method name: "+e.method+"\n",r+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",n,r,!0)})}}};function i(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function s(t){if("string"==typeof t.data||t.data instanceof String)return s({data:t});const e=t.data;return delete t.data,e?(e.meta?e.meta.response=t:e.meta={response:t},e):{meta:{response:t},data:null}}function a(t){if(!1===t||"off"===t)return{...r,success:!1,fail:!1};if(!t||!0===t)return{...r};if("success"===t)return{...r,fail:!1};if("fail"===t)return{...r,success:!1};const{success:e,fail:n,handler:i,combine:s}=t;return t={...r},Object.entries({fail:n,success:e}).forEach(([e,n])=>{void 0!==n&&(t[e]=n)}),Object.entries({handler:i,combine:s}).forEach(([e,n])=>{void 0!==n&&(t[e]={...t[e],...n})}),t}function o(t){const e=a(t?.errorHandling);if(t?.form){const n=e.handler.form;e.handler={...e.handler,form:e=>n(t.form,e)}}else e.combine={...e.combine,form:[]};return e}function l(t){return t.response?404==t.response.status?[{type:"not_found",message:t.message,url:t.request.responseURL}]:null==t.response.data.errors?[]:t.response.data.errors:t.request?[{type:"site_failed",message:t.message,url:t.request.responseURL}]:[{type:"script",message:t.message}]}function d(t,e){const n={},r=[];if(null==e)return{};for(;e.length;)r.push(e.pop());for(var i of r){let r=i.type,a=null;for(var s in t.combine){let e=t.combine[s].includes(r),n=t.handler[s];if(e&&n&&(a=s,"form"==a))break}a&&(r=a);t.handler[r]?(n[r]||(n[r]=[]),Array.isArray(i)?n[r].push(...i):n[r].push(i)):e.push(i)}return n}void 0!==e?.errorHandling&&(r=a(e.errorHandling));const p=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});p.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),p.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[n.type])(n,e.config))),s(e)),t=>{if("ERR_CANCELED"==t.code)return Promise.reject({handled:!0,...t});const e=o(t.config);if(!e.fail)return Promise.reject(t);const n=l(t),r=d(e,n);for(var i in r)e.handler[i](r[i]);return n.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>p.getUri({url:t}),get:(t,e,n,r)=>([e,n,r]=i(t,e,n,r),n&&(r?r.params=n:r={params:n}),p.get(e,r)),post:(t,e,n,r)=>([e,n,r]=i(t,e,n,r),p.post(e,n,r)),call(e,n,r){if(Array.isArray(e)){const s=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),s.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=i(r,void 0,void 0,n||{}),s=o(e);if(!s.success&&!s.fail)return t;const a={};for(var p of t){const[t,e]="fulfilled"===p.status?[s.success,p.value]:[s.fail,p.reason];if(!t)return;const n=d(s,l(e));for(var u in n)a[u]?a[u][e.config.errorHeader]=n[u]:a[u]={[e.config.errorHeader]:n[u]}}for(var c in a)s.handler[c](a[c]);return t})}let{method:s,url:a,params:p,config:u}=e;return void 0!==n&&(u=n),s||(s="get"),s.toLowerCase&&(s=s.toLowerCase()),"get"==s?this.get(r,a,p,u):"post"==s?this.post(r,a,p,u):void console.error("FhcApi: method not allowed:",s)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},X={loadCategory:t=>({method:"get",url:"/api/frontend/v1/phrasen/loadModule/"+t}),setLanguage:(t,e)=>({method:"post",url:"/api/frontend/v1/phrasen/setLanguage",params:{categories:t,language:e}}),getLanguage:()=>({method:"get",url:"/api/frontend/v1/phrasen/getLanguage"}),getActiveDbLanguages:()=>({method:"get",url:"/api/frontend/v1/phrasen/getAllLanguages"})};const Y=Vue.reactive({}),Q={};let tt=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),et=Vue.computed(()=>tt.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==tt.value).LC_Time:null);const nt={user_language:tt,user_locale:et,setLanguage(t){const e=Object.keys(Y);return this.config.globalProperties.$api.call(X.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{Y[t.category][t.phrase]=t.text}),tt.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(Q[t]||(Q[t]=this.config.globalProperties.$api.call(X.loadCategory(t)).then(e=>e?.data?function(t,e){return t.filter(t=>t.category==e).reduce((t,e)=>(t[e.phrase]||(t[e.phrase]=e.text),t),{})}(e.data,t):{}).then(e=>{Y[t]=e})),Q[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let r=Vue.computed(()=>Y[t]?function(t,e,n){let r=Y[t][e];return r?(n&&(r=r.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),r):"<< PHRASE "+e+">>"}(t,e,n):"");return Y[t]||this.loadCategory(t),r.value}};var rt={install(t,e){t.config.globalProperties.$fhcApi||t.use(Z),t.config.globalProperties.$api||t.use(K),t.config.globalProperties.$p={t:nt.t,loadCategory:e=>nt.loadCategory.call(t,e),setLanguage:e=>nt.setLanguage.call(t,e),user_language:tt,user_locale:et,t_ref:nt.t_ref},t.provide("$p",t.config.globalProperties.$p)}};const it="error",st="retval",at={get:function(t,e,n=null){return at._axiosCall(t,e,"get",n)},post:function(t,e,n=null){return at._axiosCall(t,e,"post",n)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(it)||!t.hasOwnProperty(st)||0!=t.error)},isError:function(t){return!at.isSuccess(t)},hasData:function(t){return!(!at.isSuccess(t)||!("object"==typeof t[st]&&Object.keys(t[st]).length>0||"array"==typeof t[st]&&t[st].length>0||"string"==typeof t[st]&&""!=t[st].trim()||"number"==typeof t[st]))},getData:function(t){return at.hasData(t)?t[st]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(st)?t[st]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(it)?t[it]:1},_generateRouterURI:function(t){var e=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(e=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+t),e},_printDebug:function(t,e,n){},_axiosCall:function(t,e,n,r){let i={method:n,url:at._generateRouterURI(t),timeout:5e3};if("get"==n?i.params=e:i.data=e,"object"==typeof r)for(var s in r)i[s]=r[s];return axios(i)}},ot=document.createElement("div"),lt=Vue.createApp({name:"FhcAlertApp",components:{PvToast:n,PvConfirm:r},methods:{mailToUrl:t=>"mailto:"+FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto+"?subject=Meldung%20Systemfehler&body="+("\n\t\t\t\tDanke, dass Sie uns den Fehler melden. %0D%0A %0D%0A\n\t\t\t\tBitte beschreiben Sie uns ausführlich das Problem.%0D%0A\n\t\t\t\tBsp: Ich habe X ausgewählt und Y angelegt. Beim Speichern erhielt ich die Fehlermeldung. [Optional: Ich habe den Browser Z verwendet.]%0D%0A\n\t\t\t\t-----------------------------------------------------------------------------------------------------------------------------------%0D%0A\n\t\t\t\tPROBLEM: ... %0D%0A %0D%0A %0D%0A\n\n\t\t\t\t-----------------------------------------------------------------------------------------------------------------------------------%0D%0A\n\t\t\t\tFehler URL: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method+"%0D%0A\n\t\t\t\tFehler Meldung: "+t.message.detail+"%0D%0A\n\t\t\t\t-----------------------------------------------------------------------------------------------------------------------------------%0D%0A %0D%0A\n\t\t\t\tWir kümmern uns um eine rasche Behebung des Problems!"),openMessagecard(t){bootstrap.Collapse.getOrCreateInstance(t.target.getAttribute("href")).toggle()}},unmounted(){ot.parentElement.removeChild(ot)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t<pv-toast ref="toast" class="fhc-alert" :base-z-index="99999">\n\t\t<template #message="{ message }">\n\t\t\t\x3c!--span :class="slotProps.iconClass"></span--\x3e\n\t\t\t<div class="p-toast-message-text">\n\t\t\t\t<span class="p-toast-summary">{{ message.summary }}</span>\n\t\t\t\t<div v-if="message.detail && message.html" class="p-toast-detail" v-html="message.detail"></div>\n\t\t\t\t<div v-else-if="message.detail" class="p-toast-detail">{{ message.detail }}</div>\n\t\t\t</div>\n\t\t</template>\n\t</pv-toast>\n\t<pv-toast ref="alert" class="fhc-alert" :base-z-index="99999" position="center">\n\t\t<template #message="slotProps">\n\t\t\t<i class="fa fa-circle-exclamation fa-2xl mt-3"></i>\n\t\t\t<div class="p-toast-message-text">\n\t\t\t\t<span class="p-toast-summary">{{slotProps.message.summary}}</span>\n\t\t\t\t<div class="p-toast-detail my-3">Sorry! Ein interner technischer Fehler ist aufgetreten.</div>\n\t\t\t\t<div class="d-flex justify-content-between align-items-center">\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass="align-bottom flex-fill me-2"\n\t\t\t\t\t\tdata-bs-toggle="collapse"\n\t\t\t\t\t\t:href="\'#fhcAlertCollapseMessageCard\' + slotProps.message.id"\n\t\t\t\t\t\trole="button"\n\t\t\t\t\t\taria-expanded="false"\n\t\t\t\t\t\t:aria-controls="\'fhcAlertCollapseMessageCard\' + slotProps.message.id"\n\t\t\t\t\t\t@click="openMessagecard"\n\t\t\t\t\t\t>\n\t\t\t\t\t\tFehler anzeigen\n\t\t\t\t\t</a>\n\t\t\t\t\t<a\n\t\t\t\t\t\tv-if="showmaillink"\n\t\t\t\t\t\tclass="btn btn-primary flex-fill"\n\t\t\t\t\t\ttarget="_blank"\n\t\t\t\t\t\t:href="mailToUrl(slotProps)"\n\t\t\t\t\t\t>\n\t\t\t\t\t\tFehler melden\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div ref="messageCard" :id="\'fhcAlertCollapseMessageCard\' + slotProps.message.id" class="collapse mt-3">\n\t\t\t\t\t<div class="card card-body text-body small alertCollapseText">\n\t\t\t\t\t\t{{slotProps.message.detail}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t</pv-toast>\n\t<pv-confirm group="fhcAlertConfirm"></pv-confirm>'});lt.use(e),lt.use(i);const dt=lt.mount(ot);document.body.appendChild(ot);var pt={install:(t,e)=>{t.config.globalProperties.$p||t.use(rt);const n={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);dt.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);dt.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);dt.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);dt.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);dt.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,n)=>{dt.$confirm.require({group:"fhcAlertConfirm",header:Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:Vue.computed(()=>t.config.globalProperties.$p.t("alert/confirm_delete")),acceptLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/loeschen")),acceptClass:"p-button-danger",rejectLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:"p-button-secondary",accept(){e(!0)},reject(){e(!1)}})}),confirm:e=>new Promise((n,r)=>{dt.$confirm.require({group:e?.group??"fhcAlertConfirm",header:e?.header??Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:e?.message??"",acceptLabel:e?.acceptLabel??"Ok",acceptClass:e?.acceptClass??"btn btn-primary",rejectLabel:e?.rejectLabel??Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:e?.rejectClass??"btn btn-outline-secondary",accept(){n(!0)},reject(){n(!1)}})}),alertDefault(t,e,n,r=!1,i=!1){let s={severity:t,summary:e,detail:n,html:i};r||(s.life=3e3),dt.$refs.toast.add(s)},alertMultiple(t,e="info",n="Info",r=!1,i=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,n,t,r,i)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return n.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(n.alertSystemError);if(!t.hasOwnProperty("handled")||!t.handled){if("object"==typeof t&&null!==t){let e="";return t.hasOwnProperty("response")&&t.response?.data?.retval?e+="Error Message: "+(t.response.data.retval.message||t.response.data.retval)+"\r\n":t.hasOwnProperty("message")&&(e+="Error Message: "+t.message.toUpperCase()+"\r\n"),t.hasOwnProperty("config")&&t.config.hasOwnProperty("url")&&(e+="Error ConfigURL: "+t.config.url+"\r\n"),t.hasOwnProperty("stack")&&(e+="Error Stack: "+t.stack+"\r\n"),""==e&&(e="Error Message: "+JSON.stringify(t)+"\r\n"),e+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,n.alertSystemError(e)}n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method)}}},handleSystemMessage(t){if("string"==typeof t)return n.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(n.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method):t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))},resetFormValidation(t){const e=new Event("fhc-form-reset");t.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(t=>t.dispatchEvent(e))},handleFormValidation(t,e){if(void 0===e){if(t&&t.nodeType===Node.ELEMENT_NODE)return e=>n.handleFormValidation(e,t)}else if(400==t?.response?.status){let r=at.getError(t.response.data);"object"!=typeof r&&(r=t.response.data),n.resetFormValidation(e);const i=Object.entries(r).filter(([t,n])=>{const r=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!r||(r.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:n})),!1)}).map(t=>t[1]),s=e.querySelector("[data-fhc-form-error]");return void(s&&i.length?s.dispatchEvent(new CustomEvent("fhc-form-error",{detail:i})):i.forEach(n.alertError))}if(400==t?.response?.status){let e=at.getError(t.response.data);n.alertError("object"==typeof e?Object.values(e):e)}else n.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=n,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}};console.warn("plugin/FhcApi.js is DEPRECATED! Use plugins/Api.js instead.");var ut={install:(t,e)=>{if(t.config.globalProperties.$fhcApi)return void(e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory.addEndpoints(e.factory)));function n(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function r(t){const e=t.data;return delete t.data,e?(e.meta?e.meta.response=t:e.meta={response:t},e):{meta:{response:t},data:null}}t.use(pt),t.use(K),FHC_JS_DATA_STORAGE_OBJECT.app_root,FHC_JS_DATA_STORAGE_OBJECT.ci_router;const i=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});i.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),i.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),r(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>i.getUri({url:t}),get:(t,e,r,s)=>([e,r,s]=n(t,e,r,s),r&&(s?s.params=r:s={params:r}),i.get(e,s)),post:(t,e,r,s)=>([e,r,s]=n(t,e,r,s),i.post(e,r,s)),_defaultErrorHandlers:{validation(e,n){const r=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(r.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>r.alertDefault("error",t,e,!0)),!1)},general(e,n){const r=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n.alertSystemError(r)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var r="";r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),n.alertSystemError(r)},db(e){const n=t.config.globalProperties.$fhcAlert;var r="";void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),n.alertSystemError(r)},auth(e,n){const r=t.config.globalProperties.$fhcAlert;var i="";i+="Controller name: "+e.controller+"\n",i+="Method name: "+e.method+"\n",i+="Required permissions: "+e.required_permissions,n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertDefault("error",e.message,i)}}};class s{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,r,i)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,r,i)),post:(e,n,r,i)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,r,i))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e)}addEndpoints(t){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new s(t[e],this.$fhcApi.factory)}})}),console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const a=new s(W);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),a.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=a,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};console.warn("plugin/Phrasen.js is DEPRECATED! Use plugins/Phrasen.js instead.");const ct=Vue.reactive({}),ft={};let ht=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),gt=Vue.computed(()=>ht.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==ht.value).LC_Time:null);const mt={user_language:ht,user_locale:gt,setLanguage(t){const e=Object.keys(ct);return this.config.globalProperties.$api.call(X.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{ct[t.category][t.phrase]=t.text}),ht.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(this.config.globalProperties.$fhcApi,this.config.globalProperties.$fhcApiFactory,ft[t]||(ft[t]=this.config.globalProperties.$api.call(X.loadCategory(t)).then(e=>e?.data?function(t,e){return t.filter(t=>t.category==e).reduce((t,e)=>(t[e.phrase]||(t[e.phrase]=e.text),t),{})}(e.data,t):{}).then(e=>{ct[t]=e})),ft[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let r=Vue.computed(()=>ct[t]?function(t,e,n){let r=ct[t][e];return r?(n&&(r=r.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),r):"<< PHRASE "+e+">>"}(t,e,n):"");return ct[t]||this.loadCategory(t),r.value}};var vt={install(t,e){t.use(ut,e?.fhcApi||void 0),t.config.globalProperties.$p={t:mt.t,loadCategory:e=>mt.loadCategory.call(t,e),setLanguage:e=>mt.setLanguage.call(t,e),user_language:ht,user_locale:gt,t_ref:mt.t_ref},t.provide("$p",t.config.globalProperties.$p)}};const At=FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\/\/)(.*?\/)/g,"")+FHC_JS_DATA_STORAGE_OBJECT.ci_router,bt=VueRouter.createRouter({history:VueRouter.createWebHistory(),routes:[{path:`/${At}/NeueNachricht`,component:C},{path:`/${At}/NeueNachricht/:id`,component:C},{path:`/${At}/NeueNachricht/:id/:typeId`,component:C}]});Vue.createApp().use(bt).use(primevue.config.default,{zIndex:{overlay:1100}}).use(vt).mount("#main");var yt={emits:["update:modelValue"],props:{modelValue:String},computed:{valueAsBase64DataString(){return this.modelValue&&"data:image"!=this.modelValue.substring(0,10)?"data:image/jpeg;charset=utf-8;base64,"+this.modelValue:this.modelValue}},methods:{openUploadDialog(){this.$refs.fileInput.click()},pickFile(){let t=this.$refs.fileInput.files;if(t&&t[0]){let e=new FileReader;e.onload=t=>{this.$emit("update:modelValue",t.target.result)},e.readAsDataURL(t[0])}},deleteImage(){this.$emit("update:modelValue","")}},template:'\n\t<div class="form-upload-image">\n\t\t<template v-if="modelValue">\n\t\t\t<img class="img-thumbnail" :src="valueAsBase64DataString" />\n\t\t\t<div class="fotobutton">\n\t\t\t\t<div class="d-grid gap-2 d-md-flex">\n\t\t\t\t\t<button type="button" class="btn btn-outline-dark btn-sm" @click="deleteImage">\n\t\t\t\t\t\t<i class="fa fa-close"></i>\n\t\t\t\t\t</button>\n\t\t\t\t\t<button type="button" class="btn btn-outline-dark btn-sm" @click="openUploadDialog">\n\t\t\t\t\t\t<i class="fa fa-pen"></i>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else>\n\t\t\t<slot>\n\t\t\t\t<svg class="bd-placeholder-img img-thumbnail" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera: 200x200" preserveAspectRatio="xMidYMid slice" focusable="false"><title>A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera</title><rect width="100%" height="100%" fill="#868e96"></rect><text x="50%" y="50%" fill="#dee2e6" dy=".3em"></text></svg>\n\t\t\t</slot>\n\t\t\t<div class="fotobutton-visible">\n\t\t\t\t<div class="d-grid gap-2 d-md-flex">\n\t\t\t\t\t<button type="button" class="btn btn-outline-dark btn-sm" @click="openUploadDialog">\n\t\t\t\t\t\t<i class="fa fa-pen"></i>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</template>\n\t\t<input :id="$attrs.id" class="d-none" type="file" ref="fileInput" @input="pickFile" accept="image/*">\n\t</div>'},_t=Object.freeze({__proto__:null,default:yt}),$t={components:{DmsItem:{emits:["delete"],props:{modelValue:{type:[File,Object],required:!0}},data:()=>({preview:""}),watch:{modelValue(t){"application/x.fhc-dms+json"==t.type&&t.text().then(t=>{const e=JSON.parse(t);this.preview=e.preview||""})}},template:'\n\t<li class="form-upload-dms-item">\n\t\t<span class="col-auto"><i class="fa fa-file me-1"></i></span>\n\t\t<span class="col">{{ modelValue.name }}</span>\n\t\t<a v-if="preview" :href="preview" target="_blank" class="col-auto btn btn-outline-secondary btn-p-0 me-2">\n\t\t\t<i class="fa fa-download"></i>\n\t\t</a>\n\t\t<button class="col-auto btn btn-outline-secondary btn-p-0" @click="$emit(\'delete\')">\n\t\t\t<i class="fa fa-close"></i>\n\t\t</button>\n\t</li>'}},emits:["update:modelValue"],props:{modelValue:{type:[FileList,Array],required:!0},multiple:Boolean,id:String,name:String,inputClass:[String,Array,Object],noList:Boolean,accept:{type:String,default:""},disabled:{type:Boolean,default:!1}},methods:{stringifyFile:t=>JSON.stringify({lastModified:t.lastModified,lastModifiedDate:t.lastModifiedDate,name:t.name,size:t.size,type:t.type}),addFiles(t){if(!this.multiple)return this.$emit("update:modelValue",t.target.files);const e=new DataTransfer,n=[];for(var r of this.modelValue)e.items.add(r),n.push(this.stringifyFile(r));for(var r of t.target.files)n.indexOf(this.stringifyFile(r))<0&&e.items.add(r);this.$emit("update:modelValue",e.files)},removeFile(t){const e=Array.from(this.modelValue)[t],n=new DataTransfer;for(var r of this.modelValue)r!==e&&n.items.add(r);this.$emit("update:modelValue",n.files)}},watch:{modelValue(t){if(!t)return;if(t instanceof FileList){if(!this.$refs.upload)return;return this.$refs.upload.files=t}const e=new DataTransfer;for(var n of t)if(n instanceof File)e.items.add(n);else{const t=new File([JSON.stringify(n)],n.name,{type:"application/x.fhc-dms+json"});e.items.add(t)}this.$emit("update:modelValue",e.files)}},template:'\n\t<div class="form-upload-dms">\n\t\t<input ref="upload" class="form-control" :disabled="disabled" :accept="accept" :aria-label="$p.t(\'profilUpdate\',\'documentUpload\')" :title="$p.t(\'profilUpdate\',\'documentUpload\')" :class="inputClass" :id="id" :name="name" :multiple="multiple" type="file" @change="addFiles">\n\t\t<ul v-if="modelValue.length && multiple && !noList" :accept="accept" class="list-unstyled m-0">\n\t\t\t<dms-item\n\t\t\t\tv-for="(file, index) in modelValue"\n\t\t\t\t:key="index"\n\t\t\t\tv-model="file"\n\t\t\t\tclass="d-flex mx-1 mt-1 align-items-start"\n\t\t\t\t@delete="removeFile(index)"\n\t\t\t\t>\n\t\t\t</dms-item>\n\t\t</ul>\n\t</div>'},Ft=Object.freeze({__proto__:null,default:$t});
//# sourceMappingURL=NewMessage.js.map