mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-23 09:52:22 +00:00
5 lines
121 KiB
JavaScript
5 lines
121 KiB
JavaScript
import t from"../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js";import e 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 n from"../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js";var i={name:"SearchbarResultTemplateAction",emits:["actionexecuted"],props:{res:Object,action:Object},computed:{actionHref(){return"link"!==this.action.type?"javascript:void(0);":"function"==typeof this.action.action?this.action.action(this.res):this.action.action}},methods:{actionFunc(){"function"===this.action.type&&this.action.action(this.res),this.$emit("actionexecuted")},renderif:function(){return void 0===this.action?.renderif||this.action.renderif(this.res)}},template:'\n\t<template v-if="this.renderif()">\n\t<a class="searchbar-result-template-action" :href="actionHref" @click="actionFunc">\n\t\t<slot>{{ $p.t(\'search/action_default_label\') }}</slot>\n\t</a>\n\t</template>\n\t<template v-else>\n\t<div class="searchbar-result-template-action">\n\t\t<slot>{{ $p.t(\'search/action_default_label\') }}</slot>\n\t</div>\n\t</template>'},s={name:"SearchbarResultTemplateFrame",components:{ResultAction:i,ResultActions:{name:"SearchbarResultTemplateActions",components:{ResultAction:i},emits:["actionexecuted"],props:{res:Object,actions:Array},methods:{renderif:function(t){return void 0===t?.renderif||t.renderif(this.res)}},template:'\n\t<div v-if="actions.length" class="searchbar-result-template-actions">\n\t\t<template v-for="(action, index) in actions" :key="action.label">\n\t\t<result-action\n\t\t\t v-if="this.renderif(action)"\n\t\t\t:res="res"\n\t\t\t:action="action"\n\t\t\tclass="btn btn-primary btn-sm"\n\t\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t\t>\n\t\t\t<i v-if="action.icon" :class="action.icon"></i>\n\t\t\t<span class="p-2">{{ action.label }}</span>\n\t\t</result-action>\n\t\t</template>\n\t</div>'}},emits:["actionexecuted"],props:{res:Object,actions:Object,title:String,image:String,imageFallback:String},template:'\n\t<div class="searchbar-result-template-frame">\n\t\t<div class="searchbar_grid">\n\t\t\t<div class="searchbar_icon">\n\t\t\t\t<result-action\n\t\t\t\t\t:res="res"\n\t\t\t\t\t:action="actions.defaultaction"\n\t\t\t\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t\t\t\tclass="searchbar-rounded-image"\n\t\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tv-if="image"\n\t\t\t\t\t\t:src="image"\n\t\t\t\t\t\t/>\n\t\t\t\t\t<div v-else>\n\t\t\t\t\t\t<i :class="imageFallback"></i>\n\t\t\t\t\t</div>\n\t\t\t\t</result-action>\n\t\t\t</div>\n\n\t\t\t<div class="searchbar_data">\n\t\t\t\t<result-action\n\t\t\t\t\t:res="res"\n\t\t\t\t\t:action="actions.defaultaction"\n\t\t\t\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t\t\t\tclass="mb-3"\n\t\t\t\t\t>\n\t\t\t\t\t<span class="fw-bold">{{ title }}</span>\n\t\t\t\t</result-action>\n\n\t\t\t\t<slot></slot>\n\n\t\t\t\t<result-actions\n\t\t\t\t\t:res="res"\n\t\t\t\t\t:actions="actions.childactions"\n\t\t\t\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t\t\t\t>\n\t\t\t\t</result-actions>\n\t\t\t</div>\n\t\t</div>\n\t</div>'},a={name:"SearchbarResultPerson",components:{TemplateFrame:s},emits:["actionexecuted"],props:{res:Object,actions:Object},computed:{emails(){return new Set(this.res.email)}},template:'\n\t<template-frame\n\t\tclass="searchbar-result-student"\n\t\t:res="res"\n\t\t:actions="actions"\n\t\t:title="res.name"\n\t\t:image="res.photo_url"\n\t\timage-fallback="fas fa-user fa-4x"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div class="searchbar_table">\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'person/person_id\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.person_id }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_emails\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<a v-for="email in emails" :key="email" :href="\'mailto:\' + email" class="d-block">\n\t\t\t\t\t\t{{ email }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</template-frame>'},o={name:"SearchbarResultRoom",components:{TemplateFrame:s},emits:["actionexecuted"],props:{mode:String,res:Object,actions:Object},computed:{equipment(){return this.res.equipment?this.res.equipment.replace(new RegExp("<br />","ig"),""):""},address(){let t=this.res.zip||"";return this.res.city&&(t+=(t?" ":"")+this.res.city),this.res.street&&(t+=(t?", ":"")+this.res.street),this.res.floor&&(t+=(t?" / ":"")+this.$p.t("search/result_address_floor",this.res)),t||this.$p.t("search/result_address_none")}},template:'\n\t<template-frame\n\t\tclass="searchbar-result-room"\n\t\t:res="res"\n\t\t:actions="actions"\n\t\t:title="res.ort_kurzbz"\n\t\timage-fallback="fas fa-door-open fa-4x"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div class="searchbar_table">\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_room_address\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ address }}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_workplaces\') }}</div>\n\t\t\t\t<div v-if="mode == \'simple\'" class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.sitzplaetze }}\n\t\t\t\t</div>\n\t\t\t\t<div v-else class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<template v-if="res.max_person !== null && res.workplaces !== null">\n\t\t\t\t\t\t{{ $p.t(\'search/result_workplaces_pc\', res) }}\n\t\t\t\t\t</template>\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t{{ $p.t(\'search/result_workplaces_none\') }}\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_building\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.building }}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_equipment\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<div v-if="mode == \'simple\'" class="no-margin-paragraphs" v-html="res.austattung.replace(\'<br />\',\'\')"></div>\n\t\t\t\t\t<div v-else class="no-margin-paragraphs" v-html="equipment"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</template-frame>'},l={name:"SearchbarResultEmployee",components:{TemplateFrame:s},emits:["actionexecuted"],props:{res:Object,actions:Object},template:'\n\t<template-frame\n\t\tclass="searchbar-result-student"\n\t\t:res="res"\n\t\t:actions="actions"\n\t\t:title="res.name"\n\t\t:image="res.photo_url"\n\t\timage-fallback="fas fa-user fa-4x"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div class="searchbar_table">\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_stdkst\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<ul class="searchbar_inline_ul" v-if="res.standardkostenstelle.length > 0">\n\t\t\t\t\t\t<li v-for="(stdkst, idx) in res.standardkostenstelle" :key="idx">{{ stdkst }}</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<span v-else="">{{ $p.t(\'search/result_stdkst_none\') }}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'lehre/organisationseinheit\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<ul class="searchbar_inline_ul" v-if="res.organisationunit_name.length > 0">\n\t\t\t\t\t\t<li v-for="(oe, idx) in res.organisationunit_name" :key="idx">{{ oe }}</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<span v-else="">{{ $p.t(\'search/result_oe_none\') }}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_emails\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<a :href="\'mailto:\' + res.email" class="d-block">\n\t\t\t\t\t\t{{ res.email }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'person/telefon\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<a :href="\'tel:\' + res.phone" class="d-block">\n\t\t\t\t\t\t{{ res.phone }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</template-frame>'},c={name:"SearchbarResultOrganistationunit",components:{TemplateFrame:s},emits:["actionexecuted"],props:{res:Object,actions:Object},template:'\n\t<template-frame\n\t\tclass="searchbar-result-organisationunit"\n\t\t:res="res"\n\t\t:actions="actions"\n\t\t:title="res.name"\n\t\timage-fallback="fas fa-sitemap fa-4x"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div class="searchbar_table">\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_parent_oe\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.parentoe_name }}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_group_emails\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<a v-if="res.mailgroup" :href="\'mailto:\' + res.mailgroup">\n\t\t\t\t\t\t{{ res.mailgroup }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-else>-</template>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_leader\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<ul class="searchbar_inline_ul" v-if="res.leaders.length > 0">\n\t\t\t\t\t\t<li v-for="(leader, idx) in res.leaders" :key="idx">{{ leader.name }}</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t<span v-else="">{{ $p.t(\'search/result_leader_none\') }}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_number_of_employees\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.number_of_people }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</template-frame>'},d={name:"SearchbarResultStudent",components:{TemplateFrame:s},emits:["actionexecuted"],props:{mode:String,res:Object,actions:Object},computed:{photo_url(){return"simple"!=this.mode?this.res.photo_url:this.res.foto?"data:image/jpeg;base64,"+this.res.foto:null},emails(){return"simple"==this.mode?new Set([this.res.email]):new Set(this.res.email)}},template:'\n\t<template-frame\n\t\tclass="searchbar-result-student"\n\t\t:res="res"\n\t\t:actions="actions"\n\t\t:title="res.name"\n\t\t:image="photo_url"\n\t\timage-fallback="fas fa-user fa-4x"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div class="searchbar_table">\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_student_uid\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.uid }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'person/person_id\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.person_id }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'person/matrikelnummer\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.matrikelnr }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_emails\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<a v-for="email in emails" :key="email" :href="\'mailto:\' + email" class="d-block">\n\t\t\t\t\t\t{{ email }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</template-frame>'},p={name:"SearchbarResultPrestudent",components:{TemplateFrame:s},emits:["actionexecuted"],props:{mode:String,res:Object,actions:Object},computed:{title(){return"simple"==this.mode?this.res.name:this.res.name+" ("+this.res.status+" "+this.res.stg_kuerzel+")"},photo_url(){return"simple"!=this.mode?this.res.photo_url:this.res.foto?"data:image/jpeg;base64,"+this.res.foto:null},emails(){return"simple"==this.mode?new Set([this.res.email]):new Set(this.res.email)}},template:'\n\t<template-frame\n\t\tclass="searchbar-result-prestudent"\n\t\t:res="res"\n\t\t:actions="actions"\n\t\t:title="title"\n\t\t:image="photo_url"\n\t\timage-fallback="fas fa-user fa-4x"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div class="searchbar_table">\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'person/person_id\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.person_id }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_emails\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<a v-for="email in emails" :key="email" :href="\'mailto:\' + email" class="d-block">\n\t\t\t\t\t\t{{ email }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if="res.uid" class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_student_uid\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.uid }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if="res.matrikelnr" class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'person/matrikelnummer\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.matrikelnr }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_prestudent_id\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.prestudent_id }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'lehre/studiengang\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.bezeichnung }} {{ res.orgform ? \'(\' + res.orgform + \')\' : \'\' }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</template-frame>'},u={name:"SearchbarResultDms",components:{TemplateFrame:s},emits:["actionexecuted"],props:{res:Object,actions:Object},computed:{icon(){switch(this.res.mimetype){case"application/pdf":return"file-pdf";case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":case"application/msword":return"file-word";case"application/vnd.openxmlformats-officedocument.presentationml.presentation":case"application/mspowerpoint":return"file-powerpoint";case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":case"application/vnd.ms-excel":return"file-excel";case"application/x-zip":case"application/zip":return"file-zipper";case"image/jpeg":case"image/gif":case"image/png":return"file-image";default:return"file"}}},template:'\n\t<template-frame\n\t\tclass="searchbar-result-dms"\n\t\t:res="res"\n\t\t:actions="actions"\n\t\t:title="res.name"\n\t\t:image-fallback="\'fas fa-\' + icon + \' fa-4x\'"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div class="searchbar_table">\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_dms_id\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.dms_id }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_version\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.version }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_keywords\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.keywords }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'global/beschreibung\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ res.description }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</template-frame>'},h={name:"SearchbarResultCms",components:{TemplateFrame:s},emits:["actionexecuted"],props:{res:Object,actions:Object},inject:["query"],computed:{preview(){if("redirect"!=this.res.template_kurzbz){let t=this.res.content.replace(/<!\[CDATA\[|\]\]>/gi,"").replace(/<[^>]+>/gi,"").replace(/^\s+|\s+$/g,"");if(t.length>1e3){let e=t.toLowerCase(),r=Math.min(this.query.split(" ").reduce((t,r)=>{if("or"==r)return t;let n=r.indexOf(":");if(n<0||n>0&&["content","inhalt"].includes(r.split(":")[0])){let n=e.indexOf(r);n>=0&&t.push(n)}return t},[]));if(r){if(!(r+997>=t.length))return"..."+t.substr(r,994)+"...";if(r=t.length-997,r>0)return"..."+t.substr(r,997)}t=t.substr(0,997)+"..."}return t}let t=this.res.content_url;return"../index.ci.php/"==t.substr(0,16)?t=this.$fhcApi.getUri(t.substr(16)):"../"==t.substr(0,3)&&(t=FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/\/+$/,"")+t.substr(2)),'<a href="'+t+'">'+t+"</a>"}},template:'\n\t<template-frame\n\t\tclass="searchbar-result-cms"\n\t\t:res="res"\n\t\t:actions="actions"\n\t\t:title="res.title"\n\t\timage-fallback="fas fa-newspaper fa-4x"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div v-if="preview" class="searchbar_table" v-html="preview"></div>\n\t\t<div v-else class="searchbar_table text-muted">\n\t\t\t{{ $p.t(\'search/result_content_none\') }}\n\t\t</div>\n\t</template-frame>'},f={name:"SearchbarResultMergedstudent",components:{ResultPrestudent:p,ResultStudent:d},emits:["actionexecuted"],props:{mode:String,res:Object,actions:Object},computed:{prestudent(){return this.res.list.filter(t=>"prestudent"==t.type).pop()}},template:'\n\t<result-prestudent\n\t\tv-if="prestudent"\n\t\t:mode="mode"\n\t\t:res="prestudent"\n\t\t:actions="actions"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\tclass="searchbar-result-mergedstudent"\n\t></result-prestudent>\n\t<result-student\n\t\tv-else\n\t\t:mode="mode"\n\t\t:res="res.list[0]"\n\t\t:actions="actions"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\tclass="searchbar-result-mergedstudent"\n\t></result-student>'},g={name:"SearchbarResultMergedperson",components:{TemplateFrame:s,TemplateAction:i},emits:["actionexecuted"],props:{mode:String,res:Object,actions:Object},computed:{person(){const t=this.res.list.reduce((t,e)=>[...t,...Array.isArray(e.email)?e.email:[e.email]],[]),e=this.res.list.find(t=>"person"==t.type);if(e)return{...e,email:t};const{person_id:r,name:n}=this.res.list[0];let i;if("simple"==this.mode){let t=(this.students?this.students.find(t=>t.foto):null)?.foto;t&&(t="data:image/jpeg;base64,"+t),i=t||this.employee?.photo_url}else i=((this.students?this.students.find(t=>t.photo_url):null)||this.employee)?.photo_url;return{person_id:r,name:n,photo_url:i,email:t}},employee(){return this.res.list.find(t=>["employee","unassigned_employee","mitarbeiter","mitarbeiter_ohne_zuordnung"].includes(t.type))||null},students(){const t=this.res.list.filter(t=>["student","prestudent","studentcis","studentStv"].includes(t.type)).filter((t,e,r)=>{if("prestudent"===t.type)return!0;return!r.some(e=>e.uid===t.uid&&"prestudent"===e.type)}).sort((t,e)=>(t.sort||0)-(e.sort||0));return t.length?t:null},emails(){return new Set(this.person.email)},telurl(){return"tel:"+this.employee?.phone},inaktiv(){return this.res.list.some(t=>!1===t?.aktiv)}},template:'\n\t<template-frame\n\t\tclass="searchbar-result-mergedperson"\n\t\t:class="(inaktiv) ? \'searchbar_inaktiv\' : \'\'"\n\t\t:res="person"\n\t\t:actions="actions"\n\t\t:title="person.name"\n\t\t:image="person.photo_url"\n\t\timage-fallback="fas fa-user fa-4x"\n\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t>\n\t\t<div class="searchbar_table">\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'person/person_id\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t{{ person.person_id }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t<div class="searchbar_tablecell searchbar_label">{{ $p.t(\'search/result_emails\') }}</div>\n\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t<a v-for="email in emails" :key="email" :href="\'mailto:\' + email" class="d-block">\n\t\t\t\t\t\t{{ email }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<template v-if="employee">\n\t\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t\t<div class="searchbar_tablecell">\n\t\t\t\t\t\t<template-action\n\t\t\t\t\t\t\t:res="employee"\n\t\t\t\t\t\t\t:action="actions.defaultactionemployee || actions.defaultaction"\n\t\t\t\t\t\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ $p.t(\'search/result_employee\') }}\n\t\t\t\t\t\t</template-action>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t\t<div class="searchbar_tablecell searchbar_label ps-3">{{ $p.t(\'search/result_stdkst\') }}</div>\n\t\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t\t<ul class="searchbar_inline_ul" v-if="employee.standardkostenstelle.length > 0">\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tv-for="(stdkst, idx) in employee.standardkostenstelle"\n\t\t\t\t\t\t\t\t:key="idx"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{{ stdkst }}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<span v-else="">{{ $p.t(\'search/result_stdkst_none\') }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t\t<div class="searchbar_tablecell searchbar_label ps-3">{{ $p.t(\'lehre/organisationseinheit\') }}</div>\n\t\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t\t<ul class="searchbar_inline_ul" v-if="employee.organisationunit_name.length > 0">\n\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\tv-for="(oe, idx) in employee.organisationunit_name"\n\t\t\t\t\t\t\t\t:key="idx"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{{ oe }}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<span v-else="">{{ $p.t(\'search/result_oe_none\') }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t\t<div class="searchbar_tablecell searchbar_label ps-3">{{ $p.t(\'person/telefon\') }}</div>\n\t\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t\t<a :href="telurl">\n\t\t\t\t\t\t\t{{ employee.phone }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</template>\n\n\t\t\t<template v-if="students">\n\t\t\t\t<template v-for="student in students">\n\t\t\t\t\t<div class="searchbar_tablerow">\n\t\t\t\t\t\t<div class="searchbar_tablecell">\n\t\t\t\t\t\t\t<template-action\n\t\t\t\t\t\t\t\tv-if="actions.defaultaction"\n\t\t\t\t\t\t\t\t:res="student"\n\t\t\t\t\t\t\t\t:action="actions.defaultactionstudent || actions.defaultaction"\n\t\t\t\t\t\t\t\t@actionexecuted="$emit(\'actionexecuted\')"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<template v-if="mode == \'simple\'">\n\t\t\t\t\t\t\t\t\t{{ student.studiengang_kz }}\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t<template v-else-if="student.status && student.stg_kuerzel">\n\t\t\t\t\t\t\t\t\t{{ student.status }} ({{ student.stg_kuerzel }})\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t\t\t{{ $p.t(\'person/student\') }}\n\t\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t\t</template-action>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if="student.bezeichnung" class="searchbar_tablerow">\n\t\t\t\t\t\t<div class="searchbar_tablecell searchbar_label ps-3">{{ $p.t(\'lehre/studiengang\') }}</div>\n\t\t\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t\t\t{{ student.bezeichnung }} {{ student.orgform ? \'(\' + student.orgform + \')\' : \'\' }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if="student.prestudent_id" class="searchbar_tablerow">\n\t\t\t\t\t\t<div class="searchbar_tablecell searchbar_label ps-3">{{ $p.t(\'search/result_prestudent_id\') }}</div>\n\t\t\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t\t\t{{ student.prestudent_id }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if="student.uid" class="searchbar_tablerow">\n\t\t\t\t\t\t<div class="searchbar_tablecell searchbar_label ps-3">{{ $p.t(\'search/result_student_uid\') }}</div>\n\t\t\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t\t\t{{ student.uid }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if="student.matrikelnr" class="searchbar_tablerow">\n\t\t\t\t\t\t<div class="searchbar_tablecell searchbar_label ps-3">{{ $p.t(\'person/matrikelnummer\') }}</div>\n\t\t\t\t\t\t<div class="searchbar_tablecell searchbar_value">\n\t\t\t\t\t\t\t{{ student.matrikelnr }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</template>\n\t\t</div>\n\t</template-frame>'},v={name:"FhcSearchbar",components:{person:a,room:o,employee:l,organisationunit:c,student:d,prestudent:p,dms:u,cms:h,mergedStudent:f,mergedPerson:g},props:{searchoptions:{type:Object,required:!0},searchfunction:{type:Function,required:!0},showBtnSubmit:Boolean},provide(){return{query:Vue.computed(()=>this.lastQuery)}},data:function(){return{searchtimer:null,hidetimer:null,searchsettings:{searchstr:this.getSearchStr(),types:this.getInitiallySelectedTypes()},searchresult:[],searchmode:"",showresult:!1,searching:!1,error:null,abortController:null,settingsDropdown:null,lastQuery:""}},computed:{searchTypesPlaceholder(){return this.searchsettings.types.length?this.searchsettings.types.map(t=>this.typeLabels[t]).join(" / "):Object.values(this.typeLabels).join(" / ")},types(){return this.searchoptions.types?Array.isArray(this.searchoptions.types)?this.searchoptions.types:Object.keys(this.searchoptions.types):[]},typeLabels(){return this.searchoptions.types?Array.isArray(this.searchoptions.types)?this.searchoptions.types.reduce((t,e)=>(t[e]=e,t),{}):this.searchoptions.types:{}}},template:'\n\t\t<form\n\t\t\tref="searchform"\n\t\t\tclass="d-flex me-3"\n\t\t\t:class="searchoptions.cssclass"\n\t\t\taction="javascript:void(0);"\n\t\t\t@focusin="searchfocusin"\n\t\t\t@focusout="searchfocusout"\n\t\t>\n\t\t\t<div\n\t\t\t\tref="searchbox"\n\t\t\t\tclass="h-100 input-group me-2 searchbar_searchbox"\n\t\t\t\t:class="showresult ? \'open\' : \'closed\'"\n\t\t\t>\n\t\t\t\t<span class="input-group-text">\n\t\t\t\t\t<i class="fa-solid fa-magnifying-glass"></i>\n\t\t\t\t</span>\n <input\n \tref="input"\n @keyup="search"\n @focus="showsearchresult"\n v-model="searchsettings.searchstr"\n class="form-control searchbar_input"\n type="search"\n :placeholder="$p.t(\'search/input_search_label\', { types: searchTypesPlaceholder })"\n :aria-label="$p.t(\'search/input_search_label\', { types: searchTypesPlaceholder })"\n >\n\t\t\t\t<button\n\t\t\t\t\tv-if="searchsettings.searchstr"\n\t\t\t\t\ttype="button"\n\t\t\t\t\tclass="searchbar_input_clear btn btn-outline-secondary"\n\t\t\t\t\t@click="clearInput"\n\t\t\t\t\t@focusin.stop\n\t\t\t\t>\n\t\t\t\t\t<i class="fas fa-close"></i>\n\t\t\t\t</button>\n\t\t\t\t<button\n\t\t\t\t\tv-if="showBtnSubmit"\n\t\t\t\t\ttype="submit"\n\t\t\t\t\tclass="btn btn-primary"\n\t\t\t\t\t:title="$p.t(\'search/submit\')"\n\t\t\t\t\t:aria-label="$p.t(\'search/submit\')"\n\t\t\t\t>\n\t\t\t\t\t<i class="fas fa-search"></i>\n\t\t\t\t</button>\n <button\n data-bs-toggle="collapse"\n data-bs-target="#searchSettings"\n aria-expanded="false"\n aria-controls="searchSettings"\n ref="settingsbutton"\n class="searchbar_setting_btn btn btn-secondary"\n type="button"\n :title="$p.t(\'search/button_filter_label\')"\n :aria-label="$p.t(\'search/button_filter_label\')"\n >\n <i class="fas fa-cog"></i>\n </button>\n </div>\n\n <div v-show="showresult"\n class="searchbar_results" tabindex="-1">\n <div class="searchbar_results_scroller" ref="result">\n <div class="searchbar_results_wrapper" ref="results">\n <div v-if="searching">\n <i class="fas fa-spinner fa-spin fa-2x"></i>\n </div>\n <div v-else-if="this.error !== null">{{ error }}</div>\n <div v-else-if="searchresult.length < 1">{{ $p.t(\'search/error_no_results\') }}</div>\n <template v-else v-for="res in searchresult">\n <component\n v-if="isValidRenderer(res.renderer)"\n :is="res.renderer"\n :mode="searchmode"\n :res="res"\n :actions="getActions(res)"\n @actionexecuted="hideresult"\n ></component>\n <div v-else class="searchbar-result text-danger fw-bold">{{ $p.t(\'search/error_unknown_type\', res) }}</div>\n </template>\n </div>\n </div>\n </div>\n\n\t\t\t<div\n\t\t\t\tid="searchSettings"\n\t\t\t\tref="settings"\n\t\t\t\t@[`shown.bs.collapse`]="handleShowSettings"\n\t\t\t\t@[`hide.bs.collapse`]="handleHideSettings"\n\t\t\t\tclass="top-100 end-0 searchbar_settings text-white collapse"\n\t\t\t\ttabindex="-1"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if="types.length > 0"\n\t\t\t\t\tclass="d-flex flex-column m-3"\n\t\t\t\t>\n\t\t\t\t\t<span class="fw-light mb-2">\n\t\t\t\t\t\t{{ $p.t(\'search/applyfilter_label\') }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<template\n\t\t\t\t\t\tv-for="(label, value) in typeLabels"\n\t\t\t\t\t\t:key="value"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class="form-check form-switch">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tclass="fhc-switches form-check-input"\n\t\t\t\t\t\t\t\ttype="checkbox"\n\t\t\t\t\t\t\t\trole="switch"\n\t\t\t\t\t\t\t\t:id="$.uid + \'search_type_\' + value"\n\t\t\t\t\t\t\t\t:value="value"\n\t\t\t\t\t\t\t\tv-model="searchsettings.types"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\tclass="ps-2 form-check-label non-selectable"\n\t\t\t\t\t\t\t\t:for="$.uid + \'search_type_\' + value"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{{ label }}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n </div>\n\t\t</form>\n ',watch:{"searchsettings.searchstr":function(t){this.searchoptions.origin&&sessionStorage.setItem(`${this.searchoptions.origin}_searchstr`,t)},"searchsettings.types"(t){Array.isArray(t)&&0===t.length&&(this.searchsettings.types=[...this.types]),Array.isArray(t)&&this.searchoptions.origin&&localStorage.setItem(`${this.searchoptions.origin}_searchtypes`,JSON.stringify(t)),this.search()}},mounted(){this.settingsDropdown=new bootstrap.Collapse(this.$refs.settings,{toggle:!1}),this.searchoptions.origin||console.warn("No origin defined in the searchoptions for the searchbar, please define the origin property in the searchbaroptions to allow reliable storage of searchstr and searchtypes accross applications.")},updated(){this.showresult&&Vue.nextTick(()=>{this.calcSearchResultHeight()})},methods:{clearInput(){this.searchsettings.searchstr="",this.hideresult(),this.$refs.input.focus()},getInitiallySelectedTypes(){let t=!1;if(this.searchoptions.origin){let e=localStorage.getItem(`${this.searchoptions.origin}_searchtypes`);e&&(t=JSON.parse(e))}return t||(this.searchoptions.types?Array.isArray(this.searchoptions.types)?[...this.searchoptions.types]:Object.keys(this.searchoptions.types):[])},getSearchStr:function(){return this.searchoptions.origin?sessionStorage.getItem(`${this.searchoptions.origin}_searchstr`)??"":""},checkSettingsVisibility:function(t){this.$refs.settings.contains(t.target)||this.settingsDropdown.hide()},handleShowSettings:function(){document.addEventListener("click",this.checkSettingsVisibility)},handleHideSettings:function(){document.removeEventListener("click",this.checkSettingsVisibility)},calcSearchResultHeight:function(){const t=this.$refs.results.getBoundingClientRect();t.height>0&&t.height<.8*window.innerHeight?this.$refs.result.style.height=Math.ceil(t.height+16)+"px":this.$refs.result.style.height=Math.floor(.8*window.innerHeight)+"px"},calcSearchResultExtent:function(){if(this.showresult){if(void 0===this.searchoptions?.calcheightonly||!1===this.searchoptions.calcheightonly){var t=this.$refs.searchbox.getBoundingClientRect();this.$refs.result.style.top=Math.floor(t.bottom+3)+"px",this.$refs.result.style.right=Math.floor(t.right)+"px",this.$refs.result.style.width=Math.floor(t.width)+"px"}this.calcSearchResultHeight()}},search:function(){!0!==this.searchoptions?.nolivesearch&&(this.abort(),this.searchsettings.searchstr.length>=2?(this.calcSearchResultExtent(),this.searchtimer=setTimeout(this.callsearchapi,500)):this.showresult=!1)},abort(){null!==this.searchtimer&&clearTimeout(this.searchtimer),this.abortController&&(this.abortController.abort(),this.abortController=null),this.searchresult=[]},callsearchapi:function(){if(this.error=null,this.searchresult.splice(0,this.searchresult.length),this.searching=!0,this.showsearchresult(),0===this.searchsettings.types.length)return this.error=this.$p.t("search/error_missing_type"),void(this.searching=!1);this.abortController&&this.abortController.abort(),this.abortController=new AbortController,this.searchfunction(this.searchsettings,{timeout:5e4,signal:this.abortController.signal}).then(t=>{if(t.data){let e=t.data.map(t=>t.data?{...t,...JSON.parse(t.data)}:t);if(this.lastQuery=t.meta.searchstring,this.searchoptions.mergeResults){let t=0,r=[],n="merged-",i="";switch(this.searchoptions.mergeResults){case"student":r=["student","prestudent"],n+=this.searchoptions.mergeResults,i="uid";break;case"person":r=["person","employee","student","prestudent"],n+=this.searchoptions.mergeResults,i="person_id"}r.length&&(e=Object.values(e.reduce((e,s)=>(r.includes(s.renderer)?null===s[i]?e["nomerge"+t++]=s:void 0===e[s[i]]?e[s[i]]={rank:s.rank,renderer:n,type:n,list:[s]}:(e[s[i]].list.push(s),s.rank>e[s[i]].rank&&(e[s[i]].rank=s.rank)):e["nomerge"+t++]=s,e),{})).sort((t,e)=>e.rank-t.rank))}this.searchresult=e,this.searchmode=t.meta.mode}else this.error=this.$p.t("search/error_general");this.searching=!1,this.retry=0}).catch(t=>"ERR_CANCELED"==t.code?this.retry=0:"ECONNABORTED"==t.code&&this.retry?(this.retry--,this.callsearchapi()):(this.error=this.$p.t("search/error_general",t),this.searching=!1,void(this.retry=0)))},refreshsearch:function(){this.search(),this.togglesettings()},hideresult:function(){this.showresult=!1,window.removeEventListener("resize",this.calcSearchResultExtent)},showsearchresult:function(){!0!==this.searchoptions?.nolivesearch&&this.searchsettings.searchstr.length>=2&&(this.showresult=!0,window.addEventListener("resize",this.calcSearchResultExtent),this.calcSearchResultExtent())},searchfocusin:function(t){t.preventDefault(),t.stopPropagation(),null!==this.hidetimer&&clearTimeout(this.hidetimer),this.searchsettings.searchstr.length>=2&&0===this.searchresult.length&&this.search()},searchfocusout:function(t){t.preventDefault(),t.stopPropagation(),this.hidetimer=setTimeout(this.hideresult,100)},dash2camelCase:t=>t.replace(/-([a-z])/g,t=>t[1].toUpperCase()),isValidRenderer(t){const e=this.dash2camelCase(t);return Object.keys(this.$.components).includes(e)},getActions(t){let e=this.searchoptions.actions[this.dash2camelCase(t.renderer)];return e||this.searchoptions.actions[t.type]}}},m={getMenu:()=>({method:"get",url:"/api/frontend/v1/CisMenu/getMenu"})},b={components:{CisMenuEntry:{name:"CisMenuEntry",props:{entry:Object,level:{type:Number,default:1},activeContent:[String,Number],highestMatchingUrlCount:Number},data:()=>({collapse:null,urlCount:0}),inject:["makeParentContentActive","setActiveEntry","addUrlCount"],watch:{highestMatchingUrlCount:function(t){null==this.activeContent&&t==this.urlCount&&this.setActiveEntry(this.entry.content_id)},activeContent:function(t){t==this.entry.content_id?this.entry.menu_open||(this.entry.menu_open=!0):this.searchRecursiveChild(this.entry,"content_id",t)?this.entry.menu_open=!0:this.entry.menu_open=!1},"entry.menu_open":function(t,e){t?this.collapse&&this.collapse.show():(this.collapse&&this.collapse.hide(),this.activeContent==this.entry.content_id&&this.makeParentContentActive(this.entry.content_id))}},computed:{active:function(){return!!this.entry.menu_open||!!this.activeContent&&this.activeContent==this.entry.content_id},link(){if("redirect"==this.entry.template_kurzbz){if(!this.entry.content)return"";let t=(new DOMParser).parseFromString(this.entry.content,"text/xml").getElementsByTagName("url")[0];if(!t)return"";if(t=t.childNodes[0].nodeValue+"",t.includes("../cms/news.php")){let e=new RegExp("^../cms/news.php");t=t.replace(e,FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/CisVue/Cms/news")}else{if(t.includes("../cms/content.php?")){let e=new RegExp("^../cms/content.php\\?content_id=([0-9]+)").exec(t);return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/CisVue/Cms/content/"+e[1]}if(t.includes("../index.ci.php")){let e=new RegExp("^../index.ci.php");t=t.replace(e,FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router)}else if(t.includes("../")){let e=new RegExp("^../");t=t.replace(e,FHC_JS_DATA_STORAGE_OBJECT.app_root)}}return t}return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/CisVue/Cms/content/"+this.entry.content_id},hasFullLink(){return this.link.startsWith(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router)},target(){if("redirect"==this.entry.template_kurzbz){if(!this.entry.content)return"";let t=(new DOMParser).parseFromString(this.entry.content,"text/xml").getElementsByTagName("target")[0];return t?(t=t.childNodes[0].nodeValue+"","content"!=t&&"_self"!=t||(t=""),t):""}return""},hasChilds(){return this.entry.childs&&0!==this.entry.childs.length}},methods:{getUrlMatchPoints(t,e){let r=e.split("/"),n=t.href.split("/"),i=0;for(let t of n)for(let e of r)t==e&&i++;this.urlCount=i,this.addUrlCount(i)},checkActiveUrl(t){this.getUrlMatchPoints(t,this.link);let e=new RegExp("%20","gi"),r=new RegExp("^#"),n=t.hash;n=n.replace(e," ").replace(r,""),n!=this.entry.titel&&t.href!=this.link||this.setActiveEntry(this.entry.content_id)},searchRecursiveChild(t,e,r){"object"==typeof t.childs&&!Array.isArray(t.childs)&&Object.entries(t.childs).length>0&&(t.childs=Object.values(t.childs));for(let n of t.childs){if(n[e]==r)return!0;if((n.childs instanceof Array&&n.childs.length>0||Object.values(n.childs).length>0)&&this.searchRecursiveChild(n,e,r))return!0}return!1},toggleCollapse(t){this.active?this.makeParentContentActive(this.entry.content_id):this.setActiveEntry(this.entry.content_id)}},mounted(){this.$refs.children&&(this.entry.menu_open&&(this.$refs.children.className+=" show"),this.collapse=new bootstrap.Collapse(this.$refs.children,{toggle:!1})),this.checkActiveUrl(new URL(window.location.href))},template:'\n\t<div v-if="entry.template_kurzbz == \'include\'">\n INCLUDE\n </div>\n <template v-else>\n <template v-if="hasChilds">\n\t\t\t<div class="btn-group w-100">\n \t\t\t\t<a :target="target" \n \t\t\t\t\t:href="(entry.menu_open && hasFullLink)?link:null"\n\t\t\t\t\t@click="toggleCollapse"\n :class="{\n \'btn btn-default rounded-0 text-start\': true,\n [\'btn-level-\' + level]: true,\n\t\t\t\t\t\t\'fw-bold\':active\n }">\n {{ entry.titel }}\n </a>\n <button @click.prevent="toggleCollapse" :aria-expanded="entry.menu_open"\n :class="{\n \'btn btn-default rounded-0 dropdown-toggle dropdown-toggle-split flex-grow-0\': true,\n collapsed: !entry.menu_open\n }">\n <span class="visually-hidden">Toggle Dropdown</span>\n </button>\n </div>\n <ul ref="children"\n class="nav w-100 collapse">\n <cis-menu-entry :highestMatchingUrlCount="highestMatchingUrlCount" :activeContent="activeContent" v-for="child in entry.childs" :key="child" :entry="child" :level="level + 1"/>\n </ul>\n </template>\n\t\t<a v-else\n :href="link"\n :target="target"\n :class="{\n \'btn btn-default rounded-0 w-100 text-start\': true,\n [\'btn-level-\' + level]: true,\n\t\t\t\t\'fw-bold\':active\n }"\n @mouseup="setActiveEntry(entry.content_id)">\n {{ entry.titel }}\n </a>\n </template>'},FhcSearchbar:v,CisSprachen:{data:()=>({allActiveLanguages:FHC_JS_DATA_STORAGE_OBJECT.server_languages}),emits:["languageChanged"],methods:{changeLanguage:function(t){if(this.allActiveLanguages.some(e=>e.sprache===t)){const e=document.querySelector("[cis4Reload]");this.$p.setLanguage(t).then(t=>t.data).then(r=>{e?window.location.reload():this.$emit("languageChanged",t)})}}},template:'\n\t<div class="container">\n\t\t<div class="row justify-content-center align-items-center flex-nowrap overflow-hidden">\n\t\t\t<button v-for="lang in allActiveLanguages" @click.prevent="changeLanguage(lang.sprache)" class="col fhc-text-light sprachen-entry btn text-center w-100" :selected="$p.user_language.value==lang.sprache">{{lang.bezeichnung}}</button>\n\t\t</div>\n\t</div>\n\t'},ThemeSwitch:{data:()=>({theme:null}),methods:{switchTheme(t){this.theme=t,this.$theme.switchTheme(this.theme)}},computed:{nextTheme(){return this.$theme.theme_modes[(this.$theme.theme_modes.indexOf(this.theme)+1)%this.$theme.theme_modes.length]}},created(){this.theme=localStorage.getItem("theme"),this.theme&&this.$theme.theme_modes.includes(this.theme)||(this.theme=this.$theme.theme_modes[0])},template:'\n\n\t<button id="themeSwitch" :aria-label="$p.t(\'global\',\'switchTheme\',[nextTheme])" @click="switchTheme(nextTheme)" class="fhc-primary-highlight-bg align-self-center btn btn-secondary rounded-5">\n\t\t<i v-if="theme == \'light\'" class="fa-solid fa-sun " aria-hidden="true"></i>\n\t\t<i v-else-if="theme == \'dark\'" class="fa-solid fa-moon " aria-hidden="true"></i>\n\t\t\x3c!--<i v-else-if="theme == \'purple\'" class="fa-solid fa-wine-bottle" aria-hidden="true"></i>--\x3e\n\t</button>\n\t'}},props:{rootUrl:String,logoUrl:String,avatarUrl:String,logoutUrl:String,selectedtypes:Array,searchbaroptions:Object,searchfunction:Function},data:()=>({entries:[],activeEntry:null,url:null,urlMatchRankings:[],navUserDropdown:null,menuOpen:!0}),provide(){return{setActiveEntry:this.setActiveEntry,addUrlCount:this.addUrlCount,makeParentContentActive:this.makeParentContentActive}},computed:{menuCollapseAriaLabel(){return this.menuOpen?this.$p.t("global","collapseMenu"):this.$p.t("global","extendMenu")},highestMatchingUrlCount(){let t=Math.max(...this.urlMatchRankings);return this.urlMatchRankings.length>0?this.urlMatchRankings.filter(e=>e==t).length>1?null:t:null},site_url:()=>FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router},methods:{fetchMenu(){return this.$api.call(m.getMenu()).then(t=>t.data).then(t=>{this.entries=t})},checkSettingsVisibility:function(t){this.$refs.navUserDropdown.contains(t.target)||this.navUserDropdown.hide()},handleShowNavUser(){document.addEventListener("click",this.checkSettingsVisibility)},handleHideNavUser(){document.removeEventListener("click",this.checkSettingsVisibility)},makeParentContentActive(t,e=this.entries,r=null){if(e){"object"==typeof e&&!Array.isArray(e)&&Object.entries(e).length>0&&(e=Object.values(e));for(let n of e)n.content_id==t&&(this.activeEntry=r),this.makeParentContentActive(t,n.childs,n.content_id)}},addUrlCount(t){this.urlMatchRankings.push(t)},setActiveEntry(t){this.activeEntry=t}},created(){this.fetchMenu()},mounted(){this.$p.loadCategory(["ui","global","profilUpdate"]),this.navUserDropdown=new bootstrap.Collapse(this.$refs.navUserDropdown,{toggle:!1})},template:'\n\t<button id="nav-main-btn" class="navbar-toggler rounded-0" type="button" data-bs-toggle="offcanvas" data-bs-target="#nav-main" aria-controls="nav-main" aria-expanded="false" aria-label="Toggle navigation">\n <span class="navbar-toggler-icon"></span>\n </button>\n\t<fhc-searchbar ref="searchbar" id="nav-search" class="fhc-searchbar w-100 py-1 py-lg-2" :searchoptions="searchbaroptions" :searchfunction="searchfunction"></fhc-searchbar>\n <div id="nav-logo" class="d-none d-lg-block">\n\t\t<div class="d-flex h-100 justify-content-between">\n\t\t\t<a :href="rootUrl">\n\t\t\t\t<img :src="logoUrl" alt="Corporate Identity Logo">\n\t\t\t</a>\n\t\t\t<theme-switch></theme-switch>\n\t\t</div>\n </div>\n\t<div id="nav-user">\n\t\t<button id="nav-user-btn" class="btn btn-link rounded-0" type="button" data-bs-toggle="collapse" data-bs-target="#nav-user-menu" aria-expanded="false" aria-controls="nav-user-menu">\n\t\t\t<img :src="avatarUrl" :alt="$p.t(\'profilUpdate/profilBild\')" class="bg-dark avatar rounded-circle border border-dark"/>\n\t\t</button>\n\t\t<ul ref="navUserDropdown"\n\t\t@[`shown.bs.collapse`]="handleShowNavUser"\n\t\t@[`hide.bs.collapse`]="handleHideNavUser"\n\t\tid="nav-user-menu" class="top-100 end-0 collapse list-unstyled" aria-labelledby="nav-user-btn">\n\t\t\t<li><a class="fhc-dark-bg btn rounded-0 d-block" :href="site_url + \'/Cis/Profil\'" id="menu-profil">Profil</a></li>\n\t\t\t<li >\n\t\t\t\t<cis-sprachen @languageChanged="fetchMenu"></cis-sprachen>\n\t\t\t</li>\n\t\t\t<li><hr class="dropdown-divider m-0 "></li>\n\t\t\t<li ><a class="fhc-dark-bg btn rounded-0 d-block" :href="logoutUrl">Logout</a></li>\n\t\t</ul>\n\t</div>\n <nav id="nav-main" class="offcanvas offcanvas-start" tabindex="-1" aria-labelledby="nav-main-btn" data-bs-backdrop="false">\n\t\t<div id="nav-main-sticky">\n\t\t\t<div id="nav-main-toggle" class="position-static d-none d-lg-block ">\n\t\t\t\t<button :aria-label="menuCollapseAriaLabel" type="button" @click="menuOpen = !menuOpen" class="btn text-light rounded-0 p-1 d-flex align-items-center" data-bs-toggle="collapse" data-bs-target=".nav-menu-collapse" aria-expanded="true" aria-controls="nav-sprachen nav-main-menu">\n\t\t\t\t\t<i aria-hidden="true" class="fa fa-arrow-circle-left fhc-text"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="offcanvas-body p-0">\n\t\t\t\t<div id="nav-main-menu" class="nav-menu-collapse collapse collapse-horizontal show">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<cis-menu-entry :highestMatchingUrlCount="highestMatchingUrlCount" :activeContent="activeEntry" v-for="entry in entries" :key="entry.content_id" :entry="entry" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n </nav>'},_={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)}},A={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const r={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",r)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},y={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})}},$={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})}},S={abmeldung:{getDetails(t,e){const r="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(r)},create(t,e,r){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:r},{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 r="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(r)},create(t,e,r,n,i){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:r,datum_wiedereinstieg:n,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,r){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)}}},C={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",{})}},k={
|
|
//! 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:r,topic:n,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:r,topic:n,requested_change:i})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:r,status_message:n}){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:r,status_message:n})},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,r=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,...r?{fileID:r}:{}})},updateProfilRequest:function(t,e,r,n=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:r,...n?{fileID:n}:{}})},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})}},T={getRoomInfo(t,e,r){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:r})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,r){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:r})},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,r){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:r})}},E={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 r="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(r)},prestudent(t,e){let r="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(r)},person(t,e){let r="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(r)},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,r)=>this.$fhcApi.post(t,r,e),t.ajaxResponse=(t,e,r)=>r.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,r){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+r.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+r.id)},addNewAddress(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,r)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,r)},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,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+r.id)},addNewBankverbindung(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,r)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,r)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+r.id)},addNewContact(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,r)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,r)},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,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,r)},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,r){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+r.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:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+r+"/"+n)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+r+"/"+n)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+r+"/"+n)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,r){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+r.id)}},status:{insertStatus(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,r)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+r+"/"+n)},updateStatus(t,{prestudent_id:e,status_kurzbz:r,studiensemester_kurzbz:n,ausbildungssemester:i},s){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+r+"/"+n+"/"+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 r="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(r)},save(t,e,r,n){let i="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(r);return this.$fhcApi.post(t,i,n)}},exam:{getPruefungen(t,e,r){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+r.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,r){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,r)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,r){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+r.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 r="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(r=r+"/"+encodeURIComponent(e)),this.$fhcApi.get(r)},getTeacherProposal(t,e){let r="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(r=r+"/"+encodeURIComponent(e)),this.$fhcApi.get(r)},getRepeaterGrades(t,e){let r="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(r=r+"/"+encodeURIComponent(e)),this.$fhcApi.get(r)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:r,note:n,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:r,note:n},{errorHeader:i})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:r,lehrveranstaltung_bezeichnung:n}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:r},{errorHeader:n})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:r,lehrveranstaltung_bezeichnung:n}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:r},{errorHeader:n})},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,r,n){const i=n?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:r},i)}},mobility:{getMobilitaeten(t,e,r){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+r.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,r){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+r.id)},getSupports(t,e,r){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+r.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,r)=>this.$fhcApi.post(t,r,e),t.ajaxResponse=(t,e,r)=>r.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,r){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+r.id+"/"+r.studiengang_kz)},getDocumentsAccepted(t,e,r){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+r.id+"/"+r.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,r){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+r.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,r){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+r.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,r){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+r.student_uid+"/"+r.start_date+"/"+r.end_date+"/"+r.group_consecutiveHours+"/"+r.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")}},z={getNotizen(t,e,r){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+r.id+"/"+r.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,r)},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,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},updateNotiz(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,r)},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/")}},P={getNotizen(t,e,r){return this.$fhcApi.get("api/frontend/v1/notiz/notizPrestudent/getNotizen/"+r.id+"/"+r.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,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizPrestudent/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},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)}},O={getNotizen(t,e,r){return this.$fhcApi.get("api/frontend/v1/notiz/notizMitarbeiter/getNotizen/"+r.id+"/"+r.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,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizMitarbeiter/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},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)}},w={getNotizen(t,e,r){return this.$fhcApi.get("api/frontend/v1/notiz/NotizProjekt/getNotizen/"+r.id+"/"+r.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,r){return this.$fhcApi.post("api/frontend/v1/notiz/NotizProjekt/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},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)}},D={person:z,prestudent:P,mitarbeiter:O,anrechnung:{getNotizen(t,e,r){return this.$fhcApi.get("api/frontend/v1/notiz/notizAnrechnung/getNotizen/"+r.id+"/"+r.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,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizAnrechnung/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},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,r){return this.$fhcApi.get("api/frontend/v1/notiz/notizBestellung/getNotizen/"+r.id+"/"+r.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,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizBestellung/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},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,r){return this.$fhcApi.get("api/frontend/v1/notiz/notizLehreinheit/getNotizen/"+r.id+"/"+r.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,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizLehreinheit/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},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:w,projektphase:{getNotizen(t,e,r){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjektphase/getNotizen/"+r.id+"/"+r.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,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjektphase/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},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,r){return this.$fhcApi.get("api/frontend/v1/notiz/notizProjekttask/getNotizen/"+r.id+"/"+r.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,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizProjekttask/deleteNotiz/",{notiz_id:t,type_id:e,id:r})},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)}}},R={person:{getAllBetriebsmittel(t,e,r){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+r.type+"/"+r.id)},addNewBetriebsmittel(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,r)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,r){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,r)},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)}}},F={updatePersonUnrulyStatus(t,e){try{const r={person_id:t,unruly:e},n="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(n,r,null)}catch(t){throw t}},filterPerson(t,e=""){try{const r=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(r,t)}catch(t){throw t}}},J={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,r,n,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:r,typ:n,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")}},N={content(t,e=null,r=null,n=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...r?{sprache:r}:{},...n?{sichtbar:n}:{}})},getNews(t=1,e=10,r){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:r})},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",{})}},x={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}`,{})}},B={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}`,{})}},H={person:{getMessages(t,e,r){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+r.id+"/"+r.type+"/"+r.size+"/"+r.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,r){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,r)},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)}}},j={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},L={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,r=void 0,n=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:r,studienplan:n})},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}`,{})}},M={search:_,phrasen:A,navigation:y,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:$,studstatus:S,profil:C,profilUpdate:k,lvPlan:T,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:r,tag:n=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:r})},insert:function({url:t,title:e,tag:r}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:r})}},stv:E,notiz:D,betriebsmittel:R,checkperson:F,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:J,cms:N,lehre:x,addons:B,messages:H,vorlagen:j,addons:B,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,r){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllVertraege/"+r.person_id)},getAllContractsNotAssigned(t,e,r){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/"+r.person_id)},getAllContractsAssigned(t,e,r){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsAssigned/"+r.person_id+"/"+r.vertrag_id)},getAllContractsNotAssigned2(t){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getAllContractsNotAssigned/"+t)},getStatiOfContract(t,e,r){return this.$fhcApi.get("api/frontend/v1/vertraege/vertraege/getStatiOfContract/"+r.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:L,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},U={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 r(t,e,r,n){if("string"==typeof t&&void 0===n)[e,r,n]=[t,e,r],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===r&&void 0===n&&(n=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},n?n.form=t:n={form:t}}return[e,r,n]}function n(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,r])=>{if(r instanceof FileList)for(const n of r)t.FormData.append(e+(r.length>1?"[]":""),n);else Array.isArray(r)?r.every(t=>!(t instanceof File))?t.jsondata[e]=r:r.forEach(n=>t.FormData.append(e+(r.length>1?"[]":""),n)):t.jsondata[e]=r;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(r=>(e.config[r.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[r.type])(r,e.config))),n(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(r=>(e.config[r.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[r.type])(r,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,n,s)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,n,s]=r(t,e,n,s),n&&(s?s.params=n:s={params:n}),i.get(e,s)),post:(t,e,n,s)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,n,s]=r(t,e,n,s),i.post(e,n,s)),_defaultErrorHandlers:{validation(e,r){const n=t.config.globalProperties.$fhcAlert;return r?.form?(r.form.clearValidation(),r.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(n.alertError),!1):"object"!=typeof e.messages||(r?.errorHeader?Object.values(e.messages).forEach(e=>n.alertDefault("error",Array.isArray(r.errorHeader)?t.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>n.alertDefault("error",t,e,!0)),!1)},general(e,r){const n=t.config.globalProperties.$fhcAlert;r?.form?r.form.setFeedback(!1,e.message):r?.errorHeader?n.alertDefault("error",Array.isArray(r.errorHeader)?t.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,e.message,!0):n.alertError(e.message)},php(e){const r=t.config.globalProperties.$fhcAlert;var n="";switch(n+="Message: "+e.message+"\n\n",n+="Filename: "+e.filename+"\n",n+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(n+="\nBacktrace: ",e.backtrace.forEach(t=>{n+="\n\tFile: "+t.file+"\n",n+="\tLine: "+t.line+"\n",n+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":r.alertDefault("warn","PHP "+e.severity,n,!0);break;case"Notice":case"User Notice":case"Runtime Notice":r.alertDefault("info","PHP "+e.severity,n,!0);break;default:n="Type: PHP "+e.severity+"\n\n"+n,r.alertSystemError(n)}},exception(e){const r=t.config.globalProperties.$fhcAlert;var n="";n+="Type: "+e.class+"\n\n",n+="Message: "+e.message+"\n\n",n+="Filename: "+e.filename+"\n",n+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(n+="\nBacktrace: ",e.backtrace.forEach(t=>{n+="\n\tFile: "+t.file+"\n",n+="\tLine: "+t.line+"\n",n+="\tFunction: "+t.function+"\n"})),r.alertSystemError(n)},db(e){const r=t.config.globalProperties.$fhcAlert;var n="";void 0!==e.heading&&(n+=e.heading+"\n\n"),void 0!==e.code&&(n+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(n+="SQL: "+e.sql+"\n\n"),void 0!==e.message?n+="Message: "+e.message+"\n\n":void 0!==e.messages&&(n+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(n+="Filename: "+e.filename+"\n"),void 0!==e.line&&(n+="Line Number: "+e.line+"\n"),r.alertSystemError(n)},auth(e,r){const n=t.config.globalProperties.$fhcAlert;var i="";i+="Controller name: "+e.controller+"\n",i+="Method name: "+e.method+"\n",i+="Required permissions: "+e.required_permissions,r?.errorHeader?n.alertDefault("error",Array.isArray(r.errorHeader)?t.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,e.message,!0):n.alertDefault("error",e.message,i)}}};class s{constructor(e,r){void 0===r?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,r,n,i)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,r,n,i)),post:(e,r,n,i)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,r,n,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(r||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(M);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),a.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=a,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};const G="error",I="retval",V={get:function(t,e,r=null){return V._axiosCall(t,e,"get",r)},post:function(t,e,r=null){return V._axiosCall(t,e,"post",r)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(G)||!t.hasOwnProperty(I)||0!=t.error)},isError:function(t){return!V.isSuccess(t)},hasData:function(t){return!(!V.isSuccess(t)||!("object"==typeof t[I]&&Object.keys(t[I]).length>0||"array"==typeof t[I]&&t[I].length>0||"string"==typeof t[I]&&""!=t[I].trim()||"number"==typeof t[I]))},getData:function(t){return V.hasData(t)?t[I]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(I)?t[I]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(G)?t[G]: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,r){},_axiosCall:function(t,e,r,n){let i={method:r,url:V._generateRouterURI(t),timeout:5e3};if("get"==r?i.params=e:i.data=e,"object"==typeof n)for(var s in n)i[s]=n[s];return axios(i)}},q=document.createElement("div"),Z=Vue.createApp({name:"FhcAlertApp",components:{PvToast:e,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(){q.parentElement.removeChild(q)},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>'});Z.use(t),Z.use(n);const W=Z.mount(q);document.body.appendChild(q);var K={install:(t,e)=>{t.config.globalProperties.$p||t.use(it);const r={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);W.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);W.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);W.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);W.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);W.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,r)=>{W.$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((r,n)=>{W.$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(){r(!0)},reject(){r(!1)}})}),alertDefault(t,e,r,n=!1,i=!1){let s={severity:t,summary:e,detail:r,html:i};n||(s.life=3e3),W.$refs.toast.add(s)},alertMultiple(t,e="info",r="Info",n=!1,i=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,r,t,n,i)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return r.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(r.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,r.alertSystemError(e)}r.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 r.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(r.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?r.alertWarning(JSON.stringify(t.data.retval)):r.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?r.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")?r.alertWarning(JSON.stringify(t.data.retval)):r.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=>r.handleFormValidation(e,t)}else if(400==t?.response?.status){let n=V.getError(t.response.data);"object"!=typeof n&&(n=t.response.data),r.resetFormValidation(e);const i=Object.entries(n).filter(([t,r])=>{const n=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!n||(n.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:r})),!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(r.alertError))}if(400==t?.response?.status){let e=V.getError(t.response.data);r.alertError("object"==typeof e?Object.values(e):e)}else r.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=r,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}},Q={install:(t,e)=>{if(t.config.globalProperties.$api)return;function r(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,r])=>r.forEach(r=>e(r,t)))}t.config.globalProperties.$fhcAlert||t.use(K);let n={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 r=t.config.globalProperties.$p;if(!r)return Promise.reject("Phrasen plugin not loaded!");async function n(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,r])=>{t[e]||(t[e]=[]),Array.isArray(r)?t[e].push(...r):t[e].push(r)})}return t},{});let e=0;const n=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,n])=>{if("_default"==t){await r.loadCategory("dashboard");t='<dt class="d-none">'+r.t("dashboard/general")+"</dt>"}else t="<dt>"+t+"</dt>";return e+=n.length,t+"<dd>"+n.join("</dd><dd>")+"</dd>"}));return{counter:e,msgs:n}}let i,s;Array.isArray(e)?({counter:i,msgs:s}=await n(e)):({counter:i,msgs:s}=await Object.entries(e).reduce(async(t,[e,r])=>{const i=await t,{counter:s,msgs:a}=await n(r);return i.counter+=s,i.msgs.push("<dt>"+e+"</dt><dd><dl>"+a.join("")+"</dl></dd>"),i},Promise.resolve({counter:0,msgs:[]}))),await r.loadCategory("ui");const a=r.t("ui/n_errors",{n:i});t.config.globalProperties.$fhcAlert.alertDefault("error",a,"<dl>"+s.join("")+"</dl>",!0,!0)},php(e){r(e,(e,r)=>{var n="";switch(n+="Message: "+e.message+"\n\n",n+="Filename: "+e.filename+"\n",n+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(n+="\nBacktrace: ",e.backtrace.forEach(t=>{n+="\n\tFile: "+t.file+"\n",n+="\tLine: "+t.line+"\n",n+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":r?r+=": PHP "+e.severity:r="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",r,n,!0);break;case"Notice":case"User Notice":case"Runtime Notice":r?r+=": PHP "+e.severity:r="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",r,n,!0);break;default:n="Type: PHP "+e.severity+"\n\n"+n,r&&(n=r+"\n\n"+n),t.config.globalProperties.$fhcAlert.alertSystemError(n)}})},exception(e){r(e,(e,r)=>{var n="";r&&(n+=r+"\n\n"),n+="Type: "+e.class+"\n\n",n+="Message: "+e.message+"\n\n",n+="Filename: "+e.filename+"\n",n+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(n+="\nBacktrace: ",e.backtrace.forEach(t=>{n+="\n\tFile: "+t.file+"\n",n+="\tLine: "+t.line+"\n",n+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(n)})},db(e){r(e,(e,r)=>{var n="";r&&(n+=r+"\n\n"),void 0!==e.heading&&(n+=e.heading+"\n\n"),void 0!==e.code&&(n+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(n+="SQL: "+e.sql+"\n\n"),void 0!==e.message?n+="Message: "+e.message+"\n\n":void 0!==e.messages&&(n+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(n+="Filename: "+e.filename+"\n"),void 0!==e.line&&(n+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(n)})},auth(e){r(e,(e,r)=>{r?r+=": "+e.message:r=e.message;var n="";n+="Controller name: "+e.controller+"\n",n+="Method name: "+e.method+"\n",n+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",r,n,!0)})}}};function i(t,e,r,n){if("string"==typeof t&&void 0===n)[e,r,n]=[t,e,r],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===r&&void 0===n&&(n=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},n?n.form=t:n={form:t}}return[e,r,n]}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{...n,success:!1,fail:!1};if(!t||!0===t)return{...n};if("success"===t)return{...n,fail:!1};if("fail"===t)return{...n,success:!1};const{success:e,fail:r,handler:i,combine:s}=t;return t={...n},Object.entries({fail:r,success:e}).forEach(([e,r])=>{void 0!==r&&(t[e]=r)}),Object.entries({handler:i,combine:s}).forEach(([e,r])=>{void 0!==r&&(t[e]={...t[e],...r})}),t}function o(t){const e=a(t?.errorHandling);if(t?.form){const r=e.handler.form;e.handler={...e.handler,form:e=>r(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 c(t,e){const r={},n=[];if(null==e)return{};for(;e.length;)n.push(e.pop());for(var i of n){let n=i.type,a=null;for(var s in t.combine){let e=t.combine[s].includes(n),r=t.handler[s];if(e&&r&&(a=s,"form"==a))break}a&&(n=a);t.handler[n]?(r[n]||(r[n]=[]),Array.isArray(i)?r[n].push(...i):r[n].push(i)):e.push(i)}return r}void 0!==e?.errorHandling&&(n=a(e.errorHandling));const d=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});d.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,r])=>{if(r instanceof FileList)for(const n of r)t.FormData.append(e+(r.length>1?"[]":""),n);else Array.isArray(r)?r.every(t=>!(t instanceof File))?t.jsondata[e]=r:r.forEach(n=>t.FormData.append(e+(r.length>1?"[]":""),n)):t.jsondata[e]=r;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),d.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(r=>(e.config[r.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[r.type])(r,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 r=l(t),n=c(e,r);for(var i in n)e.handler[i](n[i]);return r.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>d.getUri({url:t}),get:(t,e,r,n)=>([e,r,n]=i(t,e,r,n),r&&(n?n.params=r:n={params:r}),d.get(e,n)),post:(t,e,r,n)=>([e,r,n]=i(t,e,r,n),d.post(e,r,n)),call(e,r,n){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(n,void 0,void 0,r||{}),s=o(e);if(!s.success&&!s.fail)return t;const a={};for(var d of t){const[t,e]="fulfilled"===d.status?[s.success,d.value]:[s.fail,d.reason];if(!t)return;const r=c(s,l(e));for(var p in r)a[p]?a[p][e.config.errorHeader]=r[p]:a[p]={[e.config.errorHeader]:r[p]}}for(var u in a)s.handler[u](a[u]);return t})}let{method:s,url:a,params:d,config:p}=e;return void 0!==r&&(p=r),s||(s="get"),s.toLowerCase&&(s=s.toLowerCase()),"get"==s?this.get(n,a,d,p):"post"==s?this.post(n,a,d,p):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({}),tt={};let et=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),rt=Vue.computed(()=>et.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==et.value).LC_Time:null);const nt={user_language:et,user_locale:rt,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}),et.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(tt[t]||(tt[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})),tt[t])},t_ref(t,e,r){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,r))},t(t,e,r){if(void 0===r&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(r=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,r),"";let n=Vue.computed(()=>Y[t]?function(t,e,r){let n=Y[t][e];return n?(r&&(n=n.replace(/\{([^}]*)\}/g,(t,e)=>void 0===r[e]?t:r[e])),n):"<< PHRASE "+e+">>"}(t,e,r):"");return Y[t]||this.loadCategory(t),n.value}};var it={install(t,e){t.config.globalProperties.$fhcApi||t.use(U),t.config.globalProperties.$api||t.use(Q),t.config.globalProperties.$p={t:nt.t,loadCategory:e=>nt.loadCategory.call(t,e),setLanguage:e=>nt.setLanguage.call(t,e),user_language:et,user_locale:rt,t_ref:nt.t_ref},t.provide("$p",t.config.globalProperties.$p)}},st={search:t=>({method:"post",url:"/api/frontend/v1/searchbar/search",params:t}),searchCis:t=>({method:"post",url:"/api/frontend/v1/searchbar/searchCis",params:t}),searchStv:t=>({method:"post",url:"/api/frontend/v1/searchbar/searchStv",params:t})};let at=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.theme.name);const ot=FHC_JS_DATA_STORAGE_OBJECT.theme.modes,lt=t=>{if(!t)return;for(const t of ot)document.documentElement.classList.remove(t);at.value=t,document.documentElement.classList.add(t),document.body.setAttribute("data-bs-theme",t);let e=document.querySelector('link[href*="primevue/resources/themes"]');"dark"==t?e.attributes.href.value=e.attributes.href.value.replace("bootstrap4-light-blue","bootstrap4-dark-blue"):("light"==t||e.attributes.href.value.includes("bootstrap4-dark-blue"))&&(e.attributes.href.value=e.attributes.href.value.replace("bootstrap4-dark-blue","bootstrap4-light-blue")),localStorage.setItem("theme",t)};var ct={install:(t,e)=>{document.documentElement.classList.add(at.value),(()=>{let t=localStorage.getItem("theme");t&&ot.includes(t)||(t=ot[0],localStorage.setItem("theme",t)),lt(t)})(),t.config.globalProperties.$theme={theme_name:at,theme_modes:ot,switchTheme:t=>{lt(t)}}}};const dt=Vue.createApp({name:"CisApp",components:{FhcSearchbar:v,CisMenu:b},data:function(){return{searchbaroptions:{origin:"cis",cssclass:"",calcheightonly:!0,types:{employee:Vue.computed(()=>this.$p.t("search/type_employee")),student:Vue.computed(()=>this.$p.t("search/type_student")),room:Vue.computed(()=>this.$p.t("search/type_room")),organisationunit:Vue.computed(()=>this.$p.t("search/type_organisationunit")),cms:Vue.computed(()=>this.$p.t("search/type_cms")),dms:Vue.computed(()=>this.$p.t("search/type_dms"))},actions:{employee:{defaultaction:{type:"link",action:function(t){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/Cis/Profil/View/"+t.uid}},childactions:[]},student:{defaultaction:{type:"link",action:function(t){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/Cis/Profil/View/"+t.uid}},childactions:[]},room:{defaultaction:{type:"link",renderif:function(t){return null!==t.content_id},action:function(t){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/CisVue/Cms/content/"+t.content_id}},childactions:[{label:"LV-Plan",icon:"fas fa-bookmark",type:"link",action:function(t){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/CisVue/Cms/getRoomInformation/"+t.ort_kurzbz}},{label:"Rauminformation",icon:"fas fa-info-circle",type:"link",renderif:function(t){return null!==t.content_id},action:function(t){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/CisVue/Cms/content/"+t.content_id}}]},organisationunit:{defaultaction:{type:"link",renderif:function(t){return!!t.mailgroup},action:function(t){return"mailto:"+t.mailgroup}},childactions:[]},cms:{defaultaction:{type:"link",action:function(t){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/CisVue/Cms/content/"+t.content_id}},childactions:[]},dms:{defaultaction:{type:"link",action:function(t){return FHC_JS_DATA_STORAGE_OBJECT.app_root+"cms/dms.php?id="+t.dms_id}},childactions:[]}}}}},methods:{searchfunction:function(t){return this.$api.call(st.searchCis(t))}}});FhcApps.makeExtendable(dt),dt.use(primevue.config.default,{zIndex:{overlay:9e3,tooltip:8e3}}),dt.use(it),dt.use(ct),dt.mount("#cis-header");
|
|
//# sourceMappingURL=Cis.js.map
|