From bc484453041935f163a2b029a556aa7bffd98693 Mon Sep 17 00:00:00 2001 From: ma0048 Date: Mon, 10 Feb 2025 13:05:44 +0100 Subject: [PATCH 001/299] - infocenter filter fuer electronic onboarding hinzugefuegt --- .../system/infocenter/InfoCenter.php | 44 +++++++ .../views/system/infocenter/onboarding.php | 47 +++++++ .../system/infocenter/onboardingData.php | 116 ++++++++++++++++++ system/filtersupdate.php | 23 ++++ 4 files changed, 230 insertions(+) create mode 100644 application/views/system/infocenter/onboarding.php create mode 100644 application/views/system/infocenter/onboardingData.php diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index f6e41d2e6..9024088f8 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -22,6 +22,7 @@ class InfoCenter extends Auth_Controller const REIHUNGSTESTABSOLVIERT_PAGE = 'reihungstestAbsolviert'; const ABGEWIESEN_PAGE = 'abgewiesen'; const AUFGENOMMEN_PAGE = 'aufgenommen'; + const ONBOARDING_PAGE = 'onboarding'; const SHOW_DETAILS_PAGE = 'showDetails'; const SHOW_ZGV_DETAILS_PAGE = 'showZGVDetails'; const ZGV_UBERPRUEFUNG_PAGE = 'ZGVUeberpruefung'; @@ -116,6 +117,7 @@ class InfoCenter extends Auth_Controller 'index' => 'infocenter:r', 'freigegeben' => 'infocenter:r', 'abgewiesen' => 'infocenter:r', + 'onboarding' => 'infocenter:r', 'aufgenommen' => 'infocenter:r', 'reihungstestAbsolviert' => 'infocenter:r', 'showDetails' => 'infocenter:r', @@ -230,6 +232,13 @@ class InfoCenter extends Auth_Controller $this->load->view('system/infocenter/infocenterAbgewiesen.php'); } + + public function onboarding() + { + $this->_setNavigationMenu(self::ONBOARDING_PAGE); // define the navigation menu for this page + + $this->load->view('system/infocenter/onboarding.php'); + } /** * Aufgenommene page of the InfoCenter tool @@ -1552,6 +1561,7 @@ class InfoCenter extends Auth_Controller $reihungstestAbsolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE); $abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); $aufgenommenLink = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE); + $onboardingLink = site_url(self::INFOCENTER_URI.'/'.self::ONBOARDING_PAGE); $currentFilterId = $this->input->get(self::FILTER_ID); if (isset($currentFilterId)) @@ -1560,6 +1570,7 @@ class InfoCenter extends Auth_Controller $reihungstestAbsolviertLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; $abgewiesenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; $aufgenommenLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; + $onboardingLink .= '?'.self::PREV_FILTER_ID.'='.$currentFilterId; } $this->navigationlib->setSessionMenu( @@ -1623,6 +1634,18 @@ class InfoCenter extends Auth_Controller '', // target 40 // sort ), + 'ohnePrestudent' => $this->navigationlib->oneLevel( + 'Electronic Onboarding', // description + $onboardingLink, // link + null, // children + 'users', // icon + null, // subscriptDescription + false, // expand + null, // subscriptLinkClass + null, // subscriptLinkValue + '', // target + 50 // sort + ), ) ); } @@ -1649,6 +1672,8 @@ class InfoCenter extends Auth_Controller $link = site_url(self::ZGV_UEBERPRUEFUNG_URI); if ($origin_page === self::ABGEWIESEN_PAGE) $link = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); + if ($origin_page === self::ONBOARDING_PAGE) + $link = site_url(self::INFOCENTER_URI.'/'.self::ONBOARDING_PAGE); if ($origin_page === self::AUFGENOMMEN_PAGE) $link = site_url(self::INFOCENTER_URI.'/'.self::AUFGENOMMEN_PAGE); @@ -1690,6 +1715,7 @@ class InfoCenter extends Auth_Controller $freigegebenLink = site_url(self::INFOCENTER_URI.'/'.self::FREIGEGEBEN_PAGE); $absolviertLink = site_url(self::INFOCENTER_URI.'/'.self::REIHUNGSTESTABSOLVIERT_PAGE); $abgewiesenLink = site_url(self::INFOCENTER_URI.'/'.self::ABGEWIESEN_PAGE); + $onboardingLink = site_url(self::INFOCENTER_URI.'/'.self::ONBOARDING_PAGE); $prevFilterId = $this->input->get(self::PREV_FILTER_ID); if (isset($prevFilterId)) { @@ -1766,6 +1792,24 @@ class InfoCenter extends Auth_Controller ) ); } + if($page == self::ONBOARDING_PAGE) + { + $this->navigationlib->setSessionElementMenu( + 'onboarding', + $this->navigationlib->oneLevel( + 'Electronic Onboarding', // description + $onboardingLink, // link + null, // children + 'users', // icon + null, // subscriptDescription + false, // expand + null, // subscriptLinkClass + null, // subscriptLinkValue + '', // target + 50 // sort + ) + ); + } } /** diff --git a/application/views/system/infocenter/onboarding.php b/application/views/system/infocenter/onboarding.php new file mode 100644 index 000000000..a600364d9 --- /dev/null +++ b/application/views/system/infocenter/onboarding.php @@ -0,0 +1,47 @@ +load->view( + 'templates/FHC-Header', + array( + 'title' => 'Info Center', + 'jquery3' => true, + 'jqueryui1' => true, + 'jquerycheckboxes1' => true, + 'bootstrap3' => true, + 'fontawesome4' => true, + 'sbadmintemplate3' => true, + 'tablesorter2' => true, + 'ajaxlib' => true, + 'filterwidget' => true, + 'navigationwidget' => true, + 'dialoglib' => true, + 'phrases' => array( + 'person' => array('vorname', 'nachname'), + 'ui' => array('bitteEintragWaehlen') + ), + 'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'), + 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js') + ) + ); +?> + +
+ + widgetlib->widget('NavigationWidget'); ?> + +
+
+
+
+ +
+
+
+ load->view('system/infocenter/onboardingData.php'); ?> +
+
+
+
+ +load->view('templates/FHC-Footer'); ?> diff --git a/application/views/system/infocenter/onboardingData.php b/application/views/system/infocenter/onboardingData.php new file mode 100644 index 000000000..5ee66fdde --- /dev/null +++ b/application/views/system/infocenter/onboardingData.php @@ -0,0 +1,116 @@ +>0 as bezeichnung + FROM public.tbl_rueckstellung + JOIN public.tbl_rueckstellung_status USING(status_kurzbz) + JOIN public.tbl_person sp ON tbl_rueckstellung.person_id = sp.person_id + WHERE tbl_rueckstellung.rueckstellung_id = + ( + SELECT srueck.rueckstellung_id + FROM public.tbl_rueckstellung srueck + WHERE srueck.person_id = tbl_rueckstellung.person_id + AND datum_bis >= NOW() + ORDER BY srueck.datum_bis DESC LIMIT 1 + ) + ) rueck ON rueck.person_id = p.person_id + WHERE p.person_id NOT IN (SELECT person_id FROM public.tbl_prestudent)'; + + $filterWidgetArray = array( + 'query' => $query, + 'app' => InfoCenter::APP, + 'datasetName' => 'onboarding', + 'filter_id' => $this->input->get('filter_id'), + 'requiredPermissions' => 'infocenter', + 'datasetRepresentation' => 'tablesorter', + 'checkboxes' => 'PersonId', + 'additionalColumns' => array('Details'), + 'columnsAliases' => array( + 'PersonId', + ucfirst($this->p->t('person', 'vorname')) , + ucfirst($this->p->t('person', 'nachname')), + ucfirst($this->p->t('global', 'sperrdatum')), + ucfirst($this->p->t('global', 'gesperrtVon')), + ucfirst($this->p->t('infocenter', 'rueckstelldatum')), + ucfirst($this->p->t('infocenter', 'rueckstellgrund')), + ), + + 'formatRow' => function($datasetRaw) { + /* NOTE: Dont use $this here for PHP Version compatibility */ + $datasetRaw->{'Details'} = sprintf( + 'Details', + site_url('system/infocenter/InfoCenter/showDetails'), + $datasetRaw->{'PersonId'}, + 'onboarding', + (isset($_GET['fhc_controller_id']) ? $_GET['fhc_controller_id'] : ''), + (isset($_GET['filter_id']) ? $_GET['filter_id'] : '') + ); + + if ($datasetRaw->{'LockDate'} == null) + { + $datasetRaw->{'LockDate'} = '-'; + } + + if ($datasetRaw->{'LockUser'} == null) + { + $datasetRaw->{'LockUser'} = '-'; + } + + if ($datasetRaw->{'HoldDate'} == null) + { + $datasetRaw->{'HoldDate'} = '-'; + } + else + { + $datasetRaw->{'HoldDate'} = date_format(date_create($datasetRaw->{'HoldDate'}), 'Y-m-d H:i'); + } + + if ($datasetRaw->{'Rueckstellgrund'} === null) + { + $datasetRaw->{'Rueckstellgrund'} = '-'; + } + + return $datasetRaw; + }, + + 'markRow' => function($datasetRaw) { + + if ($datasetRaw->LockDate != null) + { + return FilterWidget::DEFAULT_MARK_ROW_CLASS; + } + } + + + + ); + + echo $this->widgetlib->widget('FilterWidget', $filterWidgetArray); +?> diff --git a/system/filtersupdate.php b/system/filtersupdate.php index 51dd86314..cfcceb0f6 100644 --- a/system/filtersupdate.php +++ b/system/filtersupdate.php @@ -529,6 +529,29 @@ $filters = array( ', 'oe_kurzbz' => null, ), + array( + 'app' => 'infocenter', + 'dataset_name' => 'onboarding', + 'filter_kurzbz' => 'InfoCenterOnboarding', + 'description' => '{Alle}', + 'sort' => 1, + 'default_filter' => true, + 'filter' => ' + { + "name": "Electronic Onboarding - Alle", + "columns": [ + {"name": "PersonId"}, + {"name": "Vorname"}, + {"name": "Nachname"}, + {"name": "LockUser"}, + {"name": "HoldDate"}, + {"name": "Rueckstellgrund"} + ], + "filters": [] + } + ', + 'oe_kurzbz' => null, + ), array( 'app' => 'infocenter', 'dataset_name' => 'aufgenommen', From 02df06288e7590e04c4fed0799651687d19cb05d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 16 Jun 2025 11:37:04 +0200 Subject: [PATCH 002/299] =?UTF-8?q?Bugfix=20R=C3=BCckstellgrund?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/views/system/infocenter/onboarding.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/views/system/infocenter/onboarding.php b/application/views/system/infocenter/onboarding.php index a600364d9..1f5bae847 100644 --- a/application/views/system/infocenter/onboarding.php +++ b/application/views/system/infocenter/onboarding.php @@ -19,7 +19,7 @@ 'ui' => array('bitteEintragWaehlen') ), 'customCSSs' => array('public/css/sbadmin2/tablesort_bootstrap.css', 'public/css/infocenter/infocenterPersonDataset.css'), - 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/infocenterPersonDataset.js') + 'customJSs' => array('public/js/bootstrapper.js', 'public/js/infocenter/rueckstellung.js', 'public/js/infocenter/infocenterPersonDataset.js') ) ); ?> From 08182fe0f504132293ed16ead5ae262aa1e1ccbc Mon Sep 17 00:00:00 2001 From: Cristina Date: Wed, 18 Jun 2025 12:03:09 +0200 Subject: [PATCH 003/299] Added phrases for LV-Evaluierung --- system/phrasesupdate.php | 428 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 427 insertions(+), 1 deletion(-) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 0203b3c2f..7c350c452 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -41873,8 +41873,434 @@ and represent the current state of research on the topic. The prescribed citatio 'insertvon' => 'system' ) ) - ) + ), // PROJEKTARBEITSBEURTEILUNG SS2025 ENDE --------------------------------------------------------------------------- + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'abschicken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Abschicken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Submit', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'global', + 'phrase' => 'zurueckZumStart', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zurück zum Start', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Back to Start', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'global', + 'phrase' => 'lvevaluierungAbschicken', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'LV-Evaluierung abschicken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Submit Course Evaluation', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'global', + 'phrase' => 'lvevaluierung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'LV-Evaluierung', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Course Evaluation', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'loginTextCodeEingeben', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Bitte geben Sie Ihren Code ein, um die Evaluierung zu starten:', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Please enter your code to start the evaluation:', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'loginCodeEingeben', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Evaluierung-Code eingeben', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Enter your Evaluation-Code', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'loginTextLvevaluierung', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => ' +
+

Die folgende LV-Evaluierung umfasst

+
+
    +
  • zwei (geschlossene) Pflichtfragen
  • +
  • die Möglichkeit, optional zu einzelnen Bereichen konkreteres Feedback zu geben
  • +
  • zwei optionale Freitextfragen
  • +
+ ', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => ' +
+

The following course evaluation includes

+
+
    +
  • two (closed) mandatory questions
  • +
  • the opportunity to optionally provide more specific feedback on individual areas
  • +
  • two optional free-text questions
  • +
+ ', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'loginTextAntwortoptionen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => ' +
+

Die Antwortoptionen umfassen 5 Stufen:

+
+
    +
  • Sehr gut
  • +
  • Gut
  • +
  • Mittel
  • +
  • Schlecht
  • +
  • Sehr schlecht
  • +
+ ', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => ' +
+

The answer options comprise 5 levels:

+
+
    +
  • Excellent
  • +
  • Good
  • +
  • Satisfactory
  • +
  • Poor
  • +
  • Insufficient
  • +
+ ', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungPeriodeBeendet', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Evaluierungszeitraum endete am {date}', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Evaluation period was closed on {date}', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungPeriodeStartetErst', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Der Evaluierungszeitraum startet erst am {date}', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Evaluation period starts on {date}', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungEingereicht', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Evaluierung wurde am {date} eingereicht', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Evaluation was submitted on {date}', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungNichtMehrVerfuegbar', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Diese Evaluierung ist nicht mehr verfügbar.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'This evaluation is no longer available.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungNichtVerfuegbar', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Diese Evaluierung ist nicht verfügbar.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'This evaluation is not available yet.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'logoutTitle', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Danke!
Was passiert nun mit Ihrem Feedback?', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Thank you!
What happens to your feedback now?', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'logoutText', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => ' +

Ihr Feedback dient den Lehrenden zur Selbstevaluierung und Ihre Jahrgangsvertretungen werden von der Studiengangsleitung zum Jour-Fixe eingeladen, um die Ergebnisse zu besprechen.

+

Ihr Feedback dient der kontinuierlichen Weiterentwicklung der Lehrveranstaltung. Mehr Details dazu finden Sie hier: + ', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => ' +

Your feedback is used by the lecturers for self-evaluation and your year representatives are invited to the Jour-Fixe by the head of degree program to discuss the results.

+

Your feedback is used for the continuous further development of the course. You can find more details here: + ', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungZeitAbgelaufen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Evaluierungszeit ist abgelaufen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'The Evaluation time is over', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungAntwortenNichtUebermittelt', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Ihre Antworten wurden nicht übermittelt.', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Your responses were not submitted.', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungCodeExistiertNicht', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Dieser Evaluierungscode exisitiert nicht', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'This evaluation code does not exist', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungNichtAktiv', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Die Evaluierung ist nicht aktiv', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Evaluation is not active', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), ); From fd2de106f8a4a760e1df0c001896022cc95a4ba9 Mon Sep 17 00:00:00 2001 From: Cristina Date: Tue, 24 Jun 2025 15:02:45 +0200 Subject: [PATCH 004/299] Added column evaluierung to lehre.tbl_lehrveranstaltung - evaluierung (boolean) indicates if lehrveranstaltung shall be evaluated. Default is true. --- system/dbupdate_3.4.php | 3 ++- system/dbupdate_3.4/62063_lv_evaluierung.php | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 system/dbupdate_3.4/62063_lv_evaluierung.php diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php index 0e2b4e7c6..6b346573a 100644 --- a/system/dbupdate_3.4.php +++ b/system/dbupdate_3.4.php @@ -74,6 +74,7 @@ require_once('dbupdate_3.4/55968_index_anrechnung.php'); require_once('dbupdate_3.4/25999_locale_update.php'); require_once('dbupdate_3.4/55289_pep_fine_tuning.php'); require_once('dbupdate_3.4/55614_perm_verwaltetoe.php'); +require_once('dbupdate_3.4/62063_lv_evaluierung.php'); // *** Pruefung und hinzufuegen der neuen Attribute und Tabellen echo '

Pruefe Tabellen und Attribute!

'; @@ -241,7 +242,7 @@ $tabellen=array( "lehre.tbl_lehrmittel" => array("lehrmittel_kurzbz","beschreibung","ort_kurzbz"), "lehre.tbl_lehrmodus" => array("lehrmodus_kurzbz","bezeichnung_mehrsprachig","aktiv"), "lehre.tbl_lehrtyp" => array("lehrtyp_kurzbz","bezeichnung"), - "lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz","lehrveranstaltung_template_id"), + "lehre.tbl_lehrveranstaltung" => array("lehrveranstaltung_id","kurzbz","bezeichnung","lehrform_kurzbz","studiengang_kz","semester","sprache","ects","semesterstunden","anmerkung","lehre","lehreverzeichnis","aktiv","planfaktor","planlektoren","planpersonalkosten","plankostenprolektor","koordinator","sort","zeugnis","projektarbeit","updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung_english","orgform_kurzbz","incoming","lehrtyp_kurzbz","oe_kurzbz","raumtyp_kurzbz","anzahlsemester","semesterwochen","lvnr","farbe","semester_alternativ","old_lehrfach_id","sws","lvs","alvs","lvps","las","benotung","lvinfo","lehrauftrag","lehrmodus_kurzbz","lehrveranstaltung_template_id", "evaluierung"), "lehre.tbl_lehrveranstaltung_kompatibel" => array("lehrveranstaltung_id","lehrveranstaltung_id_kompatibel"), "lehre.tbl_lvangebot" => array("lvangebot_id","lehrveranstaltung_id","studiensemester_kurzbz","gruppe_kurzbz","incomingplaetze","gesamtplaetze","anmeldefenster_start","anmeldefenster_ende","insertamum","insertvon","updateamum","updatevon"), "lehre.tbl_lvregel" => array("lvregel_id","lvregeltyp_kurzbz","operator","parameter","lvregel_id_parent","lehrveranstaltung_id","studienplan_lehrveranstaltung_id","insertamum","insertvon","updateamum","updatevon"), diff --git a/system/dbupdate_3.4/62063_lv_evaluierung.php b/system/dbupdate_3.4/62063_lv_evaluierung.php new file mode 100644 index 000000000..5a0714772 --- /dev/null +++ b/system/dbupdate_3.4/62063_lv_evaluierung.php @@ -0,0 +1,15 @@ +db_query("SELECT evaluierung FROM lehre.tbl_lehrveranstaltung LIMIT 1")) +{ + $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN evaluierung boolean NOT NULL DEFAULT true; + COMMENT ON COLUMN lehre.tbl_lehrveranstaltung.evaluierung IS 'TRUE wenn für diese LV eine LV-Evaluierung durchgeführt wird'; + "; + + if(!$db->db_query($qry)) + echo 'lehre.tbl_lehrveranstaltung '.$db->db_last_error().'
'; + else + echo '
Spalte evaluierung zu Tabelle lehre.tbl_lehrveranstaltung hinzugefügt'; +} From 4b8af46a2ee0edf7968ec18c4204fd6d0e40d0cc Mon Sep 17 00:00:00 2001 From: Cristina Date: Wed, 25 Jun 2025 13:30:05 +0200 Subject: [PATCH 005/299] Added 'evaluierung' to lehrveranstaltung.class.php and updated related methods --- include/lehrveranstaltung.class.php | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 48edd9d0a..aa3b6771e 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -70,6 +70,7 @@ class lehrveranstaltung extends basis_db public $farbe; public $lehrauftrag=true; public $lehrveranstaltung_template_id; // integer + public $evaluierung=true; // boolean public $studienplan_lehrveranstaltung_id; @@ -170,6 +171,7 @@ class lehrveranstaltung extends basis_db $this->benotung = $this->db_parse_bool($row->benotung); $this->lvinfo = $this->db_parse_bool($row->lvinfo); $this->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $this->evaluierung = $this->db_parse_bool($row->evaluierung); // FIXME: LV-Bezeichnung richtig mehrsprachig machen // Zwischenzeitlich 'Italian' zum bezeichnung_arr dazugegeben @@ -244,6 +246,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -394,6 +397,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['Italian'] = $row->bezeichnung; @@ -524,6 +528,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -607,6 +612,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -779,7 +785,7 @@ class lehrveranstaltung extends basis_db insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort, zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz, incoming, lehrtyp_kurzbz, oe_kurzbz, raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe, lehrveranstaltung_template_id,sws,lvs,alvs,lvps,las,benotung,lvinfo, - lehrauftrag, lehrmodus_kurzbz) VALUES ('. + lehrauftrag, lehrmodus_kurzbz, evaluierung) VALUES ('. $this->db_add_param($this->studiengang_kz). ', '. $this->db_add_param($this->bezeichnung). ', '. $this->db_add_param($this->kurzbz). ', '. @@ -824,7 +830,8 @@ class lehrveranstaltung extends basis_db $this->db_add_param($this->benotung, FHC_BOOLEAN).','. $this->db_add_param($this->lvinfo, FHC_BOOLEAN).','. $this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).','. - $this->db_add_param($this->lehrmodus_kurzbz) + $this->db_add_param($this->lehrmodus_kurzbz).','. + $this->db_add_param($this->evaluierung, FHC_BOOLEAN) .');'; } else @@ -880,7 +887,8 @@ class lehrveranstaltung extends basis_db 'las = '.$this->db_add_param($this->las).', '. 'benotung = '.$this->db_add_param($this->benotung, FHC_BOOLEAN).', '. 'lvinfo = '.$this->db_add_param($this->lvinfo, FHC_BOOLEAN).', '. - 'lehrauftrag = '.$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).' '. + 'lehrauftrag = '.$this->db_add_param($this->lehrauftrag, FHC_BOOLEAN).', '. + 'evaluierung = '.$this->db_add_param($this->evaluierung, FHC_BOOLEAN).' '. 'WHERE lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER, false) . ';'; } @@ -991,6 +999,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -1086,6 +1095,7 @@ class lehrveranstaltung extends basis_db $l->benotung = $this->db_parse_bool($row->benotung); $l->lvinfo = $this->db_parse_bool($row->lvinfo); $l->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $l->evaluierung = $this->db_parse_bool($row->evaluierung); $l->bezeichnung_arr['German'] = $row->bezeichnung; $l->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -1170,6 +1180,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -1271,6 +1282,7 @@ class lehrveranstaltung extends basis_db $obj->benotung = $this->db_parse_bool($row->benotung); $obj->lvinfo = $this->db_parse_bool($row->lvinfo); $obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $obj->evaluierung = $this->db_parse_bool($row->evaluierung); $obj->bezeichnung_arr['German'] = $row->bezeichnung; $obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -1396,6 +1408,7 @@ class lehrveranstaltung extends basis_db $obj->lvinfo =$this->db_parse_bool( $lv->lvinfo); $obj->zeugnis = $this->db_parse_bool($lv->zeugnis); $obj->lehrauftrag = $this->db_parse_bool($lv->lehrauftrag); + $obj->evaluierung = $this->db_parse_bool($lv->evaluierung); $values[] = $obj; @@ -1422,6 +1435,7 @@ class lehrveranstaltung extends basis_db $obj->lvinfo =$this->db_parse_bool( $this->lvinfo); $obj->zeugnis = $this->db_parse_bool($this->zeugnis); $obj->lehrauftrag = $this->db_parse_bool($this->lehrauftrag); + $obj->evaluierung = $this->db_parse_bool($this->evaluierung); $values[] = $obj; } @@ -1476,6 +1490,7 @@ class lehrveranstaltung extends basis_db $obj->export = $lv->export; $obj->genehmigung = $lv->genehmigung; $obj->lehrauftrag = $lv->lehrauftrag; + $obj->evaluierung = $lv->evaluierung; $obj->lehre = $lv->lehre; $obj->children = array(); if(count($lv->childs) > 0) @@ -1507,6 +1522,7 @@ class lehrveranstaltung extends basis_db $obj->zeugnis = $this->db_parse_bool($this->zeugnis); $obj->curriculum = $this->db_parse_bool($this->curriculum); $obj->lehrauftrag = $this->lehrauftrag; + $obj->evaluierung = $this->db_parse_bool($this->evaluierung); $values[] = $obj; } @@ -1613,6 +1629,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -1700,6 +1717,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -1873,6 +1891,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -2003,6 +2022,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->studiengang_kurzbzlang = $row->studiengang_kurzbzlang; @@ -2131,6 +2151,7 @@ class lehrveranstaltung extends basis_db $lv_obj->benotung = $this->db_parse_bool($row->benotung); $lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo); $lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $lv_obj->evaluierung = $this->db_parse_bool($row->evaluierung); $lv_obj->bezeichnung_arr['German'] = $row->bezeichnung; $lv_obj->bezeichnung_arr['English'] = $row->bezeichnung_english; @@ -2402,6 +2423,7 @@ class lehrveranstaltung extends basis_db $obj->benotung = $this->db_parse_bool($row->benotung); $obj->lvinfo = $this->db_parse_bool($row->lvinfo); $obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag); + $obj->evaluierung = $this->db_parse_bool($row->evaluierung); $obj->bezeichnung_arr['German'] = $row->bezeichnung; $obj->bezeichnung_arr['English'] = $row->bezeichnung_english; From daf9d2ea15f8d7063a07cf179cb87cdd8cda8d31 Mon Sep 17 00:00:00 2001 From: Cristina Date: Wed, 25 Jun 2025 13:35:20 +0200 Subject: [PATCH 006/299] Added checkbox 'evaluierung' Lehrveranstaltung Details in VILESCI --- vilesci/lehre/lehrveranstaltung_details.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vilesci/lehre/lehrveranstaltung_details.php b/vilesci/lehre/lehrveranstaltung_details.php index bad2a7d93..c1433047c 100644 --- a/vilesci/lehre/lehrveranstaltung_details.php +++ b/vilesci/lehre/lehrveranstaltung_details.php @@ -122,6 +122,7 @@ $lv->benotung = isset($_POST['benotung']); $lv->lvinfo = isset($_POST['lvinfo']); $lv->lehrauftrag = isset($_POST['lehrauftrag']); + $lv->evaluierung = isset($_POST['evaluierung']); $lv->lehrveranstaltung_template_id = $lv->lehrtyp_kurzbz == 'tpl' ? '' : $_POST['lehrveranstaltung_template_id']; if(!$lv->save()) @@ -446,6 +447,10 @@ Lehrauftrag lehrauftrag?'checked':'').'> + + Evaulierung + evaluierung?'checked':'').'> + Template From 56bfe46675ff6281ca454073c486c55399b3e7fb Mon Sep 17 00:00:00 2001 From: Cristina Date: Wed, 2 Jul 2025 12:10:28 +0200 Subject: [PATCH 007/299] Added phrases for lvevaluierung --- system/phrasesupdate.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 7c350c452..8ac45c0fa 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -41915,6 +41915,7 @@ and represent the current state of research on the topic. The prescribed citatio ) ) ), + // LVEVALUIERUNG --------------------------------------------------------------------------------------------------- array( 'app' => 'lvevaluierung', 'category' => 'global', @@ -42301,6 +42302,26 @@ and represent the current state of research on the topic. The prescribed citatio ) ) ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'zeitLaeuftAb', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Zeit läuft bald ab – zum Speichern bitte ‚Abschicken‘ klicken', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Time is running out — please click ‘Submit’ to save your answers', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), ); From 153e273fec5396c5bd0991867a3b38b5335ab54f Mon Sep 17 00:00:00 2001 From: ma0048 Date: Wed, 9 Jul 2025 13:52:46 +0200 Subject: [PATCH 008/299] firefox check entfernt --- cis/testtool/login.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/cis/testtool/login.php b/cis/testtool/login.php index 5a2ae0dea..5306dadab 100644 --- a/cis/testtool/login.php +++ b/cis/testtool/login.php @@ -447,14 +447,6 @@ if (isset($_POST['save']) && isset($_SESSION['prestudent_id'])) { e.preventDefault(); }); - // If Browser is any other than Mozilla Firefox and the test includes any MathML, - // show message to use Mozilla Firefox - var ua = navigator.userAgent; - if ((ua.indexOf("Firefox") > -1) == false) - { - $("#alertmsgdiv").html("
BITTE VERWENDEN SIE DEN MOZILLA FIREFOX BROWSER!
(Manche Prüfungsfragen werden sonst nicht korrekt dargestellt.

PLEASE USE MOZILLA FIREFOX BROWSER!
(Otherwise some exam items will not be displayed correctly
"); - //alert('BITTE VERWENDEN SIE DEN MOZILLA FIREFOX BROWSER!\n(Manche Prüfungsfragen werden sonst nicht korrekt dargestellt.\n\nPLEASE USE MOZILLA FIREFOX BROWSER!\n(Ohterwise some exam items will not be displayed correctly.)'); - } }); Date: Wed, 16 Jul 2025 16:13:27 +0200 Subject: [PATCH 009/299] Added phrases for lvevaluierung --- system/phrasesupdate.php | 80 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index 8ac45c0fa..417eb9110 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -42322,6 +42322,86 @@ and represent the current state of research on the topic. The prescribed citatio ) ) ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'spracheAuswaehlen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Sprache auswählen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Select language', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'fhtwLogo', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'FH Technikum Wien Logo', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'UAS Technikum Wien Logo', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'evaluierungscodeEingeben', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Evaluierungscode eingeben', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Enter Evaluation code', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'lvevaluierung', + 'category' => 'fragebogen', + 'phrase' => 'fragebogen', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => 'Fragebogen', + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Questionnaire', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), ); From 483662726deded3970b676dd4cf88da2dd21755c Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Fri, 22 Aug 2025 14:40:58 +0200 Subject: [PATCH 010/299] abgabetool api/controller refactor; quality gates dbupdate script; load types from backend instead of hardcoded; WIP email check for externe betreuer; --- .../controllers/api/frontend/v1/Abgabe.php | 647 ++++++++++++++++++ .../controllers/api/frontend/v1/Lehre.php | 579 +--------------- .../models/education/Paabgabetyp_model.php | 6 + public/js/api/factory/abgabe.js | 96 +++ public/js/api/lehre.js | 75 -- .../Cis/Abgabetool/AbgabeMitarbeiterDetail.js | 8 +- .../Cis/Abgabetool/AbgabeStudentDetail.js | 9 +- .../Cis/Abgabetool/AbgabetoolMitarbeiter.js | 17 +- .../Cis/Abgabetool/AbgabetoolStudent.js | 4 +- .../Cis/Abgabetool/DeadlineOverview.js | 2 +- .../61164_abgabetool_quality_gates.php | 29 + 11 files changed, 805 insertions(+), 667 deletions(-) create mode 100644 application/controllers/api/frontend/v1/Abgabe.php create mode 100644 public/js/api/factory/abgabe.js create mode 100644 system/dbupdate_3.4/61164_abgabetool_quality_gates.php diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php new file mode 100644 index 000000000..61a3b4c44 --- /dev/null +++ b/application/controllers/api/frontend/v1/Abgabe.php @@ -0,0 +1,647 @@ +. + */ + +if (! defined('BASEPATH')) exit('No direct script access allowed'); + +//require_once('../../../include/studiengang.class.php'); +//require_once('../../../include/student.class.php'); +//require_once('../../../include/datum.class.php'); +//require_once('../../../include/mail.class.php'); +//require_once('../../../include/benutzerberechtigung.class.php'); +//require_once('../../../include/phrasen.class.php'); +//require_once('../../../include/projektarbeit.class.php'); +//require_once('../../../include/projektbetreuer.class.php'); + +class Lehre extends FHCAPI_Controller +{ + + /** + * Object initialization + */ + public function __construct() + { + parent::__construct([ + 'getStudentProjektarbeiten' => self::PERM_LOGGED, // TODO: abgabetool berechtigung? + 'getStudentProjektabgaben' => self::PERM_LOGGED, + 'postStudentProjektarbeitZwischenabgabe' => self::PERM_LOGGED, + 'postStudentProjektarbeitEndupload' => self::PERM_LOGGED, + 'getMitarbeiterProjektarbeiten' => self::PERM_LOGGED, + 'postProjektarbeitAbgabe' => self::PERM_LOGGED, + 'deleteProjektarbeitAbgabe' => self::PERM_LOGGED, + 'postSerientermin' => self::PERM_LOGGED, + 'fetchDeadlines' => self::PERM_LOGGED, // TODO: mitarbeiter recht prüfen + 'getPaAbgabetypen' => self::PERM_LOGGED + ]); + + $this->load->library('PhrasesLib'); + + $this->loadPhrases( + array( + 'global', + 'ui', + 'abgabetool' + ) + ); + + $this->load->helper('hlp_sancho_helper'); + + require_once(FHCPATH . 'include/studiengang.class.php'); + require_once(FHCPATH . 'include/student.class.php'); + require_once(FHCPATH . 'include/projektarbeit.class.php'); + require_once(FHCPATH . 'include/projektbetreuer.class.php'); + } + + //------------------------------------------------------------------------------------------------------------------ + // Public methods + + /** + * fetches all projektabgabetermine for a given projektarbeit_id used in cis4 student abgabetool + */ + public function getStudentProjektabgaben() { + $projektarbeit_id = $this->input->get("projektarbeit_id",TRUE); + + // TODO: error messages + + if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + $projektarbeit_obj = new projektarbeit(); + if($projektarbeit_id==-1) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + if(!$projektarbeit_obj->load($projektarbeit_id)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + $paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id); + + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + $ret = $this->ProjektarbeitModel->getProjektarbeitAbgabetermine($projektarbeit_id); + + // TODO: fetch zweitbetreuer + + $this->terminateWithSuccess(array($ret, $paIsCurrent)); + } + + /** + * fetches all projektarbeiten and betreuer for a given student_uid used in cis4 student abgabetool + */ + public function getStudentProjektarbeiten($uid) + { + $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + + if (!isset($uid) || isEmptyString($uid)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + $isZugeteilterBetreuer = count($this->ProjektarbeitModel->checkZuordnung($uid, getAuthUID())->retval) > 0; + $this->addMeta('isZugeteilterBetreuer', $isZugeteilterBetreuer); + $isMitarbeiter = $this->MitarbeiterModel->isMitarbeiter(getAuthUID()); + + if ($isMitarbeiter && $isZugeteilterBetreuer){ + $projektarbeiten = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer($uid); + } else { + $projektarbeiten = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer(getAuthUID()); + } + + $this->terminateWithSuccess(array($projektarbeiten, DOMAIN, $uid)); + } + + + + /** + * projektarbeit - upload for zwischenabgaben in cis4 student abgabetool + */ + public function postStudentProjektarbeitZwischenabgabe() + { + + $projektarbeit_id = $_POST['projektarbeit_id']; + $paabgabe_id = $_POST['paabgabe_id']; + $student_uid = $_POST['student_uid']; + $bperson_id = $_POST['bperson_id']; + $paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz']; + + if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id) + || !isset($paabgabe_id) || isEmptyString($paabgabe_id) + || !isset($student_uid) || isEmptyString($student_uid) + || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + if ((isset($_FILES) and isset($_FILES['file']) and ! $_FILES['file']['error'])) { + move_uploaded_file($_FILES['file']['tmp_name'], PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'); + + if(file_exists(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf')) { + + exec('chmod 640 "'.PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'.'"'); + + $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); + $res = $this->PaabgabeModel->update($paabgabe_id, array( + 'abgabedatum' => date('Y-m-d'), + 'updatevon' => getAuthUID(), + 'updateamum' => date('Y-m-d H:i:s') + )); + + $this->sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid); + $this->terminateWithSuccess($res); + } else { + $this->terminateWithError('Error moving File'); + } + + } else { + $this->terminateWithError('File missing'); + } + + } + + /** + * upload für finale abgaben aka Endupload in cis4 student abgabetool + */ + public function postStudentProjektarbeitEndupload() + { + + $projektarbeit_id = $_POST['projektarbeit_id']; + $paabgabe_id = $_POST['paabgabe_id']; + $student_uid = $_POST['student_uid']; + $sprache = $_POST['sprache']; + $abstract = $_POST['abstract']; + $abstract_en = $_POST['abstract_en']; + $schlagwoerter = $_POST['schlagwoerter']; + $schlagwoerter_en = $_POST['schlagwoerter_en']; + $seitenanzahl = $_POST['seitenanzahl']; + $bperson_id = $_POST['bperson_id']; + $paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz']; + + if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id) + || !isset($paabgabe_id) || isEmptyString($paabgabe_id) + || !isset($student_uid) || isEmptyString($student_uid) + || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + // TODO: maybe check for other params aswell? + + if ((isset($_FILES) and isset($_FILES['file']) and ! $_FILES['file']['error'])) { + move_uploaded_file($_FILES['file']['tmp_name'], PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'); + + if(file_exists(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf')) { + + // Loads Libraries + $this->load->library('SignatureLib'); + + // Check if the document is signed + $signaturVorhanden = true; + $signList = SignatureLib::list(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'); + if (is_array($signList) && count($signList) > 0) + { + // The document is signed + $uploadedDocumentSigned = 'The document is signed'; + } + elseif ($signList === null) + { + $uploadedDocumentSigned = 'WARNING: signature server error'; + } + else + { + $signaturVorhanden = false; + $uploadedDocumentSigned = 'No document signature found'; + } + $this->addMeta('signaturInfo', $uploadedDocumentSigned); + + if ($signaturVorhanden === false) + { + $this->signaturFehltEmail($student_uid); + } + + // TODO error handle get data has data the updates + // update projektarbeit cols + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + $this->ProjektarbeitModel->updateProjektarbeit($projektarbeit_id,$sprache,$abstract,$abstract_en + ,$schlagwoerter, $schlagwoerter_en, $seitenanzahl); + + + // update paabgabe datum + $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); + $res = $this->PaabgabeModel->update($paabgabe_id, array( + 'abgabedatum' => date('Y-m-d'), + 'updatevon' => getAuthUID(), + 'updateamum' => date('Y-m-d H:i:s') + )); + + $this->sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid); + + $this->terminateWithSuccess($res); + } else { + $this->terminateWithError('Error moving File'); + } + + } else { + $this->terminateWithError('File missing'); + } + + } + + private function signaturFehltEmail($student_uid) { + + + // Mail an Studiengang wenn keine Signatur gefunden wurde + $student = new student(); + if(!$student->load($student_uid)) + $this->terminateWithError($this->p->t('global','userNichtGefunden'), 'general'); + + $stg_obj = new studiengang(); + if(!$stg_obj->load($student->studiengang_kz)) + $this->terminateWithError($this->p->t('global','fehlerBeimLesenAusDatenbank'), 'general'); + + $subject = 'Abgabe ohne Signatur'; + $tomail = $stg_obj->email; + $data = array( + 'vorname' => $student->vorname, + 'nachname' => $student->nachname, + 'studiengang' => $stg_obj->bezeichnung + ); + + $mailres = sendSanchoMail( + 'ParbeitsbeurteilungSiganturFehlt', + $data, + $tomail, + $subject, + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg' + ); + } + + private function sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid) { + + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + + $resBetr = $this->ProjektarbeitModel->getProjektbetreuerAnrede($bperson_id); + + $projektarbeit_obj = new projektarbeit(); + + if(!$projektarbeit_obj->load($projektarbeit_id)) + $this->terminateWithError('Ungueltiger Eintrag'); + + $num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id); + + if( null === $num_rows_sem || false === $num_rows_sem ) + { + $this->terminateWithError($this->p->t('abgabetool','fehlerAktualitaetProjektarbeit'), 'general'); + } + + foreach($resBetr->retval as $betreuerRow) { + + // query student benutzer view for every betreuer row + $studentUser = $this->ProjektarbeitModel->getProjektarbeitBenutzer($student_uid)->retval[0]; + + // TODO: hasdata, getData etc + + // 1. Begutachter mail ohne Token + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid; + $projekttyp_kurzbz = $projektarbeit_obj->projekttyp_kurzbz; + $subject = $projektarbeit_obj->projekttyp_kurzbz == 'Diplom' ? 'Masterarbeitsbetreuung' : 'Bachelorarbeitsbetreuung'; + $abgabetyp = $paabgabetyp_kurzbz == 'end' ? 'Endabgabe' : 'Zwischenabgabe'; + + $maildata = array(); + $maildata['geehrt'] = "geehrte".($betreuerRow->anrede=="Herr"?"r":""); + $maildata['anrede'] = $betreuerRow->anrede; + $maildata['betreuer_voller_name'] = $betreuerRow->first; + $maildata['student_anrede'] = $studentUser->anrede; + $maildata['student_voller_name'] = trim($studentUser->titelpre." ".$studentUser->vorname." ".$studentUser->nachname." ".$studentUser->titelpost); + $maildata['abgabetyp'] = $abgabetyp; + $maildata['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; + $maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "

Zur Beurteilung der Arbeit

" : ""; + $maildata['token'] = ""; + + $email = $this->getBetreuerEmail($bperson_id); + + if(!$email) $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); + + $mailres = sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $maildata, + $email, +// $betreuerRow->mitarbeiter_uid."@".DOMAIN, + $subject, + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + get_uid()."@".DOMAIN); + + if(!$mailres) + { + $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); + } + + // 2. Begutachter mail, wenn Endabgabe, mit Token wenn extern + if ($paabgabetyp_kurzbz == 'end') + { + // Zweitbegutachter holen + $zweitbegutachter = new projektbetreuer(); + $zweitbegutachterRes = $zweitbegutachter->getZweitbegutachterWithToken($bperson_id, $projektarbeit_id, $studentUser->uid); + + if ($zweitbegutachterRes) + { + $zweitbegutachterResults = $zweitbegutachter->result; + + foreach ($zweitbegutachterResults as $begutachter) + { + // token generieren, wenn noch nicht vorhanden und notwendig (wird in methode überprüft) + $tokenGenRes = $zweitbegutachter->generateZweitbegutachterToken($begutachter->person_id, $projektarbeit_id); + + if (!$tokenGenRes) + { + $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailZweitBegutachter'), 'general'); + } + + // Zweitbegutachter (evtl. mit Token) holen + $zweitbegutachterMitToken = new projektbetreuer(); + $begutachterMitTokenRes = $zweitbegutachterMitToken->getZweitbegutachterWithToken($bperson_id, $projektarbeit_id, $studentUser->uid, $begutachter->person_id); + + if (!$begutachterMitTokenRes) + { + $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailZweitBegutachter'), 'general'); + } + + // Email an Zweitbegutachter senden + if (isset($zweitbegutachterMitToken->result[0])) + { + $begutachterMitToken = $zweitbegutachterMitToken->result[0]; + + $path = $begutachterMitToken->betreuerart_kurzbz == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter'; + $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/$path"; + $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid; + $intern = isset($begutachterMitToken->uid); + $mail_link = $intern ? $mail_fulllink : $mail_baselink; + + $zweitbetmaildata = array(); + $zweitbetmaildata['geehrt'] = "geehrte" . ($begutachterMitToken->anrede == "Herr" ? "r" : ""); + $zweitbetmaildata['anrede'] = $begutachterMitToken->anrede; + $zweitbetmaildata['betreuer_voller_name'] = $begutachterMitToken->voller_name; + $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; + $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; + $zweitbetmaildata['abgabetyp'] = $abgabetyp; + $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; + $zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; + $zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($begutachterMitToken->zugangstoken) && !$intern ? "

Zugangstoken: " . $begutachterMitToken->zugangstoken . "

" : ""; + + $mailres = sendSanchoMail( + 'ParbeitsbeurteilungEndupload', + $zweitbetmaildata, + $begutachterMitToken->email, + $subject, + 'sancho_header_min_bw.jpg', + 'sancho_footer_min_bw.jpg', + get_uid()."@".DOMAIN + ); + + if (!$mailres) + { + $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); + } + } + } + } + } + } + } + + public function getMitarbeiterProjektarbeiten() { + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + + $boolParamStr = $this->input->get('showall'); + $trueStrings = ['true', '1']; + $falseStrings = ['false', '0']; + + // Handle missing or invalid parameter + if ($boolParamStr === null) { + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + } + $boolParamStrLower = strtolower($boolParamStr); + + if (in_array($boolParamStrLower, $trueStrings, true)) { + $showAllBool = true; + } elseif (in_array($boolParamStrLower, $falseStrings, true)) { + $showAllBool = false; + } else { +// $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + } + + $projektarbeiten = $this->ProjektarbeitModel->getMitarbeiterProjektarbeiten(getAuthUID(), $showAllBool); + + $this->terminateWithSuccess(array($projektarbeiten, DOMAIN)); + } + + public function postProjektarbeitAbgabe() { + $projektarbeit_id = $_POST['projektarbeit_id']; + $paabgabe_id = $_POST['paabgabe_id']; + $paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz']; + $datum = $_POST['datum']; + $fixtermin = $_POST['fixtermin']; + $kurzbz = $_POST['kurzbz']; + + if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id) + || !isset($paabgabe_id) || isEmptyString($paabgabe_id) + || !isset($datum) || isEmptyString($datum) + || !isset($datum) || isEmptyString($datum) + || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); + + if($paabgabe_id == -1) { + $result = $this->PaabgabeModel->insert( + array( + 'projektarbeit_id' => $projektarbeit_id, + 'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz, + 'fixtermin' => $fixtermin, + 'datum' => $datum, + 'kurzbz' => $kurzbz, + 'insertvon' => getAuthUID(), + 'insertamum' => date('Y-m-d H:i:s') + ) + ); + + $this->terminateWithSuccess($result); + } else { + $result = $this->PaabgabeModel->update( + $paabgabe_id, + array( + 'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz, + 'datum' => $datum, + 'kurzbz' => $kurzbz, + 'updatevon' => getAuthUID(), + 'updateamum' => date('Y-m-d H:i:s') + ) + ); + + $this->terminateWithSuccess($result); + } + } + + public function deleteProjektarbeitAbgabe() { + $paabgabe_id = $_POST['paabgabe_id']; + + if (!isset($paabgabe_id) || isEmptyString($paabgabe_id)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); + + $result = $this->PaabgabeModel->load($paabgabe_id); + $result = $this->getDataOrTerminateWithError($result); + + if(count($result) == 0) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + // TODO: berechtigung? + if($result[0]->insertvon === getAuthUID()) { + $result = $this->PaabgabeModel->delete($paabgabe_id); + $result = $this->getDataOrTerminateWithError($result); + $this->terminateWithSuccess($result); + } + + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + } + + /** + * endpoint for adding the same paabgabe for multiple projektarbeiten + * can be slow for large n since it queries twice per projektarbeit_id + */ + public function postSerientermin() { + $projektarbeit_ids = $_POST['projektarbeit_ids']; + $datum = $_POST['datum']; + $paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz']; + $bezeichnung = $_POST['bezeichnung']; + $kurzbz = $_POST['kurzbz']; + + if (!isset($projektarbeit_ids) || !is_array($projektarbeit_ids) || empty($projektarbeit_ids) + || !isset($datum) || isEmptyString($datum) + || !isset($kurzbz) || isEmptyString($kurzbz) + || !isset($bezeichnung) || isEmptyString($bezeichnung) + || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) + $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); + + // old script checks if there already are tbl_paabgabe entries with exact date, type & kurzbz + // for each termin - good to check that in principle but should not matter in this place. if necessary + // duplicate abgabetermine can be easily deleted manually, also via cronjob@night. + + // since this entry includes the kurzbz string match, it should have only ever mattered when there were + // multiple users entering the exact same set of (date, type, kurzbz) - which is a much more narrow case than the + // general "saveMultiple" function should handle + + // old script afterwards again queries if user is not the zweitbetreuer of any id - this is blocked in the ui + // and should never unintentionally happen + + // TODO: check berechtigung &/|| zuordnung? + + $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + + $res = []; + foreach ($projektarbeit_ids as $projektarbeit_id) { + + $result = $this->PaabgabeModel->insert( + array( + 'projektarbeit_id' => $projektarbeit_id, + 'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz, + 'fixtermin' => false, + 'datum' => $datum, + 'kurzbz' => $kurzbz, + 'insertvon' => getAuthUID(), + 'insertamum' => date('Y-m-d H:i:s') + ) + ); + + $data = $this->getDataOrTerminateWithError($result); + +// $res[] = $data; + + // send mail to student + $result = $this->ProjektarbeitModel->getStudentInfoForProjektarbeitId($projektarbeit_id); + $data = $this->getDataOrTerminateWithError($result); + +// $this->addMeta('emaildata'.$projektarbeit_id, $data); + + $datetime = new DateTime($datum); + $dateEmailFormatted = $datetime->format('d.m.Y'); + + $anredeFillString = $data[0]->anrede=="Herr"?"r":""; + + $fullFormattedNameString = trim($data[0]->titelpre." ".$data[0]->vorname." ".$data[0]->nachname." ".$data[0]->titelpost); + $res[] = $fullFormattedNameString; + + // Prepare mail content + $body_fields = array( + 'anrede' => $data[0]->anrede, + 'anredeFillString' => $anredeFillString, + 'datum' => $dateEmailFormatted, + 'bezeichnung' => $bezeichnung, + 'fullFormattedNameString' => $fullFormattedNameString, + 'kurzbz' => $kurzbz + ); + + $email = $data[0]->uid."@".DOMAIN; + + sendSanchoMail( + 'neuerAbgabetermin', + $body_fields, + $email, + $this->p->t('abgabetool', 'neuerTerminBachelorMasterbetreuung') + ); + } + + $this->terminateWithSuccess($res); + + } + + public function fetchDeadlines() { + $person_id = $_POST['person_id']; + + if (!isset($person_id) || isEmptyString($person_id)) + $person_id = getAuthPersonId(); + + + if($person_id !== getAuthPersonId()) { + $this->load->library('PermissionLib'); + $isAdmin = $this->permissionlib->isBerechtigt('admin'); + if(!$isAdmin) $this->terminateWithError($this->p->t('ui', 'keineBerechtigung'), 'general'); + } + + $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); + $result = $this->PaabgabeModel->getDeadlines($person_id); + $data = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($data); + } + + public function getPaAbgabetypen() { + $this->load->model('education/Paabgabetyp_model', 'PaabgabetypModel'); + + $result = $this->PaabgabetypModel->getAll(); + $paabgabetypen = $this->getDataOrTerminateWithError($result); + $this->terminateWithSuccess($paabgabetypen); + } + + private function getBetreuerEmail($person_id) { + // check if betreuer is intern (fixangestellt = true) + // -> email: uid@DOMAIN + + // if betreuer is extern, check if there are private email contacts + // in tbl_kontakt. if so, return them + + return null; + } +} + diff --git a/application/controllers/api/frontend/v1/Lehre.php b/application/controllers/api/frontend/v1/Lehre.php index d5d0282bd..10d945a3e 100644 --- a/application/controllers/api/frontend/v1/Lehre.php +++ b/application/controllers/api/frontend/v1/Lehre.php @@ -38,34 +38,9 @@ class Lehre extends FHCAPI_Controller parent::__construct([ 'lvStudentenMail' => self::PERM_LOGGED, 'LV' => self::PERM_LOGGED, - 'Pruefungen' => self::PERM_LOGGED, - 'getStudentProjektarbeiten' => self::PERM_LOGGED, // TODO: abgabetool berechtigung? - 'getStudentProjektabgaben' => self::PERM_LOGGED, - 'postStudentProjektarbeitZwischenabgabe' => self::PERM_LOGGED, - 'postStudentProjektarbeitEndupload' => self::PERM_LOGGED, - 'getMitarbeiterProjektarbeiten' => self::PERM_LOGGED, - 'postProjektarbeitAbgabe' => self::PERM_LOGGED, - 'deleteProjektarbeitAbgabe' => self::PERM_LOGGED, - 'postSerientermin' => self::PERM_LOGGED, - 'fetchDeadlines' => self::PERM_LOGGED // TODO: mitarbeiter recht prüfen + 'Pruefungen' => self::PERM_LOGGED ]); - - $this->load->library('PhrasesLib'); - - $this->loadPhrases( - array( - 'global', - 'ui', - 'abgabetool' - ) - ); - - $this->load->helper('hlp_sancho_helper'); - require_once(FHCPATH . 'include/studiengang.class.php'); - require_once(FHCPATH . 'include/student.class.php'); - require_once(FHCPATH . 'include/projektarbeit.class.php'); - require_once(FHCPATH . 'include/projektbetreuer.class.php'); } //------------------------------------------------------------------------------------------------------------------ @@ -125,557 +100,5 @@ class Lehre extends FHCAPI_Controller $this->terminateWithSuccess($result); } - - /** - * fetches all projektabgabetermine for a given projektarbeit_id used in cis4 student abgabetool - */ - public function getStudentProjektabgaben() { - $projektarbeit_id = $this->input->get("projektarbeit_id",TRUE); - - // TODO: error messages - - if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id)) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - $projektarbeit_obj = new projektarbeit(); - if($projektarbeit_id==-1) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - if(!$projektarbeit_obj->load($projektarbeit_id)) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - $paIsCurrent = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id); - - $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); - $ret = $this->ProjektarbeitModel->getProjektarbeitAbgabetermine($projektarbeit_id); - - // TODO: fetch zweitbetreuer - - $this->terminateWithSuccess(array($ret, $paIsCurrent)); - } - - /** - * fetches all projektarbeiten and betreuer for a given student_uid used in cis4 student abgabetool - */ - public function getStudentProjektarbeiten($uid) - { - $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); - $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); - - if (!isset($uid) || isEmptyString($uid)) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - $isZugeteilterBetreuer = count($this->ProjektarbeitModel->checkZuordnung($uid, getAuthUID())->retval) > 0; - $this->addMeta('isZugeteilterBetreuer', $isZugeteilterBetreuer); - $isMitarbeiter = $this->MitarbeiterModel->isMitarbeiter(getAuthUID()); - - if ($isMitarbeiter && $isZugeteilterBetreuer){ - $projektarbeiten = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer($uid); - } else { - $projektarbeiten = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer(getAuthUID()); - } - - $this->terminateWithSuccess(array($projektarbeiten, DOMAIN, $uid)); - } - - - - /** - * projektarbeit - upload for zwischenabgaben in cis4 student abgabetool - */ - public function postStudentProjektarbeitZwischenabgabe() - { - - $projektarbeit_id = $_POST['projektarbeit_id']; - $paabgabe_id = $_POST['paabgabe_id']; - $student_uid = $_POST['student_uid']; - $bperson_id = $_POST['bperson_id']; - $paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz']; - - if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id) - || !isset($paabgabe_id) || isEmptyString($paabgabe_id) - || !isset($student_uid) || isEmptyString($student_uid) - || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - if ((isset($_FILES) and isset($_FILES['file']) and ! $_FILES['file']['error'])) { - move_uploaded_file($_FILES['file']['tmp_name'], PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'); - - if(file_exists(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf')) { - - exec('chmod 640 "'.PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'.'"'); - - $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); - $res = $this->PaabgabeModel->update($paabgabe_id, array( - 'abgabedatum' => date('Y-m-d'), - 'updatevon' => getAuthUID(), - 'updateamum' => date('Y-m-d H:i:s') - )); - - $this->sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid); - $this->terminateWithSuccess($res); - } else { - $this->terminateWithError('Error moving File'); - } - - } else { - $this->terminateWithError('File missing'); - } - - } - - /** - * upload für finale abgaben aka Endupload in cis4 student abgabetool - */ - public function postStudentProjektarbeitEndupload() - { - - $projektarbeit_id = $_POST['projektarbeit_id']; - $paabgabe_id = $_POST['paabgabe_id']; - $student_uid = $_POST['student_uid']; - $sprache = $_POST['sprache']; - $abstract = $_POST['abstract']; - $abstract_en = $_POST['abstract_en']; - $schlagwoerter = $_POST['schlagwoerter']; - $schlagwoerter_en = $_POST['schlagwoerter_en']; - $seitenanzahl = $_POST['seitenanzahl']; - $bperson_id = $_POST['bperson_id']; - $paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz']; - - if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id) - || !isset($paabgabe_id) || isEmptyString($paabgabe_id) - || !isset($student_uid) || isEmptyString($student_uid) - || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - // TODO: maybe check for other params aswell? - - if ((isset($_FILES) and isset($_FILES['file']) and ! $_FILES['file']['error'])) { - move_uploaded_file($_FILES['file']['tmp_name'], PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'); - - if(file_exists(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf')) { - - // Loads Libraries - $this->load->library('SignatureLib'); - - // Check if the document is signed - $signaturVorhanden = true; - $signList = SignatureLib::list(PAABGABE_PATH.$paabgabe_id.'_'.$student_uid.'.pdf'); - if (is_array($signList) && count($signList) > 0) - { - // The document is signed - $uploadedDocumentSigned = 'The document is signed'; - } - elseif ($signList === null) - { - $uploadedDocumentSigned = 'WARNING: signature server error'; - } - else - { - $signaturVorhanden = false; - $uploadedDocumentSigned = 'No document signature found'; - } - $this->addMeta('signaturInfo', $uploadedDocumentSigned); - - if ($signaturVorhanden === false) - { - $this->signaturFehltEmail($student_uid); - } - - // TODO error handle get data has data the updates - // update projektarbeit cols - $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); - $this->ProjektarbeitModel->updateProjektarbeit($projektarbeit_id,$sprache,$abstract,$abstract_en - ,$schlagwoerter, $schlagwoerter_en, $seitenanzahl); - - - // update paabgabe datum - $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); - $res = $this->PaabgabeModel->update($paabgabe_id, array( - 'abgabedatum' => date('Y-m-d'), - 'updatevon' => getAuthUID(), - 'updateamum' => date('Y-m-d H:i:s') - )); - - $this->sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid); - - $this->terminateWithSuccess($res); - } else { - $this->terminateWithError('Error moving File'); - } - - } else { - $this->terminateWithError('File missing'); - } - - } - - private function signaturFehltEmail($student_uid) { - - - // Mail an Studiengang wenn keine Signatur gefunden wurde - $student = new student(); - if(!$student->load($student_uid)) - $this->terminateWithError($this->p->t('global','userNichtGefunden'), 'general'); - - $stg_obj = new studiengang(); - if(!$stg_obj->load($student->studiengang_kz)) - $this->terminateWithError($this->p->t('global','fehlerBeimLesenAusDatenbank'), 'general'); - - $subject = 'Abgabe ohne Signatur'; - $tomail = $stg_obj->email; - $data = array( - 'vorname' => $student->vorname, - 'nachname' => $student->nachname, - 'studiengang' => $stg_obj->bezeichnung - ); - - $mailres = sendSanchoMail( - 'ParbeitsbeurteilungSiganturFehlt', - $data, - $tomail, - $subject, - 'sancho_header_min_bw.jpg', - 'sancho_footer_min_bw.jpg' - ); - } - - private function sendUploadEmail($bperson_id, $projektarbeit_id, $paabgabetyp_kurzbz, $student_uid) { - - $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); - - $resBetr = $this->ProjektarbeitModel->getProjektbetreuerAnrede($bperson_id); - - $projektarbeit_obj = new projektarbeit(); - - if(!$projektarbeit_obj->load($projektarbeit_id)) - $this->terminateWithError('Ungueltiger Eintrag'); - - $num_rows_sem = $projektarbeit_obj->projektarbeitIsCurrent($projektarbeit_id); - - if( null === $num_rows_sem || false === $num_rows_sem ) - { - $this->terminateWithError($this->p->t('abgabetool','fehlerAktualitaetProjektarbeit'), 'general'); - } - - foreach($resBetr->retval as $betreuerRow) { - - // query student benutzer view for every betreuer row - $studentUser = $this->ProjektarbeitModel->getProjektarbeitBenutzer($student_uid)->retval[0]; - - // TODO: hasdata, getData etc - - // 1. Begutachter mail ohne Token - $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/ProjektarbeitsbeurteilungErstbegutachter"; - $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid; - $projekttyp_kurzbz = $projektarbeit_obj->projekttyp_kurzbz; - $subject = $projektarbeit_obj->projekttyp_kurzbz == 'Diplom' ? 'Masterarbeitsbetreuung' : 'Bachelorarbeitsbetreuung'; - $abgabetyp = $paabgabetyp_kurzbz == 'end' ? 'Endabgabe' : 'Zwischenabgabe'; - - $maildata = array(); - $maildata['geehrt'] = "geehrte".($betreuerRow->anrede=="Herr"?"r":""); - $maildata['anrede'] = $betreuerRow->anrede; - $maildata['betreuer_voller_name'] = $betreuerRow->first; - $maildata['student_anrede'] = $studentUser->anrede; - $maildata['student_voller_name'] = trim($studentUser->titelpre." ".$studentUser->vorname." ".$studentUser->nachname." ".$studentUser->titelpost); - $maildata['abgabetyp'] = $abgabetyp; - $maildata['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; - $maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "

Zur Beurteilung der Arbeit

" : ""; - $maildata['token'] = ""; - - $mailres = sendSanchoMail( - 'ParbeitsbeurteilungEndupload', - $maildata, - $betreuerRow->mitarbeiter_uid."@".DOMAIN, - $subject, - 'sancho_header_min_bw.jpg', - 'sancho_footer_min_bw.jpg', - get_uid()."@".DOMAIN); - - if(!$mailres) - { - $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); - } - - // 2. Begutachter mail, wenn Endabgabe, mit Token wenn extern - if ($paabgabetyp_kurzbz == 'end') - { - // Zweitbegutachter holen - $zweitbegutachter = new projektbetreuer(); - $zweitbegutachterRes = $zweitbegutachter->getZweitbegutachterWithToken($bperson_id, $projektarbeit_id, $studentUser->uid); - - if ($zweitbegutachterRes) - { - $zweitbegutachterResults = $zweitbegutachter->result; - - foreach ($zweitbegutachterResults as $begutachter) - { - // token generieren, wenn noch nicht vorhanden und notwendig (wird in methode überprüft) - $tokenGenRes = $zweitbegutachter->generateZweitbegutachterToken($begutachter->person_id, $projektarbeit_id); - - if (!$tokenGenRes) - { - $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailZweitBegutachter'), 'general'); - } - - // Zweitbegutachter (evtl. mit Token) holen - $zweitbegutachterMitToken = new projektbetreuer(); - $begutachterMitTokenRes = $zweitbegutachterMitToken->getZweitbegutachterWithToken($bperson_id, $projektarbeit_id, $studentUser->uid, $begutachter->person_id); - - if (!$begutachterMitTokenRes) - { - $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailZweitBegutachter'), 'general'); - } - - // Email an Zweitbegutachter senden - if (isset($zweitbegutachterMitToken->result[0])) - { - $begutachterMitToken = $zweitbegutachterMitToken->result[0]; - - $path = $begutachterMitToken->betreuerart_kurzbz == 'Zweitbegutachter' ? 'ProjektarbeitsbeurteilungZweitbegutachter' : 'ProjektarbeitsbeurteilungErstbegutachter'; - $mail_baselink = APP_ROOT."index.ci.php/extensions/FHC-Core-Projektarbeitsbeurteilung/$path"; - $mail_fulllink = "$mail_baselink?projektarbeit_id=".$projektarbeit_id."&uid=".$studentUser->uid; - $intern = isset($begutachterMitToken->uid); - $mail_link = $intern ? $mail_fulllink : $mail_baselink; - - $zweitbetmaildata = array(); - $zweitbetmaildata['geehrt'] = "geehrte" . ($begutachterMitToken->anrede == "Herr" ? "r" : ""); - $zweitbetmaildata['anrede'] = $begutachterMitToken->anrede; - $zweitbetmaildata['betreuer_voller_name'] = $begutachterMitToken->voller_name; - $zweitbetmaildata['student_anrede'] = $maildata['student_anrede']; - $zweitbetmaildata['student_voller_name'] = $maildata['student_voller_name']; - $zweitbetmaildata['abgabetyp'] = $abgabetyp; - $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; - $zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; - $zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($begutachterMitToken->zugangstoken) && !$intern ? "

Zugangstoken: " . $begutachterMitToken->zugangstoken . "

" : ""; - - $mailres = sendSanchoMail( - 'ParbeitsbeurteilungEndupload', - $zweitbetmaildata, - $begutachterMitToken->email, - $subject, - 'sancho_header_min_bw.jpg', - 'sancho_footer_min_bw.jpg', - get_uid()."@".DOMAIN - ); - - if (!$mailres) - { - $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); - } - } - } - } - } - } - } - - public function getMitarbeiterProjektarbeiten() { - $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); - - $boolParamStr = $this->input->get('showall'); - $trueStrings = ['true', '1']; - $falseStrings = ['false', '0']; - - // Handle missing or invalid parameter - if ($boolParamStr === null) { - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - } - $boolParamStrLower = strtolower($boolParamStr); - - if (in_array($boolParamStrLower, $trueStrings, true)) { - $showAllBool = true; - } elseif (in_array($boolParamStrLower, $falseStrings, true)) { - $showAllBool = false; - } else { -// $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - } - - $projektarbeiten = $this->ProjektarbeitModel->getMitarbeiterProjektarbeiten(getAuthUID(), $showAllBool); - - $this->terminateWithSuccess(array($projektarbeiten, DOMAIN)); - } - - public function postProjektarbeitAbgabe() { - $projektarbeit_id = $_POST['projektarbeit_id']; - $paabgabe_id = $_POST['paabgabe_id']; - $paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz']; - $datum = $_POST['datum']; - $fixtermin = $_POST['fixtermin']; - $kurzbz = $_POST['kurzbz']; - - if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id) - || !isset($paabgabe_id) || isEmptyString($paabgabe_id) - || !isset($datum) || isEmptyString($datum) - || !isset($datum) || isEmptyString($datum) - || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); - - if($paabgabe_id == -1) { - $result = $this->PaabgabeModel->insert( - array( - 'projektarbeit_id' => $projektarbeit_id, - 'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz, - 'fixtermin' => $fixtermin, - 'datum' => $datum, - 'kurzbz' => $kurzbz, - 'insertvon' => getAuthUID(), - 'insertamum' => date('Y-m-d H:i:s') - ) - ); - - $this->terminateWithSuccess($result); - } else { - $result = $this->PaabgabeModel->update( - $paabgabe_id, - array( - 'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz, - 'datum' => $datum, - 'kurzbz' => $kurzbz, - 'updatevon' => getAuthUID(), - 'updateamum' => date('Y-m-d H:i:s') - ) - ); - - $this->terminateWithSuccess($result); - } - } - - public function deleteProjektarbeitAbgabe() { - $paabgabe_id = $_POST['paabgabe_id']; - - if (!isset($paabgabe_id) || isEmptyString($paabgabe_id)) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); - - $result = $this->PaabgabeModel->load($paabgabe_id); - $result = $this->getDataOrTerminateWithError($result); - - if(count($result) == 0) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - // TODO: berechtigung? - if($result[0]->insertvon === getAuthUID()) { - $result = $this->PaabgabeModel->delete($paabgabe_id); - $result = $this->getDataOrTerminateWithError($result); - $this->terminateWithSuccess($result); - } - - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - } - - /** - * endpoint for adding the same paabgabe for multiple projektarbeiten - * can be slow for large n since it queries twice per projektarbeit_id - */ - public function postSerientermin() { - $projektarbeit_ids = $_POST['projektarbeit_ids']; - $datum = $_POST['datum']; - $paabgabetyp_kurzbz = $_POST['paabgabetyp_kurzbz']; - $bezeichnung = $_POST['bezeichnung']; - $kurzbz = $_POST['kurzbz']; - - if (!isset($projektarbeit_ids) || !is_array($projektarbeit_ids) || empty($projektarbeit_ids) - || !isset($datum) || isEmptyString($datum) - || !isset($kurzbz) || isEmptyString($kurzbz) - || !isset($bezeichnung) || isEmptyString($bezeichnung) - || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) - $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); - - // old script checks if there already are tbl_paabgabe entries with exact date, type & kurzbz - // for each termin - good to check that in principle but should not matter in this place. if necessary - // duplicate abgabetermine can be easily deleted manually, also via cronjob@night. - - // since this entry includes the kurzbz string match, it should have only ever mattered when there were - // multiple users entering the exact same set of (date, type, kurzbz) - which is a much more narrow case than the - // general "saveMultiple" function should handle - - // old script afterwards again queries if user is not the zweitbetreuer of any id - this is blocked in the ui - // and should never unintentionally happen - - // TODO: check berechtigung &/|| zuordnung? - - $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); - $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); - - $res = []; - foreach ($projektarbeit_ids as $projektarbeit_id) { - - $result = $this->PaabgabeModel->insert( - array( - 'projektarbeit_id' => $projektarbeit_id, - 'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz, - 'fixtermin' => false, - 'datum' => $datum, - 'kurzbz' => $kurzbz, - 'insertvon' => getAuthUID(), - 'insertamum' => date('Y-m-d H:i:s') - ) - ); - - $data = $this->getDataOrTerminateWithError($result); - -// $res[] = $data; - - // send mail to student - $result = $this->ProjektarbeitModel->getStudentInfoForProjektarbeitId($projektarbeit_id); - $data = $this->getDataOrTerminateWithError($result); - -// $this->addMeta('emaildata'.$projektarbeit_id, $data); - - $datetime = new DateTime($datum); - $dateEmailFormatted = $datetime->format('d.m.Y'); - - $anredeFillString = $data[0]->anrede=="Herr"?"r":""; - - $fullFormattedNameString = trim($data[0]->titelpre." ".$data[0]->vorname." ".$data[0]->nachname." ".$data[0]->titelpost); - $res[] = $fullFormattedNameString; - - // Prepare mail content - $body_fields = array( - 'anrede' => $data[0]->anrede, - 'anredeFillString' => $anredeFillString, - 'datum' => $dateEmailFormatted, - 'bezeichnung' => $bezeichnung, - 'fullFormattedNameString' => $fullFormattedNameString, - 'kurzbz' => $kurzbz - ); - - $email = $data[0]->uid."@".DOMAIN; - - sendSanchoMail( - 'neuerAbgabetermin', - $body_fields, - $email, - $this->p->t('abgabetool', 'neuerTerminBachelorMasterbetreuung') - ); - } - - $this->terminateWithSuccess($res); - - } - - public function fetchDeadlines() { - $person_id = $_POST['person_id']; - - if (!isset($person_id) || isEmptyString($person_id)) - $person_id = getAuthPersonId(); - - - if($person_id !== getAuthPersonId()) { - $this->load->library('PermissionLib'); - $isAdmin = $this->permissionlib->isBerechtigt('admin'); - if(!$isAdmin) $this->terminateWithError($this->p->t('ui', 'keineBerechtigung'), 'general'); - } - - $this->load->model('education/Paabgabe_model', 'PaabgabeModel'); - $result = $this->PaabgabeModel->getDeadlines($person_id); - $data = $this->getDataOrTerminateWithError($result); - - $this->terminateWithSuccess($data); - } } diff --git a/application/models/education/Paabgabetyp_model.php b/application/models/education/Paabgabetyp_model.php index b672a3f0e..fce46b3a0 100644 --- a/application/models/education/Paabgabetyp_model.php +++ b/application/models/education/Paabgabetyp_model.php @@ -11,4 +11,10 @@ class Paabgabetyp_model extends DB_Model $this->dbTable = 'campus.tbl_paabgabetyp'; $this->pk = 'paabgabetyp_kurzbz'; } + + public function getAll() { + $qry = "SELECT * FROM campus.tbl_paabgabetyp"; + + return $this->execReadOnlyQuery($qry); + } } diff --git a/public/js/api/factory/abgabe.js b/public/js/api/factory/abgabe.js new file mode 100644 index 000000000..15c7dee43 --- /dev/null +++ b/public/js/api/factory/abgabe.js @@ -0,0 +1,96 @@ +export default { + getStudentProjektarbeiten(uid) { + return { + method: 'get', + url: '/api/frontend/v1/Abgabe/getStudentProjektarbeiten', + params: { uid } + }; + }, + getStudentProjektabgaben(detail) { + return { + method: 'get', + url: '/api/frontend/v1/Abgabe/getStudentProjektabgaben', + params: { projektarbeit_id: detail.projektarbeit_id, student_uid: detail.student_uid } + }; + }, + postStudentProjektarbeitEndupload(formData) { + return { + method: 'post', + url: '/api/frontend/v1/Abgabe/postStudentProjektarbeitEndupload', + params: { formData }, + config: {Headers: { "Content-Type": "multipart/form-data" }} + }; + + // const url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload'; + // const headers = {Headers: { "Content-Type": "multipart/form-data" }} + // return this.$fhcApi.post(url, formData, headers) + }, + postStudentProjektarbeitZwischenabgabe(formData) { + return { + method: 'post', + url: '/api/frontend/v1/Abgabe/postStudentProjektarbeitZwischenabgabe', + params: { formData }, + config: {Headers: { "Content-Type": "multipart/form-data" }} + }; + + // const url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe'; + // const headers = {Headers: { "Content-Type": "multipart/form-data" }} + // return this.$fhcApi.post(url, formData, headers) + }, + getStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) { + // TODO: check if this is fine with new api scheme + + const url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`; + + window.location = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url + }, + getMitarbeiterProjektarbeiten(all) { + return { + method: 'get', + url: '/api/frontend/v1/Abgabe/getMitarbeiterProjektarbeiten', + params: { showall: all } + }; + }, + postProjektarbeitAbgabe(termin) { + return { + method: 'post', + url: '/api/frontend/v1/Abgabe/postProjektarbeitAbgabe', + params: { + paabgabe_id: termin.paabgabe_id, + paabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz, + datum: termin.datum, + fixtermin: termin.fixtermin, + insertvon: termin.insertvon, + kurzbz: termin.kurzbz, + projektarbeit_id: termin.projektarbeit_id + } + }; + }, + deleteProjektarbeitAbgabe(paabgabe_id) { + return { + method: 'post', + url: '/api/frontend/v1/Abgabe/deleteProjektarbeitAbgabe', + params: { paabgabe_id } + }; + }, + postSerientermin(datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids) { + return { + method: 'post', + url: '/api/frontend/v1/Abgabe/postSerientermin', + params: { datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids } + }; + }, + fetchDeadlines(person_id) { + return { + method: 'post', + url: '/api/frontend/v1/Abgabe/fetchDeadlines', + params: { person_id } + }; + }, + getPaAbgabetypen() { + return { + method: 'get', + url: '/api/frontend/v1/Abgabe/getPaAbgabetypen' + }; + } +}; \ No newline at end of file diff --git a/public/js/api/lehre.js b/public/js/api/lehre.js index 5797a2c75..cd7129d61 100644 --- a/public/js/api/lehre.js +++ b/public/js/api/lehre.js @@ -18,80 +18,5 @@ export default { `/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}` , {} ); - }, - getStudentProjektarbeiten(uid) { - return this.$fhcApi.get( - `/api/frontend/v1/Lehre/getStudentProjektarbeiten/${uid}` - , {} - ); - }, - getStudentProjektabgaben(detail) { - return this.$fhcApi.get( - `/api/frontend/v1/Lehre/getStudentProjektabgaben` - , { - projektarbeit_id: detail.projektarbeit_id, - student_uid: detail.student_uid - } - ); - }, - postStudentProjektarbeitEndupload(formData) { - const url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload'; - const headers = {Headers: { "Content-Type": "multipart/form-data" }} - return this.$fhcApi.post(url, formData, headers) - }, - postStudentProjektarbeitZwischenabgabe(formData) { - const url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe'; - const headers = {Headers: { "Content-Type": "multipart/form-data" }} - return this.$fhcApi.post(url, formData, headers) - }, - getStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) { - const url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`; - - window.location = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url - }, - getMitarbeiterProjektarbeiten(uid, all) { - return this.$fhcApi.get( - `/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${all}` - , {} - ); - }, - postProjektarbeitAbgabe(termin) { - const payload = { - paabgabe_id: termin.paabgabe_id, - paabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz, - datum: termin.datum, - fixtermin: termin.fixtermin, - insertvon: termin.insertvon, - kurzbz: termin.kurzbz, - projektarbeit_id: termin.projektarbeit_id - } - const url = '/api/frontend/v1/Lehre/postProjektarbeitAbgabe'; - - return this.$fhcApi.post(url, payload, null) - - }, - deleteProjektarbeitAbgabe(paabgabe_id) { - const payload = { - paabgabe_id - } - const url = '/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe'; - - return this.$fhcApi.post(url, payload, null) - }, - postSerientermin(datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids) { - const payload = { - datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids - } - const url = '/api/frontend/v1/Lehre/postSerientermin'; - - return this.$fhcApi.post(url, payload, null) - }, - fetchDeadlines(person_id) { - const payload = { - person_id - } - const url = '/api/frontend/v1/Lehre/fetchDeadlines'; - - return this.$fhcApi.post(url, payload, null) } } \ No newline at end of file diff --git a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js index 0900282ef..70b86e60f 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js @@ -55,7 +55,7 @@ export const AbgabeMitarbeiterDetail = { }, saveTermin(termin) { const paabgabe_id = termin.paabgabe_id - this.$fhcApi.factory.lehre.postProjektarbeitAbgabe(termin).then( (res) => { + this.$api.call(ApiAbgabe.postProjektarbeitAbgabe(termin)).then( (res) => { if(res?.meta?.status == 'success') { this.$fhcAlert.alertSuccess(this.$p.t('ui/gespeichert')) @@ -86,7 +86,7 @@ export const AbgabeMitarbeiterDetail = { }) }, deleteTermin(termin) { - this.$fhcApi.factory.lehre.deleteProjektarbeitAbgabe(termin.paabgabe_id).then( (res) => { + this.$api.call(ApiAbgabe.deleteProjektarbeitAbgabe(termin.paabgabe_id)).then( (res) => { if(res?.meta?.status == 'success') { this.$fhcAlert.alertSuccess(this.$p.t('ui/genericDeleted', [this.$p.t('abgabetool/abgabe')])) // this.$p.t('global/tooltipLektorDeleteKontrolle', [this.$entryParams.permissions.kontrolleDeleteMaxReach ]) @@ -108,7 +108,9 @@ export const AbgabeMitarbeiterDetail = { return true; }, downloadAbgabe(termin) { - this.$fhcApi.factory.lehre.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid) + // TODO: test + this.$api.call(ApiAbgabe.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid)) + // this.$fhcApi.factory.lehre.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid) }, dateDiffInDays(datum, today){ const oneDayMs = 1000 * 60 * 60 * 24 diff --git a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js index 1eb5d099c..107138962 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js @@ -74,7 +74,7 @@ export const AbgabeStudentDetail = { for (let i = 0; i < this.enduploadTermin.file.length; i++) { formData.append('file', this.enduploadTermin.file[i]); } - this.$fhcApi.factory.lehre.postStudentProjektarbeitEndupload(formData) + this.$api.call(ApiAbgabe.postStudentProjektarbeitEndupload(formData)) .then(res => { this.handleUploadRes(res) }) @@ -82,7 +82,9 @@ export const AbgabeStudentDetail = { this.$refs.modalContainerEnduploadZusatzdaten.hide() }, downloadAbgabe(termin) { - this.$fhcApi.factory.lehre.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid) + // TODO: test + this.$api.call(ApiAbgabe.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid)) + // this.$fhcApi.factory.lehre.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid) }, formatDate(dateParam) { const date = new Date(dateParam) @@ -117,7 +119,8 @@ export const AbgabeStudentDetail = { for (let i = 0; i < termin.file.length; i++) { formData.append('file', termin.file[i]); } - this.$fhcApi.factory.lehre.postStudentProjektarbeitZwischenabgabe(formData) + + this.$api.call(ApiAbgabe.postStudentProjektarbeitZwischenabgabe(formData)) .then(res => { this.handleUploadRes(res) }) diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js index 341d61920..a102e6e28 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js @@ -3,6 +3,7 @@ import AbgabeDetail from "./AbgabeMitarbeiterDetail.js"; import VerticalSplit from "../../verticalsplit/verticalsplit.js" import BsModal from '../../Bootstrap/Modal.js'; import VueDatePicker from '../../vueDatepicker.js.php'; +import ApiAbgabe from '../../../api/abgabe.js' export const AbgabetoolMitarbeiter = { name: "AbgabetoolMitarbeiter", @@ -176,13 +177,13 @@ export const AbgabetoolMitarbeiter = { }, addSeries() { this.saving = true - this.$fhcApi.factory.lehre.postSerientermin( + this.$api.call(ApiAbgabe.postSerientermin( this.serienTermin.datum.toISOString(), this.serienTermin.bezeichnung.paabgabetyp_kurzbz, this.serienTermin.bezeichnung.bezeichnung, this.serienTermin.kurzbz, this.selectedData?.map(projekt => projekt.projektarbeit_id) - ).then(res => { + )).then(res => { if (res.meta.status === "success" && res.data) { this.$fhcAlert.alertSuccess(this.$p.t('abgabetool/serienTerminGespeichert')) // TODO: sticky lifetime erhöhen um sinnvoll lesen zu können? @@ -321,7 +322,7 @@ export const AbgabetoolMitarbeiter = { this.$refs.abgabeTable.tabulator.setData(d); }, loadProjektarbeiten(all = false, callback) { - this.$fhcApi.factory.lehre.getMitarbeiterProjektarbeiten(this.viewData?.uid ?? null, all) + this.$api.call(ApiAbgabe.getMitarbeiterProjektarbeiten(all)) .then(res => { if(res?.data) this.setupData(res.data) }).finally(() => { @@ -332,7 +333,7 @@ export const AbgabetoolMitarbeiter = { }, loadAbgaben(details) { return new Promise((resolve) => { - this.$fhcApi.factory.lehre.getStudentProjektabgaben(details) + this.$api.call(ApiAbgabe.getStudentProjektabgaben(details)) .then(res => { resolve(res) }) @@ -369,7 +370,13 @@ export const AbgabetoolMitarbeiter = { }, created() { - + // fetch abgabetypen options + this.$api.call(ApiAbgabe.getPaAbgabetypen()).then(res => { + this.paabgabetypOptions = res.data + this.tabulatorCanBeBuilt = true // because promises would be more work and not much better here + }).catch(e => { + this.loading = false + }) }, mounted() { this.setupMounted() diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js index d1eab7c6e..3890f2764 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js @@ -186,14 +186,14 @@ export const AbgabetoolStudent = { this.$refs.abgabeTable.tabulator.setData(d); }, loadProjektarbeiten() { - this.$fhcApi.factory.lehre.getStudentProjektarbeiten(this.student_uid_prop || this.viewData?.uid || null) + this.$api.call(ApiAbgabe.getStudentProjektarbeiten(this.student_uid_prop || this.viewData?.uid || null)) .then(res => { if(res?.data) this.setupData(res.data) }) }, loadAbgaben(details) { return new Promise((resolve) => { - this.$fhcApi.factory.lehre.getStudentProjektabgaben(details) + this.$api.call(ApiAbgabe.getStudentProjektabgaben(details)) .then(res => { resolve(res) }) diff --git a/public/js/components/Cis/Abgabetool/DeadlineOverview.js b/public/js/components/Cis/Abgabetool/DeadlineOverview.js index d2b133979..67f692f84 100644 --- a/public/js/components/Cis/Abgabetool/DeadlineOverview.js +++ b/public/js/components/Cis/Abgabetool/DeadlineOverview.js @@ -84,7 +84,7 @@ export const DeadlineOverview = { this.tableBuiltResolve = resolve }, loadDeadlines() { - this.$fhcApi.factory.lehre.fetchDeadlines(this.person_uid_prop ?? null) + this.$api.call(ApiAbgabe.fetchDeadlines(this.person_uid_prop ?? null)) .then(res => { if(res?.data) this.setupData(res.data) }) diff --git a/system/dbupdate_3.4/61164_abgabetool_quality_gates.php b/system/dbupdate_3.4/61164_abgabetool_quality_gates.php new file mode 100644 index 000000000..1341b3c5f --- /dev/null +++ b/system/dbupdate_3.4/61164_abgabetool_quality_gates.php @@ -0,0 +1,29 @@ +db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='qualgate1'")) +{ + if($db->db_num_rows($result) === 0) + { + $qry = "INSERT INTO campus.tbl_paabgabetyp (paabgabetyp_kurzbz, bezeichnung) VALUES('qualgate1', 'Quality Gate 1');"; + + if(!$db->db_query($qry)) + echo 'campus.tbl_paabgabetyp: '.$db->db_last_error().'
'; + else + echo '
paabgabetyp quality gate 1 hinzugefuegt'; + } +} + +if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabetyp_kurzbz='qualgate2'")) +{ + if($db->db_num_rows($result) === 0) + { + $qry = "INSERT INTO campus.tbl_paabgabetyp (paabgabetyp_kurzbz, bezeichnung) VALUES('qualgate2', 'Quality Gate 2');"; + + if(!$db->db_query($qry)) + echo 'campus.tbl_paabgabetyp: '.$db->db_last_error().'
'; + else + echo '
paabgabetyp quality gate 2 hinzugefuegt'; + } +} From 63390b192c0b81ebbd415e54e7c90a0d31702f31 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Tue, 26 Aug 2025 17:15:37 +0200 Subject: [PATCH 011/299] qualgate 1&2 dbupdate script, note fkey reference & upload required flag in paabgabe; noten api duplicate from notentool for now; WIP more emails; qualgates benotbar & saveable aswell as upload flag; --- .../controllers/api/frontend/v1/Abgabe.php | 105 +++++++++++++++--- application/models/education/Note_model.php | 8 ++ .../models/education/Projektarbeit_model.php | 2 + .../education/Projektbetreuer_model.php | 36 ++++++ public/js/api/factory/abgabe.js | 23 ++-- .../Cis/Abgabetool/AbgabeMitarbeiterDetail.js | 70 ++++++------ .../Cis/Abgabetool/AbgabeStudentDetail.js | 5 +- .../Cis/Abgabetool/AbgabetoolMitarbeiter.js | 56 +++++----- .../Cis/Abgabetool/AbgabetoolStudent.js | 9 +- .../Cis/Abgabetool/DeadlineOverview.js | 1 + public/js/plugins/Api.js | 1 + .../61164_abgabetool_quality_gates.php | 33 ++++++ 12 files changed, 256 insertions(+), 93 deletions(-) diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php index 61a3b4c44..86f248c84 100644 --- a/application/controllers/api/frontend/v1/Abgabe.php +++ b/application/controllers/api/frontend/v1/Abgabe.php @@ -27,7 +27,7 @@ if (! defined('BASEPATH')) exit('No direct script access allowed'); //require_once('../../../include/projektarbeit.class.php'); //require_once('../../../include/projektbetreuer.class.php'); -class Lehre extends FHCAPI_Controller +class Abgabe extends FHCAPI_Controller { /** @@ -45,7 +45,8 @@ class Lehre extends FHCAPI_Controller 'deleteProjektarbeitAbgabe' => self::PERM_LOGGED, 'postSerientermin' => self::PERM_LOGGED, 'fetchDeadlines' => self::PERM_LOGGED, // TODO: mitarbeiter recht prüfen - 'getPaAbgabetypen' => self::PERM_LOGGED + 'getPaAbgabetypen' => self::PERM_LOGGED, + 'getNoten' => self::PERM_LOGGED ]); $this->load->library('PhrasesLib'); @@ -100,8 +101,10 @@ class Lehre extends FHCAPI_Controller /** * fetches all projektarbeiten and betreuer for a given student_uid used in cis4 student abgabetool */ - public function getStudentProjektarbeiten($uid) + public function getStudentProjektarbeiten() { + $uid = $this->input->get("uid",TRUE); + $this->load->model('ressource/Mitarbeiter_model', 'MitarbeiterModel'); $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); @@ -254,8 +257,7 @@ class Lehre extends FHCAPI_Controller } private function signaturFehltEmail($student_uid) { - - + // Mail an Studiengang wenn keine Signatur gefunden wurde $student = new student(); if(!$student->load($student_uid)) @@ -326,6 +328,10 @@ class Lehre extends FHCAPI_Controller $maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "

Zur Beurteilung der Arbeit

" : ""; $maildata['token'] = ""; + // TODO: clarify if all betreuer are mitarbeiter and have benutzer entries + // or if uid = null has to be checked WITH + // 'CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email' + $email = $this->getBetreuerEmail($bperson_id); if(!$email) $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); @@ -334,7 +340,6 @@ class Lehre extends FHCAPI_Controller 'ParbeitsbeurteilungEndupload', $maildata, $email, -// $betreuerRow->mitarbeiter_uid."@".DOMAIN, $subject, 'sancho_header_min_bw.jpg', 'sancho_footer_min_bw.jpg', @@ -397,6 +402,12 @@ class Lehre extends FHCAPI_Controller $zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; $zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($begutachterMitToken->zugangstoken) && !$intern ? "

Zugangstoken: " . $begutachterMitToken->zugangstoken . "

" : ""; + + $email = $this->getBetreuerEmail($bperson_id); + + if(!$email) $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); + + $mailres = sendSanchoMail( 'ParbeitsbeurteilungEndupload', $zweitbetmaildata, @@ -443,7 +454,8 @@ class Lehre extends FHCAPI_Controller $this->terminateWithSuccess(array($projektarbeiten, DOMAIN)); } - + + // called by abgabetool/mitarbeiter when adding a new termin public function postProjektarbeitAbgabe() { $projektarbeit_id = $_POST['projektarbeit_id']; $paabgabe_id = $_POST['paabgabe_id']; @@ -451,6 +463,8 @@ class Lehre extends FHCAPI_Controller $datum = $_POST['datum']; $fixtermin = $_POST['fixtermin']; $kurzbz = $_POST['kurzbz']; + $note = $_POST['note']; + $upload_required = $_POST['upload_required']; if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id) || !isset($paabgabe_id) || isEmptyString($paabgabe_id) @@ -469,12 +483,14 @@ class Lehre extends FHCAPI_Controller 'fixtermin' => $fixtermin, 'datum' => $datum, 'kurzbz' => $kurzbz, + 'note' => $note, + 'upload_required' => $upload_required, 'insertvon' => getAuthUID(), 'insertamum' => date('Y-m-d H:i:s') ) ); - $this->terminateWithSuccess($result); + } else { $result = $this->PaabgabeModel->update( $paabgabe_id, @@ -482,13 +498,25 @@ class Lehre extends FHCAPI_Controller 'paabgabetyp_kurzbz' => $paabgabetyp_kurzbz, 'datum' => $datum, 'kurzbz' => $kurzbz, + 'note' => $note, + 'upload_required' => $upload_required, 'updatevon' => getAuthUID(), 'updateamum' => date('Y-m-d H:i:s') ) ); - - $this->terminateWithSuccess($result); + } + + $paabgabe_id = $this->getDataOrTerminateWithError($result); + + $paabgabe = $this->PaabgabeModel->load($paabgabe_id); + + // check if $paaabgabe is a qual gate and its note is deemed negative + // -> send email to student with that info + + // TODO: DEFAULT NOTE 9 OR DEFAULT NOTE NULL? 9 COUNTS AS NEGATIV :/ + + $this->terminateWithSuccess($result); } public function deleteProjektarbeitAbgabe() { @@ -631,17 +659,58 @@ class Lehre extends FHCAPI_Controller $result = $this->PaabgabetypModel->getAll(); $paabgabetypen = $this->getDataOrTerminateWithError($result); + + $this->terminateWithSuccess($paabgabetypen); } private function getBetreuerEmail($person_id) { - // check if betreuer is intern (fixangestellt = true) - // -> email: uid@DOMAIN - - // if betreuer is extern, check if there are private email contacts - // in tbl_kontakt. if so, return them - - return null; + $this->load->model('education/Projektbetreuer_model', 'ProjektbetreuerModel'); + $result = $this->ProjektbetreuerModel->getBetreuerEmail($person_id); + $email = $this->getDataOrTerminateWithError($result); + return $email[0]->email; } -} + //TODO: SWITCH TO NOTEN API ONCE NOTENTOOL IS IN MASTER TO AVOID DUPLICATE API + + /** + * GET METHOD + * returns List of all available & active NotenOptions + */ + public function getNoten() { + $this->load->model('education/Note_model', 'NoteModel'); + + $result = $this->NoteModel->getAllActive(); + $noten = $this->getDataOrTerminateWithError($result); + $this->terminateWithSuccess($noten); + } + + private function sendQualGateNegativEmail($student_uid) { + // Mail an Student wenn Qualgate negativ beurteilt wurde + $student = new student(); + if(!$student->load($student_uid)) + $this->terminateWithError($this->p->t('global','userNichtGefunden'), 'general'); + + // TODO: frasen + $subject = 'Quality Gate Negativ'; + $tomail = $student_uid.'@'.DOMAIN; + + + // TODO: emaildata + $data = array( + 'betreuerfullname' => $student->vorname, + 'qualgatebezeichnung' => $student->nachname, + 'datum' => $datum, + 'projektarbeitname' => $name + ); + + $mailres = sendSanchoMail( + 'QualGateNegativ', + $data, + $tomail, + $subject + ); + + return $mailres; + } +} \ No newline at end of file diff --git a/application/models/education/Note_model.php b/application/models/education/Note_model.php index 80b454398..87a1501e0 100644 --- a/application/models/education/Note_model.php +++ b/application/models/education/Note_model.php @@ -11,4 +11,12 @@ class Note_model extends DB_Model $this->dbTable = 'lehre.tbl_note'; $this->pk = 'note'; } + + public function getAllActive() { + $qry ="SELECT * + FROM lehre.tbl_note + WHERE aktiv = true"; + + return $this->execReadOnlyQuery($qry); + } } \ No newline at end of file diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php index 4083dbf6e..b1971cea7 100644 --- a/application/models/education/Projektarbeit_model.php +++ b/application/models/education/Projektarbeit_model.php @@ -167,6 +167,8 @@ class Projektarbeit_model extends DB_Model campus.tbl_paabgabe.fixtermin, campus.tbl_paabgabe.kurzbz, campus.tbl_paabgabe.datum, + campus.tbl_paabgabe.note, + campus.tbl_paabgabe.upload_required, campus.tbl_paabgabetyp.paabgabetyp_kurzbz, campus.tbl_paabgabetyp.bezeichnung, campus.tbl_paabgabe.abgabedatum, diff --git a/application/models/education/Projektbetreuer_model.php b/application/models/education/Projektbetreuer_model.php index 95950bf95..ae78b96d9 100644 --- a/application/models/education/Projektbetreuer_model.php +++ b/application/models/education/Projektbetreuer_model.php @@ -231,4 +231,40 @@ class Projektbetreuer_model extends DB_Model return $this->execQuery($qry, array($projektarbeit_id, $betreuer_person_id)); } + + /** + * Gets email of a Betreuer for a Projektarbeit. + * Projektarbeitbetreuer can be external employees, which should be contacted on their private + * email contact, if they have one. Internal Betreuer should be contacted on their "uid@DOMAIN" adress. + * @param int betreuer_person_id + * @return object success or error + */ + public function getBetreuerEmail($betreuer_person_id) { + // TODO: check if benutzer uid exists, not fixangestellt + + $qry =" + SELECT uid, + CASE + WHEN public.tbl_mitarbeiter.fixangestellt = false + THEN ( + SELECT kontakt AS email + FROM public.tbl_kontakt + WHERE + public.tbl_kontakt.person_id = ? AND + kontakttyp = 'email' + ) + + ELSE ( + SELECT public.tbl_benutzer.uid || '@' || '".DOMAIN."' AS email + FROM public.tbl_benutzer + WHERE person_id = ? + ) + END AS email + FROM public.tbl_benutzer + JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid) + WHERE person_id = ? + "; + + return $this->execReadOnlyQuery($qry, array($betreuer_person_id, $betreuer_person_id, $betreuer_person_id)); + } } diff --git a/public/js/api/factory/abgabe.js b/public/js/api/factory/abgabe.js index 15c7dee43..0602a218c 100644 --- a/public/js/api/factory/abgabe.js +++ b/public/js/api/factory/abgabe.js @@ -17,25 +17,17 @@ export default { return { method: 'post', url: '/api/frontend/v1/Abgabe/postStudentProjektarbeitEndupload', - params: { formData }, + params: formData, config: {Headers: { "Content-Type": "multipart/form-data" }} }; - - // const url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload'; - // const headers = {Headers: { "Content-Type": "multipart/form-data" }} - // return this.$fhcApi.post(url, formData, headers) }, postStudentProjektarbeitZwischenabgabe(formData) { return { method: 'post', url: '/api/frontend/v1/Abgabe/postStudentProjektarbeitZwischenabgabe', - params: { formData }, + params: formData, config: {Headers: { "Content-Type": "multipart/form-data" }} }; - - // const url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe'; - // const headers = {Headers: { "Content-Type": "multipart/form-data" }} - // return this.$fhcApi.post(url, formData, headers) }, getStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) { // TODO: check if this is fine with new api scheme @@ -59,6 +51,8 @@ export default { paabgabe_id: termin.paabgabe_id, paabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz, datum: termin.datum, + note: termin.note, + upload_required: termin.upload_required, fixtermin: termin.fixtermin, insertvon: termin.insertvon, kurzbz: termin.kurzbz, @@ -92,5 +86,12 @@ export default { method: 'get', url: '/api/frontend/v1/Abgabe/getPaAbgabetypen' }; - } + }, + //TODO: SWITCH TO NOTEN API ONCE NOTENTOOL IS IN MASTER TO AVOID DUPLICATE API + getNoten(){ + return { + method: 'get', + url: '/api/frontend/v1/Abgabe/getNoten' + }; + }, }; \ No newline at end of file diff --git a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js index 70b86e60f..c70c40ba7 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js @@ -1,5 +1,6 @@ import BsModal from '../../Bootstrap/Modal.js'; import VueDatePicker from '../../vueDatepicker.js.php'; +import ApiAbgabe from '../../../api/factory/abgabe.js' const today = new Date() export const AbgabeMitarbeiterDetail = { @@ -12,6 +13,7 @@ export const AbgabeMitarbeiterDetail = { Textarea: primevue.textarea, VueDatePicker }, + inject: ['abgabeTypeOptions', 'allowedNotenOptions'], props: { projektarbeit: { type: Object, @@ -23,30 +25,7 @@ export const AbgabeMitarbeiterDetail = { oldPaBeurteilungLink: 'https://moodle.technikum-wien.at/mod/page/view.php?id=1005052', // TODO: inject from app & app provide link from config eidAkzeptiert: false, enduploadTermin: null, - allActiveLanguages: FHC_JS_DATA_STORAGE_OBJECT.server_languages, - // TODO: fetch types - allAbgabeTypes: [ - { - paabgabetyp_kurzbz: 'abstract', - bezeichnung: 'Entwurf' - }, - { - paabgabetyp_kurzbz: 'zwischen', - bezeichnung: 'Zwischenabgabe' - }, - { - paabgabetyp_kurzbz: 'note', - bezeichnung: 'Benotung' - }, - { - paabgabetyp_kurzbz: 'end', - bezeichnung: 'Endupload' - }, - { - paabgabetyp_kurzbz: 'enda', - bezeichnung: 'Endabgabe im Sekretariat' - } - ] + allActiveLanguages: FHC_JS_DATA_STORAGE_OBJECT.server_languages } }, methods: { @@ -55,6 +34,9 @@ export const AbgabeMitarbeiterDetail = { }, saveTermin(termin) { const paabgabe_id = termin.paabgabe_id + // 9 => magic number for "noch nicht eingetragen" + termin.note = termin.note?.note ?? 9 + this.$api.call(ApiAbgabe.postProjektarbeitAbgabe(termin)).then( (res) => { if(res?.meta?.status == 'success') { this.$fhcAlert.alertSuccess(this.$p.t('ui/gespeichert')) @@ -69,8 +51,10 @@ export const AbgabeMitarbeiterDetail = { 'fixtermin': false, 'kurzbz': '', 'datum': new Date().toISOString().split('T')[0], - 'paabgabetyp_kurzbz': '', - 'bezeichnung': '', + 'paabgabetyp_kurzbz': termin.paabgabetyp_kurzbz, + 'note': this.allowedNotenOptions.find(opt => opt.note == termin.note?.note), + 'upload_required': termin.upload_required, + 'bezeichnung': this.abgabeTypeOptions.find(opt => opt.paabgabetyp_kurzbz === termin.paabgabetyp_kurzbz), 'abgabedatum': null, 'insertvon': this.viewData?.uid ?? '', 'allowedToSave': true, @@ -149,6 +133,9 @@ export const AbgabeMitarbeiterDetail = { getOptionLabelAbgabetyp(option){ return option.bezeichnung }, + getNotenOptionLabel(option) { + return option.bezeichnung + }, formatDate(dateParam) { const date = new Date(dateParam) // handle missing leading 0 @@ -200,10 +187,8 @@ export const AbgabeMitarbeiterDetail = { template: `
-
{{$p.t('abgabetool/c4abgabeMitarbeiterbereich')}}
-

{{projektarbeit?.student}}

@@ -248,7 +233,9 @@ export const AbgabeMitarbeiterDetail = {
{{$p.t('abgabetool/c4fixtermin')}}
{{$p.t('abgabetool/c4zieldatum')}}
{{$p.t('abgabetool/c4abgabetyp')}}
-
{{$p.t('abgabetool/c4abgabekurzbz')}}
+
{{$p.t('abgabetool/c4note')}}
+
{{$p.t('abgabetool/c4upload_required')}}
+
{{$p.t('abgabetool/c4abgabekurzbz')}}
{{$p.t('abgabetool/c4abgabedatum')}}
@@ -278,12 +265,30 @@ export const AbgabeMitarbeiterDetail = { :style="{'width': '100%'}" :disabled="!termin.allowedToSave" v-model="termin.bezeichnung" - :options="allAbgabeTypes" + :options="abgabeTypeOptions" :optionLabel="getOptionLabelAbgabetyp">
-
- +
+ + +
+
+ + +
+
+
{{ termin.abgabedatum?.split("-").reverse().join(".") }} @@ -310,7 +315,6 @@ export const AbgabeMitarbeiterDetail = {
- `, }; diff --git a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js index 107138962..3271ed97f 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js @@ -1,6 +1,7 @@ import Upload from '../../../components/Form/Upload/Dms.js'; import BsModal from '../../Bootstrap/Modal.js'; import VueDatePicker from '../../vueDatepicker.js.php'; +import ApiAbgabe from '../../../api/factory/abgabe.js' const today = new Date() export const AbgabeStudentDetail = { @@ -198,7 +199,7 @@ export const AbgabeStudentDetail = { getEid() { return this.$p.t('abgabetool/c4eidesstattlicheErklaerung') }, - getEnduploadErlaubt() { + getAllowedToSendEndupload() { return !this.eidAkzeptiert } }, @@ -371,7 +372,7 @@ export const AbgabeStudentDetail = { diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js index a102e6e28..c16abc8a3 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js @@ -3,7 +3,7 @@ import AbgabeDetail from "./AbgabeMitarbeiterDetail.js"; import VerticalSplit from "../../verticalsplit/verticalsplit.js" import BsModal from '../../Bootstrap/Modal.js'; import VueDatePicker from '../../vueDatepicker.js.php'; -import ApiAbgabe from '../../../api/abgabe.js' +import ApiAbgabe from '../../../api/factory/abgabe.js' export const AbgabetoolMitarbeiter = { name: "AbgabetoolMitarbeiter", @@ -16,6 +16,12 @@ export const AbgabetoolMitarbeiter = { Textarea: primevue.textarea, VueDatePicker }, + provide() { + return { + abgabeTypeOptions: Vue.computed(() => this.abgabeTypeOptions), + allowedNotenOptions: Vue.computed(() => this.allowedNotenOptions) + } + }, props: { viewData: { type: Object, @@ -30,29 +36,9 @@ export const AbgabetoolMitarbeiter = { return { saving: false, loading: false, - // TODO: fetch types - allAbgabeTypes: [ - { - paabgabetyp_kurzbz: 'abstract', - bezeichnung: 'Entwurf' - }, - { - paabgabetyp_kurzbz: 'zwischen', - bezeichnung: 'Zwischenabgabe' - }, - { - paabgabetyp_kurzbz: 'note', - bezeichnung: 'Benotung' - }, - { - paabgabetyp_kurzbz: 'end', - bezeichnung: 'Endupload' - }, - { - paabgabetyp_kurzbz: 'enda', - bezeichnung: 'Endabgabe im Sekretariat' - } - ], + abgabeTypeOptions: null, + notenOptions: null, + allowedNotenOptions: null, serienTermin: Vue.reactive({ datum: new Date(), bezeichnung: { @@ -222,6 +208,8 @@ export const AbgabetoolMitarbeiter = { 'fixtermin': false, 'kurzbz': '', 'datum': new Date().toISOString().split('T')[0], + 'note': this.allowedNotenOptions.find(opt => opt.note == 9), + 'upload_required': false, 'paabgabetyp_kurzbz': '', 'bezeichnung': '', 'abgabedatum': null, @@ -229,6 +217,7 @@ export const AbgabetoolMitarbeiter = { }) pa.abgabetermine.forEach(termin => { + termin.note = this.allowedNotenOptions.find(opt => opt.note == termin.note) termin.file = [] termin.allowedToSave = termin.insertvon == this.viewData?.uid && pa.betreuerart_kurzbz != 'Zweitbegutachter' termin.allowedToDelete = termin.allowedToSave && !termin.abgabedatum @@ -370,10 +359,23 @@ export const AbgabetoolMitarbeiter = { }, created() { + // fetch noten options + //TODO: SWITCH TO NOTEN API ONCE NOTENTOOL IS IN MASTER TO AVOID DUPLICATE API + this.$api.call(ApiAbgabe.getNoten()).then(res => { + this.notenOptions = res.data + // TODO: more sophisticated way to filter for these two, in essence it is still hardcoded + this.allowedNotenOptions = this.notenOptions.filter( + opt => opt.bezeichnung === 'Bestanden' + || opt.bezeichnung === 'Nicht bestanden' + || opt.bezeichnung === 'Noch nicht eingetragen' + ) + }).catch(e => { + this.loading = false + }) + // fetch abgabetypen options this.$api.call(ApiAbgabe.getPaAbgabetypen()).then(res => { - this.paabgabetypOptions = res.data - this.tabulatorCanBeBuilt = true // because promises would be more work and not much better here + this.abgabeTypeOptions = res.data }).catch(e => { this.loading = false }) @@ -419,7 +421,7 @@ export const AbgabetoolMitarbeiter = {
diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js index 3890f2764..bfd5da01b 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js @@ -1,6 +1,7 @@ import {CoreFilterCmpt} from "../../../components/filter/Filter.js"; import AbgabeDetail from "./AbgabeStudentDetail.js"; import VerticalSplit from "../../verticalsplit/verticalsplit.js"; +import ApiAbgabe from '../../../api/factory/abgabe.js' export const AbgabetoolStudent = { name: "AbgabetoolStudent", @@ -82,6 +83,9 @@ export const AbgabetoolStudent = { ]}; }, methods: { + checkQualityGates(termine, enduploadtermin) { + return true + }, isPastDate(date) { return new Date(date) < new Date(Date.now()) }, @@ -91,10 +95,11 @@ export const AbgabetoolStudent = { pa.abgabetermine = res.data[0].retval pa.abgabetermine.forEach(termin => { termin.file = [] - termin.allowedToUpload = true + // termin.allowedToUpload = true // TODO: fixtermin logic? - if(termin.bezeichnung == 'Endupload' && this.isPastDate(termin.datum)) { + if(termin.bezeichnung == 'Endupload' && + (this.isPastDate(termin.datum) || this.checkQualityGates(pa.abgabetermine, termin))) { // termin.allowedToUpload = false } else { diff --git a/public/js/components/Cis/Abgabetool/DeadlineOverview.js b/public/js/components/Cis/Abgabetool/DeadlineOverview.js index 67f692f84..6f8347169 100644 --- a/public/js/components/Cis/Abgabetool/DeadlineOverview.js +++ b/public/js/components/Cis/Abgabetool/DeadlineOverview.js @@ -1,4 +1,5 @@ import {CoreFilterCmpt} from "../../../components/filter/Filter.js"; +import ApiAbgabe from '../../../api/factory/abgabe.js' export const DeadlineOverview = { name: "DeadlineOverview", diff --git a/public/js/plugins/Api.js b/public/js/plugins/Api.js index 43c2b3064..e3e604d6c 100644 --- a/public/js/plugins/Api.js +++ b/public/js/plugins/Api.js @@ -164,6 +164,7 @@ export default { return fhcApiAxios.post(uri, data, config); }, call(factory, configoverwrite, form) { + debugger if (Array.isArray(factory)) { const $fhcAlert = app.config.globalProperties.$fhcAlert; const $api = app.config.globalProperties.$api; diff --git a/system/dbupdate_3.4/61164_abgabetool_quality_gates.php b/system/dbupdate_3.4/61164_abgabetool_quality_gates.php index 1341b3c5f..b4f6fd7c9 100644 --- a/system/dbupdate_3.4/61164_abgabetool_quality_gates.php +++ b/system/dbupdate_3.4/61164_abgabetool_quality_gates.php @@ -27,3 +27,36 @@ if($result = $db->db_query("SELECT 1 FROM campus.tbl_paabgabetyp WHERE paabgabet echo '
paabgabetyp quality gate 2 hinzugefuegt'; } } + +if($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_paabgabe' AND column_name = 'note'")) +{ + if($db->db_num_rows($result) === 0) + { + + $qry = "ALTER TABLE campus.tbl_paabgabe + ADD COLUMN note SMALLINT NOT NULL DEFAULT 9, + ADD CONSTRAINT tbl_paabgabe_note_fkey + FOREIGN KEY (note) + REFERENCES lehre.tbl_note(note) + ON UPDATE CASCADE ON DELETE RESTRICT;"; + + if(!$db->db_query($qry)) + echo 'campus.tbl_paabgabe: '.$db->db_last_error().'
'; + else + echo '
paabgabe column note default 9 (noch nicht eingetragen) hinzugefuegt'; + } +} + +if($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_paabgabe' AND column_name = 'upload_required'")) +{ + if($db->db_num_rows($result) === 0) + { + $qry = "ALTER TABLE campus.tbl_paabgabe + ADD COLUMN IF NOT EXISTS upload_required boolean DEFAULT false;"; + + if(!$db->db_query($qry)) + echo 'campus.tbl_paabgabe: '.$db->db_last_error().'
'; + else + echo '
paabgabe column upload_required default false hinzugefuegt'; + } +} \ No newline at end of file From 1f0fe08b696a1d265ae2c93991456c883c3625ec Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Fri, 29 Aug 2025 14:15:20 +0200 Subject: [PATCH 012/299] upload_required => allowed; hardcoded links => config; styling; endupload/qualgate logic; phrasen; --- application/config/abgabe.php | 9 + .../controllers/api/frontend/v1/Abgabe.php | 121 +++++++--- .../models/education/Projektarbeit_model.php | 25 +- .../education/Projektbetreuer_model.php | 36 --- public/js/api/factory/abgabe.js | 13 +- .../Cis/Abgabetool/AbgabeMitarbeiterDetail.js | 212 ++++++++--------- .../Cis/Abgabetool/AbgabeStudentDetail.js | 52 ++++- .../Cis/Abgabetool/AbgabetoolMitarbeiter.js | 140 ++++++------ .../Cis/Abgabetool/AbgabetoolStudent.js | 107 ++++++--- .../Cis/Abgabetool/DeadlineOverview.js | 2 +- public/js/plugins/Api.js | 1 - .../61164_abgabetool_quality_gates.php | 8 +- system/phrasesupdate.php | 216 +++++++++++++++++- 13 files changed, 634 insertions(+), 308 deletions(-) create mode 100644 application/config/abgabe.php diff --git a/application/config/abgabe.php b/application/config/abgabe.php new file mode 100644 index 000000000..e2092a367 --- /dev/null +++ b/application/config/abgabe.php @@ -0,0 +1,9 @@ + self::PERM_LOGGED, 'getStudentProjektarbeiten' => self::PERM_LOGGED, // TODO: abgabetool berechtigung? 'getStudentProjektabgaben' => self::PERM_LOGGED, 'postStudentProjektarbeitZwischenabgabe' => self::PERM_LOGGED, @@ -70,6 +71,22 @@ class Abgabe extends FHCAPI_Controller //------------------------------------------------------------------------------------------------------------------ // Public methods + /** + * loads config related to abgabetool, found in application/config/abgabe + */ + public function getConfig() { + $this->load->config('abgabe'); + $old_abgabe_beurteilung_link =$this->config->item('old_abgabe_beurteilung_link'); + $turnitin_link =$this->config->item('turnitin_link'); + + $ret = array( + 'old_abgabe_beurteilung_link' => $old_abgabe_beurteilung_link, + 'turnitin_link' => $turnitin_link + ); + + $this->terminateWithSuccess($ret); + } + /** * fetches all projektabgabetermine for a given projektarbeit_id used in cis4 student abgabetool */ @@ -116,9 +133,19 @@ class Abgabe extends FHCAPI_Controller $isMitarbeiter = $this->MitarbeiterModel->isMitarbeiter(getAuthUID()); if ($isMitarbeiter && $isZugeteilterBetreuer){ - $projektarbeiten = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer($uid); + $result = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer($uid); } else { - $projektarbeiten = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer(getAuthUID()); + $result = $this->ProjektarbeitModel->getStudentProjektarbeitenWithBetreuer(getAuthUID()); + } + + $projektarbeiten = getData($result); + + // TODO: save access to this, array could be empty + foreach($projektarbeiten as $pa) { + $result = $this->ProjektarbeitModel->getProjektbetreuerEmail($pa->projektarbeit_id); + + // TODO: save access + $pa->email = getData($result)[0]->private_email; } $this->terminateWithSuccess(array($projektarbeiten, DOMAIN, $uid)); @@ -327,12 +354,8 @@ class Abgabe extends FHCAPI_Controller $maildata['parbeituebersichtlink'] = "

Zur Projektarbeitsübersicht

"; $maildata['bewertunglink'] = $num_rows_sem >= 1 && $paabgabetyp_kurzbz == 'end' ? "

Zur Beurteilung der Arbeit

" : ""; $maildata['token'] = ""; - - // TODO: clarify if all betreuer are mitarbeiter and have benutzer entries - // or if uid = null has to be checked WITH - // 'CASE WHEN tbl_benutzer.uid IS NULL THEN kontakt ELSE tbl_benutzer.uid || '@".DOMAIN."' END AS email' - $email = $this->getBetreuerEmail($bperson_id); + $email = $this->getProjektbetreuerEmail($projektarbeit_id); if(!$email) $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); @@ -401,12 +424,7 @@ class Abgabe extends FHCAPI_Controller $zweitbetmaildata['parbeituebersichtlink'] = $intern ? $maildata['parbeituebersichtlink'] : ""; $zweitbetmaildata['bewertunglink'] = $num_rows_sem >= 1 ? "

Zur Beurteilung der Arbeit

" : ""; $zweitbetmaildata['token'] = $num_rows_sem >= 1 && isset($begutachterMitToken->zugangstoken) && !$intern ? "

Zugangstoken: " . $begutachterMitToken->zugangstoken . "

" : ""; - - - $email = $this->getBetreuerEmail($bperson_id); - - if(!$email) $this->terminateWithError($this->p->t('abgabetool', 'fehlerMailBegutachter'), 'general'); - + $mailres = sendSanchoMail( 'ParbeitsbeurteilungEndupload', @@ -464,12 +482,13 @@ class Abgabe extends FHCAPI_Controller $fixtermin = $_POST['fixtermin']; $kurzbz = $_POST['kurzbz']; $note = $_POST['note']; - $upload_required = $_POST['upload_required']; + $upload_allowed = $_POST['upload_allowed']; + $betreuer_person_id = $_POST['betreuer_person_id']; if (!isset($projektarbeit_id) || isEmptyString($projektarbeit_id) || !isset($paabgabe_id) || isEmptyString($paabgabe_id) || !isset($datum) || isEmptyString($datum) - || !isset($datum) || isEmptyString($datum) + || !isset($kurzbz) || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); @@ -484,7 +503,7 @@ class Abgabe extends FHCAPI_Controller 'datum' => $datum, 'kurzbz' => $kurzbz, 'note' => $note, - 'upload_required' => $upload_required, + 'upload_allowed' => $upload_allowed, 'insertvon' => getAuthUID(), 'insertamum' => date('Y-m-d H:i:s') ) @@ -499,24 +518,37 @@ class Abgabe extends FHCAPI_Controller 'datum' => $datum, 'kurzbz' => $kurzbz, 'note' => $note, - 'upload_required' => $upload_required, + 'upload_allowed' => $upload_allowed, 'updatevon' => getAuthUID(), 'updateamum' => date('Y-m-d H:i:s') ) ); } - - $paabgabe_id = $this->getDataOrTerminateWithError($result); - - $paabgabe = $this->PaabgabeModel->load($paabgabe_id); // check if $paaabgabe is a qual gate and its note is deemed negative // -> send email to student with that info + $paabgabe_id = $this->getDataOrTerminateWithError($result); - // TODO: DEFAULT NOTE 9 OR DEFAULT NOTE NULL? 9 COUNTS AS NEGATIV :/ + $result = $this->PaabgabeModel->load($paabgabe_id); + $paabgabeArr = $this->getDataOrTerminateWithError($result); + $paabgabe = $paabgabeArr[0]; + $this->addMeta('paabgabe', $paabgabeArr); + + // check if abgabe even has note + if($paabgabe->note) { + $this->load->model('education/Note_model', 'NoteModel'); + $result = $this->NoteModel->load($paabgabe->note); + $noteArr = $this->getDataOrTerminateWithError($result); + $note = $noteArr[0]; + if($note->positiv === false) { + $this->addMeta('noteNegativ', true); + + $this->sendQualGateNegativEmail($projektarbeit_id, $betreuer_person_id, $paabgabe); + } + } - $this->terminateWithSuccess($result); + $this->terminateWithSuccess($paabgabe); } public function deleteProjektarbeitAbgabe() { @@ -556,7 +588,7 @@ class Abgabe extends FHCAPI_Controller if (!isset($projektarbeit_ids) || !is_array($projektarbeit_ids) || empty($projektarbeit_ids) || !isset($datum) || isEmptyString($datum) - || !isset($kurzbz) || isEmptyString($kurzbz) + || !isset($kurzbz) || !isset($bezeichnung) || isEmptyString($bezeichnung) || !isset($paabgabetyp_kurzbz) || isEmptyString($paabgabetyp_kurzbz)) $this->terminateWithError($this->p->t('global', 'wrongParameters'), 'general'); @@ -664,11 +696,11 @@ class Abgabe extends FHCAPI_Controller $this->terminateWithSuccess($paabgabetypen); } - private function getBetreuerEmail($person_id) { - $this->load->model('education/Projektbetreuer_model', 'ProjektbetreuerModel'); - $result = $this->ProjektbetreuerModel->getBetreuerEmail($person_id); + private function getProjektbetreuerEmail($projektarbeit_id) { + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + $result = $this->ProjektarbeitModel->getProjektbetreuerEmail($projektarbeit_id); $email = $this->getDataOrTerminateWithError($result); - return $email[0]->email; + return $email[0]->private_email; } //TODO: SWITCH TO NOTEN API ONCE NOTENTOOL IS IN MASTER TO AVOID DUPLICATE API @@ -685,7 +717,24 @@ class Abgabe extends FHCAPI_Controller $this->terminateWithSuccess($noten); } - private function sendQualGateNegativEmail($student_uid) { + private function sendQualGateNegativEmail($projektarbeit_id, $betreuer_person_id, $paabgabe) { + $this->load->model('education/Projektarbeit_model', 'ProjektarbeitModel'); + + $result = $this->ProjektarbeitModel->load($projektarbeit_id); + $projektarbeitArr = $this->getDataOrTerminateWithError($result); + $projektarbeit = $projektarbeitArr[0]; + + $result = $this->ProjektarbeitModel->getProjektbetreuerAnrede($betreuer_person_id); + $anredeArr = $this->getDataOrTerminateWithError($result); + $anrede = $anredeArr[0]; + + $student_uid = $projektarbeit->student_uid; + + $this->load->model('education/Paabgabetyp_model', 'PaabgabetypModel'); + $result = $this->PaabgabetypModel->load($paabgabe->paabgabetyp_kurzbz); + $paabgabetyp_kurzbzArr = $this->getDataOrTerminateWithError($result); + $paabgabetyp_kurzbz = $paabgabetyp_kurzbzArr[0]; + // Mail an Student wenn Qualgate negativ beurteilt wurde $student = new student(); if(!$student->load($student_uid)) @@ -696,21 +745,21 @@ class Abgabe extends FHCAPI_Controller $tomail = $student_uid.'@'.DOMAIN; - // TODO: emaildata + // TODO: datum format $data = array( - 'betreuerfullname' => $student->vorname, - 'qualgatebezeichnung' => $student->nachname, - 'datum' => $datum, - 'projektarbeitname' => $name + 'betreuerfullname' => $anrede->first, + 'qualgatebezeichnung' => $paabgabetyp_kurzbz->bezeichnung, + 'datum' => $paabgabe->datum, + 'projektarbeitname' => $projektarbeit->titel ); + $this->addMeta('$emaildata', $data); + $mailres = sendSanchoMail( 'QualGateNegativ', $data, $tomail, $subject ); - - return $mailres; } } \ No newline at end of file diff --git a/application/models/education/Projektarbeit_model.php b/application/models/education/Projektarbeit_model.php index b1971cea7..c87e9c187 100644 --- a/application/models/education/Projektarbeit_model.php +++ b/application/models/education/Projektarbeit_model.php @@ -168,7 +168,7 @@ class Projektarbeit_model extends DB_Model campus.tbl_paabgabe.kurzbz, campus.tbl_paabgabe.datum, campus.tbl_paabgabe.note, - campus.tbl_paabgabe.upload_required, + campus.tbl_paabgabe.upload_allowed, campus.tbl_paabgabetyp.paabgabetyp_kurzbz, campus.tbl_paabgabetyp.bezeichnung, campus.tbl_paabgabe.abgabedatum, @@ -189,7 +189,28 @@ class Projektarbeit_model extends DB_Model WHERE public.tbl_person.person_id= ?"; return $this->execReadOnlyQuery($qry_betr, [$bperson_id]); + } + + public function getProjektbetreuerEmail($projektarbeit_id) { + $qry = "SELECT ( + SELECT kontakt + FROM public.tbl_kontakt + WHERE kontakttyp = 'email' + AND person_id = pers.person_id + ORDER BY + CASE WHEN zustellung THEN 0 ELSE 1 END, + insertamum DESC NULLS LAST + LIMIT 1 + ) AS private_email + FROM lehre.tbl_projektarbeit pa + JOIN lehre.tbl_projektbetreuer USING (projektarbeit_id) + JOIN public.tbl_person pers USING (person_id) + LEFT JOIN public.tbl_benutzer ben USING (person_id) + LEFT JOIN public.tbl_mitarbeiter ma ON ben.uid = ma.mitarbeiter_uid + WHERE (ben.aktiv OR ben.aktiv IS NULL) + AND projektarbeit_id = ?"; + return $this->execReadOnlyQuery($qry, [$projektarbeit_id]); } public function getProjektarbeitBenutzer($uid) { @@ -225,7 +246,7 @@ class Projektarbeit_model extends DB_Model FROM (SELECT tbl_person.vorname, tbl_person.nachname, tbl_studiengang.typ, tbl_studiengang.kurzbz, tbl_projektarbeit.projekttyp_kurzbz, tbl_projekttyp.bezeichnung, tbl_projektarbeit.titel, tbl_projektarbeit.projektarbeit_id, - tbl_projektbetreuer.betreuerart_kurzbz, tbl_betreuerart.beschreibung AS betreuerart_beschreibung, + tbl_projektbetreuer.person_id as betreuer_person_id, tbl_projektbetreuer.betreuerart_kurzbz, tbl_betreuerart.beschreibung AS betreuerart_beschreibung, tbl_benutzer.uid, tbl_student.matrikelnr, tbl_lehreinheit.studiensemester_kurzbz FROM lehre.tbl_projektarbeit LEFT JOIN lehre.tbl_projektbetreuer using(projektarbeit_id) diff --git a/application/models/education/Projektbetreuer_model.php b/application/models/education/Projektbetreuer_model.php index ae78b96d9..95950bf95 100644 --- a/application/models/education/Projektbetreuer_model.php +++ b/application/models/education/Projektbetreuer_model.php @@ -231,40 +231,4 @@ class Projektbetreuer_model extends DB_Model return $this->execQuery($qry, array($projektarbeit_id, $betreuer_person_id)); } - - /** - * Gets email of a Betreuer for a Projektarbeit. - * Projektarbeitbetreuer can be external employees, which should be contacted on their private - * email contact, if they have one. Internal Betreuer should be contacted on their "uid@DOMAIN" adress. - * @param int betreuer_person_id - * @return object success or error - */ - public function getBetreuerEmail($betreuer_person_id) { - // TODO: check if benutzer uid exists, not fixangestellt - - $qry =" - SELECT uid, - CASE - WHEN public.tbl_mitarbeiter.fixangestellt = false - THEN ( - SELECT kontakt AS email - FROM public.tbl_kontakt - WHERE - public.tbl_kontakt.person_id = ? AND - kontakttyp = 'email' - ) - - ELSE ( - SELECT public.tbl_benutzer.uid || '@' || '".DOMAIN."' AS email - FROM public.tbl_benutzer - WHERE person_id = ? - ) - END AS email - FROM public.tbl_benutzer - JOIN public.tbl_mitarbeiter ON (public.tbl_benutzer.uid = public.tbl_mitarbeiter.mitarbeiter_uid) - WHERE person_id = ? - "; - - return $this->execReadOnlyQuery($qry, array($betreuer_person_id, $betreuer_person_id, $betreuer_person_id)); - } } diff --git a/public/js/api/factory/abgabe.js b/public/js/api/factory/abgabe.js index 0602a218c..67e67f385 100644 --- a/public/js/api/factory/abgabe.js +++ b/public/js/api/factory/abgabe.js @@ -1,4 +1,10 @@ export default { + getConfig() { + return { + method: 'get', + url: '/api/frontend/v1/Abgabe/getConfig' + }; + }, getStudentProjektarbeiten(uid) { return { method: 'get', @@ -51,12 +57,13 @@ export default { paabgabe_id: termin.paabgabe_id, paabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz, datum: termin.datum, - note: termin.note, - upload_required: termin.upload_required, + note: termin.note_pk, + upload_allowed: termin.upload_allowed, fixtermin: termin.fixtermin, insertvon: termin.insertvon, kurzbz: termin.kurzbz, - projektarbeit_id: termin.projektarbeit_id + projektarbeit_id: termin.projektarbeit_id, + betreuer_person_id: termin.betreuer_person_id } }; }, diff --git a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js index c70c40ba7..ca8d92cd8 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeMitarbeiterDetail.js @@ -13,7 +13,7 @@ export const AbgabeMitarbeiterDetail = { Textarea: primevue.textarea, VueDatePicker }, - inject: ['abgabeTypeOptions', 'allowedNotenOptions'], + inject: ['abgabeTypeOptions', 'allowedNotenOptions', 'turnitin_link', 'old_abgabe_beurteilung_link'], props: { projektarbeit: { type: Object, @@ -22,7 +22,6 @@ export const AbgabeMitarbeiterDetail = { }, data() { return { - oldPaBeurteilungLink: 'https://moodle.technikum-wien.at/mod/page/view.php?id=1005052', // TODO: inject from app & app provide link from config eidAkzeptiert: false, enduploadTermin: null, allActiveLanguages: FHC_JS_DATA_STORAGE_OBJECT.server_languages @@ -34,18 +33,15 @@ export const AbgabeMitarbeiterDetail = { }, saveTermin(termin) { const paabgabe_id = termin.paabgabe_id - // 9 => magic number for "noch nicht eingetragen" - termin.note = termin.note?.note ?? 9 + termin.note_pk = termin.note?.note ?? null + termin.betreuer_person_id = this.projektarbeit.betreuer_person_id this.$api.call(ApiAbgabe.postProjektarbeitAbgabe(termin)).then( (res) => { if(res?.meta?.status == 'success') { this.$fhcAlert.alertSuccess(this.$p.t('ui/gespeichert')) - if(paabgabe_id === -1) { // new abgabe has been inserted - termin.paabgabe_id = res?.data?.retval - + termin.paabgabe_id = res?.data?.paabgabe_id this.projektarbeit.abgabetermine.push({ // new abgatermin row - 'paabgabe_id': -1, 'projektarbeit_id': this.projektarbeit.projektarbeit_id, 'fixtermin': false, @@ -53,7 +49,7 @@ export const AbgabeMitarbeiterDetail = { 'datum': new Date().toISOString().split('T')[0], 'paabgabetyp_kurzbz': termin.paabgabetyp_kurzbz, 'note': this.allowedNotenOptions.find(opt => opt.note == termin.note?.note), - 'upload_required': termin.upload_required, + 'upload_allowed': termin.upload_allowed, 'bezeichnung': this.abgabeTypeOptions.find(opt => opt.paabgabetyp_kurzbz === termin.paabgabetyp_kurzbz), 'abgabedatum': null, 'insertvon': this.viewData?.uid ?? '', @@ -61,12 +57,9 @@ export const AbgabeMitarbeiterDetail = { 'allowedToDelete': true }) } - - } else if(res?.meta?.status == 'error'){ this.$fhcAlert.alertError() } - }) }, deleteTermin(termin) { @@ -76,8 +69,6 @@ export const AbgabeMitarbeiterDetail = { // this.$p.t('global/tooltipLektorDeleteKontrolle', [this.$entryParams.permissions.kontrolleDeleteMaxReach ]) const deletedTerminIndex = this.projektarbeit.abgabetermine.findIndex(t => t.paabgabe_id === termin.paabgabe_id) this.projektarbeit.abgabetermine.splice(deletedTerminIndex, 1) - - } else if(res?.meta?.status == 'error'){ this.$fhcAlert.alertError() } @@ -92,15 +83,13 @@ export const AbgabeMitarbeiterDetail = { return true; }, downloadAbgabe(termin) { - // TODO: test this.$api.call(ApiAbgabe.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid)) - // this.$fhcApi.factory.lehre.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid) }, dateDiffInDays(datum, today){ const oneDayMs = 1000 * 60 * 60 * 24 return Math.round((new Date(datum) - new Date(today)) / oneDayMs) }, - getDateStyle(termin) { + getDateStyle(termin, mode) { const datum = new Date(termin.datum) const abgabedatum = new Date(termin.abgabedatum) @@ -108,21 +97,31 @@ export const AbgabeMitarbeiterDetail = { // https://wiki.fhcomplete.info/doku.php?id=cis:abgabetool_fuer_studierende let color = 'white' let fontColor = 'black' + let icon = ''; if (termin.abgabedatum === null) { if(datum < today) { color = 'red' fontColor = 'white' + icon = 'fa-triangle-exclamation' } else if (datum > today && this.dateDiffInDays(datum, today) <= 12) { color = 'yellow' + icon = 'fa-circle-exclamation' } } else if(abgabedatum > datum) { color = 'pink' // aka "hellrot" fontColor = 'white' + icon = 'fa-circle-question' } else { color = 'green' + icon = 'fa-square-check' } - return `font-color: ${fontColor} ; background-color: ${color}; border-radius: 50%;` + //return `font-color: ${fontColor} ; background-color: ${color}; border-radius: 50%;` + if( typeof mode !== 'undefined' || mode === 'icon') { + return icon; + } else { + return 'abgabe-zieldatum-border-' + color; + } }, openBeurteilungLink(link) { window.open(link, '_blank') @@ -153,8 +152,7 @@ export const AbgabeMitarbeiterDetail = { window.open(link, '_blank') }, openPlagiatcheck() { - // todo: hardcoded turnitin link? - const link = "https://technikum-wien.turnitin.com/sso/sp/redwood/saml/5IyfmBr2OcSIaWQTKlFCGj/start" + const link = this.turnitin_link window.open(link, '_blank') }, openBenotung() { @@ -175,8 +173,17 @@ export const AbgabeMitarbeiterDetail = { }, endUploadVorhanden(){ return this.projektarbeit?.abgabetermine.find(abgabe => abgabe.paabgabetyp_kurzbz === 'end' && abgabe.abgabedatum !== null) + }, + qualityGateTerminAvailable() { + let qgatefound = false + this.projektarbeit?.abgabetermine.forEach(abgabe => { + if(abgabe.bezeichnung?.paabgabetyp_kurzbz == 'qualgate1' + || abgabe?.bezeichnung?.paabgabetyp_kurzbz == 'qualgate2') { + qgatefound = true + } + }) + return qgatefound } - }, created() { @@ -185,7 +192,7 @@ export const AbgabeMitarbeiterDetail = { }, template: ` -
+
{{$p.t('abgabetool/c4abgabeMitarbeiterbereich')}}
@@ -199,20 +206,20 @@ export const AbgabeMitarbeiterDetail = {
- Kein Endupload vorhanden! + {{ $p.t('abgabetool/c4noEnduploadFound') }}
@@ -220,8 +227,8 @@ export const AbgabeMitarbeiterDetail = {
@@ -230,86 +237,87 @@ export const AbgabeMitarbeiterDetail = {
-
{{$p.t('abgabetool/c4fixtermin')}}
-
{{$p.t('abgabetool/c4zieldatum')}}
-
{{$p.t('abgabetool/c4abgabetyp')}}
-
{{$p.t('abgabetool/c4note')}}
-
{{$p.t('abgabetool/c4upload_required')}}
-
{{$p.t('abgabetool/c4abgabekurzbz')}}
-
{{$p.t('abgabetool/c4abgabedatum')}}
-
- +
{{$p.t('abgabetool/c4fixtermin')}}
+
+
{{$p.t('abgabetool/c4zieldatum')}}
+
{{$p.t('abgabetool/c4abgabetyp')}}
+
{{$p.t('abgabetool/c4note')}}
+
{{$p.t('abgabetool/c4upload_allowed')}}
+
{{$p.t('abgabetool/c4abgabekurzbz')}}
+
{{$p.t('abgabetool/c4abgabedatum')}}
+
+ +
keine Termine gefunden!
-

+ + +
-
-
- +
+
+ + + +
+
+
+ - -
-
-
- - -
-
- - -
-
- - -
-
- -
-
- {{ termin.abgabedatum?.split("-").reverse().join(".") }} - - - -
-
-
-
- -
-
- -
+ v-model="termin.bezeichnung" + :options="abgabeTypeOptions" + :optionLabel="getOptionLabelAbgabetyp"> + +
+
+ + +
+
+ + +
+
+ +
+
+ {{ termin.abgabedatum?.split("-").reverse().join(".") }} + + + +
+
+ +
diff --git a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js index 3271ed97f..be44b0441 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js @@ -15,6 +15,7 @@ export const AbgabeStudentDetail = { Textarea: primevue.textarea, VueDatePicker }, + inject: ['notenOptions'], props: { projektarbeit: { type: Object, @@ -83,9 +84,7 @@ export const AbgabeStudentDetail = { this.$refs.modalContainerEnduploadZusatzdaten.hide() }, downloadAbgabe(termin) { - // TODO: test this.$api.call(ApiAbgabe.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid)) - // this.$fhcApi.factory.lehre.getStudentProjektarbeitAbgabeFile(termin.paabgabe_id, this.projektarbeit.student_uid) }, formatDate(dateParam) { const date = new Date(dateParam) @@ -181,6 +180,10 @@ export const AbgabeStudentDetail = { }, getOptionLabel(option) { return option.sprache + }, + getTerminNoteBezeichnung(termin) { + const noteOpt = this.notenOptions.find(opt => opt.note == termin.note) + return noteOpt ? noteOpt.bezeichnung : '' } }, watch: { @@ -201,6 +204,16 @@ export const AbgabeStudentDetail = { }, getAllowedToSendEndupload() { return !this.eidAkzeptiert + }, + qualityGateTerminAvailable() { + let qgatefound = false + this.projektarbeit?.abgabetermine.forEach(abgabe => { + if(abgabe.paabgabetyp_kurzbz == 'qualgate1' + || abgabe.paabgabetyp_kurzbz == 'qualgate2') { + qgatefound = true + } + }) + return qgatefound } }, created() { @@ -221,8 +234,10 @@ export const AbgabeStudentDetail = {
{{$p.t('abgabetool/c4fixtermin')}}
{{$p.t('abgabetool/c4zieldatum')}}
-
{{$p.t('abgabetool/c4abgabetyp')}}
-
{{$p.t('abgabetool/c4abgabekurzbz')}}
+
{{$p.t('abgabetool/c4abgabetyp')}}
+
{{$p.t('abgabetool/c4note')}}
+
{{$p.t('abgabetool/c4upload_allowed')}}
+
{{$p.t('abgabetool/c4abgabekurzbz')}}
{{$p.t('abgabetool/c4abgabedatum')}}
{{$p.t('abgabetool/c4fileupload')}} @@ -250,14 +265,27 @@ export const AbgabeStudentDetail = {
-
{{ termin.bezeichnung }}
-
- +
{{ termin.bezeichnung }}
+
+ {{ getTerminNoteBezeichnung(termin) }}
-
+
+ + +
+
+ +
+
{{ termin.abgabedatum?.split("-").reverse().join(".") }} - +
@@ -267,8 +295,8 @@ export const AbgabeStudentDetail = {
@@ -289,7 +317,7 @@ export const AbgabeStudentDetail = {
-

Titel: {{ projektarbeit?.titel }}

+

{{$p.t('abgabetool/c4titel')}}: {{ projektarbeit?.titel }}

diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js index c16abc8a3..1e9d61056 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js @@ -19,7 +19,9 @@ export const AbgabetoolMitarbeiter = { provide() { return { abgabeTypeOptions: Vue.computed(() => this.abgabeTypeOptions), - allowedNotenOptions: Vue.computed(() => this.allowedNotenOptions) + allowedNotenOptions: Vue.computed(() => this.allowedNotenOptions), + turnitin_link: Vue.computed(() => this.turnitin_link), + old_abgabe_beurteilung_link: Vue.computed(() => this.old_abgabe_beurteilung_link) } }, props: { @@ -34,6 +36,8 @@ export const AbgabetoolMitarbeiter = { }, data() { return { + turnitin_link: null, + old_abgabe_beurteilung_link: null, saving: false, loading: false, abgabeTypeOptions: null, @@ -59,9 +63,9 @@ export const AbgabetoolMitarbeiter = { tableBuiltResolve: null, tableBuiltPromise: null, abgabeTableOptions: { - height: 700, + minHeight: 250, index: 'projektarbeit_id', - layout: 'fitDataStretch', + layout: 'fitColumns', placeholder: this.$p.t('global/noDataAvailable'), selectable: true, selectableCheck: this.selectionCheck, @@ -80,13 +84,13 @@ export const AbgabetoolMitarbeiter = { {title: Vue.computed(() => this.$p.t('abgabetool/c4details')), field: 'details', formatter: this.detailFormatter, widthGrow: 1, tooltip: false}, {title: Vue.computed(() => this.$p.t('abgabetool/c4personenkennzeichen')), field: 'pkz', formatter: this.pkzTextFormatter, widthGrow: 1, tooltip: false}, {title: Vue.computed(() => this.$p.t('abgabetool/c4kontakt')), field: 'mail', formatter: this.mailFormatter, widthGrow: 1, tooltip: false}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4vorname')), field: 'vorname', formatter: this.centeredTextFormatter, widthGrow: 1}, + {title: Vue.computed(() => this.$p.t('abgabetool/c4vorname')), field: 'vorname', formatter: this.centeredTextFormatter,widthGrow: 1}, {title: Vue.computed(() => this.$p.t('abgabetool/c4nachname')), field: 'nachname', formatter: this.centeredTextFormatter, widthGrow: 1}, {title: Vue.computed(() => this.$p.t('abgabetool/c4projekttyp')), field: 'projekttyp_kurzbz', formatter: this.centeredTextFormatter, widthGrow: 1}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4stg')), field: 'stg', formatter: this.centeredTextFormatter, widthGrow: 2}, + {title: Vue.computed(() => this.$p.t('abgabetool/c4stg')), field: 'stg', formatter: this.centeredTextFormatter, widthGrow: 1}, {title: Vue.computed(() => this.$p.t('abgabetool/c4sem')), field: 'studiensemester_kurzbz', formatter: this.centeredTextFormatter, widthGrow: 1}, {title: Vue.computed(() => this.$p.t('abgabetool/c4titel')), field: 'titel', formatter: this.centeredTextFormatter, maxWidth: 500, widthGrow: 8}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4betreuerart')), field: 'betreuerart_beschreibung',formatter: this.centeredTextFormatter, widthGrow: 8} + {title: Vue.computed(() => this.$p.t('abgabetool/c4betreuerart')), field: 'betreuerart_beschreibung',formatter: this.centeredTextFormatter, widthGrow: 1} ], persistence: false, }, @@ -209,7 +213,7 @@ export const AbgabetoolMitarbeiter = { 'kurzbz': '', 'datum': new Date().toISOString().split('T')[0], 'note': this.allowedNotenOptions.find(opt => opt.note == 9), - 'upload_required': false, + 'upload_allowed': false, 'paabgabetyp_kurzbz': '', 'bezeichnung': '', 'abgabedatum': null, @@ -227,7 +231,6 @@ export const AbgabetoolMitarbeiter = { paabgabetyp_kurzbz: termin.paabgabetyp_kurzbz } }) - pa.betreuer = this.buildBetreuer(pa) pa.student_uid = details.student_uid pa.student = `${pa.vorname} ${pa.nachname}` @@ -280,10 +283,6 @@ export const AbgabetoolMitarbeiter = { buildStg(projekt) { return (projekt.typ + projekt.kurzbz)?.toUpperCase() }, - buildBetreuer(abgabe) { - // TODO: preload and insert own titled name of betreuer somehow - return abgabe.betreuerart_beschreibung + ': ' + (abgabe.btitelpre ? abgabe.btitelpre + ' ' : '') + abgabe.bvorname + ' ' + abgabe.bnachname + (abgabe.btitelpost ? ' ' + abgabe.btitelpost : '') - }, setupData(data){ this.projektarbeiten = data[0] this.domain = data[1] @@ -337,7 +336,7 @@ export const AbgabetoolMitarbeiter = { if(!tableDataSet) return const rect = tableDataSet.getBoundingClientRect(); - this.abgabeTableOptions.height = window.visualViewport.height - rect.top + this.abgabeTableOptions.height = window.visualViewport.height - rect.top - 80 this.$refs.abgabeTable.tabulator.setHeight(this.abgabeTableOptions.height) }, async setupMounted() { @@ -346,7 +345,6 @@ export const AbgabetoolMitarbeiter = { this.loadProjektarbeiten() - this.$refs.verticalsplit.collapseBottom() this.calcMaxTableHeight() @@ -359,6 +357,15 @@ export const AbgabetoolMitarbeiter = { }, created() { + // fetch config to avoid hard coded links + this.$api.call(ApiAbgabe.getConfig()).then(res => { + this.turnitin_link = res.data?.turnitin_link + this.old_abgabe_beurteilung_link = res.data?.old_abgabe_beurteilung_link + }).catch(e => { + console.log(e) + this.loading = false + }) + // fetch noten options //TODO: SWITCH TO NOTEN API ONCE NOTENTOOL IS IN MASTER TO AVOID DUPLICATE API this.$api.call(ApiAbgabe.getNoten()).then(res => { @@ -367,7 +374,6 @@ export const AbgabetoolMitarbeiter = { this.allowedNotenOptions = this.notenOptions.filter( opt => opt.bezeichnung === 'Bestanden' || opt.bezeichnung === 'Nicht bestanden' - || opt.bezeichnung === 'Noch nicht eingetragen' ) }).catch(e => { this.loading = false @@ -385,7 +391,7 @@ export const AbgabetoolMitarbeiter = { }, template: ` + dialogClass="modal-lg"> + +
- - - - - - - + + + + + + +
`, }; diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js index bfd5da01b..2a1827b4e 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js @@ -10,6 +10,11 @@ export const AbgabetoolStudent = { AbgabeDetail, VerticalSplit }, + provide() { + return { + notenOptions: Vue.computed(() => this.notenOptions) + } + }, props: { student_uid_prop: { default: null @@ -25,6 +30,7 @@ export const AbgabetoolStudent = { }, data() { return { + notenOptions: null, tabulatorUuid: Vue.ref(0), domain: '', student_uid: null, @@ -83,27 +89,42 @@ export const AbgabetoolStudent = { ]}; }, methods: { - checkQualityGates(termine, enduploadtermin) { - return true + checkQualityGates(termine) { + let qgate1Passed = false + let qgate2Passed = false + + termine.forEach(t => { + const noteOption = this.notenOptions.find(opt => opt.note == t.note) + if(noteOption && noteOption.positiv) { + if(t.paabgabetyp_kurzbz == 'qualgate1') { + qgate1Passed = true + } else if(t.paabgabetyp_kurzbz == 'qualgate2') { + qgate2Passed = true + } + } + }) + + return qgate1Passed && qgate2Passed }, isPastDate(date) { return new Date(date) < new Date(Date.now()) }, setDetailComponent(details){ this.loadAbgaben(details).then((res)=> { - const pa = this.projektarbeiten?.retval?.find(projekarbeit => projekarbeit.projektarbeit_id == details.projektarbeit_id) + const pa = this.projektarbeiten?.find(projekarbeit => projekarbeit.projektarbeit_id == details.projektarbeit_id) pa.abgabetermine = res.data[0].retval pa.abgabetermine.forEach(termin => { termin.file = [] - // termin.allowedToUpload = true - + termin.allowedToUpload = false + // termin.datum = '2025-10-16' // TODO: fixtermin logic? - if(termin.bezeichnung == 'Endupload' && - (this.isPastDate(termin.datum) || this.checkQualityGates(pa.abgabetermine, termin))) { + if(termin.paabgabetyp_kurzbz == 'enda') { - // termin.allowedToUpload = false + termin.allowedToUpload = !this.isPastDate(termin.datum) && this.checkQualityGates(pa.abgabetermine) + } else if(termin.paabgabetyp_kurzbz == 'qualgate1' || termin.paabgabetyp_kurzbz == 'qualgate2') { + termin.allowedToUpload = termin.upload_allowed } else { - // termin.allowedToUpload = true + termin.allowedToUpload = true } }) @@ -111,7 +132,6 @@ export const AbgabetoolStudent = { pa.student_uid = this.student_uid this.selectedProjektarbeit = pa - this.$refs.verticalsplit.showBoth() @@ -150,8 +170,12 @@ export const AbgabetoolStudent = { tableResolve(resolve) { this.tableBuiltResolve = resolve }, - buildMailToLink(abgabe) { - return 'mailto:' + abgabe.mitarbeiter_uid +'@'+ this.domain + buildMailToLink(projekt) { + if(projekt.mitarbeiter_uid) { // standard + return 'mailto:' + projekt.mitarbeiter_uid +'@'+ this.domain + } else { // private + return 'mailto:' + projekt.email + } }, buildBetreuer(abgabe) { return abgabe.betreuerart_beschreibung + ': ' + (abgabe.btitelpre ? abgabe.btitelpre + ' ' : '') + abgabe.bvorname + ' ' + abgabe.bnachname + (abgabe.btitelpost ? ' ' + abgabe.btitelpost : '') @@ -160,7 +184,7 @@ export const AbgabetoolStudent = { this.projektarbeiten = data[0] this.domain = data[1] this.student_uid = data[2] - const d = data[0]?.retval?.map(projekt => { + const d = data[0]?.map(projekt => { let mode = 'detailTermine' if (projekt.babgeschickt || projekt.zweitbetreuer_abgeschickt) { @@ -213,7 +237,7 @@ export const AbgabetoolStudent = { if(!tableDataSet) return const rect = tableDataSet.getBoundingClientRect(); - this.abgabeTableOptions.height = window.visualViewport.height - rect.top + this.abgabeTableOptions.height = window.visualViewport.height - rect.top - 100 this.$refs.abgabeTable.tabulator.setHeight(this.abgabeTableOptions.height) }, async setupMounted() { @@ -223,7 +247,7 @@ export const AbgabetoolStudent = { this.loadProjektarbeiten() this.$refs.verticalsplit.collapseBottom() - //this.calcMaxTableHeight() + this.calcMaxTableHeight() } }, watch: { @@ -235,34 +259,43 @@ export const AbgabetoolStudent = { } }, created() { + //TODO: SWITCH TO NOTEN API ONCE NOTENTOOL IS IN MASTER TO AVOID DUPLICATE API + this.$api.call(ApiAbgabe.getNoten()).then(res => { + this.notenOptions = res.data + }).catch(e => { + this.loading = false + }) }, mounted() { this.setupMounted() }, template: ` - - - - + +
+ + + + +
`, }; diff --git a/public/js/components/Cis/Abgabetool/DeadlineOverview.js b/public/js/components/Cis/Abgabetool/DeadlineOverview.js index 6f8347169..cc202b4b4 100644 --- a/public/js/components/Cis/Abgabetool/DeadlineOverview.js +++ b/public/js/components/Cis/Abgabetool/DeadlineOverview.js @@ -110,7 +110,7 @@ export const DeadlineOverview = { if(!tableDataSet) return const rect = tableDataSet.getBoundingClientRect(); - this.deadlineTableOptions.height = window.visualViewport.height - rect.top + this.deadlineTableOptions.height = window.visualViewport.height - rect.top - 30 this.$refs.deadlineTable.tabulator.setHeight(this.deadlineTableOptions.height) }, async setupMounted() { diff --git a/public/js/plugins/Api.js b/public/js/plugins/Api.js index e3e604d6c..43c2b3064 100644 --- a/public/js/plugins/Api.js +++ b/public/js/plugins/Api.js @@ -164,7 +164,6 @@ export default { return fhcApiAxios.post(uri, data, config); }, call(factory, configoverwrite, form) { - debugger if (Array.isArray(factory)) { const $fhcAlert = app.config.globalProperties.$fhcAlert; const $api = app.config.globalProperties.$api; diff --git a/system/dbupdate_3.4/61164_abgabetool_quality_gates.php b/system/dbupdate_3.4/61164_abgabetool_quality_gates.php index b4f6fd7c9..1ec257bb1 100644 --- a/system/dbupdate_3.4/61164_abgabetool_quality_gates.php +++ b/system/dbupdate_3.4/61164_abgabetool_quality_gates.php @@ -34,7 +34,7 @@ if($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table { $qry = "ALTER TABLE campus.tbl_paabgabe - ADD COLUMN note SMALLINT NOT NULL DEFAULT 9, + ADD COLUMN note SMALLINT DEFAULT NULL, ADD CONSTRAINT tbl_paabgabe_note_fkey FOREIGN KEY (note) REFERENCES lehre.tbl_note(note) @@ -47,16 +47,16 @@ if($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table } } -if($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_paabgabe' AND column_name = 'upload_required'")) +if($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_paabgabe' AND column_name = 'upload_allowed'")) { if($db->db_num_rows($result) === 0) { $qry = "ALTER TABLE campus.tbl_paabgabe - ADD COLUMN IF NOT EXISTS upload_required boolean DEFAULT false;"; + ADD COLUMN IF NOT EXISTS upload_allowed boolean DEFAULT false;"; if(!$db->db_query($qry)) echo 'campus.tbl_paabgabe: '.$db->db_last_error().'
'; else - echo '
paabgabe column upload_required default false hinzugefuegt'; + echo '
paabgabe column upload_allowed default false hinzugefuegt'; } } \ No newline at end of file diff --git a/system/phrasesupdate.php b/system/phrasesupdate.php index dd23a1c4a..19cf6469f 100644 --- a/system/phrasesupdate.php +++ b/system/phrasesupdate.php @@ -41490,7 +41490,7 @@ array( ), array( 'sprache' => 'English', - 'text' => "details", + 'text' => "Details", 'description' => '', 'insertvon' => 'system' ) @@ -41510,7 +41510,7 @@ array( ), array( 'sprache' => 'English', - 'text' => "semester", + 'text' => "Semester", 'description' => '', 'insertvon' => 'system' ) @@ -41530,7 +41530,7 @@ array( ), array( 'sprache' => 'English', - 'text' => "degree program", + 'text' => "Degree program", 'description' => '', 'insertvon' => 'system' ) @@ -41550,7 +41550,7 @@ array( ), array( 'sprache' => 'English', - 'text' => "contact", + 'text' => "Contact", 'description' => '', 'insertvon' => 'system' ) @@ -41590,7 +41590,7 @@ array( ), array( 'sprache' => 'English', - 'text' => "project type", + 'text' => "Project type", 'description' => '', 'insertvon' => 'system' ) @@ -41610,7 +41610,7 @@ array( ), array( 'sprache' => 'English', - 'text' => "title", + 'text' => "Title", 'description' => '', 'insertvon' => 'system' ) @@ -41670,7 +41670,7 @@ array( ), array( 'sprache' => 'English', - 'text' => "target date", + 'text' => "Target date", 'description' => '', 'insertvon' => 'system' ) @@ -41730,7 +41730,7 @@ array( ), array( 'sprache' => 'English', - 'text' => "submission date", + 'text' => "Submission date", 'description' => '', 'insertvon' => 'system' ) @@ -41776,6 +41776,26 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4benoten', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Benoten", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Grade", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'abgabetool', @@ -41796,6 +41816,46 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4save', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Speichern", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Save", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4delete', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Löschen", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => "Delete", + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'abgabetool', @@ -42176,6 +42236,146 @@ array( ) ) ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4note', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Note", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Grade', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4upload_allowed', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Upload erlaubt", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Upload allowed', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4student_perspective', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Studentenansicht", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Student perspective', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4upload', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Hochladen", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Upload', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4plagiatcheck_link', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "zur Plagiatsprüfung", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Plagiarism check', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4plagiatcheck_link', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "zur Plagiatsprüfung", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'Plagiarism check', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), + array( + 'app' => 'core', + 'category' => 'abgabetool', + 'phrase' => 'c4noEnduploadFound', + 'insertvon' => 'system', + 'phrases' => array( + array( + 'sprache' => 'German', + 'text' => "Kein Endupload vorhanden!", + 'description' => '', + 'insertvon' => 'system' + ), + array( + 'sprache' => 'English', + 'text' => 'No final submission found!', + 'description' => '', + 'insertvon' => 'system' + ) + ) + ), array( 'app' => 'core', 'category' => 'abgabetool', From a560c335b8003e7bab771a74bc853c94a4029cce Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Tue, 2 Sep 2025 13:35:42 +0200 Subject: [PATCH 013/299] WIP responsive tabulator collapse abgabetool; paabgabe notiz column; --- .../views/CisRouterView/CisRouterView.php | 3 +- .../Cis/Abgabetool/AbgabetoolMitarbeiter.js | 41 +++-- .../Cis/Abgabetool/AbgabetoolStudent.js | 147 +++++++++++++----- .../61164_abgabetool_quality_gates.php | 14 ++ 4 files changed, 149 insertions(+), 56 deletions(-) diff --git a/application/views/CisRouterView/CisRouterView.php b/application/views/CisRouterView/CisRouterView.php index ab22fbb81..b56ed482e 100644 --- a/application/views/CisRouterView/CisRouterView.php +++ b/application/views/CisRouterView/CisRouterView.php @@ -33,7 +33,8 @@ $includesArray = array( 'vendor/moment/luxonjs/luxon.min.js' ), 'customJSModules' => array( - 'public/js/apps/Dashboard/Fhc.js' + 'public/js/apps/Dashboard/Fhc.js', + 'vendor/olifolkerd/tabulator5/src/js/modules/ResponsiveLayout/ResponsiveLayout.js' ), ); diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js index 1e9d61056..313029852 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolMitarbeiter.js @@ -236,8 +236,8 @@ export const AbgabetoolMitarbeiter = { this.selectedProjektarbeit = pa - - this.$refs.verticalsplit.showBoth() + this.$refs.modalContainerAbgabeDetail.show() + // this.$refs.verticalsplitthis.$refs.verticalsplit.showBoth() }) @@ -345,7 +345,7 @@ export const AbgabetoolMitarbeiter = { this.loadProjektarbeiten() - this.$refs.verticalsplit.collapseBottom() + // this.$refs.verticalsplit.collapseBottom() this.calcMaxTableHeight() } @@ -441,12 +441,27 @@ export const AbgabetoolMitarbeiter = { + + + + + + +
- - - - - + + + + + + +
`, diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js index 2a1827b4e..a63f781e9 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js @@ -2,10 +2,12 @@ import {CoreFilterCmpt} from "../../../components/filter/Filter.js"; import AbgabeDetail from "./AbgabeStudentDetail.js"; import VerticalSplit from "../../verticalsplit/verticalsplit.js"; import ApiAbgabe from '../../../api/factory/abgabe.js' +import BsModal from "../../Bootstrap/Modal.js"; export const AbgabetoolStudent = { name: "AbgabetoolStudent", components: { + BsModal, CoreFilterCmpt, AbgabeDetail, VerticalSplit @@ -43,16 +45,61 @@ export const AbgabetoolStudent = { minHeight: 250, index: 'projektarbeit_id', layout: 'fitColumns', + responsiveLayout: "collapse", placeholder: this.$p.t('global/noDataAvailable'), columns: [ - {title: Vue.computed(() => this.$p.t('abgabetool/c4details')), field: 'details', formatter: this.detailFormatter, widthGrow: 1, tooltip: false}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4beurteilung')), field: 'beurteilung', formatter: this.beurteilungFormatter, widthGrow: 1, tooltip: false}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4sem')), field: 'sem', formatter: this.centeredTextFormatter, widthGrow: 1}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4stg')), field: 'stg', formatter: this.centeredTextFormatter, widthGrow: 1}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4kontakt')), field: 'mail', formatter: this.mailFormatter, widthGrow: 1}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4betreuer')), field: 'betreuer', formatter: this.centeredTextFormatter,widthGrow: 2}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4projekttyp')), field: 'typ', formatter: this.centeredTextFormatter, widthGrow: 1}, - {title: Vue.computed(() => this.$p.t('abgabetool/c4titel')), field: 'titel', formatter: this.centeredTextFormatter, widthGrow: 8} + { + formatter:"responsiveCollapse", + width:30, minWidth:30, hozAlign:"center", resizable:false, headerSort:false + }, + { + title: Vue.computed(() => this.$p.t('abgabetool/c4details')), field: 'details', + formatter: this.detailFormatter, + widthGrow: 1, tooltip: false + , responsive: 0, minWidth: 80 + }, + { + title: Vue.computed(() => this.$p.t('abgabetool/c4beurteilung')), field: 'beurteilung', + formatter: this.beurteilungFormatter, + widthGrow: 1, tooltip: false + , responsive: 0, minWidth: 80 + }, + { + title: Vue.computed(() => this.$p.t('abgabetool/c4sem')), field: 'sem', + formatter: this.centeredTextFormatter, + widthGrow: 1 + , responsive: 5, minWidth: 120 + }, + { + title: Vue.computed(() => this.$p.t('abgabetool/c4stg')), field: 'stg', + formatter: this.centeredTextFormatter, + widthGrow: 1 + , responsive: 6, minWidth: 120 + }, + { + title: Vue.computed(() => this.$p.t('abgabetool/c4kontakt')), field: 'mail', + formatter: this.mailFormatter, + widthGrow: 1 + , responsive: 0, minWidth: 80 + }, + { + title: Vue.computed(() => this.$p.t('abgabetool/c4betreuer')), field: 'betreuer', + formatter: this.centeredTextFormatter, + widthGrow: 2 + , responsive: 7, minWidth: 300 + }, + { + title: Vue.computed(() => this.$p.t('abgabetool/c4projekttyp')), field: 'typ', + formatter: this.centeredTextFormatter, + widthGrow: 1 + , responsive: 8, minWidth: 200 + }, + { + title: Vue.computed(() => this.$p.t('abgabetool/c4titel')), field: 'titel', + formatter: this.centeredTextFormatter, + widthGrow: 8 + , responsive: 1, minWidth: 420 + } ], persistence: false, }, @@ -132,8 +179,9 @@ export const AbgabetoolStudent = { pa.student_uid = this.student_uid this.selectedProjektarbeit = pa - - this.$refs.verticalsplit.showBoth() + + this.$refs.modalContainerAbgabeDetail.show() + // this.$refs.verticalsplit.showBoth() }) @@ -141,29 +189,29 @@ export const AbgabetoolStudent = { centeredTextFormatter(cell) { const val = cell.getValue() - return '
' + + return '
' + '

'+val+'

' }, detailFormatter(cell) { const val = cell.getValue() if(val.mode === 'detailTermine') { - return '
' + + return '
' + '
' } else if (val.mode === 'beurteilungDownload') { - return '
' + + return '
' + '
' } }, mailFormatter(cell) { const val = cell.getValue() - return '
' + + return '
' + '
' }, beurteilungFormatter(cell) { const val = cell.getValue() if(val) { - return '
' + + return '
' + '
' } else return '-' }, @@ -213,6 +261,11 @@ export const AbgabetoolStudent = { this.$refs.abgabeTable.tabulator.setColumns(this.abgabeTableOptions.columns) this.$refs.abgabeTable.tabulator.setData(d); + + Vue.nextTick(()=>{ + this.$refs.abgabeTable?.tabulator.setColumns(this.$refs.abgabeTable?.tabulator.getColumnDefinitions()) + + }) }, loadProjektarbeiten() { this.$api.call(ApiAbgabe.getStudentProjektarbeiten(this.student_uid_prop || this.viewData?.uid || null)) @@ -245,9 +298,15 @@ export const AbgabetoolStudent = { await this.tableBuiltPromise this.loadProjektarbeiten() + - this.$refs.verticalsplit.collapseBottom() - this.calcMaxTableHeight() + // window.addEventListener("resize", this.redrawHandler); + // this.$refs.verticalsplit.collapseBottom() + }, + redrawHandler() { + console.log('redrawHandler') + this.$refs.abgabeTable?.tabulator.setColumns(this.$refs.abgabeTable?.tabulator.getColumnDefinitions()) + this.$refs.abgabeTable?.tabulator.redraw(true) } }, watch: { @@ -270,32 +329,36 @@ export const AbgabetoolStudent = { mounted() { this.setupMounted() }, + unmounted() { + // window.removeEventListener("resize", this.redrawHandler); + }, template: ` - -
- - - - -
+ + + + + + +

{{$p.t('abgabetool/abgabetoolTitle')}}

+
+ + `, }; diff --git a/system/dbupdate_3.4/61164_abgabetool_quality_gates.php b/system/dbupdate_3.4/61164_abgabetool_quality_gates.php index 1ec257bb1..1584aae01 100644 --- a/system/dbupdate_3.4/61164_abgabetool_quality_gates.php +++ b/system/dbupdate_3.4/61164_abgabetool_quality_gates.php @@ -59,4 +59,18 @@ if($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table else echo '
paabgabe column upload_allowed default false hinzugefuegt'; } +} + +if($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_paabgabe' AND column_name = 'notiz'")) +{ + if($db->db_num_rows($result) === 0) + { + $qry = "ALTER TABLE campus.tbl_paabgabe + ADD COLUMN IF NOT EXISTS notiz text DEFAULT NULL;"; + + if(!$db->db_query($qry)) + echo 'campus.tbl_paabgabe: '.$db->db_last_error().'
'; + else + echo "
paabgabe column notiz default '' hinzugefuegt"; + } } \ No newline at end of file From fd2ff27e22d16aab895e781bf9a5d21c3ac91d51 Mon Sep 17 00:00:00 2001 From: Cristina Date: Wed, 3 Sep 2025 15:24:07 +0200 Subject: [PATCH 014/299] Added column prestudent_id to getStudentsByLv method query in Lehrveranstaltung_model.php --- application/models/education/Lehrveranstaltung_model.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 3eb4d33a2..63d1ca15c 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -316,7 +316,8 @@ class Lehrveranstaltung_model extends DB_Model (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_benutzer.uid, - UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung + UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung, + tbl_student.prestudent_id FROM campus.vw_student_lehrveranstaltung From 10d58d1a42f64649ef0110ccb9528519bd05efa4 Mon Sep 17 00:00:00 2001 From: Cristina Date: Wed, 3 Sep 2025 15:24:07 +0200 Subject: [PATCH 015/299] Added column prestudent_id to getStudentsByLv method query in Lehrveranstaltung_model.php --- application/models/education/Lehrveranstaltung_model.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php index 3eb4d33a2..e02c1ad0b 100644 --- a/application/models/education/Lehrveranstaltung_model.php +++ b/application/models/education/Lehrveranstaltung_model.php @@ -316,8 +316,8 @@ class Lehrveranstaltung_model extends DB_Model (SELECT status_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) as status, tbl_bisio.bisio_id, tbl_bisio.von, tbl_bisio.bis, tbl_student.studiengang_kz AS stg_kz_student, tbl_zeugnisnote.note, tbl_mitarbeiter.mitarbeiter_uid, tbl_person.matr_nr, tbl_benutzer.uid, - UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung - + UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel, tbl_studiengang.orgform_kurzbz, vw_student_lehrveranstaltung.semester, vw_student_lehrveranstaltung.studiensemester_kurzbz, vw_student_lehrveranstaltung.bezeichnung, + tbl_student.prestudent_id FROM campus.vw_student_lehrveranstaltung JOIN public.tbl_benutzer USING(uid) From 5f1c7537fb191a27726fcffde44ef7400e5be492 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Thu, 4 Sep 2025 11:04:12 +0200 Subject: [PATCH 016/299] WIP --- .../controllers/api/frontend/v1/Abgabe.php | 15 +- public/js/apps/Dashboard/Fhc.js | 1 + .../Cis/Abgabetool/AbgabeStudentDetail.js | 248 +++++++++++++----- .../Cis/Abgabetool/AbgabetoolStudent.js | 42 ++- 4 files changed, 221 insertions(+), 85 deletions(-) diff --git a/application/controllers/api/frontend/v1/Abgabe.php b/application/controllers/api/frontend/v1/Abgabe.php index 345ead004..4ff260602 100644 --- a/application/controllers/api/frontend/v1/Abgabe.php +++ b/application/controllers/api/frontend/v1/Abgabe.php @@ -140,13 +140,16 @@ class Abgabe extends FHCAPI_Controller $projektarbeiten = getData($result); - // TODO: save access to this, array could be empty - foreach($projektarbeiten as $pa) { - $result = $this->ProjektarbeitModel->getProjektbetreuerEmail($pa->projektarbeit_id); - - // TODO: save access - $pa->email = getData($result)[0]->private_email; + if(count($projektarbeiten)) { + // TODO: save access to this, array could be empty + foreach($projektarbeiten as $pa) { + $result = $this->ProjektarbeitModel->getProjektbetreuerEmail($pa->projektarbeit_id); + + // TODO: save access + $pa->email = getData($result)[0]->private_email; + } } + $this->terminateWithSuccess(array($projektarbeiten, DOMAIN, $uid)); } diff --git a/public/js/apps/Dashboard/Fhc.js b/public/js/apps/Dashboard/Fhc.js index 473e1cf67..5295050a0 100644 --- a/public/js/apps/Dashboard/Fhc.js +++ b/public/js/apps/Dashboard/Fhc.js @@ -233,6 +233,7 @@ const app = Vue.createApp({ return { // provide injectable & watchable language property language: Vue.computed(() => this.$p.user_language), renderers: Vue.computed(() => this.renderers), + isMobile: this.isMobile } }, methods: { diff --git a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js index be44b0441..e56ab90ca 100644 --- a/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js +++ b/public/js/components/Cis/Abgabetool/AbgabeStudentDetail.js @@ -13,9 +13,11 @@ export const AbgabeStudentDetail = { Checkbox: primevue.checkbox, Dropdown: primevue.dropdown, Textarea: primevue.textarea, + Accordion: primevue.accordion, + AccordionTab: primevue.accordiontab, VueDatePicker }, - inject: ['notenOptions'], + inject: ['notenOptions', 'isMobile'], props: { projektarbeit: { type: Object, @@ -184,6 +186,14 @@ export const AbgabeStudentDetail = { getTerminNoteBezeichnung(termin) { const noteOpt = this.notenOptions.find(opt => opt.note == termin.note) return noteOpt ? noteOpt.bezeichnung : '' + }, + getAccTabHeaderForTermin(termin) { + let tabTitle = '' + + const datumFormatted = this.formatDate(termin.datum) + tabTitle += termin.bezeichnung + ' ' + datumFormatted + + return tabTitle } }, watch: { @@ -230,79 +240,175 @@ export const AbgabeStudentDetail = {

{{projektarbeit?.betreuer}}

{{projektarbeit?.titel}}

-
-
-
{{$p.t('abgabetool/c4fixtermin')}}
-
{{$p.t('abgabetool/c4zieldatum')}}
-
{{$p.t('abgabetool/c4abgabetyp')}}
-
{{$p.t('abgabetool/c4note')}}
-
{{$p.t('abgabetool/c4upload_allowed')}}
-
{{$p.t('abgabetool/c4abgabekurzbz')}}
-
{{$p.t('abgabetool/c4abgabedatum')}}
-
- {{$p.t('abgabetool/c4fileupload')}} -
-
-
-
- - - -
-
-
- - - -
-
-
{{ termin.bezeichnung }}
-
- {{ getTerminNoteBezeichnung(termin) }} -
-
- - -
-
- -
-
- {{ termin.abgabedatum?.split("-").reverse().join(".") }} - - - -
-
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js index a63f781e9..e46f46579 100644 --- a/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js +++ b/public/js/components/Cis/Abgabetool/AbgabetoolStudent.js @@ -12,6 +12,7 @@ export const AbgabetoolStudent = { AbgabeDetail, VerticalSplit }, + inject: ['isMobile'], provide() { return { notenOptions: Vue.computed(() => this.notenOptions) @@ -41,6 +42,8 @@ export const AbgabetoolStudent = { selectedProjektarbeit: null, tableBuiltResolve: null, tableBuiltPromise: null, + dataProcessedPromise: null, + dataProcessedResolve: null, abgabeTableOptions: { minHeight: 250, index: 'projektarbeit_id', @@ -103,12 +106,20 @@ export const AbgabetoolStudent = { ], persistence: false, }, - abgabeTableEventHandlers: [{ + abgabeTableEventHandlers: [ + { event: "tableBuilt", handler: async () => { this.tableBuiltResolve() } }, + { + event: "dataProcessed", + handler: async () => { + console.log('dataProcessed event') + this.dataProcessedResolve() + } + }, { event: "cellClick", handler: async (e, cell) => { @@ -218,6 +229,10 @@ export const AbgabetoolStudent = { tableResolve(resolve) { this.tableBuiltResolve = resolve }, + dataResolve(resolve) { + console.log('dataResolve') + this.dataProcessedResolve = resolve + }, buildMailToLink(projekt) { if(projekt.mitarbeiter_uid) { // standard return 'mailto:' + projekt.mitarbeiter_uid +'@'+ this.domain @@ -228,7 +243,7 @@ export const AbgabetoolStudent = { buildBetreuer(abgabe) { return abgabe.betreuerart_beschreibung + ': ' + (abgabe.btitelpre ? abgabe.btitelpre + ' ' : '') + abgabe.bvorname + ' ' + abgabe.bnachname + (abgabe.btitelpost ? ' ' + abgabe.btitelpost : '') }, - setupData(data){ + async setupData(data){ this.projektarbeiten = data[0] this.domain = data[1] this.student_uid = data[2] @@ -259,13 +274,23 @@ export const AbgabetoolStudent = { } }) - this.$refs.abgabeTable.tabulator.setColumns(this.abgabeTableOptions.columns) + // this.$refs.abgabeTable.tabulator.setColumns(this.abgabeTableOptions.columns) this.$refs.abgabeTable.tabulator.setData(d); + await this.dataProcessedPromise - Vue.nextTick(()=>{ - this.$refs.abgabeTable?.tabulator.setColumns(this.$refs.abgabeTable?.tabulator.getColumnDefinitions()) - }) + // TODO: proper event handling cleanup + + // todo in general fix this nasty race condition + const t = this.$refs.abgabeTable.tabulator; + t.on("renderComplete", () => { + // only if container width is small enough to trigger collapse + if (t.element.offsetWidth < 600 || this.isMobile) { + t.setColumns(t.getColumnDefinitions()); + t.redraw(true) + } + }); + }, loadProjektarbeiten() { this.$api.call(ApiAbgabe.getStudentProjektarbeiten(this.student_uid_prop || this.viewData?.uid || null)) @@ -295,8 +320,9 @@ export const AbgabetoolStudent = { }, async setupMounted() { this.tableBuiltPromise = new Promise(this.tableResolve) + this.dataProcessedPromise = new Promise(this.dataResolve) await this.tableBuiltPromise - + // this.$refs.abgabeTable.tabulator.setColumns(this.abgabeTableOptions.columns) this.loadProjektarbeiten() @@ -338,7 +364,7 @@ export const AbgabetoolStudent = { dialogClass="modal-fullscreen"> \n\t\t\t\t
\n
\n\t\t\n `,\n watch:{\n\t\t'searchsettings.searchstr': function (newSearchValue) {\n\t\t\tif(this.searchoptions.origin){\n\t\t\t\tsessionStorage.setItem(`${this.searchoptions.origin}_searchstr`,newSearchValue);\n\t\t\t}\n\t\t},\n\t\t'searchsettings.types'(newValue) {\n\t\t\tif (Array.isArray(newValue) && newValue.length === 0) {\n\t\t\t\tthis.searchsettings.types = [...this.types];\n\t\t\t}\n\t\t\t// stores the search types in the localstorage, only if the newValue is also an array\n\t\t\tif (Array.isArray(newValue) && this.searchoptions.origin) {\n\t\t\t\tlocalStorage.setItem(`${this.searchoptions.origin}_searchtypes`, JSON.stringify(newValue));\n\t\t\t}\n\t\t\tthis.search();\n\t\t}\n },\n\tmounted(){\n\t\tthis.settingsDropdown = new bootstrap.Collapse(this.$refs.settings, {\n\t\t\ttoggle: false\n\t\t});\n\n\t\tif (!this.searchoptions.origin){\n\t\t\tconsole.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.\");\n\t\t}\n\t},\n\tupdated() {\n\t\tif(this.showresult) {\n\t\t\tVue.nextTick(() => {\n\t\t\t\tthis.calcSearchResultHeight();\n\t\t\t});\n\t\t}\n\t},\n\tmethods: {\n\t\tclearInput() {\n\t\t\tthis.searchsettings.searchstr = \"\";\n\t\t\tthis.hideresult();\n\t\t\tthis.$refs.input.focus();\n\t\t},\n\t\tgetInitiallySelectedTypes() {\n\t\t\tlet result = false;\n\t\t\tif (this.searchoptions.origin) {\n\t\t\t\tlet localStorageValue = localStorage.getItem(`${this.searchoptions.origin}_searchtypes`);\n\t\t\t\tif (localStorageValue) {\n\t\t\t\t\tresult = JSON.parse(localStorageValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result)\n\t\t\t\treturn result;\n\t\t\tif (!this.searchoptions.types)\n\t\t\t\treturn [];\n\t\t\tif (Array.isArray(this.searchoptions.types))\n\t\t\t\treturn [...this.searchoptions.types];\n\t\t\treturn Object.keys(this.searchoptions.types);\n\t\t},\n\t\tgetSearchStr: function(){\n\t\t\tif (!this.searchoptions.origin)\n\t\t\t\treturn '';\n\t\t\treturn sessionStorage.getItem(`${this.searchoptions.origin}_searchstr`) ?? '';\n\t\t},\n\t\tcheckSettingsVisibility: function(event) {\n\t\t\t// hides the settings collapsible if the user clicks somewhere else\n\t\t\tif (!this.$refs.settings.contains(event.target))\n\t\t\t{\n\t\t\t\tthis.settingsDropdown.hide();\n\t\t\t}\n\t\t},\n\t\thandleShowSettings: function() {\n\t\t\t// adds the event listener checkSettingsVisibility only when the collapsible is shown\n\t\t\tdocument.addEventListener(\"click\", this.checkSettingsVisibility);\n\t\t},\n\t\thandleHideSettings: function () {\n\t\t\t// removes the event listener checkSettingsVisibility when the collapsible is hidden\n\t\t\tdocument.removeEventListener(\"click\", this.checkSettingsVisibility);\n\t\t},\n\t\tcalcSearchResultHeight: function() {\n\t\t\tconst rect = this.$refs.results.getBoundingClientRect();\n\t\t\tif( rect.height > 0 && rect.height < (window.innerHeight * 0.8) ) {\n\t\t\t\tthis.$refs.result.style.height = Math.ceil(rect.height + 16) + 'px';\n\t\t\t} else {\n\t\t\t\tthis.$refs.result.style.height = Math.floor(window.innerHeight * 0.8) + 'px';\n\t\t\t}\n\t\t},\n calcSearchResultExtent: function() {\n\t\t\tif(!this.showresult) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(this.searchoptions?.calcheightonly === undefined \n\t\t\t\t|| this.searchoptions.calcheightonly === false) {\n\t\t\t\tvar rect = this.$refs.searchbox.getBoundingClientRect();\n\t\t\t\tthis.$refs.result.style.top = Math.floor(rect.bottom + 3) + 'px';\n\t\t\t\tthis.$refs.result.style.right = Math.floor(rect.right) + 'px';\n\t\t\t\tthis.$refs.result.style.width = Math.floor(rect.width) + 'px';\n\t\t\t}\n this.calcSearchResultHeight();\n },\n search: function() {\n if(this.searchoptions?.nolivesearch === true) return;\n\n this.abort();\n if( this.searchsettings.searchstr.length >= 2 ) {\n this.calcSearchResultExtent();\n this.searchtimer = setTimeout(\n this.callsearchapi,\n 500\n );\n } else { \n this.showresult = false;\n }\n },\n abort() {\n if (this.searchtimer !== null) {\n clearTimeout(this.searchtimer);\n }\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null;\n }\n this.searchresult = [];\n },\n callsearchapi: function() {\n this.error = null;\n this.searchresult.splice(0, this.searchresult.length);\n this.searching = true;\n this.showsearchresult();\n if(this.searchsettings.types.length === 0) {\n this.error = this.$p.t('search/error_missing_type');\n this.searching = false;\n return;\n }\n\n if (this.abortController)\n this.abortController.abort();\n this.abortController = new AbortController();\n\n this.searchfunction(this.searchsettings, { timeout: 50000, signal: this.abortController.signal })\n .then(response=>{\n if (!response.data) {\n this.error = this.$p.t('search/error_general');\n } else {\n let res = response.data.map(el => el.data ? {...el, ...JSON.parse(el.data)} : el);\n this.lastQuery = response.meta.searchstring;\n if (this.searchoptions.mergeResults) {\n let counter = 0;\n let mergeTypes = [];\n let mergedType = 'merged-';\n let mergeKey = '';\n\n switch (this.searchoptions.mergeResults) {\n case 'student':\n mergeTypes = ['student', 'prestudent'];\n mergedType += this.searchoptions.mergeResults;\n mergeKey = 'uid';\n break;\n case 'person':\n mergeTypes = ['person', 'employee', 'student', 'prestudent'];\n mergedType += this.searchoptions.mergeResults;\n mergeKey = 'person_id';\n break;\n }\n\n if (mergeTypes.length) {\n res = Object.values(res.reduce((a, c) => {\n if (!mergeTypes.includes(c.renderer)) {\n a['nomerge' + counter++] = c;\n } else if (c[mergeKey] === null) {\n a['nomerge' + counter++] = c;\n } else if (a[c[mergeKey]] === undefined) {\n a[c[mergeKey]] = {\n rank: c.rank,\n renderer: mergedType,\n type: mergedType,\n list: [c]\n };\n } else {\n a[c[mergeKey]].list.push(c);\n if (c.rank > a[c[mergeKey]].rank)\n a[c[mergeKey]].rank = c.rank;\n }\n return a;\n }, {})).sort((a, b) => b.rank - a.rank);\n }\n }\n this.searchresult = res;\n this.searchmode = response.meta.mode;\n }\n this.searching = false;\n this.retry = 0;\n })\n .catch(error=> {\n if (error.code == \"ERR_CANCELED\") {\n return this.retry = 0;\n }\n if (error.code == \"ECONNABORTED\" && this.retry) {\n this.retry--;\n return this.callsearchapi();\n }\n\n this.error = this.$p.t('search/error_general', error);\n this.searching = false;\n this.retry = 0;\n });\n },\n refreshsearch: function() {\n this.search();\n this.togglesettings();\n },\n hideresult: function() {\n this.showresult = false;\n window.removeEventListener('resize', this.calcSearchResultExtent);\n },\n showsearchresult: function() {\n if(this.searchoptions?.nolivesearch === true) return;\n\n if( this.searchsettings.searchstr.length >= 2 ) {\n this.showresult = true;\n window.addEventListener('resize', this.calcSearchResultExtent);\n\t\t\t\tthis.calcSearchResultExtent();\n }\n },\n searchfocusin: function(e) {\n e.preventDefault();\n e.stopPropagation();\n if( this.hidetimer !== null ) {\n clearTimeout(this.hidetimer);\n }\n\t\t\tif (this.searchsettings.searchstr.length >= 2\n\t\t\t\t&& this.searchresult.length === 0) {\n\t\t\t\tthis.search();\n\t\t\t}\n },\n searchfocusout: function(e) {\n e.preventDefault();\n e.stopPropagation();\n this.hidetimer = setTimeout(\n this.hideresult,\n 100\n );\n },\n dash2camelCase(string) {\n return string.replace(/-([a-z])/g, g => g[1].toUpperCase());\n },\n isValidRenderer(renderer) {\n const camelCaseRenderer = this.dash2camelCase(renderer);\n return Object.keys(this.$.components).includes(camelCaseRenderer);\n },\n\t\tgetActions(res) {\n\t\t\tlet actions = this.searchoptions.actions[this.dash2camelCase(res.renderer)];\n\t\t\tif (actions) {\n\t\t\t\treturn actions;\n\t\t\t}\n\t\t\treturn this.searchoptions.actions[res.type];\n\t\t}\n }\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\temits: [\n\t\t'changed'\n\t],\n\tprops: {\n\t\tactiveClass: {\n\t\t\ttype: String,\n\t\t\tdefault: 'active'\n\t\t},\n\t\titemClass: {\n\t\t\ttype: [String, Array, Object],\n\t\t\tdefault: ''\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlanguages: FHC_JS_DATA_STORAGE_OBJECT.server_languages\n\t\t};\n\t}, \n\tmethods:{\n\t\tonChange(lang) {\n\t\t\tif (this.languages.some(l => l.sprache === lang)) {\n\t\t\t\tthis.$p\n\t\t\t\t\t.setLanguage(lang)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tif (document.querySelector('[cis4Reload]'))\n\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.$emit('changed', lang);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: /*html*/`\n\t
\n\t\t\n\t\t\t{{ lang.bezeichnung }}\n\t\t\n\t
`\n};","export default {\n name: 'VerticalSplit',\n data: function() {\n return { \n availHeight: 0,\n topheight: 0,\n bottomheight: 0,\n mousePosY: 0, \n resize: false,\n vsplitter: null,\n vsplitterOffset: 0,\n selfOffsetTop: 0\n }; \n },\n template: `\n
\n
\n \n

Top Panel

\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n

\n \n

\n
\n `,\n mounted: function() {\n this.calcHeights();\n this.trackVerticalSplitterOffsetTop();\n window.addEventListener('resize', this.calcHeights);\n },\n updated: function() {\n this.trackVerticalSplitterOffsetTop();\n },\n methods: {\n calcHeights: function() {\n var windowheight = window.innerHeight;\n var oldavailHeight = this.availHeight;\n this.selfOffsetTop = this.$refs.verticalsplit.offsetTop;\n this.availHeight = windowheight - this.selfOffsetTop - this.$refs.vsplitter.offsetHeight;\n if( (this.topheight === 0 && this.bottomheight === 0) || oldavailHeight === 0 ) {\n this.topheight = Math.floor(this.availHeight/2);\n } else {\n this.topheight = Math.floor( ((((this.topheight * 100) / oldavailHeight) / 100) * this.availHeight) );\n }\n this.bottomheight = this.availHeight - this.topheight;\n },\n collapseTop: function() {\n this.calcHeights();\n this.topheight = 0;\n this.bottomheight = this.availHeight;\n },\n collapseBottom: function() {\n this.calcHeights();\n this.topheight = this.availHeight;\n this.bottomheight = 0;\n },\n showBoth: function() {\n this.topheight = Math.floor(this.availHeight/2);\n this.bottomheight = Math.floor(this.availHeight/2);\n },\n isCollapsed: function() {\n if( this.topheight === 0 ) {\n return 'top';\n } else if ( this.bottomheight === 0 ) {\n return 'bottom';\n } else {\n return false;\n }\n },\n dragStart: function(e) {\n e.preventDefault();\n e.stopPropagation();\n window.addEventListener('mouseup', this.dragEnd);\n window.addEventListener('mousemove', this.drag);\n this.resize = true;\n this.mousePosY = e.clientY;\n },\n drag: function(e) {\n if( !this.resize ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n var offsetY = e.clientY - this.mousePosY;\n this.topheight = this.topheight + offsetY;\n if( this.topheight < 0 ) {\n this.topheight = 0;\n }\n if( this.topheight > this.availHeight ) {\n this.topheight = this.availHeight;\n }\n this.bottomheight = this.availHeight - this.topheight;\n this.mousePosY = e.clientY;\n },\n dragEnd: function(e) {\n e.preventDefault();\n e.stopPropagation();\n window.removeEventListener('mousemove', this.drag);\n window.removeEventListener('mouseup', this.dragEnd);\n this.resize = false;\n this.mousePosY = e.clientY;\n },\n trackVerticalSplitterOffsetTop: function() {\n this.vsplitterOffset = this.$refs.vsplitter.offsetTop;\n }\n },\n computed: {\n topOrBottomClass: function() {\n return ((this.vsplitterOffset - this.selfOffsetTop) <= Math.floor(this.availHeight/2))\n ? 'top'\n : 'bottom';\n },\n topheightcss: function() {\n return this.topheight + 'px';\n },\n bottomheightcss: function() {\n return this.bottomheight + 'px';\n }\n }\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/navigation/header',\n\t\t\tparams: { navigation_page }\n\t\t};\n\t},\n\tgetMenu(navigation_page) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/navigation/menu',\n\t\t\tparams: { navigation_page }\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport ApiNavigation from '../api/factory/navigation.js';\n\nexport default {\n\tname: 'AppMenu',\n\tprops: {\n\t\tappIdentifier: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\tnavigationPage: {\n\t\t\ttype: String,\n\t\t\tdefault: 'apps'\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\titems: []\n\t\t};\n\t},\n\twatch: {\n\t\tnavigationPage() {\n\t\t\tthis.getItems();\n\t\t}\n\t},\n\tmethods: {\n\t\tgetItems() {\n\t\t\tthis.$api\n\t\t\t\t.call(ApiNavigation.getMenu(this.navigationPage))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.items = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.getItems();\n\t},\n\ttemplate: /* html */`\n\t
    \n\t\t
  • \n\t\t\t\n\t\t\t\t\n\t\t\t\t{{ menu.description }}\n\t\t\t\n\t\t
  • \n\t\t\n\t
`\n};\n","//import Phrasen from '../../plugin/Phrasen.js';\n\nexport default {\n\tname: 'BootstrapModal',\n\tdata: () => ({\n\t\tmodal: null,\n\t\tfullscreen: false\n\t}),\n\tprops: {\n\t\tbackdrop: {\n\t\t\ttype: [Boolean,String],\n\t\t\tdefault: true,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['static', true, false].includes(value);\n\t\t\t}\n\t\t},\n\t\tfocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tkeyboard: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tnoCloseBtn: Boolean,\n\t\tdialogClass: [String,Array,Object],\n\t\theaderClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tbodyClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'px-4 py-5'\n\t\t},\n\t\tfooterClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tallowFullscreenExpand: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\temits: [\n\t\t\"hideBsModal\",\n\t\t\"hiddenBsModal\",\n\t\t\"hidePreventedBsModal\",\n\t\t\"showBsModal\",\n\t\t\"shownBsModal\"\n\t],\n\tmethods: {\n\t\tdispose() {\n\t\t\treturn this.modal.dispose();\n\t\t},\n\t\thandleUpdate() {\n\t\t\treturn this.modal.handleUpdate();\n\t\t},\n\t\thide() {\n\t\t\treturn this.modal.hide();\n\t\t},\n\t\tshow(relatedTarget) {\n\t\t\treturn this.modal.show(relatedTarget);\n\t\t},\n\t\ttoggle() {\n\t\t\treturn this.modal.toggle();\n\t\t},\n\t\ttoggleFullscreen() {\n\t\t\tthis.fullscreen = !this.fullscreen\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$refs.modal)\n\t\t\tthis.modal = new bootstrap.Modal(this.$refs.modal, {\n\t\t\t\tbackdrop: this.backdrop,\n\t\t\t\tfocus: this.focus,\n\t\t\t\tkeyboard: this.keyboard\n\t\t\t});\n\t},\n\tpopup(body, options, title, footer) {\n\t\tconst BsModal = this,\n\t\t\tslots = {};\n\t\tif (body !== undefined)\n\t\t\tslots.default = () => body;\n\t\tif (title !== undefined)\n\t\t\tslots.title = () => title;\n\t\tif (footer !== undefined)\n\t\t\tslots.footer = () => footer;\n\n\t\t// little hack to check whether primevue is included in the app or not\n\t\tlet includedPrimevue = false;\n\t\tif(typeof primevue !== 'undefined'){\n\t\t\tincludedPrimevue = true;\n\t\t}\n\n\t\treturn new Promise((resolve,reject) => {\n\t\t\tconst instance = Vue.createApp({\n\t\t\t\tname: 'ModalTmpApp',\n\t\t\t\tsetup() {\n\t\t\t\t\treturn () => Vue.h(BsModal, {...{\n\t\t\t\t\t\tclass: 'fade'\n\t\t\t\t\t},...options, ...{\n\t\t\t\t\t\tref: 'modal',\n\t\t\t\t\t\t'onHidden.bs.modal': instance.unmount\n\t\t\t\t\t}}, slots);\n\t\t\t\t},\n\t\t\t\tmounted() {\n\t\t\t\t\tthis.$refs.modal.show();\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tbeforeUnmount() {\n\t\t\t\t\tif (this.$refs.modal)\n\t\t\t\t\t\tthis.$refs.modal.result !== false ? resolve(this.$refs.modal.result) : reject();\n\t\t\t\t},\n\t\t\t\tunmounted() {\n\t\t\t\t\twrapper.parentElement.removeChild(wrapper);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst wrapper = document.createElement(\"div\");\n\t\t\t\n\t\t\t// if(primevue) --> won't work because primevue is not defined in this scope and promise would be rejected\n\t\t\tif (includedPrimevue){\n\t\t\t\tinstance.use(primevue.config.default, {zIndex: {overlay: 9999}})\n\t\t\t}\n\t\t\t\t \n\t\t\t//instance.use(Phrasen); // TODO(chris): find a more dynamic way\n\t\t\timport('../../plugins/Phrasen.js').then((Phrasen) => {\n\t\t\t\tinstance.use(Phrasen.default);\n\t\t\t\tinstance.mount(wrapper);\n\t\t\t\tdocument.body.appendChild(wrapper);\n\t\t\t});\n\t\t});\n\t},\n\ttemplate: `
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
`\n}\n","export default {\n\trender() {\n\t\treturn (this.$slots && this.$slots.default) ? this.$slots.default() : null;\n\t}\n};","import FhcFragment from \"../Fragment.js\";\n\nexport default {\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tprovide() {\n\t\treturn {\n\t\t\t$registerToForm: component => {\n\t\t\t\tif (this.inputs.indexOf(component) < 0)\n\t\t\t\t\tthis.inputs.push(component);\n\t\t\t},\n\t\t\t$clearValidationForName: this.clearValidationForName\n\t\t};\n\t},\n\tprops: {\n\t\ttag: {\n\t\t\ttype: String,\n\t\t\tdefault: 'form'\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tinputs: []\n\t\t}\n\t},\n\tcomputed: {\n\t\tsortedInputs() {\n\t\t\treturn this.inputs.reduce((a,c) => {\n\t\t\t\tlet name = c.name || '_default';\n\t\t\t\tif (!a[name])\n\t\t\t\t\ta[name] = [];\n\t\t\t\ta[name].push(c);\n\n\t\t\t\tif (c.lcType == 'checkbox' && name.substr(-1) == ']' && name.indexOf('[')) {\n\t\t\t\t\tname = name.substr(0, name.lastIndexOf('['));\n\t\t\t\t\tif (!a[name])\n\t\t\t\t\t\ta[name] = [];\n\t\t\t\t\ta[name].push(c);\n\t\t\t\t}\n\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t},\n\t\t/* Deprecated Code start */\n\t\tfactory() {\n\t\t\tconsole.warn('
.factory is deprecated! Use .call() instead.');\n\t\t\tconst factory = Object.create(Object.getPrototypeOf(this.$fhcApi.factory), Object.getOwnPropertyDescriptors(this.$fhcApi.factory));\n\t\t\tfactory.$fhcApi = {\n\t\t\t\tget: this.get,\n\t\t\t\tpost: this.post,\n\t\t\t\t_defaultErrorHandlers: this.$fhcApi._defaultErrorHandlers\n\t\t\t};\n\t\t\treturn factory;\n\t\t}\n\t\t/* Deprecated Code end */\n\t},\n\tmethods: {\n\t\tget(...args) {\n\t\t\tif (typeof args[0] == 'object' && args[0].clearValidation && args[0].setFeedback)\n\t\t\t\targs[0] = this;\n\t\t\telse\n\t\t\t\targs.unshift(this);\n\t\t\t\n\t\t\t/* Deprecated Code start */\n\t\t\tif (!this.$api)\n\t\t\t\treturn this.$fhcApi.get(...args);\n\t\t\t/* Deprecated Code end */\n\t\t\t\n\t\t\treturn this.$api.get(...args);\n\t\t},\n\t\tpost(...args) {\n\t\t\tif (typeof args[0] == 'object' && args[0].clearValidation && args[0].setFeedback)\n\t\t\t\targs[0] = this;\n\t\t\telse\n\t\t\t\targs.unshift(this);\n\t\t\t\n\t\t\t/* Deprecated Code start */\n\t\t\tif (!this.$api)\n\t\t\t\treturn this.$fhcApi.post(...args);\n\t\t\t/* Deprecated Code end */\n\t\t\t\n\t\t\treturn this.$api.post(...args);\n\t\t},\n\t\tcall(factory, overwriteconfig) {\n\t\t\treturn this.$api.call(factory, overwriteconfig, this);\n\t\t},\n\t\t_sendFeedbackToInput(inputs, feedback, valid) {\n\t\t\tif (inputs.length) {\n\t\t\t\tinputs.forEach(input => input.setFeedback(valid, feedback));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.$fhcAlert) {\n\t\t\t\tthis.$fhcAlert[valid ? 'alertSuccess' : 'alertError'](feedback);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (Array.isArray(feedback)) {\n\t\t\t\tlet remaining = feedback.filter(fb => \n\t\t\t\t\tthis._sendFeedbackToInput(\n\t\t\t\t\t\tthis.sortedInputs['_default'] || [],\n\t\t\t\t\t\tfb,\n\t\t\t\t\t\tvalid\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn remaining.length ? remaining : null;\n\t\t\t}\n\t\t\tif (typeof feedback === 'object') {\n\t\t\t\tlet remaining = Object.entries(feedback).filter(([name, fb]) => \n\t\t\t\t\tthis._sendFeedbackToInput(\n\t\t\t\t\t\tthis.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join(\"\")] || this.sortedInputs['_default'] || [],\n\t\t\t\t\t\tfb,\n\t\t\t\t\t\tvalid\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn remaining.length ? Object.fromEntries(remaining) : null;\n\t\t\t}\n\n\t\t\tlet remaining = this._sendFeedbackToInput(\n\t\t\t\tthis.sortedInputs['_default'] || [],\n\t\t\t\tfeedback,\n\t\t\t\tvalid\n\t\t\t);\n\t\t\treturn remaining ? feedback : null;\n\t\t},\n\t\tclearValidation() {\n\t\t\tthis.inputs.forEach(input => input.clearValidation());\n\t\t},\n\t\tsend(promise) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tpromise.then(result => {\n\t\t\t\t\tif (result?.status == 200 && result.data) {\n\t\t\t\t\t\tif (typeof result.data !== 'object' || !result.data.hasOwnProperty('retval'))\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tif (result.data.error)\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tconst data = result.data.retval;\n\t\t\t\t\t\t// TODO(chris): check for something better/add new standardized return value\n\t\t\t\t\t\tif (result.data.code == 1)\n\t\t\t\t\t\t\tthis.setFeedback(true, data);\n\t\t\t\t\t\treturn resolve(data);\n\t\t\t\t\t}\n\t\t\t\t\t// TODO(chris): IMPLEMENT! Wrong result object\n\t\t\t\t\treject(result);\n\t\t\t\t}).catch(result => {\n\t\t\t\t\tif (result?.response?.status == 400 && result.response.data) {\n\t\t\t\t\t\tif (typeof result.response.data !== 'object' || !result.response.data.hasOwnProperty('retval'))\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tthis.clearValidation();\n\t\t\t\t\t\tconst remaining = this.setFeedback(\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tresult.response.data.retval\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (remaining) {\n\t\t\t\t\t\t\tresult.response.data.retval = remaining;\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (result?.response?.status == 500) {\n\t\t\t\t\t\tif (this.$fhcAlert)\n\t\t\t\t\t\t\tthis.$fhcAlert.handleSystemError(result);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tclearValidationForName(name) {\n\t\t\t(this.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join(\"\")] || this.sortedInputs['_default'] || [])\n\t\t\t\t.forEach(input => input.clearValidation());\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t\n\t`\n}\n","import FhcFragment from \"../Fragment.js\";\n\nlet _uuid = {};\n\nexport default {\n\tname: \"FormInput\",\n\tinheritAttrs: false,\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tinject: {\n\t\tregisterToForm: {\n\t\t\tfrom: '$registerToForm',\n\t\t\tdefault: null\n\t\t},\n\t\tclearValidationForName: {\n\t\t\tfrom: '$clearValidationForName',\n\t\t\tdefault: null\n\t\t}\n\t},\n\tprops: {\n\t\tbsFeedback: Boolean,\n\t\tnoAutoClass: Boolean,\n\t\tnoFeedback: Boolean,\n\t\tinputGroup: Boolean,\n\t\ttype: String,\n\t\tname: String,\n\t\tcontainerClass: [String, Array, Object],\n\t\tlabel: String,\n\t\t// NOTE(chris): remove these from $attrs array to prevent doubled event listeners\n\t\tonInput: [Array, Function],\n\t\t'onUpdate:modelValue': [Array, Function]\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tvalid: undefined,\n\t\t\tfeedback: [],\n\t\t\tmodelValueDummy: undefined\n\t\t}\n\t},\n\tcomputed: {\n\t\thasContainer() {\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn true;\n\t\t\tif (this.containerClass)\n\t\t\t\treturn true;\n\t\t\tfor (const prop in this.autoContainerClass)\n\t\t\t\tif (Object.hasOwn(this.autoContainerClass, prop))\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t},\n\t\tacc() {\n\t\t\tif (!this.containerClass)\n\t\t\t\treturn {};\n\t\t\tif (typeof this.containerClass === 'string' || this.containerClass instanceof String)\n\t\t\t\treturn this.containerClass.split(' ').reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\tif (Array.isArray(this.containerClass))\n\t\t\t\treturn this.containerClass.reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\treturn this.containerClass;\n\t\t},\n\t\tautoContainerClass() {\n\t\t\tif (this.noAutoClass)\n\t\t\t\treturn this.acc;\n\t\t\t\n\t\t\tconst acc = {...this.acc};\n\t\t\t\n\t\t\tif (this.inputGroup)\n\t\t\t\tacc['input-group-item'] = true;\n\n\t\t\tif (this.lcType == 'radio' || this.lcType == 'checkbox')\n\t\t\t\tacc['form-check'] = true;\n\t\t\t\n\t\t\tif (this.inputGroup && acc['form-check']) {\n\t\t\t\tacc['input-group-item'] = false;\n\t\t\t\tacc['form-check'] = false;\n\t\t\t\tacc['input-group-text'] = true;\n\t\t\t}\n\t\t\treturn acc;\n\t\t},\n\t\tlcType() {\n\t\t\tif (!this.type)\n\t\t\t\treturn 'text';\n\t\t\treturn this.type.toLowerCase();\n\t\t},\n\t\ttag() {\n\t\t\tswitch (this.lcType) {\n\t\t\t\tcase 'textarea':\n\t\t\t\tcase 'select':\n\t\t\t\t\treturn this.lcType;\n\t\t\t\tcase 'datepicker':\n\t\t\t\t\treturn 'VueDatePicker';\n\t\t\t\tcase 'autocomplete':\n\t\t\t\t\treturn 'PvAutocomplete';\n\t\t\t\tcase 'uploadimage':\n\t\t\t\t\treturn 'UploadImage';\n\t\t\t\tcase 'uploadfile':\n\t\t\t\tcase 'uploaddms':\n\t\t\t\t\treturn 'UploadDms';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'input';\n\t\t\t}\n\t\t},\n\t\tvalidationClass() {\n\t\t\tconst classes = [];\n\t\t\tif (this.valid)\n\t\t\t\tclasses.push('is-valid');\n\t\t\telse if (this.valid === false)\n\t\t\t\tclasses.push('is-invalid');\n\t\t\t\n\t\t\tif (!this.noAutoClass) {\n\t\t\t\tlet c = this.$attrs.class ? this.$attrs.class.split(' ') : [];\n\t\t\t\tswitch (this.lcType) {\n\t\t\t\t\t// TODO(chris): complete list!\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tif (!c.includes('form-select'))\n\t\t\t\t\t\t\tclasses.push('form-select');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'range':\n\t\t\t\t\t\tif (!c.includes('form-range'))\n\t\t\t\t\t\t\tclasses.push('form-range');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\tcase 'checkbox':\n\t\t\t\t\t\t// TODO(chris): maybe different handling?\n\t\t\t\t\t\tif (!c.includes('form-check-input') && !c.includes('btn-check'))\n\t\t\t\t\t\t\tclasses.push('form-check-input');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tif (!c.includes('form-control-color'))\n\t\t\t\t\t\t\tclasses.push('form-control-color');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'autocomplete':\n\t\t\t\t\tcase 'datepicker':\n\t\t\t\t\t\tclasses.push('p-0');\n\t\t\t\t\t\tclasses.push('border-0');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'text':\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'password':\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\tfeedbackClass() {\n\t\t\tif (!this.feedback || this.feedback === true)\n\t\t\t\treturn '';\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn {\n\t\t\t\t\t'valid-tooltip': this.valid === true,\n\t\t\t\t\t'invalid-tooltip': this.valid === false\n\t\t\t\t};\n\t\t\treturn {\n\t\t\t\t'valid-feedback': this.valid === true,\n\t\t\t\t'invalid-feedback': this.valid === false\n\t\t\t};\n\t\t},\n\t\tmodelValueCmp: {\n\t\t\tget() {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\treturn this.modelValueDummy;\n\t\t\t\treturn this.$attrs.modelValue;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\tthis.modelValueDummy = v;\n\t\t\t\tthis.$emit('update:modelValue', v);\n\t\t\t}\n\t\t},\n\t\tidCmp() {\n\t\t\tlet uuid = this.$attrs.id;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = this.$attrs.uid;\n\t\t\tif (!uuid && this.label)\n\t\t\t\tuuid = 'fhc-form-input';\n\t\t\tif (!uuid)\n\t\t\t\treturn undefined;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = 'dp-input-' + uuid;\n\t\t\tif (_uuid[uuid] === undefined)\n\t\t\t\t_uuid[uuid] = 0;\n\t\t\treturn uuid + '-' + (_uuid[uuid]++);\n\t\t}\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.valid = undefined;\n\t\t\tthis.feedback = [];\n\t\t},\n\t\tclearValidationForThisName() {\n\t\t\tif (this.valid === undefined)\n\t\t\t\treturn;\n\t\t\tif (this.clearValidationForName && this.name)\n\t\t\t\tthis.clearValidationForName(this.name);\n\t\t\telse\n\t\t\t\tthis.clearValidation();\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tthis.valid = valid;\n\t\t\t// NOTE(chris): On a list of radios/checkboxes only add the feedback message to the last item\n\t\t\tif (this.name && (this.lcType == 'radio' || this.lcType == 'checkbox')) {\n\t\t\t\tconst selector = 'input[type=\"' + this.lcType + '\"][name=\"' + this.name + '\"]';\n\t\t\t\tif ([...this.$el.parentNode.querySelectorAll(selector)].pop() != this.$refs.input)\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.feedback = feedback;\n\t\t},\n\t\t_loadComponents() {\n\t\t\tif (this.tag == 'VueDatePicker' && !this._.components.VueDatePicker) {\n\t\t\t\tthis._.components.VueDatePicker = Vue.defineAsyncComponent(() => import(\"../vueDatepicker.js.php\"));\n\t\t\t} else if (this.tag == 'PvAutocomplete' && !this._.components.PvAutocomplete) {\n\t\t\t\tthis._.components.PvAutocomplete = primevue.autocomplete;\n\t\t\t} else if (this.tag == 'UploadImage' && !this._.components.UploadImage) {\n\t\t\t\tthis._.components.UploadImage = Vue.defineAsyncComponent(() => import(\"./Upload/Image.js\"));\n\t\t\t} else if (this.tag == 'UploadDms' && !this._.components.UploadDms) {\n\t\t\t\tthis._.components.UploadDms = Vue.defineAsyncComponent(() => import(\"./Upload/Dms.js\"));\n\t\t\t}\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis._loadComponents();\n\t},\n\tbeforeUpdate() {\n\t\tthis._loadComponents();\n\t},\n\tmounted() {\n\t\tif (this.registerToForm)\n\t\t\tthis.registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class-name'] ? $attrs['input-class-name'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class'] ? $attrs['input-class'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport BsModal from \"./Bootstrap/Modal.js\";\nimport FhcForm from \"./Form/Form.js\";\nimport FormInput from \"./Form/Input.js\";\n\n\nexport default {\n\tname: 'AppConfig',\n\tcomponents: {\n\t\tBsModal,\n\t\tFhcForm,\n\t\tFormInput\n\t},\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tendpoints: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsetup: {},\n\t\t\ttempValues: {}\n\t\t};\n\t},\n\twatch: {\n\t\t'$p.user_language.value'(n, o) {\n\t\t\tif (n !== o && o !== undefined && Object.keys(this.setup).length) {\n\t\t\t\tthis.$api\n\t\t\t\t\t.call(this.endpoints.get())\n\t\t\t\t\t.then(res => {\n\t\t\t\t\t\tthis.setup = {};\n\t\t\t\t\t\tObject.keys(res.data).forEach(key => {\n\t\t\t\t\t\t\tconst binding = { ...res.data[key] };\n\t\t\t\t\t\t\tdelete binding.value;\n\t\t\t\t\t\t\tdelete binding.options;\n\t\t\t\t\t\t\tconst options = res.data[key].options;\n\t\t\t\t\t\t\tthis.setup[key] = {\n\t\t\t\t\t\t\t\tbinding,\n\t\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch(this.$fhcAlert.handleSystemErrors);\n\t\t\t}\n\t\t}\n\n\t},\n\tmethods: {\n\t\tupdate() {\n\t\t\tthis.$refs.form\n\t\t\t\t.call(this.endpoints.set(this.tempValues))\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.$emit('update:modelValue', { ...this.tempValues });\n\t\t\t\t\tthis.$refs.modal.hide();\n\t\t\t\t\tthis.$fhcAlert.alertSuccess(this.$p.t('ui/settings_saved'));\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemErrors);\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.$api\n\t\t\t.call(this.endpoints.get())\n\t\t\t.then(res => {\n\t\t\t\tObject.keys(res.data).forEach(key => {\n\t\t\t\t\tconst binding = { ...res.data[key] };\n\t\t\t\t\tdelete binding.value;\n\t\t\t\t\tdelete binding.options;\n\t\t\t\t\tconst options = res.data[key].options;\n\t\t\t\t\tthis.tempValues[key] = res.data[key].value;\n\t\t\t\t\tthis.setup[key] = {\n\t\t\t\t\t\tbinding,\n\t\t\t\t\t\toptions\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tthis.$emit('update:modelValue', { ...this.tempValues });\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemErrors);\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t`\n};\n","/**\n * TODO(chris): This is only a prototype!!!\n */\n\nconst TYPE_DEFINITION = {\n\tlehreinheit: {\n\t\tid: \"lehreinheit_id\",\n\t\tdragIcon: \"fa-solid fa-chalkboard-user\",\n\t\textras: [\n\t\t\t\"stundenblockung\"\n\t\t]\n\t},\n\tvevent: {\n\t\tid: \"uid\",\n\t\tdragIcon: \"fa-solid fa-calendar\",\n\t\textras: [\n\t\t\t\"dtstart\",\n\t\t\t\"dtend\",\n\t\t\t\"summary\"\n\t\t]\n\t},\n\tperson: {\n\t\tid: \"person_id\",\n\t\tdragIcon: \"fa-solid fa-user\"\n\t},\n\tstudent: {\n\t\tid: \"student_uid\",\n\t\tdragIcon: \"fa-solid fa-user-graduate\"\n\t},\n\tprestudent: {\n\t\tid: \"prestudent_id\",\n\t\tdragIcon: \"fa-solid fa-user-graduate text-muted\"\n\t}\n\t// TODO: IMPLEMENT OTHER TYPES\n};\n\nconst VALID_TYPES = Object.keys(TYPE_DEFINITION);\n\nconst TYPE_CONSTANTS = Object.keys(TYPE_DEFINITION).reduce((res, type) => {\n\tres['TYPE_' + type.toUpperCase()] = type;\n\treturn res;\n}, {});\n\nfunction isValidDragObject(value) {\n\tif (!value)\n\t\treturn false;\n\tif (Array.isArray(value))\n\t\treturn value.every(isValidDragObject);\n\tif (!value.type)\n\t\treturn false;\n\n\tif (value.type.substr(-11) == '-collection') {\n\t\tif (!Object.prototype.hasOwnProperty.call(value, 'values'))\n\t\t\treturn false;\n\n\t\tif (!VALID_TYPES.includes(value.type.substr(0, value.type.length-11)))\n\t\t\treturn false;\n\t} else {\n\t\tif (!Object.prototype.hasOwnProperty.call(value, 'id'))\n\t\t\treturn false;\n\n\t\tif (!VALID_TYPES.includes(value.type))\n\t\t\treturn false;\n\n\t\tif (TYPE_DEFINITION[value.type].extras) {\n\t\t\tif (!TYPE_DEFINITION[value.type].extras.every(extra => Object.prototype.hasOwnProperty.call(value, extra)))\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction getValidTransferData(event, allowedTypes, strict) {\n\tlet obj = null;\n\n\ttry {\n\t\tobj = getTransferData(event, strict);\n\t\tif (!obj)\n\t\t\treturn null;\n\n\t\tif (!strict && Array.isArray(obj)) {\n\t\t\tobj = obj.filter(isValidDragObject);\n\t\t\tif (!obj.length)\n\t\t\t\treturn null;\n\t\t} else if (!isValidDragObject(obj))\n\t\t\treturn null;\n\n\t\tif (allowedTypes && allowedTypes.length) {\n\t\t\tif (Array.isArray(obj)) {\n\t\t\t\tif (strict && !obj.every(v => allowedTypes.includes(v.type))) {\n\t\t\t\t\treturn null;\n\t\t\t\t} else if (!strict) {\n\t\t\t\t\tobj = obj.filter(v => allowedTypes.includes(v.type));\n\t\t\t\t\tif (!obj.length)\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else if (!allowedTypes.includes(obj.type)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t} catch(_error) {\n\t\treturn null;\n\t}\n\n\tif (Array.isArray(obj) && obj.length == 1)\n\t\treturn obj.find(Boolean);\n\n\treturn obj;\n}\n\nfunction isValidTransferData(event, allowedTypes, strict) {\n\treturn getValidTransferData(event, allowedTypes, strict) ? true : false;\n}\n\nfunction getTransferData(event, strict) {\n\tconst result = [];\n\n\tfor (const type of event.dataTransfer.types) {\n\t\tif (type.substr(0, 16) != 'application/fhc-') {\n\t\t\tif (strict)\n\t\t\t\treturn null;\n\t\t\tcontinue;\n\t\t}\n\t\tlet base_type = type.substr(16);\n\t\tlet collection = false;\n\t\tif (base_type.substr(-11) == '-collection') {\n\t\t\tbase_type = base_type.substr(0, base_type.length-11);\n\t\t\tcollection = true;\n\t\t}\n\t\tif (!VALID_TYPES.includes(base_type)) {\n\t\t\tif (strict)\n\t\t\t\treturn null;\n\t\t\tcontinue;\n\t\t}\n\t\tlet data = JSON.parse(event.dataTransfer.getData(type));\n\t\tif (collection)\n\t\t\tresult.push(...data.values);\n\t\telse\n\t\t\tresult.push(data);\n\t}\n\n\tif (!result.length)\n\t\treturn null;\n\n\tif (result.length == 1)\n\t\treturn result[0];\n\n\treturn result;\n}\n\nfunction convertToValidDragObject(data, strict) {\n\tif (Array.isArray(data)) {\n\t\tconst converted = data.map(convertToValidDragObject).filter(Boolean);\n\t\tif (!converted.length)\n\t\t\treturn undefined;\n\t\tif (strict && converted.length != data.length)\n\t\t\treturn undefined;\n\n\t\tconst sorted = converted.reduce((res, item) => {\n\t\t\tif (!res[item.type])\n\t\t\t\tres[item.type] = [];\n\t\t\tres[item.type].push(item);\n\t\t\treturn res;\n\t\t}, {});\n\n\t\treturn Object.entries(sorted).map(([type, values]) => {\n\t\t\tif (values.length > 1) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: type + '-collection',\n\t\t\t\t\tvalues\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn values[0];\n\t\t});\n\t}\n\n\tif (Object.prototype.hasOwnProperty.call(data, 'type') && isValidDragObject(data)) {\n\t\treturn data;\n\t}\n\n\tconst found = Object.entries(TYPE_DEFINITION).find(([ , typedef ]) => {\n\t\tif (!Object.prototype.hasOwnProperty.call(data, typedef.id))\n\t\t\treturn false;\n\t\tif (typedef.extras) {\n\t\t\tif (!typedef.extras.every(extra => Object.prototype.hasOwnProperty.call(data, extra)))\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\tif (!found) {\n\t\treturn undefined;\n\t}\n\n\tconst [ type, typedef ] = found;\n\n\tconst newData = {};\n\tnewData.type = type;\n\tnewData.id = data[typedef.id];\n\tif (typedef.extras)\n\t\ttypedef.extras.forEach(extra => newData[extra] = data[extra]);\n\n\treturn newData;\n}\n\nfunction setTransferData(event, validDragObject, setDragImage = false) {\n\tif (setDragImage) {\n\t\tconst dragItems = Array.isArray(validDragObject) ? validDragObject : [ validDragObject ];\n\t\tconst dragElements = dragItems.map(item => {\n\t\t\tconst icon = document.createElement('i');\n\t\t\tconst label = document.createElement('span');\n\t\t\tconst iconContainer = document.createElement('span');\n\n\t\t\ticonContainer.className = 'btn btn-outline-dark bg-light';\n\t\t\tlabel.className = 'small';\n\n\t\t\tif (TYPE_DEFINITION[item.type]) {\n\t\t\t\ticon.className = TYPE_DEFINITION[item.type].dragIcon || 'fa-solid fa-question';\n\t\t\t\tlabel.textContent = item.id;\n\t\t\t} else if (item.type.substr(-11) == '-collection' && TYPE_DEFINITION[item.type.substr(0, item.type.length-11)]) {\n\t\t\t\ticonContainer.style.boxShadow = '3px 3px var(--bs-btn-border-color)';\n\t\t\t\ticon.className = TYPE_DEFINITION[item.type.substr(0, item.type.length-11)].dragIcon || 'fa-solid fa-question';\n\t\t\t\tlabel.textContent = 'x' + item.values.length;\n\t\t\t} else {\n\t\t\t\ticon.className = 'fa-solid fa-question';\n\t\t\t\tlabel.textContent = item.id || '';\n\t\t\t}\n\t\t\t\n\t\t\ticonContainer.append(icon);\n\n\t\t\tconst itemContainer = document.createElement('div');\n\t\t\titemContainer.className = 'd-flex flex-column align-items-center gap-2 small';\n\t\t\titemContainer.append(iconContainer, label);\n\t\t\treturn itemContainer;\n\t\t});\n\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'd-flex flex-row gap-2 small';\n\t\tcontainer.append(...dragElements);\n\n\t\tdocument.body.append(container);\n\t\tevent.dataTransfer.setDragImage(container, -25, 0);\n\t\trequestAnimationFrame(() => {\n\t\t\tdocument.body.removeChild(container);\n\t\t});\n\t}\n\tif (Array.isArray(validDragObject)) {\n\t\treturn validDragObject.forEach(data => setTransferData(event, data));\n\t}\n\t\n\tevent.dataTransfer.setData('application/fhc-' + validDragObject.type, JSON.stringify(validDragObject));\n}\n\n/**\n * check if the dataTransfer types are in the allowed types array\n * if strict is disabled at least one type must be the allowed array\n * otherwise all types have to be in the allowed array\n *\n * @param Event\t\tevent\n * @param Array\t\tallowedTypes\n * @param Boolean\tstrict\n */\nfunction eventHasTypes(event, allowedTypes, strict) {\n\tif (!allowedTypes || !allowedTypes.length)\n\t\tallowedTypes = VALID_TYPES;\n\tallowedTypes = allowedTypes.map(type => 'application/fhc-' + type);\n\n\tconst dataTypes = [...event.dataTransfer.types];\n\t\n\t// NOTE(chris): if dragging across browsers the dataTransfer object is\n\t// set to a default one without data. Since we do not support dragging\n\t// across browsers (yet) we return false which will disallow dropping.\n\tif (!dataTypes.length)\n\t\treturn false;\n\t\n\tif (!strict)\n\t\treturn allowedTypes.some(type => [...event.dataTransfer.types].includes(type));\n\t\n\treturn [...event.dataTransfer.types].every(type => allowedTypes.includes(type));\n}\n\nfunction bindDragEnterLeave(el, onEnter, onLeave) {\n\t// NOTE(chris): add save dragenter and dragleave events\n\t// that won't fire when hovering over child elements\n\n\tlet skipLeave = false;\n\tlet skipLeaveParent = true;\n\n\tfunction init(evt) {\n\t\tskipLeave = false;\n\t\tskipLeaveParent = true;\n\t\t// add global listeners\n\t\twindow.addEventListener('dragenter', globalDragenter, true);\n\t\twindow.addEventListener('dragleave', globalDragleave, true);\n\t\twindow.addEventListener('drop', globalDrop, true);\n\t\t// call enter\n\t\tonEnter(evt);\n\t\t// remove self\n\t\tel.removeEventListener('dragenter', init);\n\t}\n\n\tfunction cleanup(evt, wasDropped) {\n\t\t// remove global listeners\n\t\twindow.removeEventListener('dragenter', globalDragenter, true);\n\t\twindow.removeEventListener('dragleave', globalDragleave, true);\n\t\twindow.removeEventListener('drop', globalDrop, true);\n\t\t// call leave\n\t\tonLeave(evt, wasDropped);\n\t\t// add init\n\t\tel.addEventListener('dragenter', init);\n\t}\n\n\tfunction globalDragenter(evt) {\n\t\tskipLeaveParent = false;\n\t\tif (el != evt.target && !el.contains(evt.target)) {\n\t\t\tcleanup(evt);\n\t\t} else {\n\t\t\tskipLeave = true;\n\t\t}\n\t}\n\tfunction globalDragleave(evt) {\n\t\tif (el != evt.target && !el.contains(evt.target)) {\n\t\t\tif (skipLeaveParent) {\n\t\t\t\tskipLeaveParent = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tif (skipLeave) {\n\t\t\t\tskipLeave = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tcleanup(evt);\n\t}\n\tfunction globalDrop(evt) {\n\t\tcleanup(evt, true);\n\t}\n\n\tel.addEventListener('dragenter', init);\n\n\treturn () => {\n\t\t// cleanup\n\t\tel.removeEventListener('dragenter', init);\n\t}\n}\n\nexport {\n\tisValidDragObject,\n\tgetValidTransferData,\n\tisValidTransferData,\n\tgetTransferData,\n\tconvertToValidDragObject,\n\tsetTransferData,\n\teventHasTypes,\n\tbindDragEnterLeave\n};\nexport default {\n\t...TYPE_CONSTANTS,\n\tisValidDragObject,\n\tgetValidTransferData,\n\tisValidTransferData,\n\tgetTransferData,\n\tconvertToValidDragObject,\n\tsetTransferData,\n\teventHasTypes,\n\tbindDragEnterLeave\n};\n","import { getValidTransferData, eventHasTypes, bindDragEnterLeave } from '../helpers/DragAndDrop.js';\n\nconst EFFECTS = [\n\t'move',\n\t'copy',\n\t'link',\n\t'none'\n];\n\nexport default {\n\tmounted(el, binding) {\n\t\tconst allowedTypes = Object.keys(binding.modifiers);\n\t\tallowedTypes.forEach(type => {\n\t\t\tif (type.substr(-11) == '-collection') {\n\t\t\t\tconst singleType = type.substr(0, type.length-11);\n\t\t\t\tif (!allowedTypes.includes(singleType))\n\t\t\t\t\tallowedTypes.push(singleType);\n\t\t\t}\n\t\t});\n\n\t\tconst strict = binding.arg.match(/(strict-|-strict)/);\n\t\tconst arg = binding.arg.replace(/(strict-|-strict)/, '');\n\t\tconst effect = EFFECTS.includes(arg) ? arg : null;\n\n\t\tconst bcc = new BroadcastChannel('fhc-dnd');\n\t\tlet allowed = false;\n\n\t\tfunction onEnter(evt) {\n\t\t\tallowed = eventHasTypes(evt, allowedTypes, strict);\n\t\t\tif (allowed) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tbcc.postMessage('block');\n\t\t\t}\n\t\t}\n\t\tfunction onLeave(evt, wasDropped) {\n\t\t\tif (allowed && !wasDropped) {\n\t\t\t\tbcc.postMessage('release');\n\t\t\t}\n\t\t}\n\t\tfunction onOver(evt) {\n\t\t\tif (allowed) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tif (effect)\n\t\t\t\t\tevt.dataTransfer.dropEffect = effect;\n\t\t\t}\n\t\t}\n\t\tfunction onDrop(evt) {\n\t\t\tlet result = getValidTransferData(evt, allowedTypes, strict);\n\t\t\tif (!Array.isArray(result) && !binding.modifiers[result.type] && allowedTypes.includes(result.type + '-collection'))\n\t\t\t\tresult = [result];\n\n\t\t\tconst res = binding.value(evt, result);\n\t\t\t\n\t\t\tif (res instanceof Promise) {\n\t\t\t\tres.then(r => {\n\t\t\t\t\tbcc.postMessage('release');\n\t\t\t\t\treturn r;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tbcc.postMessage('release');\n\t\t\t}\n\t\t}\n\n\t\tconst cleanupEnterLeave = bindDragEnterLeave(el, onEnter, onLeave);\n\t\tel.addEventListener('dragover', onOver);\n\t\tel.addEventListener('drop', onDrop);\n\t\tel.fhcDropCleanup = () => {\n\t\t\tcleanupEnterLeave();\n\t\t\tel.removeEventListener('dragover', onOver);\n\t\t\tel.removeEventListener('drop', onDrop);\n\t\t};\n\t},\n\tbeforeUnmount(el) {\n\t\tel.fhcDropCleanup();\n\t\tdelete el.fhcDropCleanup;\n\t}\n}\n","import { bindDragEnterLeave } from '../helpers/DragAndDrop.js';\n\nexport default {\n\tmounted(el, binding) {\n\t\tconst delay = parseInt(binding.arg) || 300;\n\n\t\tlet timeout = null;\n\t\tfunction startCountdown() {\n\t\t\ttimeout = window.setTimeout(binding.value, delay);\n\t\t}\n\t\tfunction stopCountdown() {\n\t\t\tif (timeout)\n\t\t\t\twindow.clearTimeout(timeout);\n\t\t\ttimeout = null;\n\t\t}\n\n\t\tlet lastTarget;\n\t\tlet lastX;\n\t\tlet lastY;\n\n\t\tfunction onDragOver(evt) {\n\t\t\tif (lastX != evt.offsetX || lastY != evt.offsetY || lastTarget != evt.target) {\n\t\t\t\t// moved\n\t\t\t\tlastTarget = evt.target;\n\t\t\t\tlastX = evt.offsetX;\n\t\t\t\tlastY = evt.offsetY;\n\n\t\t\t\tstopCountdown();\n\t\t\t\tstartCountdown();\n\t\t\t}\n\t\t}\n\n\t\tfunction onEnter(evt) {\n\t\t\tlastTarget = evt.target;\n\t\t\tlastX = evt.offsetX;\n\t\t\tlastY = evt.offsetY;\n\n\t\t\tel.addEventListener('dragover', onDragOver);\n\n\t\t\tstartCountdown();\n\t\t}\n\t\tfunction onLeave() {\n\t\t\tstopCountdown();\n\t\t\tel.removeEventListener('dragover', onDragOver);\n\t\t}\n\n\t\tel.fhcDragClickCleanup = bindDragEnterLeave(el, onEnter, onLeave);\n\t},\n\tbeforeUnmount(el) {\n\t\tel.fhcDragClickCleanup();\n\t\tdelete el.fhcDragClickCleanup;\n\t}\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tadd(uid, gruppe_kurzbz, studiensemester_kurzbz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/gruppen/add/',\n\t\t\tparams: {\n\t\t\t\tuid,\n\t\t\t\tgruppe_kurzbz,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t}\n\t\t};\n\t},\n\tsearch(query, studiengang_kz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/gruppen/search/',\n\t\t\tparams: {\n\t\t\t\tquery,\n\t\t\t\tstudiengang_kz\n\t\t\t}\n\t\t};\n\t},\n\tgetGruppen(id) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/Gruppen/getGruppen/' + id\n\t\t};\n\t},\n\tdeleteGroup(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/Gruppen/deleteGruppe/',\n\t\t\tparams\n\t\t};\n\t}\n}\n\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/get/'\n\t\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t\t+ '/'\n\t\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t};\n\t},\n\tsave(prestudent_id, studiensemester_kurzbz, params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/save/'\n\t\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t\t+ '/'\n\t\t\t\t+ encodeURIComponent(studiensemester_kurzbz),\n\t\t\tparams\n\t\t};\n\t},\n\tsaveStudent(student_uid, studiensemester_kurzbz, params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/saveStudent/'\n\t\t\t\t+ encodeURIComponent(student_uid)\n\t\t\t\t+ '/'\n\t\t\t\t+ encodeURIComponent(studiensemester_kurzbz),\n\t\t\tparams\n\t\t};\n\t}\n};","import drop from '../../../directives/drop.js';\nimport dragClick from '../../../directives/dragClick.js';\n\nimport ApiStvGroups from '../../../api/factory/stv/group.js';\nimport ApiStvDetails from '../../../api/factory/stv/details.js';\n\nexport default {\n\tcomponents: {\n\t\tPvTreetable: primevue.treetable,\n\t\tPvColumn: primevue.column\n\t},\n\tdirectives: {\n\t\tdrop,\n\t\tdragClick\n\t},\n\tinject: {\n\t\t$reloadList: {\n\t\t\tfrom: '$reloadList',\n\t\t\tdefault: () => {}\n\t\t},\n\t\tcurrentSemester: {\n\t\t\tfrom: 'currentSemester',\n\t\t\trequired: true\n\t\t},\n\t\tappConfig: {\n\t\t\tfrom: 'appConfig',\n\t\t\tdefault: {\n\t\t\t\tnumber_displayed_past_studiensemester: 5\n\t\t\t}\n\t\t}\n\t},\n\temits: [\n\t\t'selectVerband'\n\t],\n\tprops: {\n\t\tendpoint: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tpreselectedKey: {\n\t\t\ttype: String,\n\t\t\tdefault: null\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tnodes: [],\n\t\t\tselectedKey: [],\n\t\t\texpandedKeys: {},\n\t\t\tfilters: {}, // TODO(chris): filter only 1st level?\n\t\t\tfavorites: {on: false, list: []}\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilteredNodes() {\n\t\t\tif (this.favorites.on)\n\t\t\t\treturn this.nodes.filter(node => this.favorites.list.includes(node.key));\n\t\t\t\n\t\t\treturn this.nodes;\n\t\t},\n\t\tnoSemReloadNodes() {\n\t\t\treturn this.nodes.reduce(this.mapNodesToNoSemReloadNodes, []);\n\t\t}\n\t},\n\twatch: {\n\t\t'preselectedKey': function (newVal, oldVal) {\n\t\t\tif (newVal !== oldVal) {\n\t\t\t\tthis.setPreselection();\n\t\t\t}\n\t\t},\n\t\t'appConfig.number_displayed_past_studiensemester'(newVal, oldVal) {\n\t\t\tif (oldVal !== undefined) {\n\t\t\t\tthis.noSemReloadNodes.forEach(node => {\n\t\t\t\t\tdelete node.children;\n\t\t\t\t\tthis.onExpandTreeNode(node);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tfindNodeByKey(key, arr) {\n\t\t\tif (!arr)\n\t\t\t\tarr = this.nodes;\n\t\t\tlet res = arr.filter(n => n.key == key);\n\t\t\tif (res.length)\n\t\t\t\treturn res.pop();\n\t\t\tres = arr.map(n => n.children ? this.findNodeByKey(key, n.children) : null).filter(a => a);\n\t\t\tif (res.length)\n\t\t\t\treturn res.pop();\n\t\t\treturn null;\n\t\t},\n\t\tasync onExpandTreeNode(node) {\n\t\t\tif (!node.children) {\n\t\t\t\tif (node.data.link) {\n\t\t\t\t\tlet activeEl = null;\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\tactiveEl = document.activeElement;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tthis.loading = true;\n\t\t\t\t\t\n\t\t\t\t\treturn this.$api\n\t\t\t\t\t\t.call(this.endpoint.get(node.data.link))\n\t\t\t\t\t\t.then(result => result.data)\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst subNodes = result.map(this.mapResultToTreeData);\n\t\t\t\t\t\t\tconst realNode = this.findNodeByKey(node.key);\n\t\t\t\t\t\t\tif (realNode)\n\t\t\t\t\t\t\t\trealNode.children = subNodes;\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tnode.children = subNodes; // NOTE(chris): fallback should never be the case\n\n\t\t\t\t\t\t\tlet treeitem = this.$refs.tree.$el.querySelector('[data-tree-item-key=\"' + node.key + '\"]');\n\t\t\t\t\t\t\ttreeitem = treeitem.closest('[role=\"row\"]');\n\n\t\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\t\tif (activeEl == document.activeElement)\n\t\t\t\t\t\t\t\t\ttreeitem.dispatchEvent(new KeyboardEvent('keydown', {\n\t\t\t\t\t\t\t\t\t\tcode: 'ArrowDown',\n\t\t\t\t\t\t\t\t\t\tkey: 'ArrowDown'\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tthis.loading = false;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSelectTreeNode(node) {\n\t\t\tif (node.data.link)\n\t\t\t\tthis.$emit('selectVerband', {link: node.data.link, studiengang_kz: node.data.stg_kz, semester: node.data.semester, orgform_kurzbz: node.data.orgform_kurzbz});\n\t\t},\n\t\tmapNodesToNoSemReloadNodes(result, node) {\n\t\t\tif (node.data.no_sem_reload)\n\t\t\t\tresult.push(node);\n\t\t\tif (node.children)\n\t\t\t\tresult = node.children.reduce(this.mapNodesToNoSemReloadNodes, result);\n\t\t\treturn result;\n\t\t},\n\t\tmapResultToTreeData(el) {\n\t\t\tconst cp = {\n\t\t\t\tkey: (\"\" + el.link).replace('/', '-'),\n\t\t\t\tdata: el,\n\t\t\t\tlabel: el.name\n\t\t\t};\n\n\t\t\tif (el.children)\n\t\t\t\tcp.children = el.children.map(this.mapResultToTreeData);\n\t\t\telse\n\t\t\t\tcp.leaf = el.leaf || false;\n\n\t\t\treturn cp;\n\t\t},\n\t\tfilterFav() {\n\t\t\tthis.favorites.on = !this.favorites.on;\n\t\t\tthis.$api\n\t\t\t\t.call(this.endpoint.favorites.set(\n\t\t\t\t\tJSON.stringify(this.favorites)\n\t\t\t\t));\n\t\t},\n\t\tmarkFav(key) {\n\t\t\tlet index = this.favorites.list.indexOf(key.data.link + '');\n\n\t\t\tif (index != -1) {\n\t\t\t\tthis.favorites.list.splice(index, 1);\n\t\t\t} else {\n\t\t\t\tthis.favorites.list.push(key.data.link + '');\n\t\t\t}\n\n\t\t\tthis.$api\n\t\t\t\t.call(this.endpoint.favorites.set(\n\t\t\t\t\tJSON.stringify(this.favorites)\n\t\t\t\t));\n\t\t},\n\t\tunsetFavFocus(e) {\n\t\t\tif (e.target.dataset?.linkFavAdd !== undefined) {\n\t\t\t\te.target.tabIndex = -1;\n\t\t\t} else {\n\t\t\t\tlet items = e.target.querySelectorAll('[data-link-fav-add]:not([tabindex=\"-1\"])');\n\t\t\t\titems.forEach(el => el.tabIndex = document.activeElement == el ? 0 : -1);\n\t\t\t}\n\t\t},\n\t\tsetFavFocus(e) {\n\t\t\tif (e.target.dataset?.linkFavAdd !== undefined) {\n\t\t\t\te.target.tabIndex = 0;\n\t\t\t} else {\n\t\t\t\tlet items = e.target.querySelectorAll('[data-link-fav-add][tabindex=\"-1\"]');\n\t\t\t\titems.forEach(el => el.tabIndex = 0);\n\t\t\t}\n\t\t},\n\t\tasync setPreselection()\n\t\t{\n\t\t\tif (!this.preselectedKey)\n\t\t\t{\n\t\t\t\tthis.selectedKey = null;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet rawKey = this.preselectedKey\n\n\t\t\tif (!rawKey || typeof rawKey !== 'string')\n\t\t\t\treturn;\n\n\t\t\tconst parts = this.preselectedKey.split('/');\n\t\t\tlet currentKey = parts[0];\n\t\t\tlet currentNode = this.findNodeByKey(currentKey);\n\n\t\t\tif (!currentNode)\n\t\t\t\treturn;\n\n\t\t\tif(this.selectedKey)\n\t\t\t{\n\t\t\t\tconst currentSelectedKey = Object.keys(this.selectedKey).find(Boolean);\n\t\t\t\tif (currentSelectedKey) {\n\t\t\t\t\tif (currentSelectedKey == currentKey)\n\t\t\t\t\t\treturn;\n\t\t\t\t\t/**\n\t\t\t\t\t * Do not select a new entry if the current is a child of the new one.\n\t\t\t\t\t * This happens if a child entry of a new stg is selected and the router\n\t\t\t\t\t * tries to select the stg root entry (because subtrees do not have\n\t\t\t\t\t * routes yet)\n\t\t\t\t\t */\n\t\t\t\t\tconst isChild = this.findNodeByKey(\n\t\t\t\t\t\tcurrentSelectedKey,\n\t\t\t\t\t\tcurrentNode.children || []\n\t\t\t\t\t);\n\t\t\t\t\tif (isChild)\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let i = 1; i < parts.length; i++)\n\t\t\t{\n\t\t\t\tthis.expandedKeys[currentNode.key] = true;\n\n\t\t\t\tawait this.onExpandTreeNode(currentNode);\n\n\t\t\t\tcurrentKey += '-' + parts[i];\n\t\t\t\tcurrentNode = this.findNodeByKey(currentKey);\n\n\t\t\t\tif (!currentNode)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.selectedKey = {[currentNode.key]: true};\n\t\t\tthis.onSelectTreeNode(currentNode);\n\t\t},\n\t\tasync toggleTreeNode(node) {\n\t\t\tif (this.expandedKeys[node.key]) {\n\t\t\t\tdelete this.expandedKeys[node.key];\n\t\t\t} else if (!node.leaf) {\n\t\t\t\tawait this.onExpandTreeNode(node);\n\t\t\t\tthis.expandedKeys[node.key] = true;\n\t\t\t}\n\t\t},\n\t\tgetStudentAjaxId(student) {\n\t\t\tlet res = student.id;\n\t\t\tif (student.vorname && student.nachname)\n\t\t\t\tres += ' (' + student.vorname + ' ' + student.nachname + ')';\n\t\t\treturn res;\n\t\t},\n\t\tdropStudents(node, students) {\n\t\t\tconst data = node.data;\n\t\t\t\n\t\t\tlet endpoint;\n\t\t\tif (data.gruppe_kurzbz) {\n\t\t\t\tendpoint = students.map(student => [\n\t\t\t\t\tthis.getStudentAjaxId(student),\n\t\t\t\t\tApiStvGroups.add(\n\t\t\t\t\t\tstudent.id,\n\t\t\t\t\t\tdata.gruppe_kurzbz,\n\t\t\t\t\t\tthis.currentSemester\n\t\t\t\t\t)\n\t\t\t\t]);\n\t\t\t} else {\n\t\t\t\tconst { semester, verband, gruppe } = data;\n\t\t\t\tconst params = { semester, verband, gruppe };\n\t\t\t\tendpoint = students.map(student => [\n\t\t\t\t\tthis.getStudentAjaxId(student),\n\t\t\t\t\tApiStvDetails.saveStudent(\n\t\t\t\t\t\tstudent.id,\n\t\t\t\t\t\tthis.currentSemester,\n\t\t\t\t\t\tparams\n\t\t\t\t\t)\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\treturn this.$api\n\t\t\t\t.call(endpoint)\n\t\t\t\t.then(this.$reloadList)\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.$api\n\t\t\t.call(this.endpoint.get())\n\t\t\t.then(result => {\n\t\t\t\tthis.nodes = result.data.map(el => {\n\t\t\t\t\tel.root = true;\n\t\t\t\t\treturn this.mapResultToTreeData(el);\n\t\t\t\t});\n\t\t\t\tthis.setPreselection();\n\t\t\t\tthis.loading = false;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(this.endpoint.favorites.get())\n\t\t\t.then(result => {\n\t\t\t\tif (result.data) {\n\t\t\t\t\tthis.favorites = JSON.parse(result.data);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\ttemplate: /* html */`\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t
`\n};\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
Loading...
\n\t\t
\n\t\t\n\t\t\t
{{ errorMessage }}
\n\t\t
\n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nconst FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\tfilters: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tfields: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t}\n\t},\n\temits: {\n\t\tswitchFilter: ['filterId'],\n\t\tapplyFilterConfig: ['filterFields'],\n\t\tsaveCustomFilter: ['customFilterName']\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tcurrentFields: []\n\t\t};\n\t},\n\tcomputed: {\n\t\ttypes() {\n\t\t\treturn this.columns.reduce((a,c) => {\n\t\t\t\tlet type = c.type.toLowerCase();\n\t\t\t\tif (type.indexOf('int') >= 0)\n\t\t\t\t\ta[c.name] = 'Numeric';\n\t\t\t\telse if (\n\t\t\t\t\ttype.indexOf('varchar') >= 0 || \n\t\t\t\t\ttype.indexOf('text') >= 0 || \n\t\t\t\t\ttype.indexOf('bpchar') >= 0\n\t\t\t\t)\n\t\t\t\t\ta[c.name] = 'Text';\n\t\t\t\telse if (\n\t\t\t\t\ttype.indexOf('timestamp') >= 0 || \n\t\t\t\t\ttype.indexOf('date') >= 0\n\t\t\t\t)\n\t\t\t\t\ta[c.name] = 'Date';\n\t\t\t\telse\n\t\t\t\t\ta[c.name] = '';\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t}\n\t},\n\twatch: {\n\t\tfields(n) {\n\t\t\tthis.currentFields = n;\n\t\t}\n\t},\n\tmethods: {\n\t\tswitchFilter(evt) {\n\t\t\tthis.$emit('switchFilter', evt.currentTarget.value);\n\t\t},\n\t\tapplyFilterConfig() {\n\t\t\tconst filteredFields = this.currentFields.filter(el => el.name != FILTER_COMPONENT_NEW_FILTER);\n\t\t\tif (filteredFields.filter(el => el.condition == \"\").length)\n\t\t\t\talert(\"Please fill all the filter options\");\n\t\t\telse\n\t\t\t\tthis.$emit('applyFilterConfig', filteredFields);\n\t\t},\n\t\taddField(evt) {\n\t\t\tthis.currentFields.push({\n\t\t\t\tname: FILTER_COMPONENT_NEW_FILTER\n\t\t\t});\n\t\t},\n\t\tremoveField(index) {\n\t\t\tthis.currentFields.splice(index, 1);\n\t\t}\n\t},\n\ttemplate: `\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\tFilter {{ index + 1 }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\t`\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\tfields: Array,\n\t\tselected: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tnames: {\n\t\t\ttype: Object,\n\t\t\tdefault: {}\n\t\t}\n\t},\n\temits: {\n\t\thide: ['fieldName'],\n\t\tshow: ['fieldName']\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tselectedFields: []\n\t\t};\n\t},\n\twatch: {\n\t\tselected(n) {\n\t\t\tthis.selectedFields = n;\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggle(field) {\n\t\t\tif (this.selectedFields.indexOf(field) != -1)\n\t\t\t{\n\t\t\t\tthis.selectedFields.splice(this.selectedFields.indexOf(field), 1);\n\t\t\t\tthis.$emit('hide', field);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.selectedFields.push(field);\n\t\t\t\tthis.$emit('show', field);\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t{{ names[fieldToDisplay] || fieldToDisplay }}\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\t`\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nconst DEFAULT_ICONS = {\n\tjsonLines: 'fa-file-lines',\n\txlsx: 'fa-file-excel',\n\tpdf: 'fa-file-pdf',\n\thtml: 'fa-file-code',\n\tjson: 'fa-file',\n\tcsv: 'fa-file-csv'\n};\nconst DEFAULT_LABELS = {\n\tjsonLines: 'Download as JSONLINES',\n\txlsx: 'Download as XLSX',\n\tpdf: 'Download as PDF',\n\thtml: 'Download as HTML',\n\tjson: 'Download as JSON',\n\tcsv: 'Download as CSV '\n};\n\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\ttabulator: Object,\n\t\tconfig: {\n\t\t\ttype: [Boolean, String, Function, Array, Object],\n\t\t\tdefault: false\n\t\t},\n\t\ticonClass: [String, Array, Object]\n\t},\n\tcomputed: {\n\t\tcurrentConfig() {\n\t\t\tif (!this.config)\n\t\t\t\treturn false;\n\n\t\t\tlet config = this.config;\n\n\t\t\tif (config instanceof Function)\n\t\t\t\treturn [config];\n\n\t\t\tif (config === null)\n\t\t\t\treturn [];\n\n\t\t\tif (this.config === true)\n\t\t\t\tconfig = ['csv'];\n\n\t\t\tif (Object.prototype.toString.call(config) === \"[object String]\")\n\t\t\t\tconfig = config.split(',');\n\n\t\t\tif (typeof config === 'object' && !Array.isArray(config)) {\n\t\t\t\tlet newConfig = [];\n\t\t\t\tfor (var k in config) {\n\t\t\t\t\tvar v = config[k], type;\n\t\t\t\t\t\n\t\t\t\t\tif (!v)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\n\t\t\t\t\tif (Object.prototype.toString.call(v) === \"[object String]\") {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(v);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\tlabel: v === k ? DEFAULT_LABELS[type] : k,\n\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\t\tif(type !== null) {\n\t\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\t\tlabel: v,\n\t\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\talert('neither ' + k + ' nor ' + v + ' are supported download file types');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (typeof v === 'object' && !Array.isArray(v)) {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tif (v.formatter === undefined)\n\t\t\t\t\t\t\t\tv.formatter = type;\n\t\t\t\t\t\t\tif (v.label === undefined)\n\t\t\t\t\t\t\t\tv.label = DEFAULT_LABELS[type];\n\t\t\t\t\t\t\tif (v.icon === undefined)\n\t\t\t\t\t\t\t\tv.icon = DEFAULT_ICONS[type];\n\t\t\t\t\t\t\tnewConfig.push(v);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (v.label === undefined)\n\t\t\t\t\t\t\t\tv.label = k;\n\t\t\t\t\t\t\tnewConfig.push(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\tlabel: DEFAULT_LABELS[type],\n\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\talert(k + ' is not a supported download file type');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconfig = newConfig;\n\t\t\t}\n\n\t\t\tif (Array.isArray(config))\n\t\t\t{\n\t\t\t\tconfig = config.map(el => {\n\t\t\t\t\tif (Object.prototype.toString.call(el) === \"[object String]\") {\n\t\t\t\t\t\tlet formatter = this.stringToFileFormatter(el);\n\t\t\t\t\t\tif (formatter === null)\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[formatter],\n\t\t\t\t\t\t\tlabel: DEFAULT_LABELS[formatter],\n\t\t\t\t\t\t\tformatter\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (el instanceof Function)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tformatter: el\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (typeof el === 'object' && !Array.isArray(el) && el !== null) {\n\t\t\t\t\t\tif (el.formatter instanceof Function)\n\t\t\t\t\t\t\treturn el;\n\t\t\t\t\t\tif (this.validateFileFormatter(el.formatter))\n\t\t\t\t\t\t\treturn el;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn null;\n\t\t\t\t}).filter(el => el !== null);\n\n\t\t\t\tif (config.length < 2)\n\t\t\t\t\treturn config;\n\n\t\t\t\tif (config.filter(el => el.label || el.icon).length == config.length)\n\t\t\t\t\treturn config;\n\n\t\t\t\talert('Config not valid');\n\t\t\t}\n\n\t\t\treturn [];\n\t\t}\n\t},\n\tmethods: {\n\t\tstringToFileFormatter(input) {\n\t\t\tlet lcInput = input.toLowerCase();\n\t\t\t\n\t\t\tif (lcInput == 'jsonlines')\n\t\t\t\treturn 'jsonLines';\n\t\t\t\n\t\t\tif (['xlsx', 'pdf', 'html', 'json', 'csv'].includes(lcInput))\n\t\t\t\treturn lcInput;\n\n\t\t\treturn null;\n\t\t},\n\t\tvalidateFileFormatter(input) {\n\t\t\tlet formatter = this.stringToFileFormatter(input);\n\t\t\tif (!formatter) {\n\t\t\t\talert(input + ' is not a supported file formatter');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (formatter == 'xlsx') {\n\t\t\t\tif (!window.XLSX) {\n\t\t\t\t\talert('XLSX Library not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (formatter == 'pdf') {\n\t\t\t\tif (!window.jspdf) {\n\t\t\t\t\talert('jsPDF Library not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar doc = new jspdf.jsPDF({});\n\t\t\t\tif (!doc.autoTable) {\n\t\t\t\t\talert('jsPDF-AutoTable Plugin not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tdownload(config) {\n\t\t\tthis.tabulator.download(config.formatter, config.file, config.options)\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t`\n};\n\n","const elementDataMap = new WeakMap();\n\nexport default {\n\tmounted(el, binding) {\n\t\tlet open = false;\n\t\telementDataMap.set(el, evt => {\n\t\t\tif (!open)\n\t\t\t\treturn;\n\n\t\t\tif (el.contains(evt.target))\n\t\t\t\treturn;\n\n\t\t\tconst collapse = bootstrap.Collapse.getInstance(el)\n\t\t\tif (collapse)\n\t\t\t\tcollapse.hide();\n\t\t});\n\t\tel.addEventListener('shown.bs.collapse', () => {\n\t\t\topen = true;\n\t\t});\n\t\tel.addEventListener('hide.bs.collapse', () => {\n\t\t\topen = false;\n\t\t});\n\t\tdocument.addEventListener('click', elementDataMap.get(el), true);\n\t},\n\tbeforeUnmount(el, binding) {\n\t\tdocument.removeEventListener('click', elementDataMap.get(el));\n\t\tdelete el.collapsibleAutoHideFunc;\n\t}\n}","/**\n * This may need changes if Tabulator gets updated!\n *\n * Current working Version: 5.5.2\n * \n * This is a copy of the fitDataStretch function. The only difference\n * is the check for frozen columns on line 22.\n */\n\nexport default window.Tabulator?.extendModule(\"layout\", \"modes\", {\n\tfitDataStretchFrozen(columns, forced) {\n\t\tvar colsWidth = 0,\n\t\ttableWidth = this.table.rowManager.element.clientWidth,\n\t\tgap = 0,\n\t\tlastCol = false;\n\n\t\tcolumns.forEach((column, i) => {\n\t\t\tif (!column.widthFixed) {\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\n\t\t\tif (this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible && !column.definition.frozen) {\n\t\t\t\tlastCol = column;\n\t\t\t}\n\n\t\t\tif (column.visible) {\n\t\t\t\tcolsWidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\tif (lastCol){\n\t\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\t\tlastCol.setWidth(0);\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\n\t\t\tif (gap > 0) {\n\t\t\t\tlastCol.setWidth(gap);\n\t\t\t} else {\n\t\t\t\tlastCol.reinitializeWidth();\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t}\n\t}\n});\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/saveCustomFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t};\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/removeCustomFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t};\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/applyFilterFields',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t};\n\t},\n\taddFilterField(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/addFilterField',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t};\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/removeFilterField',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t};\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/filter/getFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t};\n\t},\n\tgetFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/filter/getFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport {CoreFetchCmpt} from '../../components/Fetch.js';\nimport FilterConfig from './Filter/Config.js';\nimport FilterColumns from './Filter/Columns.js';\nimport TableDownload from './Table/Download.js';\nimport collapseAutoClose from '../../directives/collapseAutoClose.js';\n\nimport moduleLayoutFitDataStretchFrozen from '../../tabulator/layouts/fitDataStretchFrozen.js';\n\nimport ApiFilter from '../../api/factory/filter.js';\n\n//\nconst FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';\nconst FILTER_COMPONENT_NEW_FILTER_TYPE = 'Filter Component New Filter Type';\n\nvar _uuid = 0;\n\n/**\n *\n */\nexport const CoreFilterCmpt = {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tFilterConfig,\n\t\tFilterColumns,\n\t\tTableDownload\n\t},\n\tdirectives: {\n\t\tcollapseAutoClose\n\t},\n\temits: [\n\t\t'nwNewEntry',\n\t\t'click:new',\n\t\t'tableBuilt',\n\t\t'uuidDefined'\n\t],\n\tprops: {\n\t\tonNwNewEntry: Function, // NOTE(chris): Hack to get the nwNewEntry listener into $props\n\t\ttitle: String,\n\t\tdescription: String,\n\t\tsideMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tfilterType: {\n\t\t\ttype: String\n\t\t},\n\t\ttabulatorOptions: Object,\n\t\ttabulatorEvents: Array,\n\t\ttableOnly: Boolean,\n\t\tnoColumnFilter:Boolean,\n\t\treload: Boolean,\n\t\treloadBtnInfotext: String,\n\t\tdownload: {\n\t\t\ttype: [Boolean, String, Function, Array, Object],\n\t\t\tdefault: false\n\t\t},\n\t\tnewBtnShow: Boolean,\n\t\tnewBtnClass: [String, Array, Object],\n\t\tnewBtnDisabled: Boolean,\n\t\tnewBtnLabel: String,\n\t\tuniqueId: String,\n\n\t\tidField: String,\n\t\tparentIdField: String,\n\t\tcountOnly: Boolean,\n\t\tuseSelectionSpan: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tuuid: 0,\n\t\t\t// FilterCmpt properties\n\t\t\tfilterName: null,\n\t\t\tfilterActive: false,\n\t\t\tfields: null,\n\t\t\tdataset: null,\n\t\t\tdatasetMetadata: null,\n\t\t\tselectedFields: null,\n\t\t\tfilterFields: null,\n\n\t\t\tavailableFilters: null,\n\t\t\tselectedFilter: null,\n\n\t\t\t// FetchCmpt binded properties\n\t\t\tfetchCmptRefresh: false,\n\t\t\tfetchCmptApiFunction: null,\n\t\t\tfetchCmptApiFunctionParams: null,\n\t\t\tfetchCmptDataFetched: null,\n\n\t\t\tfetchResult: null,\n\n\t\t\ttabulator: null,\n\t\t\ttableBuilt: false,\n\t\t\ttabulatorHasSelector: false,\n\t\t\tselectedData: [],\n\t\t\tpersistence: {\n\t\t\t\tsort: true,\n\t\t\t\tcolumns: true,\n\t\t\t\tfilter: false,\n\t\t\t\theaderFilter: false,\n\t\t\t\tgroup: false,\n\t\t\t\tpage: false,\n\t\t\t}\n\t\t};\n\t},\n\tcomputed: {\n\t\tnotSelectedFields() {\n\t\t\tif (!this.fields || !this.selectedFields)\n\t\t\t\treturn null;\n\t\t\treturn this.fields.filter(x => this.selectedFields.indexOf(x) === -1)\n\t\t},\n\t\tfilteredData() {\n\t\t\tif (!this.dataset)\n\t\t\t\treturn [];\n\t\t\treturn JSON.parse(JSON.stringify(this.dataset));\n\t\t},\n\t\tfilteredColumns() {\n\t\t\tlet fields = JSON.parse(JSON.stringify(this.fields)) || [];\n\t\t\tlet selectedFields = JSON.parse(JSON.stringify(this.selectedFields)) || [];\n\n\t\t\tlet columns = null;\n\n\t\t\t// If the tabulator options has been provided and it contains the property columns\n\t\t\tif (this.tabulatorOptions && this.tabulatorOptions.hasOwnProperty('columns'))\n\t\t\t\tcolumns = this.tabulatorOptions.columns;\n\n\t\t\t// If columns is not an array or it is an array with less elements then the array fields\n\t\t\tif (!Array.isArray(columns) || (Array.isArray(columns) && columns.length < fields.length))\n\t\t\t{\n\t\t\t\tcolumns = []; // set it as an empty array\n\n\t\t\t\t// Loop throught all the retrieved columns from database\n\t\t\t\tfor (let field of fields)\n\t\t\t\t{\n\t\t\t\t\t// Create a new column having the title equal to the field name\n\t\t\t\t\tlet column = {\n\t\t\t\t\t\ttitle: field,\n\t\t\t\t\t\tfield: field\n\t\t\t\t\t};\n\n\t\t\t\t\t// If the column has to be displayed or not\n\t\t\t\t\tcolumn.visible = selectedFields.indexOf(field) >= 0;\n\n\t\t\t\t\t// Add the new column to the list of columns\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // the property columns has been provided in the tabulator options\n\t\t\t{\n\t\t\t\t// Loop throught the property columns of the tabulator options\n\t\t\t\tfor (let col of columns)\n\t\t\t\t{\n\t\t\t\t\t// If the column has to be displayed or not\n\t\t\t\t\t/* fields.indexOf(col.field) == -1; ensures displaying formatter colums\n\t\t\t\t\te.g. column with rowSelection checkboxes or with custom formatted action buttons */\n\t\t\t\t\tcol.visible = selectedFields.indexOf(col.field) >= 0 || fields.indexOf(col.field) == -1;\n\n\t\t\t\t\tif (col.hasOwnProperty('resizable'))\n\t\t\t\t\t\tcol.resizable = col.visible;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn columns;\n\t\t},\n\t\tfieldIdsForVisibilty() {\n\t\t\tif (!this.tableBuilt)\n\t\t\t\treturn [];\n\t\t\treturn this.tabulator.getColumns().filter(col => {\n\t\t\t\tlet def = col.getDefinition();\n\t\t\t\treturn !def.frozen && def.title && def.formatter != \"responsiveCollapse\";\n\t\t\t}).map(col => col.getField());\n\t\t},\n\t\tfieldNames() {\n\t\t\tif (!this.tableBuilt)\n\t\t\t\treturn {};\n\t\t\treturn this.tabulator.getColumns().reduce((res, col) => {\n\t\t\t\tres[col.getField()] = col.getDefinition().title;\n\t\t\t\treturn res;\n\t\t\t}, {});\n\t\t},\n\t\tidExtra() {\n\t\t\tif (!this.uuid)\n\t\t\t\treturn '';\n\t\t\treturn '-' + this.uuid;\n\t\t},\n\t\tcolumnsForFilter() {\n\t\t\tif (!this.filteredColumns || !this.datasetMetadata)\n\t\t\t\treturn [];\n\t\t\tconst filterTitles = this.filteredColumns.reduce((a,c) => {\n\t\t\t\ta[c.field] = c.title;\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t\treturn this.datasetMetadata.map(el => ({...el, ...{title: filterTitles[el.name]}}));\n\t\t}\n\t},\n\tmethods: {\n\t\treloadTable() {\n\t\t\tif (this.tableOnly)\n\t\t\t\tthis.tabulator.setData();\n\t\t\telse\n\t\t\t\tthis.getFilter();\n\t\t},\n\t\tasync initTabulator() {\n\t\t\tlet placeholder = '< Phrasen Plugin not loaded! >';\n\t\t\tif (this.$p) {\n\t\t\t\tawait this.$p.loadCategory('ui');\n\t\t\t\tplaceholder = this.$p.t('ui/keineDatenVorhanden');\n\t\t\t}\n\n\t\t\tif (!this.tableOnly) {\n\t\t\t\t// prefetch data to get fields & selectedFields for filteredColumns & filteredData\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tconst filterId = window.location.hash ? window.location.hash.slice(1) : null;\n\n\t\t\t\t\tconst resolvePromiseFunc = data => {\n\t\t\t\t\t\tthis.setRenderData(data);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\t// get the filter data\n\t\t\t\t\tif (filterId === null)\n\t\t\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilter(wsParams)),\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tresolvePromiseFunc\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilterById(wsParams)),\n\t\t\t\t\t\t\t{ filterId },\n\t\t\t\t\t\t\tresolvePromiseFunc\n\t\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Define a default tabulator options in case it was not provided\n\t\t\tlet tabulatorOptions = {...{\n\t\t\t\t\tlayout: \"fitDataStretchFrozen\",\n\t\t\t\t\tmovableColumns: true,\n\t\t\t\t\tcolumnDefaults:{\n\t\t\t\t\t\ttooltip: true\n\t\t\t\t\t},\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tpersistence: this.persistence,\n\t\t\t\t}, ...(this.tabulatorOptions || {})};\n\n\t\t\t// set default height if no height property is set\n\t\t\tif (tabulatorOptions.height === undefined &&\n\t\t\t\ttabulatorOptions.minHeight === undefined &&\n\t\t\t\ttabulatorOptions.maxHeight === undefined) {\n\t\t\t\ttabulatorOptions.height = 500;\n\t\t\t}\n\n\t\t\tif (!this.tableOnly) {\n\t\t\t\ttabulatorOptions.data = this.filteredData;\n\t\t\t\ttabulatorOptions.columns = this.filteredColumns;\n\t\t\t} else {\n\t\t\t\ttabulatorOptions.columns.forEach(col => {\n\t\t\t\t\tif (col.visible === undefined)\n\t\t\t\t\t\tcol.visible = true;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (tabulatorOptions.selectable || (tabulatorOptions.columns && tabulatorOptions.columns.filter(el => el.formatter == 'rowSelection').length))\n\t\t\t\tthis.tabulatorHasSelector = true;\n\n\t\t\tif (this.idField) {\n\t\t\t\t// enable nested tabulator if parent Id given\n\t\t\t\tif (this.parentIdField) tabulatorOptions.dataTree = true;\n\t\t\t\t// set tabulator index\n\t\t\t\ttabulatorOptions.index = this.idField;\n\t\t\t}\n\n\t\t\t// Start the tabulator with the build options\n\t\t\tthis.tabulator = new Tabulator(\n\t\t\t\tthis.$refs.table,\n\t\t\t\ttabulatorOptions\n\t\t\t);\n\t\t\t// If event handlers have been provided\n\t\t\tif (Array.isArray(this.tabulatorEvents) && this.tabulatorEvents.length > 0)\n\t\t\t{\n\t\t\t\t// Attach all the provided event handlers to the started tabulator\n\t\t\t\tfor (let evt of this.tabulatorEvents)\n\t\t\t\t\tthis.tabulator.on(evt.event, evt.handler);\n\t\t\t}\n\t\t\tthis.tabulator.on('tableBuilt', () => {this.tableBuilt = true; this.$emit('tableBuilt');});\n\t\t\tthis.tabulator.on(\"rowSelectionChanged\", data => {\n\t\t\t\tthis.selectedData = data;\n\t\t\t});\n\n\t\t\t// if nested tabulator, restructure data\n\t\t\tif (this.parentIdField && this.idField) {\n\t\t\t\tthis.tabulator.on(\"dataLoading\", data => {\n\t\t\t\t\tlet toDelete = [];\n\n\t\t\t\t\t// loop through all data\n\t\t\t\t\tfor (let childIdx = 0; childIdx < data.length; childIdx++)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet child = data[childIdx];\n\n\t\t\t\t\t\t// if it has parent id, it is a child\n\t\t\t\t\t\tif (child[this.parentIdField])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// append the child on the right place. If parent found, mark original sw child on 0 level for deleting\n\t\t\t\t\t\t\tif (this.appendChild(data, child)) toDelete.push(childIdx);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// delete the marked children from 0 level\n\t\t\t\t\tfor (let counter = 0; counter < toDelete.length; counter++)\n\t\t\t\t\t{\n\t\t\t\t\t\t// decrease index by counter as index of data array changes after every deletion\n\t\t\t\t\t\tdata.splice(toDelete[counter] - counter, 1);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this.tableOnly) {\n\t\t\t\tthis.tabulator.on('tableBuilt', () => {\n\t\t\t\t\tconst cols = this.tabulator.getColumns();\n\t\t\t\t\tthis.fields = cols.map(col => col.getField());\n\t\t\t\t\tthis.selectedFields = cols.filter(col => col.isVisible()).map(col => col.getField());\n\t\t\t\t\tif (this.tabulator.options.persistence.headerFilter)\n\t\t\t\t\t\tthis._setHeaderFilter();\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t\tthis.tabulator.on(\"dataFiltered\", filters => {\n\t\t\t\tthis.filterActive = filters.length > 0;\n\t\t\t});\n\t\t},\n\t\tupdateTabulator() {\n\t\t\tif (this.tabulator) {\n\t\t\t\tif (this.tableBuilt)\n\t\t\t\t\tthis._updateTabulator();\n\t\t\t\telse\n\t\t\t\t\tthis.tabulator.on('tableBuilt', this._updateTabulator);\n\t\t\t}\n\t\t},\n\t\t_updateTabulator() {\n\t\t\tthis.tabulatorHasSelector = this.tabulatorOptions.selectable || this.filteredColumns.filter(el => el.formatter == 'rowSelection').length;\n\t\t\tthis.tabulator.setColumns(this.filteredColumns);\n\t\t\tthis.tabulator.setData(this.filteredData);\n\t\t\tthis._setHeaderFilter()\n\t\t},\n\t\tclearFilters()\n\t\t{\n\t\t\tlet existingFilters = this.tabulator.getHeaderFilters();\n\t\t\texistingFilters.forEach(filter => {\n\t\t\t\tthis.tabulator.setHeaderFilterValue(filter.field, \"\");\n\t\t\t});\n\t\t\tthis.tabulator.clearFilter();\n\t\t\tthis.filterActive = false;\n\t\t},\n\t\t_setHeaderFilter()\n\t\t{\n\t\t\tconst existingFilters = this.tabulator.getHeaderFilters();\n\t\t\texistingFilters.forEach(filter => {\n\t\t\t\tthis.tabulator.setHeaderFilterValue(filter.field, filter.value);\n\t\t\t});\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tgetFilter() {\n\t\t\tif (this.selectedFilter === null)\n\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilter(wsParams)),\n\t\t\t\t\tnull,\n\t\t\t\t\tthis.render\n\t\t\t\t);\n\t\t\telse\n\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilterById(wsParams)),\n\t\t\t\t\t{\n\t\t\t\t\t\tfilterId: this.selectedFilter\n\t\t\t\t\t},\n\t\t\t\t\tthis.render\n\t\t\t\t);\n\t\t},\n\t\tsetRenderData(data) {\n\t\t\tthis.fetchResult = data;\n\t\t\tthis.filterName = data.filterName;\n\t\t\tthis.dataset = data.dataset;\n\t\t\tthis.datasetMetadata = data.datasetMetadata;\n\n\t\t\tthis.fields = data.fields;\n\t\t\tthis.selectedFields = data.selectedFields;\n\t\t\tthis.filterFields = [];\n\n\t\t\tfor (let i = 0; i < data.datasetMetadata.length; i++)\n\t\t\t{\n\t\t\t\tfor (let j = 0; j < data.filters.length; j++)\n\t\t\t\t{\n\t\t\t\t\tif (data.datasetMetadata[i].name == data.filters[j].name)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet filter = data.filters[j];\n\t\t\t\t\t\tfilter.type = data.datasetMetadata[i].type;\n\n\t\t\t\t\t\tthis.filterFields.push(filter);\n\t\t\t\t\t\t//break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\trender(response) {\n\t\t\tlet data = response;\n\n\t\t\tthis.setRenderData(data);\n\n\t\t\t// If the side menu is active\n\t\t\tif (this.sideMenu === true)\n\t\t\t{\n\t\t\t\tthis.setSideMenu(data);\n\t\t\t}\n\t\t\telse // otherwise use the dropdown in the filter options\n\t\t\t{\n\t\t\t\tthis.setDropDownMenu(data);\n\t\t\t}\n\t\t\tthis.updateTabulator();\n\t\t},\n\t\t/**\n\t\t * Set the menu\n\t\t */\n\t\tsetSideMenu(data) {\n\t\t\tlet filters = data.sideMenu.filters;\n\t\t\tlet personalFilters = data.sideMenu.personalFilters;\n\t\t\tlet filtersArray = [];\n\n\t\t\tfor (let filtersCount = 0; filtersCount < filters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = filters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: filters[filtersCount].filter_id,\n\t\t\t\t\tlink: link + filters[filtersCount].filter_id,\n\t\t\t\t\tdescription: filters[filtersCount].desc,\n\t\t\t\t\tsort: filtersCount,\n\t\t\t\t\tonClickCall: this.handlerGetFilterById\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = personalFilters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: personalFilters[filtersCount].filter_id,\n\t\t\t\t\tlink: link + personalFilters[filtersCount].filter_id,\n\t\t\t\t\tdescription: personalFilters[filtersCount].desc,\n\t\t\t\t\tsubscriptDescription: personalFilters[filtersCount].subscriptDescription,\n\t\t\t\t\tsubscriptLinkClass: personalFilters[filtersCount].subscriptLinkClass,\n\t\t\t\t\tsubscriptLinkValue: personalFilters[filtersCount].subscriptLinkValue,\n\t\t\t\t\tsort: filtersCount,\n\t\t\t\t\tonClickCall: this.handlerGetFilterById,\n\t\t\t\t\tonClickSubscriptCall: this.handlerRemoveCustomFilter\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.availableFilters = filtersArray;\n\n\t\t\tthis.$emit(\n\t\t\t\t'nwNewEntry',\n\t\t\t\t{\n\t\t\t\t\tlink: \"#\",\n\t\t\t\t\tdescription: \"Filters\",\n\t\t\t\t\ticon: \"filter\",\n\t\t\t\t\tchildren: filtersArray\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t * Set the drop down menu\n\t\t */\n\t\tsetDropDownMenu(data) {\n\t\t\tlet filters = data.sideMenu.filters;\n\t\t\tlet personalFilters = data.sideMenu.personalFilters;\n\t\t\tlet filtersArray = [];\n\n\t\t\tfor (let filtersCount = 0; filtersCount < filters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = filters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: filters[filtersCount].filter_id,\n\t\t\t\t\toption: filters[filtersCount].filter_id,\n\t\t\t\t\tdescription: filters[filtersCount].desc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = personalFilters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: personalFilters[filtersCount].filter_id,\n\t\t\t\t\toption: personalFilters[filtersCount].filter_id,\n\t\t\t\t\tdescription: personalFilters[filtersCount].desc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.availableFilters = filtersArray;\n\t\t},\n\t\t/**\n\t\t * Used to start/refresh the FetchCmpt\n\t\t */\n\t\tstartFetchCmpt(apiFunction, apiFunctionParameters, dataFetchedCallback) {\n\t\t\t// Assign the function api of the FetchCmpt binded property\n\t\t\tthis.fetchCmptApiFunction = apiFunction;\n\n\t\t\t// In case a null value is provided set the parameters as an empty object\n\t\t\tif (apiFunctionParameters == null) apiFunctionParameters = {};\n\n\t\t\t// Always needed parameters\n\t\t\tapiFunctionParameters.filterUniqueId = FHC_JS_DATA_STORAGE_OBJECT.called_path + \"/\" + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\t\t\tapiFunctionParameters.filterType = this.filterType;\n\n\t\t\tif (this.uniqueId)\n\t\t\t\tapiFunctionParameters.filterUniqueId += '_' + this.uniqueId;\n\n\t\t\t// Assign parameters to the FetchCmpt binded properties\n\t\t\tthis.fetchCmptApiFunctionParams = apiFunctionParameters;\n\t\t\t// Assign data fetch callback to the FetchCmpt binded properties\n\t\t\tthis.fetchCmptDataFetched = dataFetchedCallback;\n\t\t\t// Set the FetchCmpt binded property refresh to have the component to refresh\n\t\t\t// NOTE: this should be the last one to be called because it triggers the FetchCmpt to start to refresh\n\t\t\tthis.fetchCmptRefresh === true ? this.fetchCmptRefresh = false : this.fetchCmptRefresh = true;\n\t\t},\n\n\t\t// ------------------------------------------------------------------------------------------------------------------\n\t\t// Event handlers\n\n\t\t/**\n\t\t *\n\t\t */\n\t\thandlerSaveCustomFilter(customFilterName) {\n\t\t\tthis.selectedFilter = null;\n\t\t\t//\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.saveCustomFilter(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tcustomFilterName\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\thandlerRemoveCustomFilter(event) {\n\t\t\tlet filterId = event.currentTarget.getAttribute(\"href\").substring(1);\n\t\t\tif (filterId === this.selectedFilter)\n\t\t\t\tthis.selectedFilter = null;\n\t\t\t//\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.removeCustomFilter(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tfilterId: filterId\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\n\t\t/*\n\t\t *\n\t\t */\n\t\thandlerGetFilterById: function(event) {\n\n\t\t\tlet filterId = null;\n\n\t\t\t// Get the attribute href if side menu is rendered\n\t\t\tlet attr = event.currentTarget.getAttribute(\"href\");\n\n\t\t\t// Otherwise get the value of the drop down menu\n\t\t\tif (attr == null)\n\t\t\t{\n\t\t\t\tfilterId = event.currentTarget.value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilterId = attr.substring(1);\n\t\t\t}\n\n\t\t\tthis.switchFilter(filterId);\n\t\t},\n\t\tswitchFilter(filterId) {\n\t\t\tthis.selectedFilter = filterId;\n\t\t\tthis.getFilter();\n\t\t},\n\t\tapplyFilterConfig(filterFields) {\n\t\t\tthis.selectedFilter = null;\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.applyFilterFields(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tfilterFields\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\n\t\t// append child to it's parent\n\t\tappendChild(data, child) {\n\t\t\t// get parent id\n\t\t\tlet parentId = child[this.parentIdField];\n\n\t\t\t// loop thorugh all data\n\t\t\tfor (let parentIdx = 0; parentIdx < data.length; parentIdx++)\n\t\t\t{\n\t\t\t\tlet parent = data[parentIdx];\n\n\t\t\t\t// if it's the parent\n\t\t\t\tif (parent[this.idField] == parentId)\n\t\t\t\t{\n\t\t\t\t\t// create children array if not done yet\n\t\t\t\t\tif (!parent._children) parent._children = [];\n\n\t\t\t\t\t// if child is not included in children array, append the child\n\t\t\t\t\tif (!parent._children.includes(child)) parent._children.push(child);\n\n\t\t\t\t\t// parent found\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// search children for parents\n\t\t\t\telse if (parent._children) this.appendChild(parent._children, child);\n\t\t\t}\n\n\t\t\t// parent not found\n\t\t\treturn false;\n\t\t}\n\t},\n\tbeforeCreate() {\n\t\tif (!this.tableOnly == !this.filterType)\n\t\t\talert('You can not have a filter-type in table-only mode!');\n\t},\n\tcreated() {\n\t\tif (this.sideMenu && (!this.$props.onNwNewEntry || !(this.$props.onNwNewEntry instanceof Function)))\n\t\t\talert('\"nwNewEntry\" listener is mandatory when sideMenu is true');\n\t\tthis.uuid = _uuid++;\n\t\tthis.$emit('uuidDefined', this.uuid)\n\t},\n\tmounted() {\n\t\tthis.initTabulator().then(() => {\n\t\t\tif (!this.tableOnly) {\n\t\t\t\tthis.selectedFilter = window.location.hash ? window.location.hash.slice(1) : null;\n\t\t\t\tthis.render(this.fetchResult);\n\t\t\t}\n\t\t});\n\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\n\t\t
\n\t\t\t
\n\t\t\t\t

\n\t\t\t\t\t{{ title }}\n\t\t\t\t

\n\t\t\t
\n\t\t
\n\t\t
\n\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ selectedData.length }} ausgewählt\n\t\t\t\t\t\t Mit {{ selectedData.length }} ausgewählten:\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t[ {{ filterName }} ]\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\n\t\t\n\t\t
\n\t`\n};\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","export default {\n\tinject: [\n\t\t'$registerToForm'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfeedback: {\n\t\t\t\tsuccess: [],\n\t\t\t\tdanger: []\n\t\t\t}\n\t\t};\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.feedback = {\n\t\t\t\tsuccess: [],\n\t\t\t\tdanger: []\n\t\t\t};\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tconst ts = Date.now();\n\t\t\tthis.feedback[valid ? 'success' : 'danger']\n\t\t\t\t.push(...feedback.map(msg => [msg, ts]));\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$registerToForm)\n\t\t\tthis.$registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t`\n};\n","export default {\n\tcreated(el, binding) {\n\t\tswitch (binding.arg) {\n\t\t\tcase 'tab':\n\t\t\t\tel.style.cursor = 'pointer';\n\t\t\t\tconst [prev, next] = binding.modifiers.vertical ? ['ArrowUp', 'ArrowDown'] : ['ArrowLeft', 'ArrowRight'];\n\t\t\t\tel.addEventListener('click', () => {\n\t\t\t\t\tlet act = el.parentNode.querySelector('[tabindex=\"0\"]');\n\t\t\t\t\tif (act)\n\t\t\t\t\t\tact.tabIndex = -1;\n\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t});\n\t\t\t\tel.addEventListener('focus', () => {\n\t\t\t\t\tel.ariaSelected = \"true\";\n\t\t\t\t});\n\t\t\t\tel.addEventListener('blur', () => {\n\t\t\t\t\tel.ariaSelected = \"false\";\n\t\t\t\t});\n\t\t\t\tel.addEventListener('keydown', e => {\n\t\t\t\t\tswitch (e.code) {\n\t\t\t\t\t\tcase prev:\n\t\t\t\t\t\t\tif (el.previousSibling?.tabIndex !== undefined) {\n\t\t\t\t\t\t\t\tel.previousSibling.tabIndex = 0;\n\t\t\t\t\t\t\t\tel.tabIndex = -1;\n\t\t\t\t\t\t\t\tel.previousSibling.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase next:\n\t\t\t\t\t\t\tif (el.nextSibling?.tabIndex !== undefined) {\n\t\t\t\t\t\t\t\tel.nextSibling.tabIndex = 0;\n\t\t\t\t\t\t\t\tel.tabIndex = -1;\n\t\t\t\t\t\t\t\tel.nextSibling.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Enter':\n\t\t\t\t\t\t\tel.click();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tmounted(el, binding) {\n\t\tswitch (binding.arg) {\n\t\t\tcase 'tab':\n\t\t\t\tlet activetab = -1;\n\t\t\t\tArray.from(el.parentNode.children).forEach((node, index) => {\n\t\t\t\t\tnode.ariaSetSize = el.parentNode.children.length;\n\t\t\t\t\tnode.ariaPosInSet = index;\n\t\t\t\t\tif (node.tabIndex === 0)\n\t\t\t\t\t\tactivetab = index;\n\t\t\t\t});\n\t\t\t\tif (activetab == -1) {\n\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t} else if (el.classList.contains('active')) {\n\t\t\t\t\tel.parentNode.children[activetab].tabIndex = -1;\n\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t} else {\n\t\t\t\t\tel.tabIndex = -1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tbeforeUnmount(el, binding) {\n\t\tswitch (binding.arg) {\n\t\t\tcase 'tab':\n\t\t\t\tif (el.tabIndex === 0) {\n\t\t\t\t\tif (el.previousSibling?.tabIndex !== undefined)\n\t\t\t\t\t\tel.previousSibling.tabIndex = 0;\n\t\t\t\t\telse if (el.nextSibling?.tabIndex !== undefined)\n\t\t\t\t\t\tel.nextSibling.tabIndex = 0;\n\t\t\t\t}\n\t\t\t\tconst pos = parseInt(el.ariaPosInSet);\n\t\t\t\tArray.from(el.parentNode.children).forEach((node, index) => {\n\t\t\t\t\tnode.ariaSetSize = el.parentNode.children.length;\n\t\t\t\t\tif (index > pos)\n\t\t\t\t\t\tnode.ariaPosInSet = index-1;\n\t\t\t\t});\n\t\t\tbreak;\n\t\t}\n\t}\n}","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: url\n\t\t};\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: url\n\t\t};\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: url\n\t\t};\n\t},\n\tsearch(params, studiensemester_kurzbz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/students/search/'\n\t\t\t\t+ encodeURIComponent(studiensemester_kurzbz),\n\t\t\tparams\n\t\t};\n\t},\n\tverband(relative_path) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/students/' + relative_path\n\t\t};\n\t},\n\tgetPerson(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/getPerson',\n\t\t\tparams\n\t\t};\n\t},\n\tadd(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/add',\n\t\t\tparams\n\t\t};\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget(uid) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/getAdressen/' + uid\n\t\t};\n\t},\n\tadd(uid, params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/addNewAddress/' + uid,\n\t\t\tparams\n\t\t};\n\t},\n\tload(address_id){\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/loadAddress/',\n\t\t\tparams: { address_id }\n\t\t};\n\t},\n\tupdate(address_id, params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tparams\n\t\t};\n\t},\n\tdelete(address_id) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/deleteAddress/',\n\t\t\tparams: { address_id }\n\t\t};\n\t},\n\tgetTypes() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/getAdressentypen/'\n\t\t};\n\t},\n\tgetPlaces(plz) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/address/getPlaces/' + plz\n\t\t};\n\t},\n\tgetNations() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/address/getNations/'\n\t\t};\n\t},\n\tgetAllFirmen(){\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/getAllFirmen/'\n\t\t}\n\t}\n};","export default {\n\n\tgetAll(order = null, start = null)\n\t{\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/organisation/studiensemester/getAll',\n\t\t\tparams: { order, start }\n\t\t};\n\t}\n}","export default {\n\n\tgetStudienplaeneBySemester(studiengang_kz, studiensemester_kurzbz, ausbildungssemester, orgform_kurzbz)\n\t{\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/organisation/studienplan/getBySemester',\n\t\t\tparams: { studiengang_kz, studiensemester_kurzbz, ausbildungssemester, orgform_kurzbz },\n\t\t};\n\t}\n}","import {CoreRESTClient} from '../../../../RESTClient.js';\nimport BsModal from '../../../Bootstrap/Modal.js';\nimport FhcForm from '../../../Form/Form.js';\nimport FormValidation from '../../../Form/Validation.js';\nimport FormInput from '../../../Form/Input.js';\nimport accessibility from '../../../../directives/accessibility.js';\n\nimport ApiStvStudents from '../../../../api/factory/stv/students.js';\nimport ApiStvAddress from '../../../../api/factory/stv/kontakt/address.js';\nimport ApiStudiensemester from '../../../../api/factory/studiensemester.js';\nimport ApiStudienplan from '../../../../api/factory/studienplan.js';\n\nvar _uuid = 0;\nconst FORMDATA_DEFAULT = {\n\taddress: {\n\t\tchecked: true,\n\t\tnation: 'A'\n\t},\n\tvorname: '',\n\tnachname: '',\n\tgeburtsnation: 'A',\n\tstaatsbuergerschaft: 'A',\n\tausbildungssemester: 1,\n\torgform_kurzbz: '',\n\tstudienplan_id: ''\n};\n\nexport default {\n\tcomponents: {\n\t\tBsModal,\n\t\tFhcForm,\n\t\tFormValidation,\n\t\tFormInput\n\t},\n\tdirectives: {\n\t\taccessibility\n\t},\n\tinject: [\n\t\t'lists'\n\t],\n\temits: ['saved'],\n\tprops: {\n\t\tpersonOnly: Boolean,\n\t\tstudiengangKz: Number,\n\t\tstudiensemesterKurzbz: String\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tplaces: [],\n\t\t\tformData: null,\n\t\t\tsuggestions: {},\n\t\t\tperson: null,\n\t\t\tsemester: [],\n\t\t\tstudienplaene: [],\n\t\t\tabortController: {\n\t\t\t\tsuggestions: null,\n\t\t\t\tplaces: null\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\tformDataPerson() {\n\t\t\tif (this.person)\n\t\t\t\treturn this.person;\n\t\t\treturn this.formData;\n\t\t},\n\t\torte() {\n\t\t\treturn this.places.filter(ort => ort.name == this.formData?.address.gemeinde);\n\t\t},\n\t\tgemeinden() {\n\t\t\treturn Object.values(this.places.reduce((res,place) => {\n\t\t\t\tres[place.name] = place;\n\t\t\t\treturn res;\n\t\t\t}, {}));\n\t\t},\n\t\tformDataStg: {\n\t\t\tget() {\n\t\t\t\treturn this.formData?.studiengang_kz !== undefined ? this.formData?.studiengang_kz : this.studiengangKz;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.formData.studiengang_kz = v;\n\t\t\t}\n\t\t},\n\t\tformDataSem: {\n\t\t\tget() {\n\t\t\t\treturn this.formData?.studiensemester_kurzbz !== undefined ? this.formData?.studiensemester_kurzbz : this.studiensemesterKurzbz;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.formData.studiensemester_kurzbz = v;\n\t\t\t}\n\t\t}\n\t},\n\twatch: {\n\t\tformDataStg() {\n\t\t\tthis.loadStudienplaene();\n\t\t},\n\t\tformDataSem() {\n\t\t\tthis.loadStudienplaene();\n\t\t}\n\t},\n\tmethods: {\n\t\topen() {\n\t\t\tthis.$refs.modal.show();\n\t\t},\n\t\treset() {\n\t\t\tthis.formData = JSON.parse(JSON.stringify(FORMDATA_DEFAULT));\n\t\t\tthis.person = null;\n\t\t\tthis.suggestions = [];\n\t\t\tif (this.$refs.form) this.$refs.form.clearValidation();\n\t\t},\n\t\tloadSuggestions() {\n\t\t\tif (this.abortController.suggestions)\n\t\t\t\tthis.abortController.suggestions.abort();\n\t\t\tif (this.person !== null)\n\t\t\t\treturn;\n\n\t\t\tthis.abortController.suggestions = new AbortController();\n\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStvStudents.getPerson({\n\t\t\t\t\tvorname: this.formData?.vorname,\n\t\t\t\t\tnachname: this.formData?.nachname,\n\t\t\t\t\tgebdatum: this.formData?.gebdatum\n\t\t\t\t}), {\n\t\t\t\t\tsignal: this.abortController.suggestions.signal\n\t\t\t\t})\n\t\t\t\t.then(result => this.suggestions = result.data)\n\t\t\t\t.catch(error => {\n\n\t\t\t\t\tif (error.code == 'ERR_BAD_REQUEST') {\n\t\t\t\t\t\treturn this.suggestions = [];\n\t\t\t\t\t}\n\n\t\t\t\t\t// NOTE(chris): repeat request\n\t\t\t\t\tif (error.code != \"ERR_CANCELED\")\n\t\t\t\t\t\twindow.setTimeout(this.loadSuggestions, 100);\n\t\t\t\t});\n\t\t},\n\t\tloadPlaces() {\n\t\t\tif (this.abortController.places)\n\t\t\t\tthis.abortController.places.abort();\n\t\t\tif (this.formData?.address?.nation != 'A' || !this?.formData?.address?.plz)\n\t\t\t\treturn;\n\n\t\t\tthis.abortController.places = new AbortController();\n\t\t\tthis.$refs.form.call(\n\t\t\t\tApiStvAddress.getPlaces(this.formData?.address.plz)\n\t\t\t\t//~ undefined,\n\t\t\t\t//~ {\n\t\t\t\t\t//~ signal: this.abortController.places.signal\n\t\t\t\t//~ }\n\t\t\t)\n\t\t\t.then(result => {\n\t\t\t\tthis.places = result.data\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code != \"ERR_CANCELED\")\n\t\t\t\t\twindow.setTimeout(this.loadPlaces, 100);\n\t\t\t\telse\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t});\n\t\t},\n\t\tloadStudienplaene() {\n\t\t\tif (this.formDataStg) {\n\t\t\t\tthis.$api\n\t\t\t\t\t.call(ApiStudienplan.getStudienplaeneBySemester(\n\t\t\t\t\t\tthis.formDataStg,\n\t\t\t\t\t\tthis.formDataSem,\n\t\t\t\t\t\tthis.formData?.ausbildungssemester,\n\t\t\t\t\t\tthis.formData?.orgform_kurzbz\n\t\t\t\t\t))\n\t\t\t\t\t.then(result => result.data || [])\n\t\t\t\t\t.then(result => {\n\t\t\t\t\t\tthis.studienplaene = result;\n\t\t\t\t\t\tif (this.formData?.studienplan_id !== '' && !this.studienplaene.filter(plan => plan.studienplan_id == this.formData?.studienplan_id).length)\n\t\t\t\t\t\t\tthis.formData.studienplan_id = '';\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tif (error.code == 'ERR_BAD_REQUEST') {\n\t\t\t\t\t\t\treturn this.studienplaene = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// NOTE(chris): repeat request\n\t\t\t\t\t\tif (error.code != \"ERR_CANCELED\")\n\t\t\t\t\t\t\twindow.setTimeout(this.loadStudienplaene, 100);\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tchangeAddressNation(e) {\n\t\t\tif (this.formData.geburtsnation == this.formData?.address.nation)\n\t\t\t\tthis.formData.geburtsnation = e.target.value;\n\t\t\tif (this.formData.staatsbuergerschaft == this.formData?.address.nation)\n\t\t\t\tthis.formData.staatsbuergerschaft = e.target.value;\n\t\t\tthis.loadPlaces();\n\t\t},\n\t\tsend(e) {\n\t\t\tif (this.person === null)\n\t\t\t\treturn this.person = 0;\n\n\t\t\t//this.$fhcAlert.resetFormValidation(this.$refs.form);\n\t\t\tconst data = {...this.formData, ...(this.person || {})};\n\t\t\tif (data.studiengang_kz === undefined)\n\t\t\t\tdata.studiengang_kz = this.studiengangKz;\n\t\t\tif (data.studiensemester_kurzbz === undefined)\n\t\t\t\tdata.studiensemester_kurzbz = this.studiensemesterKurzbz;\n\n\t\t\tdata.personOnly = this.personOnly;\n\n\t\t\tthis.$refs.form.call(\n\t\t\t\tApiStvStudents.add(data)\n\t\t\t)\n\t\t\t.then(result => {\n\t\t\t\tthis.$emit('saved', result.data);\n\t\t\t\tthis.$fhcAlert.alertSuccess('Gespeichert');\n\t\t\t\tthis.$refs.modal.hide();\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tsetPerson(suggestion)\n\t\t{\n\t\t\tthis.person = suggestion;\n\t\t\tthis.formData.address.checked = false;\n\t\t},\n\t\tdateFormatter(val)\n\t\t{\n\t\t\tif (!val)\n\t\t\t\treturn '';\n\t\t\tlet date = new Date(val);\n\t\t\treturn date.toLocaleDateString('de-AT', {\n\t\t\t\t\"day\": \"2-digit\",\n\t\t\t\t\"month\": \"2-digit\",\n\t\t\t\t\"year\": \"numeric\"\n\t\t\t});\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.uuid = _uuid++;\n\t\tthis.reset();\n\t\tthis.$api.call(ApiStudiensemester.getAll())\n\t\t.then(result => result.data || [])\n\t\t.then(result => {\n\t\t\tthis.semester = result;\n\t\t})\n\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\ttemplate: `\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tconfigFilter() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/config/filter'\n\t\t};\n\t},\n\tconfigStudent() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/config/student'\n\t\t};\n\t},\n\tconfigStudents() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/config/students'\n\t\t};\n\t}\n};","import FilterItem from './Filter/Item.js';\n\nimport ApiStvApp from '../../../../api/factory/stv/app.js';\n\nexport default {\n\tname: \"ListPrestudentsFilter\",\n\tcomponents: {\n\t\tFilterItem\n\t},\n\temits: [\n\t\t'change'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfilters: [],\n\t\t\tfilterConfig: [// TODO(chris): get from BE!\n\t\t\t\t{\n\t\t\t\t\tname: 'stv/konto_filter_count_0',\n\t\t\t\t\ttype: 'konto',\n\t\t\t\t\tfixed: {\n\t\t\t\t\t\tmissing: true,\n\t\t\t\t\t\tusestdsem: true\n\t\t\t\t\t},\n\t\t\t\t\tdynamic: {\n\t\t\t\t\t\tbuchungstyp_kurzbz: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\ttest1: 'Test1',\n\t\t\t\t\t\t\t\ttest2: 'Test2'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'stv/konto_filter_missing_counter',\n\t\t\t\t\ttype: 'konto_counter',\n\t\t\t\t\tdynamic: {\n\t\t\t\t\t\tbuchungstyp_kurzbz: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\ttest1: 'Test1',\n\t\t\t\t\t\t\t\ttest2: 'Test2'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsamestg: {\n\t\t\t\t\t\t\ttype: 'bool',\n\t\t\t\t\t\t\tlabel: 'stv/konto',\n\t\t\t\t\t\t\tdefault: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t},\n\tcomputed: {\n\t\tcleanFilters() {\n\t\t\treturn this.filters.filter(filter => {\n\t\t\t\tif (!filter.type)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Object.values(filter).some(v => v === undefined))\n\t\t\t\t\treturn false;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\t},\n\twatch: {\n\t\tcleanFilters(n) {\n\t\t\tthis.$emit('change', n);\n\t\t}\n\t},\n\tmethods: {\n\t\tadd() {\n\t\t\tthis.filters.push({});\n\t\t},\n\t\tremove(index) {\n\t\t\tthis.filters.splice(index, 1);\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.$api\n\t\t\t.call(ApiStvApp.configFilter())\n\t\t\t.then(result => {\n\t\t\t\tthis.filterConfig = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\ttemplate: /* html */`\n\t
\n\t\t\n\t\t\n\t
`\n};\n","export default {\n\tname: \"FilterItem\",\n\tprops: {\n\t\tmodelValue: Object,\n\t\tfilterConfig: Array\n\t},\n\temits: [\n\t\t'update:modelValue',\n\t\t'remove'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\t//type: this.modelValue.type\n\t\t};\n\t},\n\tcomputed: {\n\t\tvalue: {\n\t\t\tget() {\n\t\t\t\treturn this.modelValue;\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.$emit('update:modelValue', value);\n\t\t\t}\n\t\t},\n\t\tfilterid: {\n\t\t\tget() {\n\t\t\t\treturn this.modelValue.filterid\n\t\t\t},\n\t\t\tset(filterid) {\n\t\t\t\tconst config = this.filterConfig.find(config => config.id == filterid);\n\t\t\t\tconst dynamic = Object.fromEntries(\n\t\t\t\t\tObject.keys(config.dynamic || {}).map(key => {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tconfig.dynamic[key].default\n\t\t\t\t\t\t];\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\tthis.value = {\n\t\t\t\t\tfilterid,\n\t\t\t\t\ttype: config.type,\n\t\t\t\t\t...(config.fixed || {}),\n\t\t\t\t\t...dynamic\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tcurrentConfig() {\n\t\t\treturn this.filterConfig.find(config => config.id == this.filterid);\n\t\t}\n\t},\n\tmethods: {\n\t\tupdate() {\n\t\t\tthis.$emit('update:modelValue', this.value);\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t
\n\t\t\n\t\t\t{{ $p.t('stv/filter_for') }}\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t{{ filter.label }}\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t
`\n};\n","export function capitalize(string) {\n\tif (!string) return '';\n\treturn string[0].toUpperCase() + string.slice(1);\n}","import { setTransferData, convertToValidDragObject } from '../helpers/DragAndDrop.js';\n\nconst EFFECTS = [\n\t'none',\n\t'copy',\n\t'copyLink',\n\t'copyMove',\n\t'link',\n\t'linkMove',\n\t'move',\n\t'all',\n\t'uninitialized'\n];\n\nexport default {\n\tmounted(el, binding) {\n\t\tupdateValue(el, binding.value);\n\t\tupdateEffectAllowed(el, binding.arg);\n\n\t\t// if modifier capture is set we assume it's on a parent element\n\t\t// i.e: for dragging multiple elements\n\t\t// otherwise set draggable attribute\n\t\tif (!binding.modifiers.capture) {\n\t\t\tel.draggable = true;\n\t\t}\n\n\t\tconst bcc = new BroadcastChannel('fhc-dnd');\n\t\tlet blocked = false;\n\n\t\tfunction onStart(evt) {\n\t\t\tconst value = el.dataset.fhcDraggableValue;\n\t\t\tif (value) {\n\t\t\t\tsetTransferData(evt, JSON.parse(value), true);\n\t\t\t\tif (el.dataset.fhcEffectAllowed)\n\t\t\t\t\tevt.dataTransfer.effectAllowed = el.dataset.fhcEffectAllowed;\n\n\t\t\t\tbcc.onmessage = e => {\n\t\t\t\t\tif (e.data == 'block') {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t} else if (e.data == 'release') {\n\t\t\t\t\t\tlet evt = null;\n\t\t\t\t\t\tif (blocked && blocked.evt) {\n\t\t\t\t\t\t\tevt = blocked.evt;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\tif (evt)\n\t\t\t\t\t\t\tel.dispatchEvent(evt);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tevt.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tfunction onEnd(evt) {\n\t\t\tif (blocked) {\n\t\t\t\tblocked = {\n\t\t\t\t\tevt,\n\t\t\t\t\tdt: evt.dataTransfer\n\t\t\t\t};\n\t\t\t\tevt.stopPropagation();\n\t\t\t\tel.dispatchEvent(new DragEvent(\"beforedragend\", evt));\n\t\t\t} else {\n\t\t\t\tbcc.onmessage = () => {};\n\t\t\t}\n\t\t}\n\t\tel.addEventListener('dragstart', onStart, binding.modifiers.capture);\n\n\t\tel.addEventListener('dragend', onEnd, true);\n\n\t\tel.fhcDraggableCleanup = () => {\n\t\t\tel.removeEventListener('dragstart', onStart, binding.modifiers.capture);\n\t\t\tel.removeEventListener('dragend', onEnd, true);\n\t\t};\n\t},\n\tupdated(el, binding) {\n\t\tupdateValue(el, binding.value);\n\t\tupdateEffectAllowed(el, binding.arg);\n\t},\n\tbeforeUnmount(el) {\n\t\tel.fhcDraggableCleanup();\n\t\tdelete el.fhcDraggableCleanup;\n\t}\n}\n\n// Helper functions\nfunction updateValue(el, value) {\n\tvalue = convertToValidDragObject(value);\n\tif (value) {\n\t\tel.dataset.fhcDraggableValue = JSON.stringify(value);\n\t} else if (el.dataset.fhcDraggableValue) {\n\t\tdelete el.dataset.fhcDraggableValue;\n\t}\n}\nfunction updateEffectAllowed(el, effectAllowed) {\n\tif (effectAllowed && EFFECTS.includes(effectAllowed)) {\n\t\tel.dataset.fhcEffectAllowed = effectAllowed;\n\t} else if (el.dataset.fhcEffectAllowed) {\n\t\tdelete el.dataset.fhcEffectAllowed;\n\t}\n}\n","import {CoreFilterCmpt} from \"../../filter/Filter.js\";\nimport ListNew from './List/New.js';\nimport ListFilter from './List/Filter.js';\n\nimport { capitalize } from '../../../helpers/StringHelpers.js';\n\nimport draggable from '../../../directives/draggable.js';\n\nexport default {\n\tname: \"ListPrestudents\",\n\tcomponents: {\n\t\tCoreFilterCmpt,\n\t\tListNew,\n\t\tListFilter\n\t},\n\tdirectives: {\n\t\tdraggable\n\t},\n\tinject: {\n\t\tlists: {\n\t\t\tfrom: 'lists',\n\t\t\trequired: true\n\t\t},\n\t\t$reloadList: {\n\t\t\tfrom: '$reloadList',\n\t\t\trequired: true\n\t\t},\n\t\tcurrentSemester: {\n\t\t\tfrom: 'currentSemester',\n\t\t\trequired: true\n\t\t}\n\t},\n\tprops: {\n\t\tselected: Array,\n\t\tstudiengangKz: Number,\n\t\tstudiensemesterKurzbz: String\n\t},\n\temits: [\n\t\t'update:selected'\n\t],\n\tdata() {\n\t\tfunction dateFormatter(cell)\n\t\t{\n\t\t\tlet val = cell.getValue();\n\t\t\tif (!val)\n\t\t\t\treturn ' ';\n\t\t\tlet date = new Date(val);\n\t\t\treturn date.toLocaleDateString('de-AT', {\n\t\t\t\t\"day\": \"2-digit\",\n\t\t\t\t\"month\": \"2-digit\",\n\t\t\t\t\"year\": \"numeric\"\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\ttabulatorOptions: {\n\t\t\t\tcolumns:[\n\t\t\t\t\t{title:\"UID\", field:\"uid\", headerFilter: true},\n\t\t\t\t\t{title:\"TitelPre\", field:\"titelpre\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Nachname\", field:\"nachname\", headerFilter: true},\n\t\t\t\t\t{title:\"Vorname\", field:\"vorname\", headerFilter: true},\n\t\t\t\t\t{title:\"Wahlname\", field:\"wahlname\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"Vornamen\", field:\"vornamen\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"TitelPost\", field:\"titelpost\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Ersatzkennzeichen\", field:\"ersatzkennzeichen\", headerFilter: true},\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: \"Geburtsdatum\",\n\t\t\t\t\t\tfield: \"gebdatum\",\n\t\t\t\t\t\tformatter: dateFormatter, \n\t\t\t\t\t\theaderFilter: true,\n\t\t\t\t\t\theaderFilterFunc(headerValue, rowValue) {\n\t\t\t\t\t\t\tconst matches = headerValue.match(/^(([0-9]{2})\\.)?([0-9]{2})\\.([0-9]{4})?$/);\n\t\t\t\t\t\t\tlet comparestr = headerValue;\n\t\t\t\t\t\t\tif(matches !== null) {\n\t\t\t\t\t\t\t\tconst year = (matches[4] !== undefined) ? matches[4] : '';\n\t\t\t\t\t\t\t\tconst month = matches[3];\n\t\t\t\t\t\t\t\tconst day = (matches[2] !== undefined) ? matches[2] : '';\n\t\t\t\t\t\t\t\tcomparestr = year + '-' + month + '-' + day;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rowValue.match(comparestr);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{title:\"Geschlecht\", field:\"geschlecht\", headerFilter: \"list\", headerFilterParams: {values:{'m':'männlich','w':'weiblich','x':'divers','u':'unbekannt'}, listOnEmpty:true, autocomplete:true}},\n\t\t\t\t\t{title:\"Sem.\", field:\"semester\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Verb.\", field:\"verband\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Grp.\", field:\"gruppe\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Studiengang\", field:\"studiengang\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Studiengang_kz\", field:\"studiengang_kz\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"Personenkennzeichen\", field:\"matrikelnr\", headerFilter: true},\n\t\t\t\t\t{title:\"PersonID\", field:\"person_id\", headerFilter: true},\n\t\t\t\t\t{title:\"Status\", field:\"status\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Status Datum\", field:\"status_datum\", visible:false, formatter:dateFormatter},\n\t\t\t\t\t{title:\"Status Bestaetigung\", field:\"status_bestaetigung\", visible:false, formatter:dateFormatter, headerFilter: true},\n\t\t\t\t\t{title:\"EMail (Privat)\", field:\"mail_privat\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"EMail (Intern)\", field:\"mail_intern\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"Anmerkungen\", field:\"anmerkungen\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"AnmerkungPre\", field:\"anmerkung\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"OrgForm\", field:\"orgform_kurzbz\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Aufmerksamdurch\", field:\"aufmerksamdurch_kurzbz\", visible:false},\n\t\t\t\t\t{title:\"Gesamtpunkte\", field:\"punkte\", visible:false},\n\t\t\t\t\t{title:\"Aufnahmegruppe\", field:\"aufnahmegruppe_kurzbz\", visible:false},\n\t\t\t\t\t{title:\"Dual\", field:\"dual\", visible:false, \n\t\t\t\t\t\tformatter:'tickCross', formatterParams: {\n\t\t\t\t\t\t\ttickElement: '',\n\t\t\t\t\t\t\tcrossElement: ''\n\t\t\t\t\t\t},\t\t\t\t\t\t\n\t\t\t\t\t\theaderFilter:\"tickCross\", headerFilterParams: {\n\t\t\t\t\t\t\t\"tristate\":true, elementAttributes:{\"value\":\"true\"}\n\t\t\t\t\t\t}, headerFilterEmptyCheck:function(value){return value === null}\n\t\t\t\t\t},\n\t\t\t\t\t{title:\"Matrikelnummer\", field:\"matr_nr\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"Studienplan\", field:\"studienplan_bezeichnung\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"PreStudentInnenID\", field:\"prestudent_id\", headerFilter: true},\n\t\t\t\t\t{title:\"Priorität\", field:\"priorisierung_relativ\"},\n\t\t\t\t\t{title:\"Mentor\", field:\"mentor\", visible:false},\n\t\t\t\t\t{title:\"Aktiv\", field:\"bnaktiv\", visible:false, \n\t\t\t\t\t\tformatter:'tickCross', formatterParams: {\n\t\t\t\t\t\t\tallowEmpty:true,\n\t\t\t\t\t\t\ttickElement: '',\n\t\t\t\t\t\t\tcrossElement: ''\n\t\t\t\t\t\t},\t\t\t\t\t\t\n\t\t\t\t\t\theaderFilter:\"tickCross\", headerFilterParams: {\n\t\t\t\t\t\t\t\"tristate\":true, elementAttributes:{\"value\":\"true\"}\n\t\t\t\t\t\t}, headerFilterEmptyCheck:function(value){return value === null}\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\trowFormatter(row) {\n\t\t\t\t\tif (row.getData().bnaktiv === false) {\n\t\t\t\t\t\trow.getElement().classList.add('text-black','text-opacity-50','fst-italic');\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tajaxRequestFunc: (url, config, params) => {\n\t\t\t\t\tif( url === '' ) \n\t\t\t\t\t{\n\t\t\t\t\t\treturn Promise.resolve({ data: []});\n\t\t\t\t\t}\n\t\t\t\t\t/**\n\t\t\t\t\t * NOTE(chris): Because of a bug in Tabulator\n\t\t\t\t\t * we need to get the params from elsewhere.\n\t\t\t\t\t * @see https://github.com/olifolkerd/tabulator/issues/4318\n\t\t\t\t\t */\n\t\t\t\t\tconst apiconfig = {\n\t\t\t\t\t\t...this.tabulatorOptions.ajaxConfig,\n\t\t\t\t\t\turl: this.tabulatorOptions.ajaxURL,\n\t\t\t\t\t\tparams: this.tabulatorOptions.ajaxParams\n\t\t\t\t\t};\n\t\t\t\t\treturn this.$api.call(apiconfig);\n\t\t\t\t},\n\t\t\t\tajaxResponse: (url, params, response) => {\n\t\t\t\t\treturn response?.data;\n\t\t\t\t},\n\n\t\t\t\tlayout: 'fitDataStretch',\n\t\t\t\tlayoutColumnsOnNewData: false,\n\t\t\t\theight: '100%',\n\t\t\t\tselectable: true,\n\t\t\t\tselectableRangeMode: 'click',\n\t\t\t\tindex: 'prestudent_id',\n\t\t\t\tpersistenceID: 'stv-list'\n\t\t\t},\n\t\t\ttabulatorEvents: [\n\t\t\t\t{\n\t\t\t\t\tevent: 'rowSelectionChanged',\n\t\t\t\t\thandler: this.rowSelectionChanged\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tevent: 'dataProcessed',\n\t\t\t\t\thandler: this.autoSelectRows\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tevent: 'dataLoaded',\n\t\t\t\t\thandler: data => this.count = data.length\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tevent: 'dataFiltered',\n\t\t\t\t\thandler: (filters, rows) => this.filteredcount = rows.length\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tevent: 'rowClick',\n\t\t\t\t\thandler: this.handleRowClick // TODO(chris): this should be in the filter component\n\t\t\t\t}\n\t\t\t],\n\t\t\tfocusObj: null, // TODO(chris): this should be in the filter component\n\t\t\tlastSelected: null,\n\t\t\tfilter: [],\n\t\t\tcount: 0,\n\t\t\tfilteredcount: 0,\n\t\t\tselectedcount: 0,\n\t\t\tcurrentEndpoint: null\n\t\t}\n\t},\n\tcomputed: {\n\t\tcountsToHTML: function() {\n\t\t\treturn this.$p.t('global/ausgewaehlt')\n\t\t\t\t+ ': ' + (this.selectedcount || 0) + ''\n\t\t\t\t+ ' | '\n\t\t\t\t+ this.$p.t('global/gefiltert')\n\t\t\t\t+ ': '\n\t\t\t\t+ '' + (this.filteredcount || 0) + ''\n\t\t\t\t+ ' | '\n\t\t\t\t+ this.$p.t('global/gesamt')\n\t\t\t\t+ ': ' + (this.count || 0) + '';\n\t\t},\n\t\tselectedDragObject() {\n\t\t\treturn this.selected.map(item => {\n\t\t\t\tlet type, id;\n\t\t\t\tif (item.uid) {\n\t\t\t\t\ttype = 'student';\n\t\t\t\t\tid = item.uid;\n\t\t\t\t} else if (item.prestudent_id) {\n\t\t\t\t\ttype = 'prestudent';\n\t\t\t\t\tid = item.prestudent_id;\n\t\t\t\t} else if (item.person_id) {\n\t\t\t\t\ttype = 'person';\n\t\t\t\t\tid = item.person_id;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\ttype,\n\t\t\t\t\tid\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tdownloadConfig() {\n\t\t\treturn {\n\t\t\t\tcsv: {\n\t\t\t\t\tformatter: 'csv',\n\t\t\t\t\tfile: this.fileString,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tdelimiter: ';',\n\t\t\t\t\t\tbom: true,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tfileString() {\n\t\t\tlet today = new Date().toLocaleDateString('en-GB')\n\t\t\t\t.replace(/\\//g, '_');\n\t\t\treturn \"StudentList_\" + today + \".csv\";\n\t\t}\n\t},\n\twatch: {\n\t\t'$p.user_language.value'(n, o) {\n\t\t\tif (n !== o && o !== undefined && this.$refs.table.tableBuilt) {\n\t\t\t\tthis.translateTabulator();\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\ttranslateTabulator() {\n\t\t\tthis.$p\n\t\t\t\t.loadCategory(['global', 'person', 'lehre', 'ui', 'profilUpdate', 'admission', 'stv'])\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst translations = {\n\t\t\t\t\t\tuid: capitalize(this.$p.t('person/uid')),\n\t\t\t\t\t\ttitelpre: capitalize(this.$p.t('person/titelpre')),\n\t\t\t\t\t\tnachname: capitalize(this.$p.t('person/nachname')),\n\t\t\t\t\t\tvorname: capitalize(this.$p.t('person/vorname')),\n\t\t\t\t\t\twahlname: capitalize(this.$p.t('person/wahlname')),\n\t\t\t\t\t\tvornamen: capitalize(this.$p.t('person/vornamen')),\n\t\t\t\t\t\ttitelpost: capitalize(this.$p.t('person/titelpost')),\n\t\t\t\t\t\tersatzkennzeichen: capitalize(this.$p.t('person/ersatzkennzeichen')),\n\t\t\t\t\t\tgebdatum: capitalize(this.$p.t('person/geburtsdatum')),\n\t\t\t\t\t\tgeschlecht: capitalize(this.$p.t('person/geschlecht')),\n\t\t\t\t\t\tsemester: capitalize(this.$p.t('lehre/sem')),\n\t\t\t\t\t\tverband: capitalize(this.$p.t('lehre/verb')),\n\t\t\t\t\t\tgruppe: capitalize(this.$p.t('lehre/grp')),\n\t\t\t\t\t\tstudiengang: capitalize(this.$p.t('lehre/studiengang')),\n\t\t\t\t\t\tstudiengang_kz: capitalize(this.$p.t('lehre/studiengang_kz')),\n\t\t\t\t\t\tmatrikelnr: capitalize(this.$p.t('person/personenkennzeichen')),\n\t\t\t\t\t\tperson_id: capitalize(this.$p.t('person/person_id')),\n\t\t\t\t\t\tstatus: capitalize(this.$p.t('global/status')),\n\t\t\t\t\t\tstatus_datum: capitalize(this.$p.t('profilUpdate/statusDate')),\n\t\t\t\t\t\tstatus_bestaetigung: capitalize(this.$p.t('global/status_bestaetigung')),\n\t\t\t\t\t\tmail_privat: capitalize(this.$p.t('person/email_private')),\n\t\t\t\t\t\tmail_intern: capitalize(this.$p.t('person/email_intern')),\n\t\t\t\t\t\tanmerkungen: capitalize(this.$p.t('stv/notes_person')),\n\t\t\t\t\t\tanmerkung: capitalize(this.$p.t('stv/notes_prestudent')),\n\t\t\t\t\t\torgform_kurzbz: capitalize(this.$p.t('lehre/orgform')),\n\t\t\t\t\t\taufmerksamdurch_kurzbz: capitalize(this.$p.t('person/aufmerksamDurch')),\n\t\t\t\t\t\tpunkte: capitalize(this.$p.t('admission/gesamtpunkte')),\n\t\t\t\t\t\taufnahmegruppe_kurzbz: capitalize(this.$p.t('stv/aufnahmegruppe_kurzbz')),\n\t\t\t\t\t\tdual: capitalize(this.$p.t('lehre/dual_short')),\n\t\t\t\t\t\tmatr_nr: capitalize(this.$p.t('person/matrikelnummer')),\n\t\t\t\t\t\tstudienplan_bezeichnung: capitalize(this.$p.t('lehre/studienplan')),\n\t\t\t\t\t\tprestudent_id: capitalize(this.$p.t('ui/prestudent_id')),\n\t\t\t\t\t\tpriorisierung_relativ: capitalize(this.$p.t('lehre/prioritaet')),\n\t\t\t\t\t\tmentor: capitalize(this.$p.t('stv/mentor')),\n\t\t\t\t\t\tbnaktiv: capitalize(this.$p.t('person/aktiv'))\n\t\t\t\t\t};\n\n\t\t\t\t\t/** NOTE(chris):\n\t\t\t\t\t * use this approach because updateDefinition\n\t\t\t\t\t * on the Tabulator columns is way slower and\n\t\t\t\t\t * freezes up the GUI.\n\t\t\t\t\t */\n\t\t\t\t\t// Overwrite definition for column show/hide\n\t\t\t\t\tthis.$refs.table.tabulator.getColumns().forEach(col => {\n\t\t\t\t\t\tconst trans = translations[col.getField()];\n\t\t\t\t\t\tif (!trans)\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tcol.getDefinition().title = trans;\n\t\t\t\t\t});\n\t\t\t\t\t// Overwrite node in dom\n\t\t\t\t\tthis.$refs.table.tabulator.element\n\t\t\t\t\t\t.querySelectorAll('.tabulator-col[tabulator-field]')\n\t\t\t\t\t\t.forEach(el => {\n\t\t\t\t\t\t\tconst field = el.getAttribute('tabulator-field');\n\t\t\t\t\t\t\tif (!translations[field])\n\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\tconst title = el.querySelector('.tabulator-col-title');\n\t\t\t\t\t\t\tif (!title)\n\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\ttitle.innerText = translations[field];\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t\treload() {\n\t\t\tthis.$refs.table.reloadTable();\n\t\t},\n\t\tactionNewPrestudent() {\n\t\t\tthis.$refs.new.open();\n\t\t},\n\t\trowSelectionChanged(data, rows) {\n\t\t\tthis.selectedcount = data.length;\n\t\t\tthis.lastSelected = this.selected;\n\t\t\tthis.$emit('update:selected', data);\n\n\t\t\t// set selected elements draggable\n\t\t\tconst tableEl = this.$refs.table?.$refs?.table;\n\t\t\tif (tableEl) {\n\t\t\t\tconst oldDragables = tableEl.querySelectorAll('[draggable]');\n\t\t\t\tfor (const draggable of oldDragables)\n\t\t\t\t\tdraggable.removeAttribute('draggable');\n\t\t\t}\n\t\t\trows.forEach(row => row.getElement().draggable = true);\n\t\t},\n\t\tautoSelectRows(data) {\n\t\t\tif (this.lastSelected) {\n\t\t\t\t// NOTE(chris): reselect rows on refresh\n\t\t\t\tlet selected = this.lastSelected.map(el => this.$refs.table.tabulator.getRow(el.prestudent_id))\n\t\t\t\t// TODO(chris): unselect current item if it's no longer in the table?\n\t\t\t\t// or maybe reselect only the last one?\n\t\t\t\tselected = selected.filter(el => el);\n\n\t\t\t\tif (selected.length)\n\t\t\t\t\tthis.$refs.table.tabulator.selectRow(selected);\n\t\t\t} else if(this.lastSelected === undefined) {\n\t\t\t\t// NOTE(chris): select row if it's the only one (preferably only on startup)\n\t\t\t\tif (data.length == 1) {\n\t\t\t\t\tthis.$refs.table.tabulator.selectRow(this.$refs.table.tabulator.getRows());\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tupdateFilter(filter) {\n\t\t\tthis.filter = filter;\n\t\t\tthis.updateUrl();\n\t\t},\n\t\tupdateUrl(endpoint, first) {\n\t\t\tthis.lastSelected = first ? undefined : this.selected;\n\n\t\t\tconsole.log('function param endpoint: ' + JSON.stringify(endpoint));\n\t\t\tconsole.log('current endpoint: ' + JSON.stringify(this.currentEndpoint));\n\n\t\t\tif( endpoint === undefined && this.currentEndpoint === null)\n\t\t\t{\n\t\t\t\tendpoint = { url: '' };\n\t\t\t}\n\t\t\telse if( endpoint === undefined )\n\t\t\t{\n\t\t\t\tendpoint = JSON.parse(JSON.stringify(this.currentEndpoint));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.currentEndpoint = JSON.parse(JSON.stringify(endpoint));\n\t\t\t}\n\n\t\t\tendpoint.url = endpoint.url.replace(\n\t\t\t\t'CURRENT_SEMESTER',\n\t\t\t\tencodeURIComponent(this.currentSemester)\n\t\t\t\t);\n\n\t\t\tconst params = (endpoint?.params !== undefined) ? endpoint.params : {};\n\t\t\tlet method = (endpoint?.method !== undefined) ? endpoint.method : 'get';\n\t\t\tif (this.filter.length && !endpoint.url.match(/\\/search\\//))\n\t\t\t{\n\t\t\t\tparams.filter = this.filter;\n\t\t\t\tmethod = 'post';\n\t\t\t}\n\n\t\t\tthis.tabulatorOptions.ajaxURL = endpoint.url;\n\t\t\tthis.tabulatorOptions.ajaxParams = { ...params };\n\t\t\tthis.tabulatorOptions.ajaxConfig = {method};\n\t\t\tif (!this.$refs.table.tableBuilt) {\n\t\t\t\tif (this.$refs.table.tabulator) {\n\t\t\t\t\tthis.$refs.table.tabulator.on(\"tableBuilt\", () => {\n\t\t\t\t\t\tthis.$refs.table.tabulator.setData(endpoint.url, params, method);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else\n\t\t\t\tthis.$refs.table.tabulator.setData(endpoint.url, params, method);\n\t\t},\n\t\tdragCleanup(evt) {\n\t\t\tif (evt.dataTransfer.dropEffect == 'none')\n\t\t\t\treturn; // aborted or wrong target\n\t\t\t\n\t\t\tthis.$reloadList();\n\t\t},\n\t\tonKeydown(e) { // TODO(chris): this should be in the filter component\n\t\t\tif (!this.focusObj)\n\t\t\t\treturn;\n\n\t\t\tvar next;\n\t\t\tswitch (e.code) {\n\t\t\t\tcase 'Enter':\n\t\t\t\tcase 'Space':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar e2 = new Event('click', e);\n\t\t\t\t\te2.altKey = e.altKey;\n\t\t\t\t\te2.ctrlKey = e.ctrlKey;\n\t\t\t\t\te2.shiftKey = e.shiftKey;\n\t\t\t\t\tthis.focusObj.dispatchEvent(e2);\n\t\t\t\t\t//row.component.toggleSelect();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tnext = this.focusObj.previousElementSibling;\n\t\t\t\t\tif (next)\n\t\t\t\t\t\tthis.changeFocus(this.focusObj, next);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tnext = this.focusObj.nextElementSibling;\n\t\t\t\t\tif (next)\n\t\t\t\t\t\tthis.changeFocus(this.focusObj, next);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tchangeFocus(a, b) { // TODO(chris): this should be in the filter component\n\t\t\tif (b) {\n\t\t\t\tb.tabIndex = 0;\n\t\t\t\tthis.focusObj = b;\n\t\t\t\tb.focus();\n\t\t\t} else {\n\t\t\t\tthis.focusObj = null;\n\t\t\t}\n\t\t\ta.tabIndex = -1;\n\t\t\treturn this.focusObj;\n\t\t},\n\t\tonFocus(e) { // TODO(chris): this should be in the filter component\n\t\t\tif (!this.focusObj) {\n\t\t\t\tvar container, target;\n\t\t\t\tif (e.target.classList.contains('tabulator-container')) {\n\t\t\t\t\tcontainer = e.target;\n\t\t\t\t\ttarget = container.querySelector('.tabulator-row');\n\t\t\t\t} else if (e.target.classList.contains('tabulator-row')) {\n\t\t\t\t\tcontainer = e.target.closest('.tabulator-container');\n\t\t\t\t\ttarget = e.target;\n\t\t\t\t}\n\t\t\t\tif (container && target) {\n\t\t\t\t\tthis.changeFocus(container, target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thandleRowClick(e, row) { // TODO(chris): this should be in the filter component\n\t\t\tif (this.focusObj) {\n\t\t\t\tlet el = row.getElement();\n\t\t\t\tif (el != this.focusObj)\n\t\t\t\t\tthis.changeFocus(this.focusObj, el);\n\t\t\t}\n\t\t}\n\t},\n\t// TODO(chris): focusin, focusout, keydown and tabindex should be in the filter component\n\t// TODO(chris): filter component column chooser has no accessibilty features\n\ttemplate: `\n\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t
`\n};\n","import accessibility from \"../directives/accessibility.js\";\n\nimport TabView from '../../../index.ci.php/public/js/components/primevue/tabview/tabview.esm.min.js';\nimport TabPanel from '../../../index.ci.php/public/js/components/primevue/tabpanel/tabpanel.esm.min.js';\n\nexport default {\n\tcomponents: {\n\t\ttabview: TabView,\n\t\ttabpanel: TabPanel\n\t},\n\tdirectives: {\n\t\taccessibility\n\t},\n\temits: [\n\t\t'update:modelValue',\n\t\t'change',\n\t\t'changed'\n\t],\n\tprops: {\n\t\tconfig: {\n\t\t\ttype: [String, Array, Object, Promise],\n\t\t\trequired: true\n\t\t},\n\t\tdefault: String,\n\t\tmodelValue: [String, Number, Boolean, Array, Object, Date, Function, Symbol],\n\t\tvertical: Boolean,\n\t\tborder: Boolean,\n\t\tuseprimevue: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcurrent: null,\n\t\t\ttabs: {},\n\t\t\tcount: null\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentTab() {\n\t\t\tif (this.tabs[this.current])\n\t\t\t\treturn this.tabs[this.current];\n\n\t\t\treturn { component: 'div' };\n\t\t},\n\t\tvalue: {\n\t\t\tget() {\n\t\t\t\treturn this.modelValue;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.$emit('update:modelValue', v);\n\t\t\t}\n\t\t},\n\t\tcalcActiveIndex: function() {\n\t\t\tlet keys = Object.keys(this.tabs);\n\t\t\tlet index = keys.indexOf(this.default);\n\t\t\tif( index === -1 ) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn index;\n\t\t\t}\n\t\t}\n\t},\n\twatch: {\n\t\tconfig(n) {\n\t\t\tthis.initConfig(n);\n\t\t}\n\t},\n\tmethods: {\n\t\thandleTabClick: function (e) {\n\t\t\tlet keys = Object.keys(this.tabs);\n\t\t\tthis.change(keys[e.index]);\n\t\t},\n\t\tchange(key) {\n\t\t\tthis.$emit(\"change\", key)\n\t\t\tthis.current = key;\n\t\t\tthis.$nextTick(() => this.$emit(\"changed\", key));\n\t\t},\n\t\tinitConfig(config) {\n\t\t\tif (!config)\n\t\t\t\treturn;\n\t\t\tif (config instanceof Promise)\n\t\t\t\treturn config\n\t\t\t\t\t.then(result => result.data)\n\t\t\t\t\t.then(this.initConfig)\n\t\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t\tif (typeof config === 'string' || config instanceof String)\n\t\t\t\treturn this.$api\n\t\t\t\t\t.get(config)\n\t\t\t\t\t.then(result => result.data)\n\t\t\t\t\t.then(this.initConfig)\n\t\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\t\tconst tabs = {};\n\n\t\t\tfunction _addToTabs(key, item) {\n\t\t\t\tif (!item.component)\n\t\t\t\t\treturn console.error('Component missing for ' + key);\n\n\t\t\t\t//making it reactive for showing headerSuffix\n\t\t\t\tconst value = Vue.reactive({\n\t\t\t\t\tsuffix: '',\n\t\t\t\t\tshowSuffix: item.showSuffix || false\n\t\t\t\t});\n\n\t\t\t\ttabs[key] = {\n\t\t\t\t\tcomponent: Vue.markRaw(Vue.defineAsyncComponent(() => import(item.component))),\n\t\t\t\t\ttitle: Vue.computed(() => item.title || key),\n\t\t\t\t\tconfig: item.config,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tsuffixhelper: item.suffixhelper ?? null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (Array.isArray(config)) {\n\t\t\t\tconfig.forEach((item, key) => _addToTabs(key, item));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tObject.entries(config).forEach(([key, item]) => _addToTabs(key, item));\n\t\t\t}\n\n\t\t\tif (this.current === null || !tabs[this.current]) {\n\t\t\t\tif (tabs[this.default])\n\t\t\t\t\tthis.current = this.default;\n\t\t\t\telse\n\t\t\t\t\tthis.current = Object.keys(tabs)[0];\n\t\t\t}\n\t\t\tthis.tabs = tabs;\n\t\t},\n\t\tupdateSuffix() {\n\t\t\tthis.getTabSuffix(this.currentTab);\n\t\t},\n\t\tremoveInvalidCountTabs(){\n\t\t\tif(this.modelValue.length)\n\t\t\t{\n\t\t\t\tlet countIst = this.modelValue.length;\n\t\t\t\tconst tabsToDelete = [];\n\n\t\t\t\tObject.entries(this.config).forEach(([key, item]) => {\n\n\t\t\t\t\tconst target = item?.config ? item : item?.value || item;\n\n\t\t\t\t\t// check config for validCountMulti\n\t\t\t\t\tif (target.config?.validCountMulti !== undefined) {\n\t\t\t\t\t\tlet tab;\n\t\t\t\t\t\tlet countSoll;\n\t\t\t\t\t\ttab = key;\n\t\t\t\t\t\tcountSoll = target.config.validCountMulti;\n\n\t\t\t\t\t\t//check if tab is existing\n\t\t\t\t\t\tif (countSoll !== undefined && countSoll == countIst) {\n\t\t\t\t\t\t\t//add tab if it was removed before\n\t\t\t\t\t\t\tif (tab in this.tabs == false) {\n\t\t\t\t\t\t\t\tconst value = Vue.reactive({\n\t\t\t\t\t\t\t\t\tsuffix: '',\n\t\t\t\t\t\t\t\t\tshowSuffix: item.showSuffix || false\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tthis.tabs[tab] = {\n\t\t\t\t\t\t\t\t\tcomponent: Vue.markRaw(Vue.defineAsyncComponent(() => import(item.component))),\n\t\t\t\t\t\t\t\t\ttitle: Vue.computed(() => item.title || tab),\n\t\t\t\t\t\t\t\t\tconfig: item.config,\n\t\t\t\t\t\t\t\t\ttab,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tsuffixhelper: item.suffixhelper ?? null\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to toDeleteArray if count is not allowed\n\t\t\t\t\t\tif (countSoll !== undefined && countSoll !== countIst) {\n\t\t\t\t\t\t\ttabsToDelete.push(tab);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Delete all tabs with count not allowed\n\t\t\t\ttabsToDelete.forEach(k => {\n\t\t\t\t\tdelete this.tabs[k];\n\t\t\t\t});\n\n\t\t\t}\n\t\t},\n\t\tasync getTabSuffix(tab) {\n\t\t\tif (!tab.value.showSuffix) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (tab.suffixhelper !== null) {\n\t\t\t\tconst suffixhelper = await import(tab.suffixhelper);\n\t\t\t\tconst suffix = await suffixhelper.getSuffix(this.$api, this.modelValue);\n\t\t\t\ttab.value.suffix = suffix;\n\t\t\t} else {\n\t\t\t\ttab.value.suffix = '';\n\t\t\t}\n\t\t},\n\t\tgetTabSuffixes() {\n\t\t\tObject.entries(this.tabs).forEach(([key, item]) => this.getTabSuffix(item));\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.initConfig(this.config);\n\t},\n\tmounted() {\n\t\tthis.getTabSuffixes();\n\t\tthis.removeInvalidCountTabs();\n\t},\n\tupdated() {\n\t\tthis.getTabSuffixes();\n\t\tthis.removeInvalidCountTabs();\n\t},\n\ttemplate: `\n\t\n\t`\n};\n\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(person_id){\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/vertraege/vertraege/getHeader/' + person_id,\n\t\t};\n\t},\n\tgetPersonAbteilung(mitarbeiter_uid){\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/vertraege/vertraege/getPersonAbteilung/' + mitarbeiter_uid,\n\t\t};\n\t},\n\tgetLeitungOrg(oekurzbz){\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/vertraege/vertraege/getLeitungOrg/' + oekurzbz,\n\t\t};\n\t},\n}","import FhcTabs from \"../../Tabs.js\";\nimport FhcHeader from \"../../DetailHeader/DetailHeader.js\";\n\nimport ApiStvApp from '../../../api/factory/stv/app.js';\n\n// TODO(chris): alt & title\n// TODO(chris): phrasen\n\nexport default {\n\tname: \"DetailsPrestudent\",\n\tcomponents: {\n\t\tFhcTabs,\n\t\tFhcHeader\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tconfigStudent: {},\n\t\t\tconfigStudents: {}\n\t\t};\n\t},\n\tprops: {\n\t\tstudents: Array\n\t},\n\tcomputed: {\n\t\tappRoot() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root;\n\t\t},\n\t\tconfig() {\n\t\t\tif (!this.students.length)\n\t\t\t\treturn {};\n\t\t\tif (this.students.length == 1) {\n\t\t\t\tconst student = this.students[0];\n\t\t\t\tif (student.uid)\n\t\t\t\t\treturn Object.fromEntries(Object.entries(this.configStudent).filter(([ , value ]) => !value.showOnlyWithoutUid));\n\t\t\t\treturn Object.fromEntries(Object.entries(this.configStudent).filter(([ , value ]) => !value.showOnlyWithUid));\n\t\t\t} else if (this.students.every(student => student.uid)) {\n\t\t\t\treturn Object.fromEntries(Object.entries(this.configStudents).filter(([ , value ]) => !value.showOnlyWithoutUid));\n\t\t\t} else if (this.students.every(student => !student.uid)) {\n\t\t\t\t\treturn Object.fromEntries(Object.entries(this.configStudents).filter(([ , value ]) => !value.showOnlyWithUid));\n\t\t\t}\n\t\t\treturn Object.fromEntries(Object.entries(this.configStudents).filter(([ , value ]) => !value.showOnlyWithUid && !value.showOnlyWithUid));\n\t\t}\n\t},\n\twatch: {\n\t\t'$p.user_language.value'(n, o) {\n\t\t\tif (n !== o && o !== undefined)\n\t\t\t\tthis.loadConfig();\n\t\t}\n\t},\n\tmethods: {\n\t\tloadConfig() {\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStvApp.configStudent())\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.configStudent = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStvApp.configStudents())\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.configStudents = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\treload() {\n\t\t\tif (this.$refs.tabs?.$refs?.current?.reload)\n\t\t\t\tthis.$refs.tabs.$refs.current.reload();\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.loadConfig();\n\t},\n\ttemplate: `\n\t
\n\t\t
\n\t\t\t{{$p.t('ui', 'chooseStudent')}}\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\tLoading...\n\t\t
\n\t
`\n};\n","import ApiDetailHeader from \"../../api/factory/detailHeader.js\";\n\nexport default {\n\tname: 'DetailHeader',\n\tinject: {\n\t\tdomain: {\n\t\t\tfrom: 'configDomain',\n\t\t\tdefault: 'technikum-wien.at'\n\t\t},\n\t},\n\tprops: {\n\t\theaderData: {\n\t\t\ttype: Object,\n\t\t\trequired: false\n\t\t},\n\t\tperson_id: {\n\t\t\ttype: Number,\n\t\t\trequired: false\n\t\t},\n\t\ttypeHeader: {\n\t\t\ttype: String,\n\t\t\tdefault: 'student',\n\t\t\tvalidator(value) {\n\t\t\t\treturn [\n\t\t\t\t\t'student',\n\t\t\t\t\t'mitarbeiter',\n\t\t\t\t].includes(value)\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\tappRoot() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root;\n\t\t},\n\t\tvalidatedHeaderData() {\n\t\t\tif (this.typeHeader === 'student') return this.headerData;\n\t\t\tif (this.typeHeader === 'mitarbeiter') return this.person_id;\n\t\t\treturn null;\n\t\t}\n\t},\n\tcreated(){\n\t\tif(this.person_id) {\n\t\t\tthis.getHeader(this.person_id);\n\n\t\t\tthis.loadDepartmentData(this.mitarbeiter_uid)\n\t\t\t\t.then(() => {\n\t\t\t\t\t// Call getLeitungOrg only after departmentData is loaded\n\t\t\t\t\tthis.getLeitungOrg(this.departmentData.oe_kurzbz);\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(\"Error loading department data:\", error);\n\t\t\t\t});\n\t\t}\n\t},\n\twatch: {\n\t\tperson_id: {\n\t\t\thandler(newVal) {\n\t\t\t\tif (newVal) {\n\t\t\t\t\tthis.getHeader(this.person_id);\n\t\t\t\t\tthis.loadDepartmentData(this.person_id).\n\t\t\t\t\tthen(() => {\n\t\t\t\t\t\tthis.getLeitungOrg(this.departmentData.oe_kurzbz);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeep: true,\n\t\t},\n\t},\n\tdata(){\n\t\treturn{\n\t\t\theaderDataMa: {},\n\t\t\tdepartmentData: {},\n\t\t\tleitungData: {},\n\t\t};\n\t},\n\tmethods: {\n\t\tgetHeader(person_id) {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiDetailHeader.getHeader(person_id))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.headerDataMa = result.data;\n\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tloadDepartmentData(mitarbeiter_uid) {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiDetailHeader.getPersonAbteilung(mitarbeiter_uid))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.departmentData = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tgetLeitungOrg(oekurzbz){\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiDetailHeader.getLeitungOrg(oekurzbz))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.leitungData = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tredirectToLeitung(){\n\t\t\tthis.$emit('redirectToLeitung', {\n\t\t\t\tperson_id: this.leitungData.person_id});\n\t\t},\n\t\tgetFotoSrc(foto) {\n\t\t\tif(foto === null) {\n\t\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root + 'skin/images/profilbild_dummy.jpg';\n\t\t\t} else {\n\t\t\t\treturn 'data:image/jpeg;base64,' + foto;\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t\t
\n\n\t\t\t\n\n\t\t\n\t
\n\t`\n}\n","import {CoreRESTClient} from '../../../RESTClient.js';\n\nexport default {\n\temits: [\n\t\t'update:studiensemesterKurzbz'\n\t],\n\tprops: {\n\t\tstudiensemesterKurzbz: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcurrent: 0,\n\t\t\tloading: true,\n\t\t\tlist: [],\n\t\t\ttoday: -1\n\t\t};\n\t},\n\tmethods: {\n\t\tset(n) {\n\t\t\tthis.loading = true;\n\t\t\tlet fallback = this.current;\n\t\t\tthis.current = n;\n\t\t\tthis.save(fallback);\n\t\t},\n\t\tnext() {\n\t\t\tthis.loading = true;\n\t\t\tlet fallback = this.current;\n\t\t\tif (this.current++ >= this.list.length)\n\t\t\t\tthis.current = this.list.length - 1;\n\t\t\tthis.save(fallback);\n\t\t},\n\t\tprev() {\n\t\t\tthis.loading = true;\n\t\t\tlet fallback = this.current;\n\t\t\tif (this.current-- < 0)\n\t\t\t\tthis.current = 0;\n\t\t\tthis.save(fallback);\n\t\t},\n\t\tsetToToday() {\n\t\t\tif (this.today > 0) {\n\t\t\t\tif (this.today == this.current)\n\t\t\t\t\treturn;\n\t\t\t\treturn this.set(this.today);\n\t\t\t}\n\n\t\t\tthis.loading = true;\n\t\t\tCoreRESTClient\n\t\t\t\t.get('components/stv/studiensemester/now')\n\t\t\t\t.then(result => CoreRESTClient.getData(result.data))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.today = this.list.indexOf(result);\n\t\t\t\t\tif (this.today >= 0) {\n\t\t\t\t\t\tif (this.today != this.current)\n\t\t\t\t\t\t\tthis.set(this.today);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// TODO(chris): handle error (list might not be loaded yet)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tsave(fallback) {\n\t\t\tCoreRESTClient\n\t\t\t\t.post('components/stv/studiensemester/set', {\n\t\t\t\t\tstudiensemester: this.list[this.current]\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tthis.$emit('update:studiensemesterKurzbz', this.list[this.current]);\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.current = fallback;\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tthis.$fhcAlert.handleFormValidation(error);\n\t\t\t\t});\n\t\t}\n\t},\n\twatch: {\n\t\t'studiensemesterKurzbz': function () {\n\t\t\tthis.current = this.list.indexOf(this.studiensemesterKurzbz);\n\t\t}\n\t},\n\tcreated() {\n\t\tCoreRESTClient\n\t\t\t.get('components/stv/studiensemester')\n\t\t\t.then(result => CoreRESTClient.getData(result.data) || [])\n\t\t\t.then(result => {\n\t\t\t\tthis.list = result.map(el => el.studiensemester_kurzbz);\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.current = this.list.indexOf(this.studiensemesterKurzbz);\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\ttemplate: `\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
  • \n\t\t\t\t\t\t{{item}}\n\t\t\t\t\t
  • \n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n\t`\n}","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/searchbar/search',\n\t\t\tparams\n\t\t};\n\t},\n\tsearchCis(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/searchbar/searchCis',\n\t\t\tparams\n\t\t};\n\t},\n\tsearchStv(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/searchbar/searchStv',\n\t\t\tparams\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetSprachen() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getSprachen'\n\t\t};\n\t},\n\tgetGeschlechter() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getGeschlechter'\n\t\t};\n\t},\n\tgetAusbildungen() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getAusbildungen'\n\t\t};\n\t},\n\tgetStgs() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getStgs'\n\t\t};\n\t},\n\tgetOrgforms() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getOrgforms'\n\t\t};\n\t},\n\tgetStudiensemester() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getStudiensemester'\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget(path) {\n\t\tlet url = 'api/frontend/v1/stv/verband';\n\t\tif (path)\n\t\t\turl += '/' + path;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn {\n\t\t\t\tmethod: 'get',\n\t\t\t\turl: 'api/frontend/v1/stv/favorites'\n\t\t\t};\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn {\n\t\t\t\tmethod: 'post',\n\t\t\t\turl: 'api/frontend/v1/stv/favorites/set',\n\t\t\t\tparams: { favorites }\n\t\t\t};\n\t\t}\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport app from './stv/app.js';\nimport lists from './stv/lists.js';\nimport verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport admissionDates from './stv/admissionDates.js';\n\nexport default {\n\tapp,\n\tlists,\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tadmissionDates\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget(person_id, only_open, studiengang_kz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/get',\n\t\t\tparams: {\n\t\t\t\tperson_id,\n\t\t\t\tonly_open,\n\t\t\t\tstudiengang_kz\n\t\t\t}\n\t\t};\n\t},\n\tcheckDoubles(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/checkDoubles',\n\t\t\tparams,\n\t\t\tconfig: {\n\t\t\t\tconfirmErrorHandler: error => true\n\t\t\t}\n\t\t};\n\t},\n\tinsert(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/insert',\n\t\t\tparams\n\t\t};\n\t},\n\tcounter(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/counter',\n\t\t\tparams\n\t\t};\n\t},\n\tedit(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/update',\n\t\t\tparams\n\t\t};\n\t},\n\tdelete(buchungsnr) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/delete',\n\t\t\tparams: { buchungsnr }\n\t\t};\n\t},\n\tgetBuchungstypen() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/konto/getBuchungstypen'\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport address from './kontakt/address.js';\nimport bankaccount from './kontakt/bankaccount.js';\nimport contact from './kontakt/contact.js';\nimport company from './kontakt/company.js';\n\nexport default {\n\taddress,\n\tbankaccount,\n\tcontact,\n\tcompany\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/config/get'\n\t\t};\n\t},\n\tset(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/config/set',\n\t\t\tparams\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport CoreSearchbar from \"../searchbar/searchbar.js\";\nimport NavLanguage from \"../navigation/Language.js\";\nimport VerticalSplit from \"../verticalsplit/verticalsplit.js\";\nimport AppMenu from \"../AppMenu.js\";\nimport AppConfig from \"../AppConfig.js\";\nimport StvVerband from \"./Studentenverwaltung/Verband.js\";\nimport StvList from \"./Studentenverwaltung/List.js\";\nimport StvDetails from \"./Studentenverwaltung/Details.js\";\nimport StvStudiensemester from \"./Studentenverwaltung/Studiensemester.js\";\n\nimport ApiSearchbar from \"../../api/factory/searchbar.js\";\nimport ApiStv from \"../../api/factory/stv.js\";\nimport ApiStvVerband from '../../api/factory/stv/verband.js';\nimport ApiStvConfig from '../../api/factory/stv/config.js';\n\n\nexport default {\n\tname: 'Studentenverwaltung',\n\tcomponents: {\n\t\tCoreSearchbar,\n\t\tNavLanguage,\n\t\tVerticalSplit,\n\t\tAppMenu,\n\t\tAppConfig,\n\t\tStvVerband,\n\t\tStvList,\n\t\tStvDetails,\n\t\tStvStudiensemester\n\t},\n\tprops: {\n\t\tdefaultSemester: String,\n\t\tconfig: Object,\n\t\tpermissions: Object,\n\t\tstvRoot: String,\n\t\tcisRoot: String,\n\t\tavatarUrl: String,\n\t\tlogoutUrl: String,\n\t\tactiveAddons: String, // semicolon separated list of active addons\n\t\turl_studiensemester_kurzbz: String,\n\t\turl_mode: String,\n\t\turl_prestudent_id: String,\n\t\turl_tab: String,\n\t\turl_studiengang: String\n\t},\n\tprovide() {\n\t\treturn {\n\t\t\tcisRoot: this.cisRoot,\n\t\t\tactiveAddonBewerbung: this.activeAddons.split(';').includes('bewerbung'),\n\t\t\tconfigGenerateAlias: this.config.generateAlias,\n\t\t\tconfigShowHintKommPrfg: this.config.showHintKommPrfg,\n\t\t\thasBpkPermission: this.permissions['student/bpk'],\n\t\t\thasAliasPermission: this.permissions['student/alias'],\n\t\t\thasPrestudentPermission: this.permissions['basis/prestudent'],\n\t\t\thasPrestudentstatusPermission: this.permissions['basis/prestudentstatus'],\n\t\t\thasAssistenzPermissionForStgs: this.permissions['assistenz_stgs'],\n\t\t\thasSchreibrechtAss: this.permissions['assistenz_schreibrechte'],\n\t\t\thasAdminPermission: this.permissions['admin'],\n\t\t\thasPermissionToSkipStatusCheck: this.permissions['student/keine_studstatuspruefung'],\n\t\t\thasPermissionRtAufsicht: this.permissions['lehre/reihungstestAufsicht'],\n\t\t\thasPermissionOutputformat: this.permissions['system/change_outputformat'],\n\t\t\tlists: this.lists,\n\t\t\tcurrentSemester: Vue.computed(() => this.studiensemesterKurzbz),\n\t\t\tdefaultSemester: this.defaultSemester,\n\t\t\t$reloadList: () => {\n\t\t\t\tthis.$refs.stvList.reload();\n\t\t\t},\n\t\t\tconfigShowAufnahmegruppen: this.config.showAufnahmegruppen,\n\t\t\tconfigAllowUebernahmePunkte: this.config.allowUebernahmePunkte,\n\t\t\tconfigUseReihungstestPunkte: this.config.useReihungstestPunkte,\n\t\t\tappConfig: Vue.computed(() => this.appconfig),\n\t\t\thasZGVBakkPermission: this.permissions['student/editBakkZgv'],\n\t\t\thasZGVMasterPermission: this.permissions['student/editMakkZgv'],\n\t\t\thasZGVDoctorPermission: this.permissions['student/editDokZgv'],\n\t\t\thasBismeldenPermission: this.permissions['student/editBismelden'],\n\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tappconfig: {},\n\t\t\tconfigEndpoints: ApiStvConfig,\n\t\t\tselected: [],\n\t\t\tsearchbaroptions: {\n\t\t\t\torigin: 'stv',\n\t\t\t\tcalcheightonly: true,\n\t\t\t\tnolivesearch: true,\n\t\t\t\ttypes: {\n\t\t\t\t\tstudent: Vue.computed(() => this.$p.t('search/type_student')),\n\t\t\t\t\tprestudent: Vue.computed(() => this.$p.t('search/type_prestudent'))\n\t\t\t\t},\n\t\t\t\tactions: {\n\t\t\t\t\tstudent: {\n\t\t\t\t\t\tdefaultaction: {\n\t\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\t\taction: this.buildStudentSearchResultLink\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildactions: [\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tprestudent: {\n\t\t\t\t\t\tdefaultaction: {\n\t\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\t\taction: this.buildPrestudentSearchResultLink\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildactions: [\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tmergedPerson: {\n\t\t\t\t\t\tdefaultaction: {\n\t\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\t\taction: this.buildPersonSearchResultLink\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultactionstudent: {\n\t\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\t\taction: this.buildMergedPersonSearchResultLink\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildactions: []\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmergeResults: 'person'\n\t\t\t},\n\t\t\tstudiengangKz: undefined,\n\t\t\tstudiengangKuerzel: '',\n\t\t\tstudiensemesterKurzbz: this.defaultSemester,\n\t\t\tselected_semester: undefined,\n\t\t\tselected_orgform: undefined,\n\t\t\tlists: {\n\t\t\t\tnations: [],\n\t\t\t\tsprachen: [],\n\t\t\t\tgeschlechter: []\n\t\t\t},\n\t\t\tverbandEndpoint: ApiStvVerband\n\t\t}\n\t},\n\tcomputed: {\n\t\tappMenuExtraItems() {\n\t\t\tconst extraItems = [];\n\n\t\t\tif (this.studiengangKz !== undefined && this.selected_semester !== undefined) {\n\t\t\t\tconst studiengang_kz = String(this.studiengangKz);\n\t\t\t\tconst semester = String(this.selected_semester);\n\t\t\t\tconst orgform = this.selected_orgform || '';\n\n\t\t\t\textraItems.push({\n\t\t\t\t\tlink: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t\t\t+ 'content/statistik/notenspiegel.php?typ=xls'\n\t\t\t\t\t\t+ '&studiengang_kz=' + studiengang_kz\n\t\t\t\t\t\t+ '&semester=' + semester\n\t\t\t\t\t\t+ '&studiensemester=' + this.studiensemesterKurzbz\n\t\t\t\t\t\t+ '&orgform=' + orgform,\n\t\t\t\t\tdescription: 'stv/grade_report_xls'\n\t\t\t\t});\n\t\t\t\textraItems.push({\n\t\t\t\t\tlink: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t\t\t+ 'content/statistik/notenspiegel_erweitert.php?typ=xls'\n\t\t\t\t\t\t+ '&studiengang_kz=' + studiengang_kz\n\t\t\t\t\t\t+ '&semester=' + semester\n\t\t\t\t\t\t+ '&studiensemester=' + this.studiensemesterKurzbz\n\t\t\t\t\t\t+ '&orgform=' + orgform,\n\t\t\t\t\tdescription: 'stv/grade_report_xls_extended'\n\t\t\t\t});\n\t\t\t\textraItems.push({\n\t\t\t\t\tlink: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t\t\t+ 'content/statistik/notenspiegel.php?typ=html'\n\t\t\t\t\t\t+ '&studiengang_kz=' + studiengang_kz\n\t\t\t\t\t\t+ '&semester=' + semester\n\t\t\t\t\t\t+ '&studiensemester=' + this.studiensemesterKurzbz\n\t\t\t\t\t\t+ '&orgform=' + orgform,\n\t\t\t\t\tdescription: 'stv/grade_report_html'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn extraItems;\n\t\t}\n\t},\n\twatch: {\n\t\t'url_studiensemester_kurzbz': function (newVal, oldVal) {\n\t\t\tif (newVal !== oldVal) {\n\t\t\t\tthis.studiensemesterKurzbz = newVal;\n\t\t\t\tif(this.$route.name === 'search')\n\t\t\t\t{\n\t\t\t\t\tthis.handleSearchUrl();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.$refs.stvList.updateUrl();\n\t\t\t\t\tthis.$refs.details.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'url_studiengang': function (newVal, oldVal) {\n\t\t\tif (newVal !== oldVal) {\n\t\t\t\tthis.checkUrlStudiengang();\n\t\t\t}\n\t\t},\n\t\t'url_mode': function () {\n\t\t\tthis.handlePersonUrl();\n\t\t},\n\t\turl_prestudent_id() {\n\t\t\tthis.handlePersonUrl();\n\t\t},\n\t\t'appconfig.font_size'() {\n\t\t\t// add to html class\n\t\t\tconst classList = Object.keys(this.$refs.config.setup.font_size.options);\n\t\t\tclassList.forEach(cn => document.documentElement.classList.remove(cn));\n\t\t\tdocument.documentElement.classList.add(this.appconfig.font_size);\n\t\t\t// recalc Tabulator heights\n\t\t\tif (this.$el) {\n\t\t\t\tconst tabulatorEls = this.$el.querySelectorAll('.tabulator');\n\t\t\t\tfor (const el of tabulatorEls) {\n\t\t\t\t\tconst tabulators = Tabulator.findTable(el);\n\t\t\t\t\tif (tabulators) {\n\t\t\t\t\t\ttabulators[0].searchRows().forEach(row => row.normalizeHeight());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tbuildMergedPersonSearchResultLink(data) {\n\t\t\tif (data.prestudent_id) {\n\t\t\t\treturn this.buildPrestudentSearchResultLink(data);\n\t\t\t} else if (data.uid) {\n\t\t\t\treturn this.buildStudentSearchResultLink(data);\n\t\t\t} else {\n\t\t\t\treturn this.buildPersonSearchResultLink(data);\n\t\t\t}\n\t\t},\n\t\tbuildPrestudentSearchResultLink(data) {\n\t\t\treturn this.$api.getUri(\n\t\t\t\t'/studentenverwaltung'\n\t\t\t\t+ '/' + this.studiensemesterKurzbz\n\t\t\t\t+ '/prestudent/'\n\t\t\t\t+ data.prestudent_id\n\t\t\t\t);\n\t\t},\n\t\tbuildStudentSearchResultLink(data) {\n\t\t\treturn this.$api.getUri(\n\t\t\t\t'/studentenverwaltung'\n\t\t\t\t+ '/' + this.studiensemesterKurzbz\n\t\t\t\t+ '/student/'\n\t\t\t\t+ data.uid\n\t\t\t\t);\n\t\t},\n\t\tbuildPersonSearchResultLink(data) {\n\t\t\treturn this.$api.getUri(\n\t\t\t\t'/studentenverwaltung'\n\t\t\t\t+ '/' + this.studiensemesterKurzbz\n\t\t\t\t+ '/person/'\n\t\t\t\t+ data.person_id\n\t\t\t\t);\n\t\t},\n\t\tonSelectVerband({ link, studiengang_kz, semester, orgform_kurzbz }) {\n\t\t\tlet urlpath = String(link);\n\t\t\tif (!urlpath.match(/\\/prestudent/))\n\t\t\t{\n\t\t\t\turlpath = 'CURRENT_SEMESTER' + '/' + urlpath;\n\t\t\t}\n\t\t\tthis.$refs.stvList.updateUrl(ApiStv.students.verband(urlpath));\n\n\t\t\tthis.studiengangKz = studiengang_kz;\n\t\t\tthis.selected_semester = semester;\n\t\t\tthis.selected_orgform = orgform_kurzbz;\n\t\t\tconst stg = this.lists.stgs.find((element) => {\n\t\t\t\treturn (element.studiengang_kz === this.studiengangKz);\n\t\t\t});\n\t\t\tif (stg)\n\t\t\t{\n\t\t\t\tthis.studiengangKuerzel = (stg.typ + stg.kurzbz).toUpperCase()\n\t\t\t\tthis.$router.push({\n\t\t\t\t\tname: 'studiengang',\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz,\n\t\t\t\t\t\tstudiengang: this.studiengangKuerzel\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else\n\t\t\t{\n\t\t\t\tthis.studiengangKuerzel = '';\n\t\t\t\tthis.$router.push({\n\t\t\t\t\tname: 'studiensemester',\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\t},\n\t\tstudiensemesterChanged(v) {\n\t\t\tthis.studiensemesterKurzbz = v;\n\n\t\t\tthis.$router.push({\n\t\t\t\tparams: {\n\t\t\t\t\tstudiensemester_kurzbz: v\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\treloadList() {\n\t\t\tthis.$refs.stvList.reload();\n\t\t},\n\t\tsearchfunction(params, config) {\n\t\t\treturn this.$api.call(ApiSearchbar.searchStv(params), config);\n\t\t},\n\t\thandlePersonUrl() {\n\t\t\tif (this.$route.params.id) {\n\t\t\t\tthis.$refs.stvList.updateUrl(\n\t\t\t\t\tApiStv.students.uid(this.$route.params.id, 'CURRENT_SEMESTER'),\n\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t} else if (this.$route.params.prestudent_id) {\n\t\t\t\tthis.$refs.stvList.updateUrl(\n\t\t\t\t\tApiStv.students.prestudent(this.$route.params.prestudent_id, 'CURRENT_SEMESTER'),\n\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t} else if (this.$route.params.person_id) {\n\t\t\t\tthis.$refs.stvList.updateUrl(\n\t\t\t\t\tApiStv.students.person(this.$route.params.person_id, 'CURRENT_SEMESTER'),\n\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t} else if (this.$route.params.searchstr) {\n\t\t\t\tthis.handleSearchUrl();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.clearTabulator();\n\t\t\t}\n\t\t},\n\t\thandleSearchUrl() {\n\t\t\tconst searchsettings = {\n\t\t\t\tsearchstr: this.$route.params.searchstr,\n\t\t\t\ttypes: this.$route.params.types?.split('+') || []\n\t\t\t};\n\n\t\t\t// init into student list\n\t\t\tthis.$refs.stvList.updateUrl(\n\t\t\t\tApiStv.students.search(searchsettings, this.studiensemesterKurzbz)\n\t\t\t);\n\n\t\t\t// init into searchbar\n\t\t\tthis.$refs.searchbar.searchsettings.searchstr = searchsettings.searchstr;\n\t\t\tthis.$refs.searchbar.searchsettings.types = searchsettings.types;\n\t\t\tthis.$nextTick(this.blurSearchbar);\n\t\t},\n\t\tclearTabulator() {\n\t\t\tif(['index', 'studiensemester'].includes(this.$route.name))\n\t\t\t{\n\t\t\t\tif(this.$refs?.stvList?.$refs?.table?.tabulator)\n\t\t\t\t{\n\t\t\t\t\tthis.$refs.stvList.$refs.table.tabulator.setData([]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcheckUrlStudiengang() {\n\t\t\tif (this.url_studiengang) {\n\t\t\t\tconst stg = this.lists.stgs.find((element) => {\n\t\t\t\t\tconst kuerzel = (element.typ + element.kurzbz).toUpperCase();\n\t\t\t\t\treturn (this.url_studiengang === kuerzel);\n\t\t\t\t});\n\t\t\t\tif (stg) {\n\t\t\t\t\tthis.studiengangKz = stg.studiengang_kz;\n\t\t\t\t\tthis.studiengangKuerzel = (stg.typ + stg.kurzbz).toUpperCase();\n\t\t\t\t} else {\n\t\t\t\t\tthis.$router.replace({\n\t\t\t\t\t\tname: 'studiensemester',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.studiengangKz = undefined;\n\t\t\t\tthis.studiengangKuerzel = '';\n\t\t\t\tthis.clearTabulator();\n\t\t\t}\n\t\t},\n\t\tonSearch(e) {\n\t\t\tconst searchsettings = { ...this.$refs.searchbar.searchsettings };\n\t\t\tif (searchsettings.searchstr.length >= 2) {\n\t\t\t\tthis.blurSearchbar();\n\t\t\t\t\n\t\t\t\tif (!searchsettings.types.length || searchsettings.types.length == this.$refs.searchbar.types.length) {\n\t\t\t\t\tthis.$router.push({\n\t\t\t\t\t\tname: 'search',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz,\n\t\t\t\t\t\t\tsearchstr: searchsettings.searchstr\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.$router.push({\n\t\t\t\t\t\tname: 'search_w_types',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz,\n\t\t\t\t\t\t\tsearchstr: searchsettings.searchstr,\n\t\t\t\t\t\t\ttypes: searchsettings.types.join('+')\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tblurSearchbar() {\n\t\t\tthis.$refs.searchbar.$refs.input.blur();\n\t\t\tthis.$refs.searchbar.abort();\n\t\t\tthis.$refs.searchbar.hideresult();\n\t\t}\n\t},\n\tcreated() {\n\t\tif (!this.url_studiensemester_kurzbz) {\n\t\t\tthis.$router.replace({\n\t\t\t\tname: 'studiensemester',\n\t\t\t\tparams: {\n\t\t\t\t\tstudiensemester_kurzbz: this.defaultSemester\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.studiensemesterKurzbz = this.url_studiensemester_kurzbz;\n\t\t}\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.kontakt.address.getNations())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.nations = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getSprachen())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.sprachen = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getGeschlechter())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.geschlechter = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getAusbildungen())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.ausbildungen = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getStgs())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.stgs = result.data;\n\t\t\t\tthis.lists.active_stgs = this.lists.stgs.filter(stg => stg.aktiv);\n\t\t\t\tthis.checkUrlStudiengang();\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getOrgforms())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.orgforms = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.konto.getBuchungstypen())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.buchungstypen = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getStudiensemester())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.studiensemester = result.data;\n\t\t\t\tthis.lists.studiensemester_desc = result.data.toReversed();\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\tmounted() {\n\t\t//Test manu Systemerror\n\t\t//FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto = 'ma0068@technikum-wien.at';this.$fhcAlert.handleSystemError(1);\n\t\tthis.handlePersonUrl();\n\t},\n\ttemplate: /* html */`\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tStudVw: {{studiensemesterKurzbz}} {{studiengangKuerzel}}\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ $p.t('ui/settings') }}\n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t\t

  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t\t

  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ $p.t('ui/logout') }}\n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t\n\t
    `\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektarbeiten(uid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${uid}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektabgaben(detail) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektabgaben`\n\t\t\t, {\n\t\t\t\tprojektarbeit_id: detail.projektarbeit_id,\n\t\t\t\tstudent_uid: detail.student_uid\n\t\t\t}\n\t\t);\n\t},\n\tpostStudentProjektarbeitEndupload(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tpostStudentProjektarbeitZwischenabgabe(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tgetStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) {\n\t\tconst url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`;\n\n\t\twindow.location = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url\n\t},\n\tgetMitarbeiterProjektarbeiten(uid, all) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${all}`\n\t\t\t, {}\n\t\t);\n\t},\n\tpostProjektarbeitAbgabe(termin) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id: termin.paabgabe_id,\n\t\t\tpaabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz,\n\t\t\tdatum: termin.datum,\n\t\t\tfixtermin: termin.fixtermin,\n\t\t\tinsertvon: termin.insertvon,\n\t\t\tkurzbz: termin.kurzbz,\n\t\t\tprojektarbeit_id: termin.projektarbeit_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t\t\n\t},\n\tdeleteProjektarbeitAbgabe(paabgabe_id) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tpostSerientermin(datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids) {\n\t\tconst payload = {\n\t\t\tdatum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postSerientermin';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tfetchDeadlines(person_id) {\n\t\tconst payload = {\n\t\t\tperson_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/fetchDeadlines';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport FhcStudentenverwaltung from \"../components/Stv/Studentenverwaltung.js\";\nimport fhcapifactory from \"./api/fhcapifactory.js\";\n\nimport PluginsPhrasen from \"../plugins/Phrasen.js\";\n\n\nconst ciPath = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\\/\\/)(.*?\\/)/g, '') + FHC_JS_DATA_STORAGE_OBJECT.ci_router;\n\nconst router = VueRouter.createRouter({\n\thistory: VueRouter.createWebHistory(),\n\troutes: [\n\t\t{\n\t\t\tname: 'index',\n\t\t\tpath: `/${ciPath}/studentenverwaltung`,\n\t\t\tcomponent: FhcStudentenverwaltung\n\t\t},\n\t\t{\n\t\t\tname: 'studiensemester',\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: 'studiengang',\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/:studiengang`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_studiengang: route.params.studiengang,\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tconst isStudiengang = /^[A-Z]{3}/.test(to.params.studiengang);\n\t\t\t\tif (!isStudiengang) {\n\t\t\t\t\treturn next({\n\t\t\t\t\t\tname: 'studiensemester',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tstudiensemester_kurzbz: to.params.studiensemester_kurzbz\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/prestudent/:prestudent_id`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'prestudent',\n\t\t\t\t\turl_prestudent_id: route.params.prestudent_id\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/prestudent/:prestudent_id/:tab`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'prestudent',\n\t\t\t\t\turl_prestudent_id: route.params.prestudent_id,\n\t\t\t\t\turl_tab: route.params.tab\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/student/:id`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'student',\n\t\t\t\t\turl_student_id: route.params.id\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/person/:person_id`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'person',\n\t\t\t\t\turl_prestudent_id: route.params.person_id\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: 'search',\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/search/:searchstr`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops(route) {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'search',\n\t\t\t\t\turl_prestudent_id: route.params.searchstr\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter(to, from, next) {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: 'search_w_types',\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/search/:types/:searchstr`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops(route) {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'search',\n\t\t\t\t\turl_prestudent_id: route.params.type + '/' + route.params.searchstr\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter(to, from, next) {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: '/:pathMatch(.*)*',\n\t\t\tredirect: {\n\t\t\t\tname: 'index'\n\t\t\t}\n\t\t}\n\t]\n});\n\nrouter.afterEach((to, from, failure) => {\n\tlet title = 'Studierendenverwaltung FH-Complete';\n\tif (to.params.studiengang) {\n\t\ttitle = to.params.studiengang + ' ' + title;\n\t}\n\tif (to.params.studiensemester_kurzbz) {\n\t\ttitle = to.params.studiensemester_kurzbz + ' ' + title;\n\t}\n\tdocument.title = title;\n});\n\nconst app = Vue.createApp({\n\tname: 'StudentenverwaltungApp'\n});\n\napp\n\t.use(router)\n\t.use(primevue.config.default, {\n\t\tzIndex: {\n\t\t\toverlay: 1100\n\t\t}\n\t})\n\t.use(PluginsPhrasen)\n\t.mount('#main');\n","export default {\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: String\n\t},\n\tcomputed: {\n\t\tvalueAsBase64DataString() {\n\t\t\tif (!this.modelValue || this.modelValue.substring(0, 10) == 'data:image')\n\t\t\t\treturn this.modelValue;\n\t\t\treturn 'data:image/jpeg;charset=utf-8;base64,' + this.modelValue;\n\t\t}\n\t},\n\tmethods: {\n\t\topenUploadDialog() {\n\t\t\tthis.$refs.fileInput.click();\n\t\t},\n\t\tpickFile() {\n\t\t\tlet file = this.$refs.fileInput.files;\n\t\t\tif (file && file[0]) {\n\t\t\t\tlet reader = new FileReader();\n\t\t\t\treader.onload = e => {\n\t\t\t\t\tthis.$emit('update:modelValue', e.target.result);\n\t\t\t\t}\n\t\t\t\treader.readAsDataURL(file[0]);\n\t\t\t}\n\t\t},\n\t\tdeleteImage() {\n\t\t\tthis.$emit('update:modelValue', '');\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    `\n}","import DmsItem from './Dms/Item.js';\n\nexport default {\n\tcomponents: {\n\t\tDmsItem\n\t},\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [ FileList, Array ],\n\t\t\trequired: true\n\t\t},\n\t\tmultiple: Boolean,\n\t\tid: String,\n\t\tname: String,\n\t\tinputClass: [String, Array, Object],\n\t\tnoList: Boolean,\n\t\taccept: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tmethods: {\n\t\tstringifyFile(file) {\n\t\t\treturn JSON.stringify({\n\t\t\t\tlastModified: file.lastModified,\n\t\t\t\tlastModifiedDate: file.lastModifiedDate,\n\t\t\t\tname: file.name,\n\t\t\t\tsize: file.size,\n\t\t\t\ttype: file.type\n\t\t\t});\n\t\t},\n\t\taddFiles(event) {\n\t\t\tif (!this.multiple)\n\t\t\t\treturn this.$emit('update:modelValue', event.target.files);\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst doubles = [];\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tdt.items.add(file);\n\t\t\t\tdoubles.push(this.stringifyFile(file));\n\t\t\t}\n\t\t\tfor (var file of event.target.files) {\n\t\t\t\t// NOTE(chris): deep check (with FileReader) would require an async function so we only check the basic attributes\n\t\t\t\tif (doubles.indexOf(this.stringifyFile(file)) < 0)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t},\n\t\tremoveFile(id) {\n\t\t\tconst fileToRemove = Array.from(this.modelValue)[id];\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tif (file !== fileToRemove)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (!n)\n\t\t\t\treturn;\n\t\t\tif (n instanceof FileList) {\n\t\t\t\tif (!this.$refs.upload) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn this.$refs.upload.files = n;\n\t\t\t}\n\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst dms = [];\n\t\t\tfor (var file of n) {\n\t\t\t\tif (file instanceof File) {\n\t\t\t\t\tdt.items.add(file);\n\t\t\t\t} else {\n\t\t\t\t\tconst dmsFile = new File([JSON.stringify(file)], file.name, {\n\t\t\t\t\t\ttype: 'application/x.fhc-dms+json'\n\t\t\t\t\t});\n\t\t\t\t\tdt.items.add(dmsFile);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    `\n}","export default {\n\temits: [\n\t\t'delete'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [File, Object],\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreview: ''\n\t\t};\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (n.type == 'application/x.fhc-dms+json') {\n\t\t\t\tn.text().then(result => {\n\t\t\t\t\tconst obj = JSON.parse(result);\n\t\t\t\t\tthis.preview = obj.preview || '';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • `\n}\n"],"names":["TemplateAction","name","emits","props","res","Object","action","computed","actionHref","this","type","methods","actionFunc","$emit","renderif","undefined","template","TemplateFrame","components","ResultAction","ResultActions","actions","Array","title","String","image","imageFallback","person$3","emails","Set","email","room","mode","equipment","replace","RegExp","address","zip","city","street","floor","$p","t","employee","organisationunit","student","photo_url","foto","prestudent$1","status","stg_kuerzel","dms","icon","mimetype","cms$1","inject","preview","template_kurzbz","text","content","length","lower","toLowerCase","firstOccurence","Math","min","query","split","reduce","a","c","i","indexOf","includes","posInText","push","substr","url","content_url","$fhcApi","getUri","FHC_JS_DATA_STORAGE_OBJECT","app_root","mergedStudent","ResultPrestudent","ResultStudent","prestudent","list","filter","item","pop","mergedPerson","person","isArray","find","person_id","students","el","idx","arr","some","tmpitem","uid","sort","b","telurl","phone","inaktiv","aktiv","CoreSearchbar","cms","searchoptions","required","searchfunction","Function","showBtnSubmit","Boolean","provide","Vue","lastQuery","data","searchtimer","hidetimer","searchsettings","searchstr","getSearchStr","types","getInitiallySelectedTypes","searchresult","searchmode","showresult","searching","error","abortController","settingsDropdown","searchTypesPlaceholder","map","typeLabels","join","values","keys","watch","newSearchValue","origin","sessionStorage","setItem","newValue","localStorage","JSON","stringify","search","mounted","bootstrap","Collapse","$refs","settings","toggle","console","warn","updated","nextTick","calcSearchResultHeight","clearInput","hideresult","input","focus","result","localStorageValue","getItem","parse","checkSettingsVisibility","event","contains","target","hide","handleShowSettings","document","addEventListener","handleHideSettings","removeEventListener","rect","results","getBoundingClientRect","height","window","innerHeight","style","ceil","calcSearchResultExtent","calcheightonly","searchbox","top","bottom","right","width","nolivesearch","abort","setTimeout","callsearchapi","clearTimeout","splice","showsearchresult","AbortController","timeout","signal","then","response","meta","searchstring","mergeResults","counter","mergeTypes","mergedType","mergeKey","renderer","rank","retry","catch","code","refreshsearch","togglesettings","searchfocusin","e","preventDefault","stopPropagation","searchfocusout","dash2camelCase","string","g","toUpperCase","isValidRenderer","camelCaseRenderer","$","getActions","NavLanguage","activeClass","default","itemClass","languages","server_languages","onChange","lang","l","sprache","setLanguage","querySelector","location","reload","VerticalSplit","availHeight","topheight","bottomheight","mousePosY","resize","vsplitter","vsplitterOffset","selfOffsetTop","calcHeights","trackVerticalSplitterOffsetTop","windowheight","oldavailHeight","verticalsplit","offsetTop","offsetHeight","collapseTop","collapseBottom","showBoth","isCollapsed","dragStart","dragEnd","drag","clientY","offsetY","topOrBottomClass","topheightcss","bottomheightcss","ApiNavigation","getHeader","navigation_page","method","params","getMenu","AppMenu","appIdentifier","navigationPage","items","getItems","$api","call","$fhcAlert","handleSystemError","created","BsModal","modal","fullscreen","backdrop","validator","value","keyboard","noCloseBtn","dialogClass","headerClass","bodyClass","footerClass","allowFullscreenExpand","dispose","handleUpdate","show","relatedTarget","toggleFullscreen","Modal","popup","body","options","footer","slots","includedPrimevue","primevue","Promise","resolve","reject","instance","createApp","setup","h","class","ref","unmount","beforeUnmount","unmounted","wrapper","parentElement","removeChild","createElement","use","config","zIndex","overlay","Phrasen","mount","appendChild","FhcFragment","render","$slots","FhcForm","$registerToForm","component","inputs","$clearValidationForName","clearValidationForName","tag","sortedInputs","lcType","lastIndexOf","factory","create","getPrototypeOf","getOwnPropertyDescriptors","get","post","_defaultErrorHandlers","args","clearValidation","setFeedback","unshift","overwriteconfig","_sendFeedbackToInput","feedback","valid","forEach","remaining","fb","entries","slice","p","fromEntries","send","promise","hasOwnProperty","retval","_uuid","FormInput","inheritAttrs","registerToForm","from","bsFeedback","noAutoClass","noFeedback","inputGroup","containerClass","label","onInput","modelValueDummy","hasContainer","prop","autoContainerClass","hasOwn","acc","validationClass","classes","$attrs","feedbackClass","modelValueCmp","modelValue","set","v","idCmp","uuid","id","clearValidationForThisName","selector","$el","parentNode","querySelectorAll","_loadComponents","_","VueDatePicker","PvAutocomplete","UploadImage","UploadDms","defineAsyncComponent","autocomplete","import","beforeMount","beforeUpdate","AppConfig","endpoints","tempValues","n","o","key","binding","handleSystemErrors","update","form","alertSuccess","TYPE_DEFINITION","lehreinheit","dragIcon","extras","vevent","VALID_TYPES","isValidDragObject","every","prototype","extra","getValidTransferData","allowedTypes","strict","obj","dataTransfer","base_type","collection","getData","getTransferData","_error","convertToValidDragObject","converted","sorted","found","typedef","newData","setTransferData","validDragObject","setDragImage","dragElements","iconContainer","className","textContent","boxShadow","append","itemContainer","container","requestAnimationFrame","setData","bindDragEnterLeave","onEnter","onLeave","skipLeave","skipLeaveParent","init","evt","globalDragenter","globalDragleave","globalDrop","cleanup","wasDropped","EFFECTS","drop","modifiers","singleType","arg","match","effect","bcc","BroadcastChannel","allowed","onOver","dropEffect","onDrop","r","postMessage","cleanupEnterLeave","eventHasTypes","fhcDropCleanup","dragClick","delay","parseInt","lastTarget","lastX","lastY","startCountdown","stopCountdown","onDragOver","offsetX","fhcDragClickCleanup","ApiStvGroups","add","gruppe_kurzbz","studiensemester_kurzbz","studiengang_kz","getGruppen","deleteGroup","details$1","prestudent_id","encodeURIComponent","save","saveStudent","student_uid","StvVerband","PvTreetable","treetable","PvColumn","column","directives","$reloadList","currentSemester","appConfig","number_displayed_past_studiensemester","endpoint","preselectedKey","loading","nodes","selectedKey","expandedKeys","filters","favorites","on","filteredNodes","node","noSemReloadNodes","mapNodesToNoSemReloadNodes","newVal","oldVal","setPreselection","children","onExpandTreeNode","findNodeByKey","link","activeEl","$nextTick","activeElement","subNodes","mapResultToTreeData","realNode","treeitem","tree","closest","dispatchEvent","KeyboardEvent","onSelectTreeNode","stg_kz","semester","orgform_kurzbz","no_sem_reload","cp","leaf","filterFav","markFav","index","unsetFavFocus","dataset","linkFavAdd","tabIndex","setFavFocus","rawKey","parts","currentKey","currentNode","currentSelectedKey","toggleTreeNode","getStudentAjaxId","vorname","nachname","dropStudents","verband","gruppe","ApiStvDetails","root","CoreFetchCmpt","refresh","apiFunction","apiFunctionParameters","oldValue","fetchData","errorMessage","apiFunctionResult","successHandler","errorHandler","finally","finallyHandler","setError","message","FILTER_COMPONENT_NEW_FILTER","FilterConfig","columns","fields","switchFilter","applyFilterConfig","saveCustomFilter","currentFields","currentTarget","filteredFields","condition","alert","addField","removeField","FilterColumns","selected","names","selectedFields","field","DEFAULT_ICONS","jsonLines","xlsx","pdf","html","json","csv","DEFAULT_LABELS","TableDownload","tabulator","iconClass","currentConfig","toString","newConfig","k","stringToFileFormatter","formatter","validateFileFormatter","lcInput","XLSX","jspdf","jsPDF","autoTable","download","file","elementDataMap","WeakMap","collapseAutoClose","open","collapse","getInstance","collapsibleAutoHideFunc","Tabulator","extendModule","fitDataStretchFrozen","forced","colsWidth","tableWidth","table","rowManager","element","clientWidth","gap","lastCol","widthFixed","reinitializeWidth","responsiveLayout","modules","responsive","visible","definition","frozen","getWidth","modExists","setWidth","ApiFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","CoreFilterCmpt","onNwNewEntry","description","sideMenu","tabulatorOptions","tabulatorEvents","tableOnly","noColumnFilter","reloadBtnInfotext","newBtnShow","newBtnClass","newBtnDisabled","newBtnLabel","uniqueId","idField","parentIdField","countOnly","useSelectionSpan","filterName","filterActive","datasetMetadata","availableFilters","selectedFilter","fetchCmptRefresh","fetchCmptApiFunction","fetchCmptApiFunctionParams","fetchCmptDataFetched","fetchResult","tableBuilt","tabulatorHasSelector","selectedData","persistence","headerFilter","group","page","notSelectedFields","x","filteredData","filteredColumns","col","resizable","fieldIdsForVisibilty","getColumns","def","getDefinition","getField","fieldNames","idExtra","columnsForFilter","filterTitles","reloadTable","initTabulator","placeholder","loadCategory","hash","resolvePromiseFunc","setRenderData","startFetchCmpt","layout","movableColumns","columnDefaults","tooltip","minHeight","maxHeight","selectable","dataTree","handler","toDelete","childIdx","child","cols","isVisible","_setHeaderFilter","updateTabulator","_updateTabulator","setColumns","clearFilters","getHeaderFilters","setHeaderFilterValue","clearFilter","j","setSideMenu","setDropDownMenu","personalFilters","filtersArray","filtersCount","filter_id","desc","onClickCall","handlerGetFilterById","subscriptDescription","subscriptLinkClass","subscriptLinkValue","onClickSubscriptCall","handlerRemoveCustomFilter","option","dataFetchedCallback","called_path","called_method","handlerSaveCustomFilter","getAttribute","substring","attr","parentId","parentIdx","parent","_children","beforeCreate","$props","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","isError","hasData","trim","getError","getErrorCode","_generateRouterURI","uri","ci_router","_printDebug","parameters","errorThrown","axiosCallObj","axios","FormValidation","success","danger","ts","Date","now","msg","accessibility","cursor","prev","next","vertical","act","ariaSelected","previousSibling","nextSibling","click","activetab","ariaSetSize","ariaPosInSet","classList","pos","students$1","relative_path","getPerson","load","address_id","delete","getTypes","getPlaces","plz","getNations","getAllFirmen","ApiStudiensemester","getAll","order","start","ApiStudienplan","getStudienplaeneBySemester","ausbildungssemester","FORMDATA_DEFAULT","checked","nation","geburtsnation","staatsbuergerschaft","studienplan_id","ListNew","personOnly","studiengangKz","Number","studiensemesterKurzbz","places","formData","suggestions","studienplaene","formDataPerson","orte","ort","gemeinde","gemeinden","place","formDataStg","formDataSem","loadStudienplaene","reset","loadSuggestions","ApiStvStudents","gebdatum","loadPlaces","ApiStvAddress","plan","changeAddressNation","setPerson","suggestion","dateFormatter","val","toLocaleDateString","day","month","year","app$1","configFilter","configStudent","configStudents","ListFilter","FilterItem","filterConfig","filterid","dynamic","fixed","missing","usestdsem","buchungstyp_kurzbz","test1","test2","samestg","cleanFilters","remove","ApiStvApp","capitalize","updateValue","fhcDraggableValue","updateEffectAllowed","effectAllowed","fhcEffectAllowed","StvList","draggable","capture","blocked","onStart","onmessage","onEnd","dt","DragEvent","fhcDraggableCleanup","lists","cell","getValue","headerFilterParams","valuesLookup","listOnEmpty","headerFilterFunc","headerValue","rowValue","matches","comparestr","m","w","u","formatterParams","tickElement","crossElement","tristate","elementAttributes","headerFilterEmptyCheck","allowEmpty","rowFormatter","row","bnaktiv","getElement","ajaxRequestFunc","apiconfig","ajaxConfig","ajaxURL","ajaxParams","ajaxResponse","layoutColumnsOnNewData","selectableRangeMode","persistenceID","rowSelectionChanged","autoSelectRows","count","rows","filteredcount","handleRowClick","focusObj","lastSelected","selectedcount","currentEndpoint","countsToHTML","selectedDragObject","downloadConfig","fileString","delimiter","bom","translateTabulator","translations","titelpre","wahlname","vornamen","titelpost","ersatzkennzeichen","geschlecht","studiengang","matrikelnr","status_datum","status_bestaetigung","mail_privat","mail_intern","anmerkungen","anmerkung","aufmerksamdurch_kurzbz","punkte","aufnahmegruppe_kurzbz","dual","matr_nr","studienplan_bezeichnung","priorisierung_relativ","mentor","trans","innerText","actionNewPrestudent","new","tableEl","oldDragables","removeAttribute","getRow","selectRow","getRows","updateFilter","updateUrl","first","log","dragCleanup","onKeydown","e2","Event","altKey","ctrlKey","shiftKey","previousElementSibling","changeFocus","nextElementSibling","onFocus","FhcTabs","tabview","TabView","tabpanel","TabPanel","Symbol","border","useprimevue","current","tabs","currentTab","calcActiveIndex","initConfig","handleTabClick","change","_addToTabs","reactive","suffix","showSuffix","markRaw","suffixhelper","updateSuffix","getTabSuffix","removeInvalidCountTabs","countIst","tabsToDelete","validCountMulti","tab","countSoll","getSuffix","getTabSuffixes","ApiDetailHeader","getPersonAbteilung","mitarbeiter_uid","getLeitungOrg","oekurzbz","StvDetails","FhcHeader","domain","headerData","typeHeader","appRoot","validatedHeaderData","loadDepartmentData","departmentData","oe_kurzbz","deep","headerDataMa","leitungData","redirectToLeitung","getFotoSrc","showOnlyWithoutUid","showOnlyWithUid","loadConfig","StvStudiensemester","today","fallback","setToToday","studiensemester","handleFormValidation","ApiSearchbar","searchCis","searchStv","getSprachen","getGeschlechter","getAusbildungen","getStgs","getOrgforms","getStudiensemester","ApiStvVerband","path","ApiStv","only_open","checkDoubles","confirmErrorHandler","insert","edit","buchungsnr","getBuchungstypen","ApiStvConfig","FhcStudentenverwaltung","defaultSemester","permissions","stvRoot","cisRoot","avatarUrl","logoutUrl","activeAddons","url_studiensemester_kurzbz","url_mode","url_prestudent_id","url_tab","url_studiengang","activeAddonBewerbung","configGenerateAlias","generateAlias","configShowHintKommPrfg","showHintKommPrfg","hasBpkPermission","hasAliasPermission","hasPrestudentPermission","hasPrestudentstatusPermission","hasAssistenzPermissionForStgs","hasSchreibrechtAss","hasAdminPermission","hasPermissionToSkipStatusCheck","hasPermissionRtAufsicht","hasPermissionOutputformat","stvList","configShowAufnahmegruppen","showAufnahmegruppen","configAllowUebernahmePunkte","allowUebernahmePunkte","configUseReihungstestPunkte","useReihungstestPunkte","appconfig","hasZGVBakkPermission","hasZGVMasterPermission","hasZGVDoctorPermission","hasBismeldenPermission","configEndpoints","searchbaroptions","defaultaction","buildStudentSearchResultLink","childactions","buildPrestudentSearchResultLink","buildPersonSearchResultLink","defaultactionstudent","buildMergedPersonSearchResultLink","studiengangKuerzel","selected_semester","selected_orgform","nations","sprachen","geschlechter","verbandEndpoint","appMenuExtraItems","extraItems","orgform","$route","handleSearchUrl","details","checkUrlStudiengang","handlePersonUrl","font_size","cn","documentElement","tabulatorEls","tabulators","findTable","searchRows","normalizeHeight","onSelectVerband","urlpath","stg","stgs","typ","kurzbz","$router","studiensemesterChanged","reloadList","clearTabulator","searchbar","blurSearchbar","kuerzel","onSearch","blur","kontakt","ausbildungen","active_stgs","orgforms","konto","buchungstypen","studiensemester_desc","toReversed","searchAdvanced","searchdummy","phrasen$1","category","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","filter$1","studstatus","abmeldung","getDetails","antrag_id","stdsem","grund","errorHandling","cancel","allSettled","antrag","studierendenantrag_id","errorHeader","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","getLvs","saveLvs","forbiddenLvs","mandatoryLvs","leitung","getAntraege","getHistory","getPrestudents","approve","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","getProfilRequestFiles","requestID","selectProfilRequest","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","getStg","setStg","tabulatorConfig","self","studiengang_kz_intern","getAdressen","addNewAddress","loadAddress","updateAddress","deleteAddress","getFirmen","searchString","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","lehrveranstaltung_id","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","notiz","getNotizen","getUid","addNewNotiz","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","getContentID","ort_kurbz","getRooms","datum","von","bis","personenanzahl","getRoomTypes","content_id","version","sichtbar","getNews","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","getStudentProjektarbeiten","getStudentProjektabgaben","detail","projektarbeit_id","postStudentProjektarbeitEndupload","Headers","postStudentProjektarbeitZwischenabgabe","getStudentProjektarbeitAbgabeFile","paabgabe_id","getMitarbeiterProjektarbeiten","all","postProjektarbeitAbgabe","termin","paabgabetyp_kurzbz","bezeichnung","fixtermin","insertvon","deleteProjektarbeitAbgabe","postSerientermin","projektarbeit_ids","fetchDeadlines","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studienplan","getStudiengaengeForStudienSemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","ampeln","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","OldFhcApi","install","app","globalProperties","addEndpoints","_get_config","TypeError","_clean_return_value","fhcApiAxios","baseURL","interceptors","request","FormData","FileList","File","nd","jsondata","errors","err","handled","alertDefault","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","severity","alertSystemError","exception","db","heading","sql","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","defineProperty","noWarn","bind","helperAppContainer","helperApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","openMessagecard","getOrCreateInstance","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","FhcAlert","FhcPhrasen","toast","summary","life","alertInfo","alertWarning","confirmDelete","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","alertMultiple","messageArray","errMsg","stack","handleSystemMessage","resetFormValidation","nodeType","Node","ELEMENT_NODE","notFound","CustomEvent","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","fail","combine","async","_format_toast","_default","msgs","n_errors","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","configoverwrite","typedErrors","reason","errType","getErrorHandler","ApiPhrasen","loadingModules","user_language","user_locale","LC_Time","catArray","phrase","elem","extractCategory","t_ref","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","ciPath","router","VueRouter","createRouter","history","createWebHistory","routes","route","beforeEnter","to","test","url_student_id","redirect","afterEach","failure","Image","valueAsBase64DataString","openUploadDialog","fileInput","pickFile","files","reader","FileReader","onload","readAsDataURL","deleteImage","Dms","DmsItem","multiple","inputClass","noList","disabled","stringifyFile","lastModified","lastModifiedDate","addFiles","DataTransfer","doubles","removeFile","fileToRemove","upload","dmsFile"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Studentenverwaltung.js","sources":["../../../js/components/searchbar/result/template/action.js","../../../js/components/searchbar/result/template/frame.js","../../../js/components/searchbar/result/template/actions.js","../../../js/components/searchbar/result/person.js","../../../js/components/searchbar/result/room.js","../../../js/components/searchbar/result/employee.js","../../../js/components/searchbar/result/organisationunit.js","../../../js/components/searchbar/result/student.js","../../../js/components/searchbar/result/prestudent.js","../../../js/components/searchbar/result/dms.js","../../../js/components/searchbar/result/cms.js","../../../js/components/searchbar/result/mergedstudent.js","../../../js/components/searchbar/result/mergedperson.js","../../../js/components/searchbar/searchbar.js","../../../js/components/navigation/Language.js","../../../js/components/verticalsplit/verticalsplit.js","../../../js/api/factory/navigation.js","../../../js/components/AppMenu.js","../../../js/components/Bootstrap/Modal.js","../../../js/components/Fragment.js","../../../js/components/Form/Form.js","../../../js/components/Form/Input.js","../../../js/components/AppConfig.js","../../../js/helpers/DragAndDrop.js","../../../js/directives/drop.js","../../../js/directives/dragClick.js","../../../js/api/factory/stv/group.js","../../../js/api/factory/stv/details.js","../../../js/components/Stv/Studentenverwaltung/Verband.js","../../../js/components/Fetch.js","../../../js/components/filter/Filter/Config.js","../../../js/components/filter/Filter/Columns.js","../../../js/components/filter/Table/Download.js","../../../js/directives/collapseAutoClose.js","../../../js/tabulator/layouts/fitDataStretchFrozen.js","../../../js/api/factory/filter.js","../../../js/components/filter/Filter.js","../../../js/RESTClient.js","../../../js/components/Form/Validation.js","../../../js/directives/accessibility.js","../../../js/api/factory/stv/students.js","../../../js/api/factory/stv/kontakt/address.js","../../../js/api/factory/studiensemester.js","../../../js/api/factory/studienplan.js","../../../js/components/Stv/Studentenverwaltung/List/New.js","../../../js/api/factory/stv/app.js","../../../js/components/Stv/Studentenverwaltung/List/Filter.js","../../../js/components/Stv/Studentenverwaltung/List/Filter/Item.js","../../../js/helpers/StringHelpers.js","../../../js/directives/draggable.js","../../../js/components/Stv/Studentenverwaltung/List.js","../../../js/components/Tabs.js","../../../js/api/factory/detailHeader.js","../../../js/components/Stv/Studentenverwaltung/Details.js","../../../js/components/DetailHeader/DetailHeader.js","../../../js/components/Stv/Studentenverwaltung/Studiensemester.js","../../../js/api/factory/searchbar.js","../../../js/api/factory/stv/lists.js","../../../js/api/factory/stv/verband.js","../../../js/api/factory/stv.js","../../../js/api/factory/stv/konto.js","../../../js/api/factory/stv/kontakt.js","../../../js/api/factory/stv/config.js","../../../js/components/Stv/Studentenverwaltung.js","../../../js/api/search.js","../../../js/api/phrasen.js","../../../js/api/navigation.js","../../../js/api/filter.js","../../../js/api/studstatus.js","../../../js/api/profil.js","../../../js/api/profilUpdate.js","../../../js/api/lvPlan.js","../../../js/api/stv.js","../../../js/api/stv/verband.js","../../../js/api/stv/students.js","../../../js/api/stv/filter.js","../../../js/api/stv/konto.js","../../../js/api/stv/group.js","../../../js/api/stv/kontakt.js","../../../js/api/stv/prestudent.js","../../../js/api/stv/status.js","../../../js/api/stv/details.js","../../../js/api/stv/exam.js","../../../js/api/stv/abschlusspruefung.js","../../../js/api/stv/grades.js","../../../js/api/stv/mobility.js","../../../js/api/stv/archiv.js","../../../js/api/stv/documents.js","../../../js/api/stv/exemptions.js","../../../js/api/stv/jointstudies.js","../../../js/api/stv/courselist.js","../../../js/api/notiz.js","../../../js/api/notiz/person.js","../../../js/api/betriebsmittel.js","../../../js/api/betriebsmittel/person.js","../../../js/api/checkperson.js","../../../js/api/ort.js","../../../js/api/cms.js","../../../js/api/lehre.js","../../../js/api/addons.js","../../../js/api/messages.js","../../../js/api/messages/person.js","../../../js/api/vorlagen.js","../../../js/api/studium.js","../../../js/api/fhcapifactory.js","../../../js/api/dashboard.js","../../../js/api/bookmark.js","../../../js/api/ampeln.js","../../../js/api/studiengang.js","../../../js/api/menu.js","../../../js/api/authinfo.js","../../../js/api/language.js","../../../js/plugin/OldFhcApi.js","../../../js/plugins/FhcAlert.js","../../../js/plugins/Api.js","../../../js/api/factory/phrasen.js","../../../js/plugins/Phrasen.js","../../../js/apps/Studentenverwaltung.js","../../../js/components/Form/Upload/Image.js","../../../js/components/Form/Upload/Dms.js","../../../js/components/Form/Upload/Dms/Item.js"],"sourcesContent":["export default {\n\tname: 'SearchbarResultTemplateAction',\n\temits: [ 'actionexecuted' ],\n\tprops: { \n\t\tres: Object,\n\t\taction: Object\n\t},\n\tcomputed: {\n\t\tactionHref() {\n\t\t\tif (this.action.type !== 'link')\n\t\t\t\treturn 'javascript:void(0);';\n\t\t\treturn typeof this.action.action === 'function'\n\t\t\t\t? this.action.action(this.res) \n\t\t\t\t: this.action.action;\n\t\t}\n\t},\n\tmethods: {\n\t\tactionFunc() {\n\t\t\tif (this.action.type === 'function')\n\t\t\t\tthis.action.action(this.res);\n\t\t\tthis.$emit('actionexecuted');\n\t\t},\n\t\trenderif: function() {\n\t\t\tif(this.action?.renderif === undefined) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn this.action.renderif(this.res);\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t`\n};","import ResultAction from \"./action.js\";\nimport ResultActions from \"./actions.js\";\n\nexport default {\n\tname: 'SearchbarResultTemplateFrame',\n\tcomponents: {\n\t\tResultAction,\n\t\tResultActions\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tres: Object,\n\t\tactions: Object,\n\t\ttitle: String,\n\t\timage: String,\n\t\timageFallback: String\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{{ title }}\n\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t
    `\n};","import ResultAction from \"./action.js\";\n\nexport default {\n\tname: 'SearchbarResultTemplateActions',\n\tcomponents: {\n\t\tResultAction\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tres: Object,\n\t\tactions: Array\n\t},\n\tmethods: {\n\t\trenderif: function(action) {\n\t\t\tif(action?.renderif === undefined) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn action.renderif(this.res);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t
    `\n};","import TemplateFrame from \"./template/frame.js\";\n\nexport default {\n\tname: 'SearchbarResultPerson',\n\tcomponents: {\n\t\tTemplateFrame\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\tcomputed: {\n\t\temails() {\n\t\t\treturn new Set(this.res.email);\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('person/person_id') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.person_id }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_emails') }}
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t`\n};","import TemplateFrame from \"./template/frame.js\";\n\nexport default {\n\tname: 'SearchbarResultRoom',\n\tcomponents: {\n\t\tTemplateFrame\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tmode: String,\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\tcomputed: {\n\t\tequipment() {\n\t\t\tif (!this.res.equipment)\n\t\t\t\treturn \"\";\n\t\t\treturn this.res.equipment.replace(new RegExp('
    ', 'ig'), '');\n\t\t},\n\t\taddress() {\n\t\t\tlet address = this.res.zip || '';\n\t\t\tif (this.res.city)\n\t\t\t\taddress += (address ? ' ' : '') + this.res.city;\n\t\t\tif (this.res.street)\n\t\t\t\taddress += (address ? ', ' : '') + this.res.street;\n\t\t\tif (this.res.floor)\n\t\t\t\taddress += (address ? ' / ' : '') + this.$p.t('search/result_address_floor', this.res);\n\n\t\t\treturn address || this.$p.t('search/result_address_none');\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_room_address') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ address }}\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_workplaces') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.sitzplaetze }}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_building') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.building }}\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_equipment') }}
    \n\t\t\t\t
    \n\t\t\t\t\t
    ','')\">
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t`\n};","import TemplateFrame from \"./template/frame.js\";\n\nexport default {\n\tname: 'SearchbarResultEmployee',\n\tcomponents: {\n\t\tTemplateFrame\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_stdkst') }}
    \n\t\t\t\t
    \n\t\t\t\t\t
      0\">\n\t\t\t\t\t\t
    • {{ stdkst }}
    • \n\t\t\t\t\t
    \n\t\t\t\t\t{{ $p.t('search/result_stdkst_none') }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('lehre/organisationseinheit') }}
    \n\t\t\t\t
    \n\t\t\t\t\t
      0\">\n\t\t\t\t\t\t
    • {{ oe }}
    • \n\t\t\t\t\t
    \n\t\t\t\t\t{{ $p.t('search/result_oe_none') }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_emails') }}
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('person/telefon') }}
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t`\n};","import TemplateFrame from \"./template/frame.js\";\n\nexport default {\n\tname: 'SearchbarResultOrganistationunit',\n\tcomponents: {\n\t\tTemplateFrame\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_parent_oe') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.parentoe_name }}\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_group_emails') }}
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{ res.mailgroup }}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_leader') }}
    \n\t\t\t\t
    \n\t\t\t\t\t
      0\">\n\t\t\t\t\t\t
    • {{ leader.name }}
    • \n\t\t\t\t\t
    \n\t\t\t\t\t{{ $p.t('search/result_leader_none') }}\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_number_of_employees') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.number_of_people }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t`\n};","import TemplateFrame from \"./template/frame.js\";\n\nexport default {\n\tname: 'SearchbarResultStudent',\n\tcomponents: {\n\t\tTemplateFrame\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tmode: String,\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\tcomputed: {\n\t\tphoto_url() {\n\t\t\tif (this.mode != 'simple')\n\t\t\t\treturn this.res.photo_url;\n\t\t\tif (this.res.foto)\n\t\t\t\treturn 'data:image/jpeg;base64,' + this.res.foto;\n\t\t\treturn null;\n\t\t},\n\t\temails() {\n\t\t\tif (this.mode == 'simple')\n\t\t\t\treturn new Set([this.res.email]);\n\t\t\treturn new Set(this.res.email);\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_student_uid') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.uid }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('person/person_id') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.person_id }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('person/matrikelnummer') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.matrikelnr }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_emails') }}
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t`\n};","import TemplateFrame from \"./template/frame.js\";\n\nexport default {\n\tname: 'SearchbarResultPrestudent',\n\tcomponents: {\n\t\tTemplateFrame\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tmode: String,\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\tcomputed: {\n\t\ttitle() {\n\t\t\tif (this.mode == 'simple')\n\t\t\t\treturn this.res.name;\n\t\t\treturn this.res.name + ' (' + this.res.status + ' ' + this.res.stg_kuerzel + ')';\n\t\t},\n\t\tphoto_url() {\n\t\t\tif (this.mode != 'simple')\n\t\t\t\treturn this.res.photo_url;\n\t\t\tif (this.res.foto)\n\t\t\t\treturn 'data:image/jpeg;base64,' + this.res.foto;\n\t\t\treturn null;\n\t\t},\n\t\temails() {\n\t\t\tif (this.mode == 'simple')\n\t\t\t\treturn new Set([this.res.email]);\n\t\t\treturn new Set(this.res.email);\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('person/person_id') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.person_id }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_emails') }}
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_student_uid') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.uid }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('person/matrikelnummer') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.matrikelnr }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_prestudent_id') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.prestudent_id }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('lehre/studiengang') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.bezeichnung }} {{ res.orgform ? '(' + res.orgform + ')' : '' }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t`\n};","import TemplateFrame from \"./template/frame.js\";\n\nexport default {\n\tname: 'SearchbarResultDms',\n\tcomponents: {\n\t\tTemplateFrame\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\tcomputed: {\n\t\ticon() {\n\t\t\tswitch (this.res.mimetype) {\n\t\t\t\tcase 'application/pdf':\n\t\t\t\t\treturn 'file-pdf';\n\t\t\t\tcase 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n\t\t\t\tcase 'application/msword':\n\t\t\t\t\treturn 'file-word';\n\t\t\t\tcase 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n\t\t\t\tcase 'application/mspowerpoint':\n\t\t\t\t\treturn 'file-powerpoint';\n\t\t\t\tcase 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n\t\t\t\tcase 'application/vnd.ms-excel':\n\t\t\t\t\treturn 'file-excel';\n\t\t\t\tcase 'application/x-zip':\n\t\t\t\tcase 'application/zip':\n\t\t\t\t\treturn 'file-zipper';\n\t\t\t\tcase 'image/jpeg':\n\t\t\t\tcase 'image/gif':\n\t\t\t\tcase 'image/png':\n\t\t\t\t\treturn 'file-image';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'file';\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_dms_id') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.dms_id }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_version') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.version }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_keywords') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.keywords }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('global/beschreibung') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ res.description }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t`\n};","import TemplateFrame from \"./template/frame.js\";\n\nexport default {\n\tname: 'SearchbarResultCms',\n\tcomponents: {\n\t\tTemplateFrame\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\tinject: [\n\t\t'query'\n\t],\n\tcomputed: {\n\t\tpreview() {\n\t\t\tif (this.res.template_kurzbz != 'redirect') {\n\t\t\t\tlet text = this.res.content.replace(//ig, '').replace(/<[^>]+>/ig, '').replace(/^\\s+|\\s+$/g, '');\n\n\t\t\t\tif (text.length > 1000) {\n\t\t\t\t\t// NOTE(chris): focus on searched text!\n\t\t\t\t\tlet lower = text.toLowerCase();\n\t\t\t\t\tlet firstOccurence = Math.min(this.query.split(' ').reduce((a, c) => {\n\t\t\t\t\t\t// NOTE(chris): filter query for words that affects the content field and get the lowest index of them\n\t\t\t\t\t\tif (c == 'or')\n\t\t\t\t\t\t\treturn a;\n\t\t\t\t\t\tlet i = c.indexOf(':');\n\t\t\t\t\t\tif (i < 0 || (i > 0 && ['content', 'inhalt'].includes(c.split(':')[0]))) {\n\t\t\t\t\t\t\tlet posInText = lower.indexOf(c);\n\t\t\t\t\t\t\tif (posInText >= 0)\n\t\t\t\t\t\t\t\ta.push(posInText);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn a;\n\t\t\t\t\t}, []));\n\n\t\t\t\t\tif (firstOccurence) {\n\t\t\t\t\t\tif (firstOccurence + 997 >= text.length) {\n\t\t\t\t\t\t\tfirstOccurence = text.length - 997;\n\t\t\t\t\t\t\tif (firstOccurence > 0)\n\t\t\t\t\t\t\t\treturn '...' + text.substr(firstOccurence, 997);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn '...' + text.substr(firstOccurence, 994) + '...';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttext = text.substr(0, 997) + '...';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn text;\n\t\t\t}\n\t\t\t\n\t\t\tlet url = this.res.content_url;\n\t\t\tif (url.substr(0, 16) == '../index.ci.php/')\n\t\t\t\turl = this.$fhcApi.getUri(url.substr(16));\n\t\t\telse if (url.substr(0, 3) == '../')\n\t\t\t\turl = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/\\/+$/, '') + url.substr(2);\n\t\t\treturn '' + url + '';\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t
    \n\t\t\t{{ $p.t('search/result_content_none') }}\n\t\t
    \n\t`\n};","import ResultPrestudent from \"./prestudent.js\";\nimport ResultStudent from \"./student.js\";\n\nexport default {\nname: 'SearchbarResultMergedstudent',\n\t\tcomponents: {\n\t\tResultPrestudent,\n\t\tResultStudent\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tmode: String,\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\tcomputed: {\n\t\tprestudent() {\n\t\t\tconst prestudent = this.res.list.filter(item => item.type == 'prestudent');\n\t\t\treturn prestudent.pop();\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t`\n};","import TemplateFrame from \"./template/frame.js\";\nimport TemplateAction from \"./template/action.js\";\n\nexport default {\n\tname: 'SearchbarResultMergedperson',\n\tcomponents: {\n\t\tTemplateFrame,\n\t\tTemplateAction\n\t},\n\temits: [ 'actionexecuted' ],\n\tprops: {\n\t\tmode: String,\n\t\tres: Object,\n\t\tactions: Object\n\t},\n\tcomputed: {\n\t\tperson() {\n\t\t\t // Cummulate all emails\n\t\t\tconst email = this.res.list.reduce((a, c) => [...a, ...(Array.isArray(c.email) ? c.email : [c.email])], []);\n\n\t\t\t// Use person entry if available (with cummulated emails)\n\t\t\tconst person = this.res.list.find(item => item.type == 'person');\n\t\t\tif (person)\n\t\t\t\treturn {...person, email};\n\n\t\t\t // Those properties should be the same in all entries\n\t\t\tconst { person_id, name } = this.res.list[0];\n\t\t\t // Get first photo (prefer student photo if available)\n\t\t\tlet photo_url;\n\t\t\tif (this.mode == 'simple') {\n\t\t\t\tlet foto = (this.students ? this.students.find(el => el.foto) : null)?.foto;\n\t\t\t\tif (foto)\n\t\t\t\t\tfoto = 'data:image/jpeg;base64,' + foto;\n\t\t\t\tphoto_url = foto || this.employee?.photo_url;\n\t\t\t} else\n\t\t\t\tphoto_url = ((this.students ? this.students.find(el => el.photo_url) : null) || this.employee)?.photo_url;\n\n\t\t\treturn { person_id, name, photo_url, email };\n\t\t},\n\t\temployee() {\n\t\t\treturn this.res.list.find(item => [\n\t\t\t\t'employee',\n\t\t\t\t'unassigned_employee',\n\t\t\t\t'mitarbeiter',\n\t\t\t\t'mitarbeiter_ohne_zuordnung'\n\t\t\t].includes(item.type)) || null;\n\t\t},\n\t\tstudents() {\n\t\t\tconst students = this.res.list.filter(item => [\n\t\t\t\t\t'student',\n\t\t\t\t\t'prestudent',\n\t\t\t\t\t'studentcis',\n\t\t\t\t\t'studentStv'\n\t\t\t\t].includes(item.type))\n\t\t\t\t.filter((item, idx, arr) => {\n\t\t\t\t\tif (item.type === 'prestudent') {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet prestudentwithsameuidexists = arr.some(tmpitem => {\n\t\t\t\t\t\treturn tmpitem.uid === item.uid && tmpitem.type === 'prestudent';\n\t\t\t\t\t});\n\n\t\t\t\t\tif (prestudentwithsameuidexists) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}).sort((a, b) => (a.sort || 0) - (b.sort || 0));\n\t\t\treturn students.length ? students : null;\n\t\t},\n\t\temails() {\n\t\t\t// Remove duplicates\n\t\t\treturn new Set(this.person.email);\n\t\t},\n\t\ttelurl() {\n\t\t\treturn 'tel:' + this.employee?.phone;\n\t\t},\n\t\tinaktiv() {\n\t\t\treturn this.res.list.some(item => item?.aktiv === false);\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('person/person_id') }}
    \n\t\t\t\t
    \n\t\t\t\t\t{{ person.person_id }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    {{ $p.t('search/result_emails') }}
    \n\t\t\t\t\n\t\t\t
    \n\n\t\t\t\n\n\t\t\t\n\t\t
    \n\t`\n};","import person from \"./result/person.js\";\nimport room from \"./result/room.js\";\nimport employee from \"./result/employee.js\";\nimport organisationunit from \"./result/organisationunit.js\";\nimport student from \"./result/student.js\";\nimport prestudent from \"./result/prestudent.js\";\nimport dms from \"./result/dms.js\";\nimport cms from \"./result/cms.js\";\nimport mergedStudent from \"./result/mergedstudent.js\";\nimport mergedPerson from \"./result/mergedperson.js\";\n\nexport default {\n\tname: \"FhcSearchbar\",\n\tcomponents: {\n\t\tperson,\n\t\troom,\n\t\temployee,\n\t\torganisationunit,\n\t\tstudent,\n\t\tprestudent,\n\t\tdms,\n\t\tcms,\n\t\tmergedStudent,\n\t\tmergedPerson\n\t},\n props: {\n \tsearchoptions: {\n \t\ttype: Object,\n \t\trequired: true\n \t},\n \tsearchfunction: {\n \t\ttype: Function,\n \t\trequired: true\n \t},\n \tshowBtnSubmit: Boolean\n },\n provide() {\n return {\n query: Vue.computed(() => this.lastQuery)\n };\n },\n data: function() {\n return {\n searchtimer: null,\n hidetimer: null,\n searchsettings: {\n searchstr: this.getSearchStr(),\n types: this.getInitiallySelectedTypes(),\n },\n searchresult: [],\n searchmode: '',\n showresult: false, \n searching: false,\n error: null,\n abortController: null,\n\t\t\tsettingsDropdown: null,\n lastQuery: ''\n };\n },\n\tcomputed: {\n\t\tsearchTypesPlaceholder() {\n\t\t\tif (!this.searchsettings.types.length) {\n\t\t\t\treturn Object.values(this.typeLabels).join(' / ');\n\t\t\t}\n\t\t\treturn this.searchsettings.types.map(type => this.typeLabels[type]).join(' / ');\n\t\t},\n\t\ttypes() {\n\t\t\tif (!this.searchoptions.types)\n\t\t\t\treturn [];\n\t\t\tif (Array.isArray(this.searchoptions.types))\n\t\t\t\treturn this.searchoptions.types;\n\t\t\treturn Object.keys(this.searchoptions.types);\n\t\t},\n\t\ttypeLabels() {\n\t\t\tif (!this.searchoptions.types)\n\t\t\t\treturn {};\n\t\t\tif (Array.isArray(this.searchoptions.types)) {\n\t\t\t\treturn this.searchoptions.types.reduce((res, type) => {\n\t\t\t\t\tres[type] = type;\n\t\t\t\t\treturn res\n\t\t\t\t}, {});\n\t\t\t}\n\t\t\treturn this.searchoptions.types;\n\t\t}\n\t},\n\ttemplate: /*html*/`\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n \n \n \n
    \n\n
    \n
    \n
    \n
    \n \n
    \n
    {{ error }}
    \n
    {{ $p.t('search/error_no_results') }}
    \n \n
    \n
    \n
    \n\n\t\t\t\n\t\t\t\t 0\"\n\t\t\t\t\tclass=\"d-flex flex-column m-3\"\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\t{{ $p.t('search/applyfilter_label') }}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\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\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n
    \n\t\t\n `,\n watch:{\n\t\t'searchsettings.searchstr': function (newSearchValue) {\n\t\t\tif(this.searchoptions.origin){\n\t\t\t\tsessionStorage.setItem(`${this.searchoptions.origin}_searchstr`,newSearchValue);\n\t\t\t}\n\t\t},\n\t\t'searchsettings.types'(newValue) {\n\t\t\tif (Array.isArray(newValue) && newValue.length === 0) {\n\t\t\t\tthis.searchsettings.types = [...this.types];\n\t\t\t}\n\t\t\t// stores the search types in the localstorage, only if the newValue is also an array\n\t\t\tif (Array.isArray(newValue) && this.searchoptions.origin) {\n\t\t\t\tlocalStorage.setItem(`${this.searchoptions.origin}_searchtypes`, JSON.stringify(newValue));\n\t\t\t}\n\t\t\tthis.search();\n\t\t}\n },\n\tmounted(){\n\t\tthis.settingsDropdown = new bootstrap.Collapse(this.$refs.settings, {\n\t\t\ttoggle: false\n\t\t});\n\n\t\tif (!this.searchoptions.origin){\n\t\t\tconsole.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.\");\n\t\t}\n\t},\n\tupdated() {\n\t\tif(this.showresult) {\n\t\t\tVue.nextTick(() => {\n\t\t\t\tthis.calcSearchResultHeight();\n\t\t\t});\n\t\t}\n\t},\n\tmethods: {\n\t\tclearInput() {\n\t\t\tthis.searchsettings.searchstr = \"\";\n\t\t\tthis.hideresult();\n\t\t\tthis.$refs.input.focus();\n\t\t},\n\t\tgetInitiallySelectedTypes() {\n\t\t\tlet result = false;\n\t\t\tif (this.searchoptions.origin) {\n\t\t\t\tlet localStorageValue = localStorage.getItem(`${this.searchoptions.origin}_searchtypes`);\n\t\t\t\tif (localStorageValue) {\n\t\t\t\t\tresult = JSON.parse(localStorageValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result)\n\t\t\t\treturn result;\n\t\t\tif (!this.searchoptions.types)\n\t\t\t\treturn [];\n\t\t\tif (Array.isArray(this.searchoptions.types))\n\t\t\t\treturn [...this.searchoptions.types];\n\t\t\treturn Object.keys(this.searchoptions.types);\n\t\t},\n\t\tgetSearchStr: function(){\n\t\t\tif (!this.searchoptions.origin)\n\t\t\t\treturn '';\n\t\t\treturn sessionStorage.getItem(`${this.searchoptions.origin}_searchstr`) ?? '';\n\t\t},\n\t\tcheckSettingsVisibility: function(event) {\n\t\t\t// hides the settings collapsible if the user clicks somewhere else\n\t\t\tif (!this.$refs.settings.contains(event.target))\n\t\t\t{\n\t\t\t\tthis.settingsDropdown.hide();\n\t\t\t}\n\t\t},\n\t\thandleShowSettings: function() {\n\t\t\t// adds the event listener checkSettingsVisibility only when the collapsible is shown\n\t\t\tdocument.addEventListener(\"click\", this.checkSettingsVisibility);\n\t\t},\n\t\thandleHideSettings: function () {\n\t\t\t// removes the event listener checkSettingsVisibility when the collapsible is hidden\n\t\t\tdocument.removeEventListener(\"click\", this.checkSettingsVisibility);\n\t\t},\n\t\tcalcSearchResultHeight: function() {\n\t\t\tconst rect = this.$refs.results.getBoundingClientRect();\n\t\t\tif( rect.height > 0 && rect.height < (window.innerHeight * 0.8) ) {\n\t\t\t\tthis.$refs.result.style.height = Math.ceil(rect.height + 16) + 'px';\n\t\t\t} else {\n\t\t\t\tthis.$refs.result.style.height = Math.floor(window.innerHeight * 0.8) + 'px';\n\t\t\t}\n\t\t},\n calcSearchResultExtent: function() {\n\t\t\tif(!this.showresult) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(this.searchoptions?.calcheightonly === undefined \n\t\t\t\t|| this.searchoptions.calcheightonly === false) {\n\t\t\t\tvar rect = this.$refs.searchbox.getBoundingClientRect();\n\t\t\t\tthis.$refs.result.style.top = Math.floor(rect.bottom + 3) + 'px';\n\t\t\t\tthis.$refs.result.style.right = Math.floor(rect.right) + 'px';\n\t\t\t\tthis.$refs.result.style.width = Math.floor(rect.width) + 'px';\n\t\t\t}\n this.calcSearchResultHeight();\n },\n search: function() {\n if(this.searchoptions?.nolivesearch === true) return;\n\n this.abort();\n if( this.searchsettings.searchstr.length >= 2 ) {\n this.calcSearchResultExtent();\n this.searchtimer = setTimeout(\n this.callsearchapi,\n 500\n );\n } else { \n this.showresult = false;\n }\n },\n abort() {\n if (this.searchtimer !== null) {\n clearTimeout(this.searchtimer);\n }\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null;\n }\n this.searchresult = [];\n },\n callsearchapi: function() {\n this.error = null;\n this.searchresult.splice(0, this.searchresult.length);\n this.searching = true;\n this.showsearchresult();\n if(this.searchsettings.types.length === 0) {\n this.error = this.$p.t('search/error_missing_type');\n this.searching = false;\n return;\n }\n\n if (this.abortController)\n this.abortController.abort();\n this.abortController = new AbortController();\n\n this.searchfunction(this.searchsettings, { timeout: 50000, signal: this.abortController.signal })\n .then(response=>{\n if (!response.data) {\n this.error = this.$p.t('search/error_general');\n } else {\n let res = response.data.map(el => el.data ? {...el, ...JSON.parse(el.data)} : el);\n this.lastQuery = response.meta.searchstring;\n if (this.searchoptions.mergeResults) {\n let counter = 0;\n let mergeTypes = [];\n let mergedType = 'merged-';\n let mergeKey = '';\n\n switch (this.searchoptions.mergeResults) {\n case 'student':\n mergeTypes = ['student', 'prestudent'];\n mergedType += this.searchoptions.mergeResults;\n mergeKey = 'uid';\n break;\n case 'person':\n mergeTypes = ['person', 'employee', 'student', 'prestudent'];\n mergedType += this.searchoptions.mergeResults;\n mergeKey = 'person_id';\n break;\n }\n\n if (mergeTypes.length) {\n res = Object.values(res.reduce((a, c) => {\n if (!mergeTypes.includes(c.renderer)) {\n a['nomerge' + counter++] = c;\n } else if (c[mergeKey] === null) {\n a['nomerge' + counter++] = c;\n } else if (a[c[mergeKey]] === undefined) {\n a[c[mergeKey]] = {\n rank: c.rank,\n renderer: mergedType,\n type: mergedType,\n list: [c]\n };\n } else {\n a[c[mergeKey]].list.push(c);\n if (c.rank > a[c[mergeKey]].rank)\n a[c[mergeKey]].rank = c.rank;\n }\n return a;\n }, {})).sort((a, b) => b.rank - a.rank);\n }\n }\n this.searchresult = res;\n this.searchmode = response.meta.mode;\n }\n this.searching = false;\n this.retry = 0;\n })\n .catch(error=> {\n if (error.code == \"ERR_CANCELED\") {\n return this.retry = 0;\n }\n if (error.code == \"ECONNABORTED\" && this.retry) {\n this.retry--;\n return this.callsearchapi();\n }\n\n this.error = this.$p.t('search/error_general', error);\n this.searching = false;\n this.retry = 0;\n });\n },\n refreshsearch: function() {\n this.search();\n this.togglesettings();\n },\n hideresult: function() {\n this.showresult = false;\n window.removeEventListener('resize', this.calcSearchResultExtent);\n },\n showsearchresult: function() {\n if(this.searchoptions?.nolivesearch === true) return;\n\n if( this.searchsettings.searchstr.length >= 2 ) {\n this.showresult = true;\n window.addEventListener('resize', this.calcSearchResultExtent);\n\t\t\t\tthis.calcSearchResultExtent();\n }\n },\n searchfocusin: function(e) {\n e.preventDefault();\n e.stopPropagation();\n if( this.hidetimer !== null ) {\n clearTimeout(this.hidetimer);\n }\n\t\t\tif (this.searchsettings.searchstr.length >= 2\n\t\t\t\t&& this.searchresult.length === 0) {\n\t\t\t\tthis.search();\n\t\t\t}\n },\n searchfocusout: function(e) {\n e.preventDefault();\n e.stopPropagation();\n this.hidetimer = setTimeout(\n this.hideresult,\n 100\n );\n },\n dash2camelCase(string) {\n return string.replace(/-([a-z])/g, g => g[1].toUpperCase());\n },\n isValidRenderer(renderer) {\n const camelCaseRenderer = this.dash2camelCase(renderer);\n return Object.keys(this.$.components).includes(camelCaseRenderer);\n },\n\t\tgetActions(res) {\n\t\t\tlet actions = this.searchoptions.actions[this.dash2camelCase(res.renderer)];\n\t\t\tif (actions) {\n\t\t\t\treturn actions;\n\t\t\t}\n\t\t\treturn this.searchoptions.actions[res.type];\n\t\t}\n }\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\temits: [\n\t\t'changed'\n\t],\n\tprops: {\n\t\tactiveClass: {\n\t\t\ttype: String,\n\t\t\tdefault: 'active'\n\t\t},\n\t\titemClass: {\n\t\t\ttype: [String, Array, Object],\n\t\t\tdefault: ''\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlanguages: FHC_JS_DATA_STORAGE_OBJECT.server_languages\n\t\t};\n\t}, \n\tmethods:{\n\t\tonChange(lang) {\n\t\t\tif (this.languages.some(l => l.sprache === lang)) {\n\t\t\t\tthis.$p\n\t\t\t\t\t.setLanguage(lang)\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tif (document.querySelector('[cis4Reload]'))\n\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.$emit('changed', lang);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: /*html*/`\n\t
    \n\t\t\n\t\t\t{{ lang.bezeichnung }}\n\t\t\n\t
    `\n};","export default {\n name: 'VerticalSplit',\n data: function() {\n return { \n availHeight: 0,\n topheight: 0,\n bottomheight: 0,\n mousePosY: 0, \n resize: false,\n vsplitter: null,\n vsplitterOffset: 0,\n selfOffsetTop: 0\n }; \n },\n template: `\n
    \n
    \n \n

    Top Panel

    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n \n

    \n \n

    \n
    \n `,\n mounted: function() {\n this.calcHeights();\n this.trackVerticalSplitterOffsetTop();\n window.addEventListener('resize', this.calcHeights);\n },\n updated: function() {\n this.trackVerticalSplitterOffsetTop();\n },\n methods: {\n calcHeights: function() {\n var windowheight = window.innerHeight;\n var oldavailHeight = this.availHeight;\n this.selfOffsetTop = this.$refs.verticalsplit.offsetTop;\n this.availHeight = windowheight - this.selfOffsetTop - this.$refs.vsplitter.offsetHeight;\n if( (this.topheight === 0 && this.bottomheight === 0) || oldavailHeight === 0 ) {\n this.topheight = Math.floor(this.availHeight/2);\n } else {\n this.topheight = Math.floor( ((((this.topheight * 100) / oldavailHeight) / 100) * this.availHeight) );\n }\n this.bottomheight = this.availHeight - this.topheight;\n },\n collapseTop: function() {\n this.calcHeights();\n this.topheight = 0;\n this.bottomheight = this.availHeight;\n },\n collapseBottom: function() {\n this.calcHeights();\n this.topheight = this.availHeight;\n this.bottomheight = 0;\n },\n showBoth: function() {\n this.topheight = Math.floor(this.availHeight/2);\n this.bottomheight = Math.floor(this.availHeight/2);\n },\n isCollapsed: function() {\n if( this.topheight === 0 ) {\n return 'top';\n } else if ( this.bottomheight === 0 ) {\n return 'bottom';\n } else {\n return false;\n }\n },\n dragStart: function(e) {\n e.preventDefault();\n e.stopPropagation();\n window.addEventListener('mouseup', this.dragEnd);\n window.addEventListener('mousemove', this.drag);\n this.resize = true;\n this.mousePosY = e.clientY;\n },\n drag: function(e) {\n if( !this.resize ) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n var offsetY = e.clientY - this.mousePosY;\n this.topheight = this.topheight + offsetY;\n if( this.topheight < 0 ) {\n this.topheight = 0;\n }\n if( this.topheight > this.availHeight ) {\n this.topheight = this.availHeight;\n }\n this.bottomheight = this.availHeight - this.topheight;\n this.mousePosY = e.clientY;\n },\n dragEnd: function(e) {\n e.preventDefault();\n e.stopPropagation();\n window.removeEventListener('mousemove', this.drag);\n window.removeEventListener('mouseup', this.dragEnd);\n this.resize = false;\n this.mousePosY = e.clientY;\n },\n trackVerticalSplitterOffsetTop: function() {\n this.vsplitterOffset = this.$refs.vsplitter.offsetTop;\n }\n },\n computed: {\n topOrBottomClass: function() {\n return ((this.vsplitterOffset - this.selfOffsetTop) <= Math.floor(this.availHeight/2))\n ? 'top'\n : 'bottom';\n },\n topheightcss: function() {\n return this.topheight + 'px';\n },\n bottomheightcss: function() {\n return this.bottomheight + 'px';\n }\n }\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/navigation/header',\n\t\t\tparams: { navigation_page }\n\t\t};\n\t},\n\tgetMenu(navigation_page) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/navigation/menu',\n\t\t\tparams: { navigation_page }\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport ApiNavigation from '../api/factory/navigation.js';\n\nexport default {\n\tname: 'AppMenu',\n\tprops: {\n\t\tappIdentifier: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\tnavigationPage: {\n\t\t\ttype: String,\n\t\t\tdefault: 'apps'\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\titems: []\n\t\t};\n\t},\n\twatch: {\n\t\tnavigationPage() {\n\t\t\tthis.getItems();\n\t\t}\n\t},\n\tmethods: {\n\t\tgetItems() {\n\t\t\tthis.$api\n\t\t\t\t.call(ApiNavigation.getMenu(this.navigationPage))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.items = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.getItems();\n\t},\n\ttemplate: /* html */`\n\t
      \n\t\t
    • \n\t\t\t\n\t\t\t\t\n\t\t\t\t{{ menu.description }}\n\t\t\t\n\t\t
    • \n\t\t\n\t
    `\n};\n","//import Phrasen from '../../plugin/Phrasen.js';\n\nexport default {\n\tname: 'BootstrapModal',\n\tdata: () => ({\n\t\tmodal: null,\n\t\tfullscreen: false\n\t}),\n\tprops: {\n\t\tbackdrop: {\n\t\t\ttype: [Boolean,String],\n\t\t\tdefault: true,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['static', true, false].includes(value);\n\t\t\t}\n\t\t},\n\t\tfocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tkeyboard: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tnoCloseBtn: Boolean,\n\t\tdialogClass: [String,Array,Object],\n\t\theaderClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tbodyClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'px-4 py-5'\n\t\t},\n\t\tfooterClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tallowFullscreenExpand: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\temits: [\n\t\t\"hideBsModal\",\n\t\t\"hiddenBsModal\",\n\t\t\"hidePreventedBsModal\",\n\t\t\"showBsModal\",\n\t\t\"shownBsModal\",\n\t\t\"toggleFullscreen\"\n\t],\n\tmethods: {\n\t\tdispose() {\n\t\t\treturn this.modal.dispose();\n\t\t},\n\t\thandleUpdate() {\n\t\t\treturn this.modal.handleUpdate();\n\t\t},\n\t\thide() {\n\t\t\treturn this.modal.hide();\n\t\t},\n\t\tshow(relatedTarget) {\n\t\t\treturn this.modal.show(relatedTarget);\n\t\t},\n\t\ttoggle() {\n\t\t\treturn this.modal.toggle();\n\t\t},\n\t\ttoggleFullscreen() {\n\t\t\tthis.fullscreen = !this.fullscreen\n\t\t\tthis.$emit('toggleFullscreen')\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$refs.modal)\n\t\t\tthis.modal = new bootstrap.Modal(this.$refs.modal, {\n\t\t\t\tbackdrop: this.backdrop,\n\t\t\t\tfocus: this.focus,\n\t\t\t\tkeyboard: this.keyboard\n\t\t\t});\n\t},\n\tpopup(body, options, title, footer) {\n\t\tconst BsModal = this,\n\t\t\tslots = {};\n\t\tif (body !== undefined)\n\t\t\tslots.default = () => body;\n\t\tif (title !== undefined)\n\t\t\tslots.title = () => title;\n\t\tif (footer !== undefined)\n\t\t\tslots.footer = () => footer;\n\n\t\t// little hack to check whether primevue is included in the app or not\n\t\tlet includedPrimevue = false;\n\t\tif(typeof primevue !== 'undefined'){\n\t\t\tincludedPrimevue = true;\n\t\t}\n\n\t\treturn new Promise((resolve,reject) => {\n\t\t\tconst instance = Vue.createApp({\n\t\t\t\tname: 'ModalTmpApp',\n\t\t\t\tsetup() {\n\t\t\t\t\treturn () => Vue.h(BsModal, {...{\n\t\t\t\t\t\tclass: 'fade'\n\t\t\t\t\t},...options, ...{\n\t\t\t\t\t\tref: 'modal',\n\t\t\t\t\t\t'onHidden.bs.modal': instance.unmount\n\t\t\t\t\t}}, slots);\n\t\t\t\t},\n\t\t\t\tmounted() {\n\t\t\t\t\tthis.$refs.modal.show();\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tbeforeUnmount() {\n\t\t\t\t\tif (this.$refs.modal)\n\t\t\t\t\t\tthis.$refs.modal.result !== false ? resolve(this.$refs.modal.result) : reject();\n\t\t\t\t},\n\t\t\t\tunmounted() {\n\t\t\t\t\twrapper.parentElement.removeChild(wrapper);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst wrapper = document.createElement(\"div\");\n\t\t\t\n\t\t\t// if(primevue) --> won't work because primevue is not defined in this scope and promise would be rejected\n\t\t\tif (includedPrimevue){\n\t\t\t\tinstance.use(primevue.config.default, {zIndex: {overlay: 9999}})\n\t\t\t}\n\t\t\t\t \n\t\t\t//instance.use(Phrasen); // TODO(chris): find a more dynamic way\n\t\t\timport('../../plugins/Phrasen.js').then((Phrasen) => {\n\t\t\t\tinstance.use(Phrasen.default);\n\t\t\t\tinstance.mount(wrapper);\n\t\t\t\tdocument.body.appendChild(wrapper);\n\t\t\t});\n\t\t});\n\t},\n\ttemplate: `
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    `\n}\n","export default {\n\trender() {\n\t\treturn (this.$slots && this.$slots.default) ? this.$slots.default() : null;\n\t}\n};","import FhcFragment from \"../Fragment.js\";\n\nexport default {\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tprovide() {\n\t\treturn {\n\t\t\t$registerToForm: component => {\n\t\t\t\tif (this.inputs.indexOf(component) < 0)\n\t\t\t\t\tthis.inputs.push(component);\n\t\t\t},\n\t\t\t$clearValidationForName: this.clearValidationForName\n\t\t};\n\t},\n\tprops: {\n\t\ttag: {\n\t\t\ttype: String,\n\t\t\tdefault: 'form'\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tinputs: []\n\t\t}\n\t},\n\tcomputed: {\n\t\tsortedInputs() {\n\t\t\treturn this.inputs.reduce((a,c) => {\n\t\t\t\tlet name = c.name || '_default';\n\t\t\t\tif (!a[name])\n\t\t\t\t\ta[name] = [];\n\t\t\t\ta[name].push(c);\n\n\t\t\t\tif (c.lcType == 'checkbox' && name.substr(-1) == ']' && name.indexOf('[')) {\n\t\t\t\t\tname = name.substr(0, name.lastIndexOf('['));\n\t\t\t\t\tif (!a[name])\n\t\t\t\t\t\ta[name] = [];\n\t\t\t\t\ta[name].push(c);\n\t\t\t\t}\n\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t},\n\t\t/* Deprecated Code start */\n\t\tfactory() {\n\t\t\tconsole.warn('
    .factory is deprecated! Use .call() instead.');\n\t\t\tconst factory = Object.create(Object.getPrototypeOf(this.$fhcApi.factory), Object.getOwnPropertyDescriptors(this.$fhcApi.factory));\n\t\t\tfactory.$fhcApi = {\n\t\t\t\tget: this.get,\n\t\t\t\tpost: this.post,\n\t\t\t\t_defaultErrorHandlers: this.$fhcApi._defaultErrorHandlers\n\t\t\t};\n\t\t\treturn factory;\n\t\t}\n\t\t/* Deprecated Code end */\n\t},\n\tmethods: {\n\t\tget(...args) {\n\t\t\tif (typeof args[0] == 'object' && args[0].clearValidation && args[0].setFeedback)\n\t\t\t\targs[0] = this;\n\t\t\telse\n\t\t\t\targs.unshift(this);\n\t\t\t\n\t\t\t/* Deprecated Code start */\n\t\t\tif (!this.$api)\n\t\t\t\treturn this.$fhcApi.get(...args);\n\t\t\t/* Deprecated Code end */\n\t\t\t\n\t\t\treturn this.$api.get(...args);\n\t\t},\n\t\tpost(...args) {\n\t\t\tif (typeof args[0] == 'object' && args[0].clearValidation && args[0].setFeedback)\n\t\t\t\targs[0] = this;\n\t\t\telse\n\t\t\t\targs.unshift(this);\n\t\t\t\n\t\t\t/* Deprecated Code start */\n\t\t\tif (!this.$api)\n\t\t\t\treturn this.$fhcApi.post(...args);\n\t\t\t/* Deprecated Code end */\n\t\t\t\n\t\t\treturn this.$api.post(...args);\n\t\t},\n\t\tcall(factory, overwriteconfig) {\n\t\t\treturn this.$api.call(factory, overwriteconfig, this);\n\t\t},\n\t\t_sendFeedbackToInput(inputs, feedback, valid) {\n\t\t\tif (inputs.length) {\n\t\t\t\tinputs.forEach(input => input.setFeedback(valid, feedback));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.$fhcAlert) {\n\t\t\t\tthis.$fhcAlert[valid ? 'alertSuccess' : 'alertError'](feedback);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (Array.isArray(feedback)) {\n\t\t\t\tlet remaining = feedback.filter(fb => \n\t\t\t\t\tthis._sendFeedbackToInput(\n\t\t\t\t\t\tthis.sortedInputs['_default'] || [],\n\t\t\t\t\t\tfb,\n\t\t\t\t\t\tvalid\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn remaining.length ? remaining : null;\n\t\t\t}\n\t\t\tif (typeof feedback === 'object') {\n\t\t\t\tlet remaining = Object.entries(feedback).filter(([name, fb]) => \n\t\t\t\t\tthis._sendFeedbackToInput(\n\t\t\t\t\t\tthis.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join(\"\")] || this.sortedInputs['_default'] || [],\n\t\t\t\t\t\tfb,\n\t\t\t\t\t\tvalid\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn remaining.length ? Object.fromEntries(remaining) : null;\n\t\t\t}\n\n\t\t\tlet remaining = this._sendFeedbackToInput(\n\t\t\t\tthis.sortedInputs['_default'] || [],\n\t\t\t\tfeedback,\n\t\t\t\tvalid\n\t\t\t);\n\t\t\treturn remaining ? feedback : null;\n\t\t},\n\t\tclearValidation() {\n\t\t\tthis.inputs.forEach(input => input.clearValidation());\n\t\t},\n\t\tsend(promise) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tpromise.then(result => {\n\t\t\t\t\tif (result?.status == 200 && result.data) {\n\t\t\t\t\t\tif (typeof result.data !== 'object' || !result.data.hasOwnProperty('retval'))\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tif (result.data.error)\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tconst data = result.data.retval;\n\t\t\t\t\t\t// TODO(chris): check for something better/add new standardized return value\n\t\t\t\t\t\tif (result.data.code == 1)\n\t\t\t\t\t\t\tthis.setFeedback(true, data);\n\t\t\t\t\t\treturn resolve(data);\n\t\t\t\t\t}\n\t\t\t\t\t// TODO(chris): IMPLEMENT! Wrong result object\n\t\t\t\t\treject(result);\n\t\t\t\t}).catch(result => {\n\t\t\t\t\tif (result?.response?.status == 400 && result.response.data) {\n\t\t\t\t\t\tif (typeof result.response.data !== 'object' || !result.response.data.hasOwnProperty('retval'))\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tthis.clearValidation();\n\t\t\t\t\t\tconst remaining = this.setFeedback(\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tresult.response.data.retval\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (remaining) {\n\t\t\t\t\t\t\tresult.response.data.retval = remaining;\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (result?.response?.status == 500) {\n\t\t\t\t\t\tif (this.$fhcAlert)\n\t\t\t\t\t\t\tthis.$fhcAlert.handleSystemError(result);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tclearValidationForName(name) {\n\t\t\t(this.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join(\"\")] || this.sortedInputs['_default'] || [])\n\t\t\t\t.forEach(input => input.clearValidation());\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t\n\t`\n}\n","import FhcFragment from \"../Fragment.js\";\n\nlet _uuid = {};\n\nexport default {\n\tname: \"FormInput\",\n\tinheritAttrs: false,\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tinject: {\n\t\tregisterToForm: {\n\t\t\tfrom: '$registerToForm',\n\t\t\tdefault: null\n\t\t},\n\t\tclearValidationForName: {\n\t\t\tfrom: '$clearValidationForName',\n\t\t\tdefault: null\n\t\t}\n\t},\n\tprops: {\n\t\tbsFeedback: Boolean,\n\t\tnoAutoClass: Boolean,\n\t\tnoFeedback: Boolean,\n\t\tinputGroup: Boolean,\n\t\ttype: String,\n\t\tname: String,\n\t\tcontainerClass: [String, Array, Object],\n\t\tlabel: String,\n\t\t// NOTE(chris): remove these from $attrs array to prevent doubled event listeners\n\t\tonInput: [Array, Function],\n\t\t'onUpdate:modelValue': [Array, Function]\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tvalid: undefined,\n\t\t\tfeedback: [],\n\t\t\tmodelValueDummy: undefined\n\t\t}\n\t},\n\tcomputed: {\n\t\thasContainer() {\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn true;\n\t\t\tif (this.containerClass)\n\t\t\t\treturn true;\n\t\t\tfor (const prop in this.autoContainerClass)\n\t\t\t\tif (Object.hasOwn(this.autoContainerClass, prop))\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t},\n\t\tacc() {\n\t\t\tif (!this.containerClass)\n\t\t\t\treturn {};\n\t\t\tif (typeof this.containerClass === 'string' || this.containerClass instanceof String)\n\t\t\t\treturn this.containerClass.split(' ').reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\tif (Array.isArray(this.containerClass))\n\t\t\t\treturn this.containerClass.reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\treturn this.containerClass;\n\t\t},\n\t\tautoContainerClass() {\n\t\t\tif (this.noAutoClass)\n\t\t\t\treturn this.acc;\n\t\t\t\n\t\t\tconst acc = {...this.acc};\n\t\t\t\n\t\t\tif (this.inputGroup)\n\t\t\t\tacc['input-group-item'] = true;\n\n\t\t\tif (this.lcType == 'radio' || this.lcType == 'checkbox')\n\t\t\t\tacc['form-check'] = true;\n\t\t\t\n\t\t\tif (this.inputGroup && acc['form-check']) {\n\t\t\t\tacc['input-group-item'] = false;\n\t\t\t\tacc['form-check'] = false;\n\t\t\t\tacc['input-group-text'] = true;\n\t\t\t}\n\t\t\treturn acc;\n\t\t},\n\t\tlcType() {\n\t\t\tif (!this.type)\n\t\t\t\treturn 'text';\n\t\t\treturn this.type.toLowerCase();\n\t\t},\n\t\ttag() {\n\t\t\tswitch (this.lcType) {\n\t\t\t\tcase 'textarea':\n\t\t\t\tcase 'select':\n\t\t\t\t\treturn this.lcType;\n\t\t\t\tcase 'datepicker':\n\t\t\t\t\treturn 'VueDatePicker';\n\t\t\t\tcase 'autocomplete':\n\t\t\t\t\treturn 'PvAutocomplete';\n\t\t\t\tcase 'uploadimage':\n\t\t\t\t\treturn 'UploadImage';\n\t\t\t\tcase 'uploadfile':\n\t\t\t\tcase 'uploaddms':\n\t\t\t\t\treturn 'UploadDms';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'input';\n\t\t\t}\n\t\t},\n\t\tvalidationClass() {\n\t\t\tconst classes = [];\n\t\t\tif (this.valid)\n\t\t\t\tclasses.push('is-valid');\n\t\t\telse if (this.valid === false)\n\t\t\t\tclasses.push('is-invalid');\n\t\t\t\n\t\t\tif (!this.noAutoClass) {\n\t\t\t\tlet c = this.$attrs.class ? this.$attrs.class.split(' ') : [];\n\t\t\t\tswitch (this.lcType) {\n\t\t\t\t\t// TODO(chris): complete list!\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tif (!c.includes('form-select'))\n\t\t\t\t\t\t\tclasses.push('form-select');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'range':\n\t\t\t\t\t\tif (!c.includes('form-range'))\n\t\t\t\t\t\t\tclasses.push('form-range');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\tcase 'checkbox':\n\t\t\t\t\t\t// TODO(chris): maybe different handling?\n\t\t\t\t\t\tif (!c.includes('form-check-input') && !c.includes('btn-check'))\n\t\t\t\t\t\t\tclasses.push('form-check-input');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tif (!c.includes('form-control-color'))\n\t\t\t\t\t\t\tclasses.push('form-control-color');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'autocomplete':\n\t\t\t\t\tcase 'datepicker':\n\t\t\t\t\t\tclasses.push('p-0');\n\t\t\t\t\t\tclasses.push('border-0');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'text':\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'password':\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\tfeedbackClass() {\n\t\t\tif (!this.feedback || this.feedback === true)\n\t\t\t\treturn '';\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn {\n\t\t\t\t\t'valid-tooltip': this.valid === true,\n\t\t\t\t\t'invalid-tooltip': this.valid === false\n\t\t\t\t};\n\t\t\treturn {\n\t\t\t\t'valid-feedback': this.valid === true,\n\t\t\t\t'invalid-feedback': this.valid === false\n\t\t\t};\n\t\t},\n\t\tmodelValueCmp: {\n\t\t\tget() {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\treturn this.modelValueDummy;\n\t\t\t\treturn this.$attrs.modelValue;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\tthis.modelValueDummy = v;\n\t\t\t\tthis.$emit('update:modelValue', v);\n\t\t\t}\n\t\t},\n\t\tidCmp() {\n\t\t\tlet uuid = this.$attrs.id;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = this.$attrs.uid;\n\t\t\tif (!uuid && this.label)\n\t\t\t\tuuid = 'fhc-form-input';\n\t\t\tif (!uuid)\n\t\t\t\treturn undefined;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = 'dp-input-' + uuid;\n\t\t\tif (_uuid[uuid] === undefined)\n\t\t\t\t_uuid[uuid] = 0;\n\t\t\treturn uuid + '-' + (_uuid[uuid]++);\n\t\t}\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.valid = undefined;\n\t\t\tthis.feedback = [];\n\t\t},\n\t\tclearValidationForThisName() {\n\t\t\tif (this.valid === undefined)\n\t\t\t\treturn;\n\t\t\tif (this.clearValidationForName && this.name)\n\t\t\t\tthis.clearValidationForName(this.name);\n\t\t\telse\n\t\t\t\tthis.clearValidation();\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tthis.valid = valid;\n\t\t\t// NOTE(chris): On a list of radios/checkboxes only add the feedback message to the last item\n\t\t\tif (this.name && (this.lcType == 'radio' || this.lcType == 'checkbox')) {\n\t\t\t\tconst selector = 'input[type=\"' + this.lcType + '\"][name=\"' + this.name + '\"]';\n\t\t\t\tif ([...this.$el.parentNode.querySelectorAll(selector)].pop() != this.$refs.input)\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.feedback = feedback;\n\t\t},\n\t\t_loadComponents() {\n\t\t\tif (this.tag == 'VueDatePicker' && !this._.components.VueDatePicker) {\n\t\t\t\tthis._.components.VueDatePicker = Vue.defineAsyncComponent(() => import(\"../vueDatepicker.js.php\"));\n\t\t\t} else if (this.tag == 'PvAutocomplete' && !this._.components.PvAutocomplete) {\n\t\t\t\tthis._.components.PvAutocomplete = primevue.autocomplete;\n\t\t\t} else if (this.tag == 'UploadImage' && !this._.components.UploadImage) {\n\t\t\t\tthis._.components.UploadImage = Vue.defineAsyncComponent(() => import(\"./Upload/Image.js\"));\n\t\t\t} else if (this.tag == 'UploadDms' && !this._.components.UploadDms) {\n\t\t\t\tthis._.components.UploadDms = Vue.defineAsyncComponent(() => import(\"./Upload/Dms.js\"));\n\t\t\t}\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis._loadComponents();\n\t},\n\tbeforeUpdate() {\n\t\tthis._loadComponents();\n\t},\n\tmounted() {\n\t\tif (this.registerToForm)\n\t\t\tthis.registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class-name'] ? $attrs['input-class-name'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class'] ? $attrs['input-class'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport BsModal from \"./Bootstrap/Modal.js\";\nimport FhcForm from \"./Form/Form.js\";\nimport FormInput from \"./Form/Input.js\";\n\n\nexport default {\n\tname: 'AppConfig',\n\tcomponents: {\n\t\tBsModal,\n\t\tFhcForm,\n\t\tFormInput\n\t},\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tendpoints: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tsetup: {},\n\t\t\ttempValues: {}\n\t\t};\n\t},\n\twatch: {\n\t\t'$p.user_language.value'(n, o) {\n\t\t\tif (n !== o && o !== undefined && Object.keys(this.setup).length) {\n\t\t\t\tthis.$api\n\t\t\t\t\t.call(this.endpoints.get())\n\t\t\t\t\t.then(res => {\n\t\t\t\t\t\tthis.setup = {};\n\t\t\t\t\t\tObject.keys(res.data).forEach(key => {\n\t\t\t\t\t\t\tconst binding = { ...res.data[key] };\n\t\t\t\t\t\t\tdelete binding.value;\n\t\t\t\t\t\t\tdelete binding.options;\n\t\t\t\t\t\t\tconst options = res.data[key].options;\n\t\t\t\t\t\t\tthis.setup[key] = {\n\t\t\t\t\t\t\t\tbinding,\n\t\t\t\t\t\t\t\toptions\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch(this.$fhcAlert.handleSystemErrors);\n\t\t\t}\n\t\t}\n\n\t},\n\tmethods: {\n\t\tupdate() {\n\t\t\tthis.$refs.form\n\t\t\t\t.call(this.endpoints.set(this.tempValues))\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.$emit('update:modelValue', { ...this.tempValues });\n\t\t\t\t\tthis.$refs.modal.hide();\n\t\t\t\t\tthis.$fhcAlert.alertSuccess(this.$p.t('ui/settings_saved'));\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemErrors);\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.$api\n\t\t\t.call(this.endpoints.get())\n\t\t\t.then(res => {\n\t\t\t\tObject.keys(res.data).forEach(key => {\n\t\t\t\t\tconst binding = { ...res.data[key] };\n\t\t\t\t\tdelete binding.value;\n\t\t\t\t\tdelete binding.options;\n\t\t\t\t\tconst options = res.data[key].options;\n\t\t\t\t\tthis.tempValues[key] = res.data[key].value;\n\t\t\t\t\tthis.setup[key] = {\n\t\t\t\t\t\tbinding,\n\t\t\t\t\t\toptions\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\tthis.$emit('update:modelValue', { ...this.tempValues });\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemErrors);\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t`\n};\n","/**\n * TODO(chris): This is only a prototype!!!\n */\n\nconst TYPE_DEFINITION = {\n\tlehreinheit: {\n\t\tid: \"lehreinheit_id\",\n\t\tdragIcon: \"fa-solid fa-chalkboard-user\",\n\t\textras: [\n\t\t\t\"stundenblockung\"\n\t\t]\n\t},\n\tvevent: {\n\t\tid: \"uid\",\n\t\tdragIcon: \"fa-solid fa-calendar\",\n\t\textras: [\n\t\t\t\"dtstart\",\n\t\t\t\"dtend\",\n\t\t\t\"summary\"\n\t\t]\n\t},\n\tperson: {\n\t\tid: \"person_id\",\n\t\tdragIcon: \"fa-solid fa-user\"\n\t},\n\tstudent: {\n\t\tid: \"student_uid\",\n\t\tdragIcon: \"fa-solid fa-user-graduate\"\n\t},\n\tprestudent: {\n\t\tid: \"prestudent_id\",\n\t\tdragIcon: \"fa-solid fa-user-graduate text-muted\"\n\t}\n\t// TODO: IMPLEMENT OTHER TYPES\n};\n\nconst VALID_TYPES = Object.keys(TYPE_DEFINITION);\n\nconst TYPE_CONSTANTS = Object.keys(TYPE_DEFINITION).reduce((res, type) => {\n\tres['TYPE_' + type.toUpperCase()] = type;\n\treturn res;\n}, {});\n\nfunction isValidDragObject(value) {\n\tif (!value)\n\t\treturn false;\n\tif (Array.isArray(value))\n\t\treturn value.every(isValidDragObject);\n\tif (!value.type)\n\t\treturn false;\n\n\tif (value.type.substr(-11) == '-collection') {\n\t\tif (!Object.prototype.hasOwnProperty.call(value, 'values'))\n\t\t\treturn false;\n\n\t\tif (!VALID_TYPES.includes(value.type.substr(0, value.type.length-11)))\n\t\t\treturn false;\n\t} else {\n\t\tif (!Object.prototype.hasOwnProperty.call(value, 'id'))\n\t\t\treturn false;\n\n\t\tif (!VALID_TYPES.includes(value.type))\n\t\t\treturn false;\n\n\t\tif (TYPE_DEFINITION[value.type].extras) {\n\t\t\tif (!TYPE_DEFINITION[value.type].extras.every(extra => Object.prototype.hasOwnProperty.call(value, extra)))\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction getValidTransferData(event, allowedTypes, strict) {\n\tlet obj = null;\n\n\ttry {\n\t\tobj = getTransferData(event, strict);\n\t\tif (!obj)\n\t\t\treturn null;\n\n\t\tif (!strict && Array.isArray(obj)) {\n\t\t\tobj = obj.filter(isValidDragObject);\n\t\t\tif (!obj.length)\n\t\t\t\treturn null;\n\t\t} else if (!isValidDragObject(obj))\n\t\t\treturn null;\n\n\t\tif (allowedTypes && allowedTypes.length) {\n\t\t\tif (Array.isArray(obj)) {\n\t\t\t\tif (strict && !obj.every(v => allowedTypes.includes(v.type))) {\n\t\t\t\t\treturn null;\n\t\t\t\t} else if (!strict) {\n\t\t\t\t\tobj = obj.filter(v => allowedTypes.includes(v.type));\n\t\t\t\t\tif (!obj.length)\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t} else if (!allowedTypes.includes(obj.type)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t} catch(_error) {\n\t\treturn null;\n\t}\n\n\tif (Array.isArray(obj) && obj.length == 1)\n\t\treturn obj.find(Boolean);\n\n\treturn obj;\n}\n\nfunction isValidTransferData(event, allowedTypes, strict) {\n\treturn getValidTransferData(event, allowedTypes, strict) ? true : false;\n}\n\nfunction getTransferData(event, strict) {\n\tconst result = [];\n\n\tfor (const type of event.dataTransfer.types) {\n\t\tif (type.substr(0, 16) != 'application/fhc-') {\n\t\t\tif (strict)\n\t\t\t\treturn null;\n\t\t\tcontinue;\n\t\t}\n\t\tlet base_type = type.substr(16);\n\t\tlet collection = false;\n\t\tif (base_type.substr(-11) == '-collection') {\n\t\t\tbase_type = base_type.substr(0, base_type.length-11);\n\t\t\tcollection = true;\n\t\t}\n\t\tif (!VALID_TYPES.includes(base_type)) {\n\t\t\tif (strict)\n\t\t\t\treturn null;\n\t\t\tcontinue;\n\t\t}\n\t\tlet data = JSON.parse(event.dataTransfer.getData(type));\n\t\tif (collection)\n\t\t\tresult.push(...data.values);\n\t\telse\n\t\t\tresult.push(data);\n\t}\n\n\tif (!result.length)\n\t\treturn null;\n\n\tif (result.length == 1)\n\t\treturn result[0];\n\n\treturn result;\n}\n\nfunction convertToValidDragObject(data, strict) {\n\tif (Array.isArray(data)) {\n\t\tconst converted = data.map(convertToValidDragObject).filter(Boolean);\n\t\tif (!converted.length)\n\t\t\treturn undefined;\n\t\tif (strict && converted.length != data.length)\n\t\t\treturn undefined;\n\n\t\tconst sorted = converted.reduce((res, item) => {\n\t\t\tif (!res[item.type])\n\t\t\t\tres[item.type] = [];\n\t\t\tres[item.type].push(item);\n\t\t\treturn res;\n\t\t}, {});\n\n\t\treturn Object.entries(sorted).map(([type, values]) => {\n\t\t\tif (values.length > 1) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: type + '-collection',\n\t\t\t\t\tvalues\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn values[0];\n\t\t});\n\t}\n\n\tif (Object.prototype.hasOwnProperty.call(data, 'type') && isValidDragObject(data)) {\n\t\treturn data;\n\t}\n\n\tconst found = Object.entries(TYPE_DEFINITION).find(([ , typedef ]) => {\n\t\tif (!Object.prototype.hasOwnProperty.call(data, typedef.id))\n\t\t\treturn false;\n\t\tif (typedef.extras) {\n\t\t\tif (!typedef.extras.every(extra => Object.prototype.hasOwnProperty.call(data, extra)))\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\tif (!found) {\n\t\treturn undefined;\n\t}\n\n\tconst [ type, typedef ] = found;\n\n\tconst newData = {};\n\tnewData.type = type;\n\tnewData.id = data[typedef.id];\n\tif (typedef.extras)\n\t\ttypedef.extras.forEach(extra => newData[extra] = data[extra]);\n\n\treturn newData;\n}\n\nfunction setTransferData(event, validDragObject, setDragImage = false) {\n\tif (setDragImage) {\n\t\tconst dragItems = Array.isArray(validDragObject) ? validDragObject : [ validDragObject ];\n\t\tconst dragElements = dragItems.map(item => {\n\t\t\tconst icon = document.createElement('i');\n\t\t\tconst label = document.createElement('span');\n\t\t\tconst iconContainer = document.createElement('span');\n\n\t\t\ticonContainer.className = 'btn btn-outline-dark bg-light';\n\t\t\tlabel.className = 'small';\n\n\t\t\tif (TYPE_DEFINITION[item.type]) {\n\t\t\t\ticon.className = TYPE_DEFINITION[item.type].dragIcon || 'fa-solid fa-question';\n\t\t\t\tlabel.textContent = item.id;\n\t\t\t} else if (item.type.substr(-11) == '-collection' && TYPE_DEFINITION[item.type.substr(0, item.type.length-11)]) {\n\t\t\t\ticonContainer.style.boxShadow = '3px 3px var(--bs-btn-border-color)';\n\t\t\t\ticon.className = TYPE_DEFINITION[item.type.substr(0, item.type.length-11)].dragIcon || 'fa-solid fa-question';\n\t\t\t\tlabel.textContent = 'x' + item.values.length;\n\t\t\t} else {\n\t\t\t\ticon.className = 'fa-solid fa-question';\n\t\t\t\tlabel.textContent = item.id || '';\n\t\t\t}\n\t\t\t\n\t\t\ticonContainer.append(icon);\n\n\t\t\tconst itemContainer = document.createElement('div');\n\t\t\titemContainer.className = 'd-flex flex-column align-items-center gap-2 small';\n\t\t\titemContainer.append(iconContainer, label);\n\t\t\treturn itemContainer;\n\t\t});\n\n\t\tconst container = document.createElement('div');\n\t\tcontainer.className = 'd-flex flex-row gap-2 small';\n\t\tcontainer.append(...dragElements);\n\n\t\tdocument.body.append(container);\n\t\tevent.dataTransfer.setDragImage(container, -25, 0);\n\t\trequestAnimationFrame(() => {\n\t\t\tdocument.body.removeChild(container);\n\t\t});\n\t}\n\tif (Array.isArray(validDragObject)) {\n\t\treturn validDragObject.forEach(data => setTransferData(event, data));\n\t}\n\t\n\tevent.dataTransfer.setData('application/fhc-' + validDragObject.type, JSON.stringify(validDragObject));\n}\n\n/**\n * check if the dataTransfer types are in the allowed types array\n * if strict is disabled at least one type must be the allowed array\n * otherwise all types have to be in the allowed array\n *\n * @param Event\t\tevent\n * @param Array\t\tallowedTypes\n * @param Boolean\tstrict\n */\nfunction eventHasTypes(event, allowedTypes, strict) {\n\tif (!allowedTypes || !allowedTypes.length)\n\t\tallowedTypes = VALID_TYPES;\n\tallowedTypes = allowedTypes.map(type => 'application/fhc-' + type);\n\n\tconst dataTypes = [...event.dataTransfer.types];\n\t\n\t// NOTE(chris): if dragging across browsers the dataTransfer object is\n\t// set to a default one without data. Since we do not support dragging\n\t// across browsers (yet) we return false which will disallow dropping.\n\tif (!dataTypes.length)\n\t\treturn false;\n\t\n\tif (!strict)\n\t\treturn allowedTypes.some(type => [...event.dataTransfer.types].includes(type));\n\t\n\treturn [...event.dataTransfer.types].every(type => allowedTypes.includes(type));\n}\n\nfunction bindDragEnterLeave(el, onEnter, onLeave) {\n\t// NOTE(chris): add save dragenter and dragleave events\n\t// that won't fire when hovering over child elements\n\n\tlet skipLeave = false;\n\tlet skipLeaveParent = true;\n\n\tfunction init(evt) {\n\t\tskipLeave = false;\n\t\tskipLeaveParent = true;\n\t\t// add global listeners\n\t\twindow.addEventListener('dragenter', globalDragenter, true);\n\t\twindow.addEventListener('dragleave', globalDragleave, true);\n\t\twindow.addEventListener('drop', globalDrop, true);\n\t\t// call enter\n\t\tonEnter(evt);\n\t\t// remove self\n\t\tel.removeEventListener('dragenter', init);\n\t}\n\n\tfunction cleanup(evt, wasDropped) {\n\t\t// remove global listeners\n\t\twindow.removeEventListener('dragenter', globalDragenter, true);\n\t\twindow.removeEventListener('dragleave', globalDragleave, true);\n\t\twindow.removeEventListener('drop', globalDrop, true);\n\t\t// call leave\n\t\tonLeave(evt, wasDropped);\n\t\t// add init\n\t\tel.addEventListener('dragenter', init);\n\t}\n\n\tfunction globalDragenter(evt) {\n\t\tskipLeaveParent = false;\n\t\tif (el != evt.target && !el.contains(evt.target)) {\n\t\t\tcleanup(evt);\n\t\t} else {\n\t\t\tskipLeave = true;\n\t\t}\n\t}\n\tfunction globalDragleave(evt) {\n\t\tif (el != evt.target && !el.contains(evt.target)) {\n\t\t\tif (skipLeaveParent) {\n\t\t\t\tskipLeaveParent = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tif (skipLeave) {\n\t\t\t\tskipLeave = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tcleanup(evt);\n\t}\n\tfunction globalDrop(evt) {\n\t\tcleanup(evt, true);\n\t}\n\n\tel.addEventListener('dragenter', init);\n\n\treturn () => {\n\t\t// cleanup\n\t\tel.removeEventListener('dragenter', init);\n\t}\n}\n\nexport {\n\tisValidDragObject,\n\tgetValidTransferData,\n\tisValidTransferData,\n\tgetTransferData,\n\tconvertToValidDragObject,\n\tsetTransferData,\n\teventHasTypes,\n\tbindDragEnterLeave\n};\nexport default {\n\t...TYPE_CONSTANTS,\n\tisValidDragObject,\n\tgetValidTransferData,\n\tisValidTransferData,\n\tgetTransferData,\n\tconvertToValidDragObject,\n\tsetTransferData,\n\teventHasTypes,\n\tbindDragEnterLeave\n};\n","import { getValidTransferData, eventHasTypes, bindDragEnterLeave } from '../helpers/DragAndDrop.js';\n\nconst EFFECTS = [\n\t'move',\n\t'copy',\n\t'link',\n\t'none'\n];\n\nexport default {\n\tmounted(el, binding) {\n\t\tconst allowedTypes = Object.keys(binding.modifiers);\n\t\tallowedTypes.forEach(type => {\n\t\t\tif (type.substr(-11) == '-collection') {\n\t\t\t\tconst singleType = type.substr(0, type.length-11);\n\t\t\t\tif (!allowedTypes.includes(singleType))\n\t\t\t\t\tallowedTypes.push(singleType);\n\t\t\t}\n\t\t});\n\n\t\tconst strict = binding.arg.match(/(strict-|-strict)/);\n\t\tconst arg = binding.arg.replace(/(strict-|-strict)/, '');\n\t\tconst effect = EFFECTS.includes(arg) ? arg : null;\n\n\t\tconst bcc = new BroadcastChannel('fhc-dnd');\n\t\tlet allowed = false;\n\n\t\tfunction onEnter(evt) {\n\t\t\tallowed = eventHasTypes(evt, allowedTypes, strict);\n\t\t\tif (allowed) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tbcc.postMessage('block');\n\t\t\t}\n\t\t}\n\t\tfunction onLeave(evt, wasDropped) {\n\t\t\tif (allowed && !wasDropped) {\n\t\t\t\tbcc.postMessage('release');\n\t\t\t}\n\t\t}\n\t\tfunction onOver(evt) {\n\t\t\tif (allowed) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tif (effect)\n\t\t\t\t\tevt.dataTransfer.dropEffect = effect;\n\t\t\t}\n\t\t}\n\t\tfunction onDrop(evt) {\n\t\t\tlet result = getValidTransferData(evt, allowedTypes, strict);\n\t\t\tif (!Array.isArray(result) && !binding.modifiers[result.type] && allowedTypes.includes(result.type + '-collection'))\n\t\t\t\tresult = [result];\n\n\t\t\tconst res = binding.value(evt, result);\n\t\t\t\n\t\t\tif (res instanceof Promise) {\n\t\t\t\tres.then(r => {\n\t\t\t\t\tbcc.postMessage('release');\n\t\t\t\t\treturn r;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tbcc.postMessage('release');\n\t\t\t}\n\t\t}\n\n\t\tconst cleanupEnterLeave = bindDragEnterLeave(el, onEnter, onLeave);\n\t\tel.addEventListener('dragover', onOver);\n\t\tel.addEventListener('drop', onDrop);\n\t\tel.fhcDropCleanup = () => {\n\t\t\tcleanupEnterLeave();\n\t\t\tel.removeEventListener('dragover', onOver);\n\t\t\tel.removeEventListener('drop', onDrop);\n\t\t};\n\t},\n\tbeforeUnmount(el) {\n\t\tel.fhcDropCleanup();\n\t\tdelete el.fhcDropCleanup;\n\t}\n}\n","import { bindDragEnterLeave } from '../helpers/DragAndDrop.js';\n\nexport default {\n\tmounted(el, binding) {\n\t\tconst delay = parseInt(binding.arg) || 300;\n\n\t\tlet timeout = null;\n\t\tfunction startCountdown() {\n\t\t\ttimeout = window.setTimeout(binding.value, delay);\n\t\t}\n\t\tfunction stopCountdown() {\n\t\t\tif (timeout)\n\t\t\t\twindow.clearTimeout(timeout);\n\t\t\ttimeout = null;\n\t\t}\n\n\t\tlet lastTarget;\n\t\tlet lastX;\n\t\tlet lastY;\n\n\t\tfunction onDragOver(evt) {\n\t\t\tif (lastX != evt.offsetX || lastY != evt.offsetY || lastTarget != evt.target) {\n\t\t\t\t// moved\n\t\t\t\tlastTarget = evt.target;\n\t\t\t\tlastX = evt.offsetX;\n\t\t\t\tlastY = evt.offsetY;\n\n\t\t\t\tstopCountdown();\n\t\t\t\tstartCountdown();\n\t\t\t}\n\t\t}\n\n\t\tfunction onEnter(evt) {\n\t\t\tlastTarget = evt.target;\n\t\t\tlastX = evt.offsetX;\n\t\t\tlastY = evt.offsetY;\n\n\t\t\tel.addEventListener('dragover', onDragOver);\n\n\t\t\tstartCountdown();\n\t\t}\n\t\tfunction onLeave() {\n\t\t\tstopCountdown();\n\t\t\tel.removeEventListener('dragover', onDragOver);\n\t\t}\n\n\t\tel.fhcDragClickCleanup = bindDragEnterLeave(el, onEnter, onLeave);\n\t},\n\tbeforeUnmount(el) {\n\t\tel.fhcDragClickCleanup();\n\t\tdelete el.fhcDragClickCleanup;\n\t}\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tadd(uid, gruppe_kurzbz, studiensemester_kurzbz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/gruppen/add/',\n\t\t\tparams: {\n\t\t\t\tuid,\n\t\t\t\tgruppe_kurzbz,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t}\n\t\t};\n\t},\n\tsearch(query, studiengang_kz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/gruppen/search/',\n\t\t\tparams: {\n\t\t\t\tquery,\n\t\t\t\tstudiengang_kz\n\t\t\t}\n\t\t};\n\t},\n\tgetGruppen(id) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/Gruppen/getGruppen/' + id\n\t\t};\n\t},\n\tdeleteGroup(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/Gruppen/deleteGruppe/',\n\t\t\tparams\n\t\t};\n\t}\n}\n\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/get/'\n\t\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t\t+ '/'\n\t\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t};\n\t},\n\tsave(prestudent_id, studiensemester_kurzbz, params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/save/'\n\t\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t\t+ '/'\n\t\t\t\t+ encodeURIComponent(studiensemester_kurzbz),\n\t\t\tparams\n\t\t};\n\t},\n\tsaveStudent(student_uid, studiensemester_kurzbz, params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/saveStudent/'\n\t\t\t\t+ encodeURIComponent(student_uid)\n\t\t\t\t+ '/'\n\t\t\t\t+ encodeURIComponent(studiensemester_kurzbz),\n\t\t\tparams\n\t\t};\n\t}\n};","import drop from '../../../directives/drop.js';\nimport dragClick from '../../../directives/dragClick.js';\n\nimport ApiStvGroups from '../../../api/factory/stv/group.js';\nimport ApiStvDetails from '../../../api/factory/stv/details.js';\n\nexport default {\n\tcomponents: {\n\t\tPvTreetable: primevue.treetable,\n\t\tPvColumn: primevue.column\n\t},\n\tdirectives: {\n\t\tdrop,\n\t\tdragClick\n\t},\n\tinject: {\n\t\t$reloadList: {\n\t\t\tfrom: '$reloadList',\n\t\t\tdefault: () => {}\n\t\t},\n\t\tcurrentSemester: {\n\t\t\tfrom: 'currentSemester',\n\t\t\trequired: true\n\t\t},\n\t\tappConfig: {\n\t\t\tfrom: 'appConfig',\n\t\t\tdefault: {\n\t\t\t\tnumber_displayed_past_studiensemester: 5\n\t\t\t}\n\t\t}\n\t},\n\temits: [\n\t\t'selectVerband'\n\t],\n\tprops: {\n\t\tendpoint: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tpreselectedKey: {\n\t\t\ttype: String,\n\t\t\tdefault: null\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\tnodes: [],\n\t\t\tselectedKey: [],\n\t\t\texpandedKeys: {},\n\t\t\tfilters: {}, // TODO(chris): filter only 1st level?\n\t\t\tfavorites: {on: false, list: []}\n\t\t}\n\t},\n\tcomputed: {\n\t\tfilteredNodes() {\n\t\t\tif (this.favorites.on)\n\t\t\t\treturn this.nodes.filter(node => this.favorites.list.includes(node.key));\n\t\t\t\n\t\t\treturn this.nodes;\n\t\t},\n\t\tnoSemReloadNodes() {\n\t\t\treturn this.nodes.reduce(this.mapNodesToNoSemReloadNodes, []);\n\t\t}\n\t},\n\twatch: {\n\t\t'preselectedKey': function (newVal, oldVal) {\n\t\t\tif (newVal !== oldVal) {\n\t\t\t\tthis.setPreselection();\n\t\t\t}\n\t\t},\n\t\t'appConfig.number_displayed_past_studiensemester'(newVal, oldVal) {\n\t\t\tif (oldVal !== undefined) {\n\t\t\t\tthis.noSemReloadNodes.forEach(node => {\n\t\t\t\t\tdelete node.children;\n\t\t\t\t\tthis.onExpandTreeNode(node);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tfindNodeByKey(key, arr) {\n\t\t\tif (!arr)\n\t\t\t\tarr = this.nodes;\n\t\t\tlet res = arr.filter(n => n.key == key);\n\t\t\tif (res.length)\n\t\t\t\treturn res.pop();\n\t\t\tres = arr.map(n => n.children ? this.findNodeByKey(key, n.children) : null).filter(a => a);\n\t\t\tif (res.length)\n\t\t\t\treturn res.pop();\n\t\t\treturn null;\n\t\t},\n\t\tasync onExpandTreeNode(node) {\n\t\t\tif (!node.children) {\n\t\t\t\tif (node.data.link) {\n\t\t\t\t\tlet activeEl = null;\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\tactiveEl = document.activeElement;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tthis.loading = true;\n\t\t\t\t\t\n\t\t\t\t\treturn this.$api\n\t\t\t\t\t\t.call(this.endpoint.get(node.data.link))\n\t\t\t\t\t\t.then(result => result.data)\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst subNodes = result.map(this.mapResultToTreeData);\n\t\t\t\t\t\t\tconst realNode = this.findNodeByKey(node.key);\n\t\t\t\t\t\t\tif (realNode)\n\t\t\t\t\t\t\t\trealNode.children = subNodes;\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tnode.children = subNodes; // NOTE(chris): fallback should never be the case\n\n\t\t\t\t\t\t\tlet treeitem = this.$refs.tree.$el.querySelector('[data-tree-item-key=\"' + node.key + '\"]');\n\t\t\t\t\t\t\ttreeitem = treeitem.closest('[role=\"row\"]');\n\n\t\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\t\tif (activeEl == document.activeElement)\n\t\t\t\t\t\t\t\t\ttreeitem.dispatchEvent(new KeyboardEvent('keydown', {\n\t\t\t\t\t\t\t\t\t\tcode: 'ArrowDown',\n\t\t\t\t\t\t\t\t\t\tkey: 'ArrowDown'\n\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tthis.loading = false;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonSelectTreeNode(node) {\n\t\t\tif (node.data.link)\n\t\t\t\tthis.$emit('selectVerband', {link: node.data.link, studiengang_kz: node.data.stg_kz, semester: node.data.semester, orgform_kurzbz: node.data.orgform_kurzbz});\n\t\t},\n\t\tmapNodesToNoSemReloadNodes(result, node) {\n\t\t\tif (node.data.no_sem_reload)\n\t\t\t\tresult.push(node);\n\t\t\tif (node.children)\n\t\t\t\tresult = node.children.reduce(this.mapNodesToNoSemReloadNodes, result);\n\t\t\treturn result;\n\t\t},\n\t\tmapResultToTreeData(el) {\n\t\t\tconst cp = {\n\t\t\t\tkey: (\"\" + el.link).replace('/', '-'),\n\t\t\t\tdata: el,\n\t\t\t\tlabel: el.name\n\t\t\t};\n\n\t\t\tif (el.children)\n\t\t\t\tcp.children = el.children.map(this.mapResultToTreeData);\n\t\t\telse\n\t\t\t\tcp.leaf = el.leaf || false;\n\n\t\t\treturn cp;\n\t\t},\n\t\tfilterFav() {\n\t\t\tthis.favorites.on = !this.favorites.on;\n\t\t\tthis.$api\n\t\t\t\t.call(this.endpoint.favorites.set(\n\t\t\t\t\tJSON.stringify(this.favorites)\n\t\t\t\t));\n\t\t},\n\t\tmarkFav(key) {\n\t\t\tlet index = this.favorites.list.indexOf(key.data.link + '');\n\n\t\t\tif (index != -1) {\n\t\t\t\tthis.favorites.list.splice(index, 1);\n\t\t\t} else {\n\t\t\t\tthis.favorites.list.push(key.data.link + '');\n\t\t\t}\n\n\t\t\tthis.$api\n\t\t\t\t.call(this.endpoint.favorites.set(\n\t\t\t\t\tJSON.stringify(this.favorites)\n\t\t\t\t));\n\t\t},\n\t\tunsetFavFocus(e) {\n\t\t\tif (e.target.dataset?.linkFavAdd !== undefined) {\n\t\t\t\te.target.tabIndex = -1;\n\t\t\t} else {\n\t\t\t\tlet items = e.target.querySelectorAll('[data-link-fav-add]:not([tabindex=\"-1\"])');\n\t\t\t\titems.forEach(el => el.tabIndex = document.activeElement == el ? 0 : -1);\n\t\t\t}\n\t\t},\n\t\tsetFavFocus(e) {\n\t\t\tif (e.target.dataset?.linkFavAdd !== undefined) {\n\t\t\t\te.target.tabIndex = 0;\n\t\t\t} else {\n\t\t\t\tlet items = e.target.querySelectorAll('[data-link-fav-add][tabindex=\"-1\"]');\n\t\t\t\titems.forEach(el => el.tabIndex = 0);\n\t\t\t}\n\t\t},\n\t\tasync setPreselection()\n\t\t{\n\t\t\tif (!this.preselectedKey)\n\t\t\t{\n\t\t\t\tthis.selectedKey = null;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet rawKey = this.preselectedKey\n\n\t\t\tif (!rawKey || typeof rawKey !== 'string')\n\t\t\t\treturn;\n\n\t\t\tconst parts = this.preselectedKey.split('/');\n\t\t\tlet currentKey = parts[0];\n\t\t\tlet currentNode = this.findNodeByKey(currentKey);\n\n\t\t\tif (!currentNode)\n\t\t\t\treturn;\n\n\t\t\tif(this.selectedKey)\n\t\t\t{\n\t\t\t\tconst currentSelectedKey = Object.keys(this.selectedKey).find(Boolean);\n\t\t\t\tif (currentSelectedKey) {\n\t\t\t\t\tif (currentSelectedKey == currentKey)\n\t\t\t\t\t\treturn;\n\t\t\t\t\t/**\n\t\t\t\t\t * Do not select a new entry if the current is a child of the new one.\n\t\t\t\t\t * This happens if a child entry of a new stg is selected and the router\n\t\t\t\t\t * tries to select the stg root entry (because subtrees do not have\n\t\t\t\t\t * routes yet)\n\t\t\t\t\t */\n\t\t\t\t\tconst isChild = this.findNodeByKey(\n\t\t\t\t\t\tcurrentSelectedKey,\n\t\t\t\t\t\tcurrentNode.children || []\n\t\t\t\t\t);\n\t\t\t\t\tif (isChild)\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let i = 1; i < parts.length; i++)\n\t\t\t{\n\t\t\t\tthis.expandedKeys[currentNode.key] = true;\n\n\t\t\t\tawait this.onExpandTreeNode(currentNode);\n\n\t\t\t\tcurrentKey += '-' + parts[i];\n\t\t\t\tcurrentNode = this.findNodeByKey(currentKey);\n\n\t\t\t\tif (!currentNode)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.selectedKey = {[currentNode.key]: true};\n\t\t\tthis.onSelectTreeNode(currentNode);\n\t\t},\n\t\tasync toggleTreeNode(node) {\n\t\t\tif (this.expandedKeys[node.key]) {\n\t\t\t\tdelete this.expandedKeys[node.key];\n\t\t\t} else if (!node.leaf) {\n\t\t\t\tawait this.onExpandTreeNode(node);\n\t\t\t\tthis.expandedKeys[node.key] = true;\n\t\t\t}\n\t\t},\n\t\tgetStudentAjaxId(student) {\n\t\t\tlet res = student.id;\n\t\t\tif (student.vorname && student.nachname)\n\t\t\t\tres += ' (' + student.vorname + ' ' + student.nachname + ')';\n\t\t\treturn res;\n\t\t},\n\t\tdropStudents(node, students) {\n\t\t\tconst data = node.data;\n\t\t\t\n\t\t\tlet endpoint;\n\t\t\tif (data.gruppe_kurzbz) {\n\t\t\t\tendpoint = students.map(student => [\n\t\t\t\t\tthis.getStudentAjaxId(student),\n\t\t\t\t\tApiStvGroups.add(\n\t\t\t\t\t\tstudent.id,\n\t\t\t\t\t\tdata.gruppe_kurzbz,\n\t\t\t\t\t\tthis.currentSemester\n\t\t\t\t\t)\n\t\t\t\t]);\n\t\t\t} else {\n\t\t\t\tconst { semester, verband, gruppe } = data;\n\t\t\t\tconst params = { semester, verband, gruppe };\n\t\t\t\tendpoint = students.map(student => [\n\t\t\t\t\tthis.getStudentAjaxId(student),\n\t\t\t\t\tApiStvDetails.saveStudent(\n\t\t\t\t\t\tstudent.id,\n\t\t\t\t\t\tthis.currentSemester,\n\t\t\t\t\t\tparams\n\t\t\t\t\t)\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\treturn this.$api\n\t\t\t\t.call(endpoint)\n\t\t\t\t.then(this.$reloadList)\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.$api\n\t\t\t.call(this.endpoint.get())\n\t\t\t.then(result => {\n\t\t\t\tthis.nodes = result.data.map(el => {\n\t\t\t\t\tel.root = true;\n\t\t\t\t\treturn this.mapResultToTreeData(el);\n\t\t\t\t});\n\t\t\t\tthis.setPreselection();\n\t\t\t\tthis.loading = false;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(this.endpoint.favorites.get())\n\t\t\t.then(result => {\n\t\t\t\tif (result.data) {\n\t\t\t\t\tthis.favorites = JSON.parse(result.data);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\ttemplate: /* html */`\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t
    `\n};\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nconst FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\tfilters: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tfields: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t}\n\t},\n\temits: {\n\t\tswitchFilter: ['filterId'],\n\t\tapplyFilterConfig: ['filterFields'],\n\t\tsaveCustomFilter: ['customFilterName']\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tcurrentFields: []\n\t\t};\n\t},\n\tcomputed: {\n\t\ttypes() {\n\t\t\treturn this.columns.reduce((a,c) => {\n\t\t\t\tlet type = c.type.toLowerCase();\n\t\t\t\tif (type.indexOf('int') >= 0)\n\t\t\t\t\ta[c.name] = 'Numeric';\n\t\t\t\telse if (\n\t\t\t\t\ttype.indexOf('varchar') >= 0 || \n\t\t\t\t\ttype.indexOf('text') >= 0 || \n\t\t\t\t\ttype.indexOf('bpchar') >= 0\n\t\t\t\t)\n\t\t\t\t\ta[c.name] = 'Text';\n\t\t\t\telse if (\n\t\t\t\t\ttype.indexOf('timestamp') >= 0 || \n\t\t\t\t\ttype.indexOf('date') >= 0\n\t\t\t\t)\n\t\t\t\t\ta[c.name] = 'Date';\n\t\t\t\telse\n\t\t\t\t\ta[c.name] = '';\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t}\n\t},\n\twatch: {\n\t\tfields(n) {\n\t\t\tthis.currentFields = n;\n\t\t}\n\t},\n\tmethods: {\n\t\tswitchFilter(evt) {\n\t\t\tthis.$emit('switchFilter', evt.currentTarget.value);\n\t\t},\n\t\tapplyFilterConfig() {\n\t\t\tconst filteredFields = this.currentFields.filter(el => el.name != FILTER_COMPONENT_NEW_FILTER);\n\t\t\tif (filteredFields.filter(el => el.condition == \"\").length)\n\t\t\t\talert(\"Please fill all the filter options\");\n\t\t\telse\n\t\t\t\tthis.$emit('applyFilterConfig', filteredFields);\n\t\t},\n\t\taddField(evt) {\n\t\t\tthis.currentFields.push({\n\t\t\t\tname: FILTER_COMPONENT_NEW_FILTER\n\t\t\t});\n\t\t},\n\t\tremoveField(index) {\n\t\t\tthis.currentFields.splice(index, 1);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tFilter {{ index + 1 }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\tfields: Array,\n\t\tselected: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tnames: {\n\t\t\ttype: Object,\n\t\t\tdefault: {}\n\t\t}\n\t},\n\temits: {\n\t\thide: ['fieldName'],\n\t\tshow: ['fieldName']\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tselectedFields: []\n\t\t};\n\t},\n\twatch: {\n\t\tselected(n) {\n\t\t\tthis.selectedFields = n;\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggle(field) {\n\t\t\tif (this.selectedFields.indexOf(field) != -1)\n\t\t\t{\n\t\t\t\tthis.selectedFields.splice(this.selectedFields.indexOf(field), 1);\n\t\t\t\tthis.$emit('hide', field);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.selectedFields.push(field);\n\t\t\t\tthis.$emit('show', field);\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{{ names[fieldToDisplay] || fieldToDisplay }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nconst DEFAULT_ICONS = {\n\tjsonLines: 'fa-file-lines',\n\txlsx: 'fa-file-excel',\n\tpdf: 'fa-file-pdf',\n\thtml: 'fa-file-code',\n\tjson: 'fa-file',\n\tcsv: 'fa-file-csv'\n};\nconst DEFAULT_LABELS = {\n\tjsonLines: 'Download as JSONLINES',\n\txlsx: 'Download as XLSX',\n\tpdf: 'Download as PDF',\n\thtml: 'Download as HTML',\n\tjson: 'Download as JSON',\n\tcsv: 'Download as CSV '\n};\n\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\ttabulator: Object,\n\t\tconfig: {\n\t\t\ttype: [Boolean, String, Function, Array, Object],\n\t\t\tdefault: false\n\t\t},\n\t\ticonClass: [String, Array, Object]\n\t},\n\tcomputed: {\n\t\tcurrentConfig() {\n\t\t\tif (!this.config)\n\t\t\t\treturn false;\n\n\t\t\tlet config = this.config;\n\n\t\t\tif (config instanceof Function)\n\t\t\t\treturn [config];\n\n\t\t\tif (config === null)\n\t\t\t\treturn [];\n\n\t\t\tif (this.config === true)\n\t\t\t\tconfig = ['csv'];\n\n\t\t\tif (Object.prototype.toString.call(config) === \"[object String]\")\n\t\t\t\tconfig = config.split(',');\n\n\t\t\tif (typeof config === 'object' && !Array.isArray(config)) {\n\t\t\t\tlet newConfig = [];\n\t\t\t\tfor (var k in config) {\n\t\t\t\t\tvar v = config[k], type;\n\t\t\t\t\t\n\t\t\t\t\tif (!v)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\n\t\t\t\t\tif (Object.prototype.toString.call(v) === \"[object String]\") {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(v);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\tlabel: v === k ? DEFAULT_LABELS[type] : k,\n\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\t\tif(type !== null) {\n\t\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\t\tlabel: v,\n\t\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\talert('neither ' + k + ' nor ' + v + ' are supported download file types');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (typeof v === 'object' && !Array.isArray(v)) {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tif (v.formatter === undefined)\n\t\t\t\t\t\t\t\tv.formatter = type;\n\t\t\t\t\t\t\tif (v.label === undefined)\n\t\t\t\t\t\t\t\tv.label = DEFAULT_LABELS[type];\n\t\t\t\t\t\t\tif (v.icon === undefined)\n\t\t\t\t\t\t\t\tv.icon = DEFAULT_ICONS[type];\n\t\t\t\t\t\t\tnewConfig.push(v);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (v.label === undefined)\n\t\t\t\t\t\t\t\tv.label = k;\n\t\t\t\t\t\t\tnewConfig.push(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\tlabel: DEFAULT_LABELS[type],\n\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\talert(k + ' is not a supported download file type');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconfig = newConfig;\n\t\t\t}\n\n\t\t\tif (Array.isArray(config))\n\t\t\t{\n\t\t\t\tconfig = config.map(el => {\n\t\t\t\t\tif (Object.prototype.toString.call(el) === \"[object String]\") {\n\t\t\t\t\t\tlet formatter = this.stringToFileFormatter(el);\n\t\t\t\t\t\tif (formatter === null)\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[formatter],\n\t\t\t\t\t\t\tlabel: DEFAULT_LABELS[formatter],\n\t\t\t\t\t\t\tformatter\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (el instanceof Function)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tformatter: el\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (typeof el === 'object' && !Array.isArray(el) && el !== null) {\n\t\t\t\t\t\tif (el.formatter instanceof Function)\n\t\t\t\t\t\t\treturn el;\n\t\t\t\t\t\tif (this.validateFileFormatter(el.formatter))\n\t\t\t\t\t\t\treturn el;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn null;\n\t\t\t\t}).filter(el => el !== null);\n\n\t\t\t\tif (config.length < 2)\n\t\t\t\t\treturn config;\n\n\t\t\t\tif (config.filter(el => el.label || el.icon).length == config.length)\n\t\t\t\t\treturn config;\n\n\t\t\t\talert('Config not valid');\n\t\t\t}\n\n\t\t\treturn [];\n\t\t}\n\t},\n\tmethods: {\n\t\tstringToFileFormatter(input) {\n\t\t\tlet lcInput = input.toLowerCase();\n\t\t\t\n\t\t\tif (lcInput == 'jsonlines')\n\t\t\t\treturn 'jsonLines';\n\t\t\t\n\t\t\tif (['xlsx', 'pdf', 'html', 'json', 'csv'].includes(lcInput))\n\t\t\t\treturn lcInput;\n\n\t\t\treturn null;\n\t\t},\n\t\tvalidateFileFormatter(input) {\n\t\t\tlet formatter = this.stringToFileFormatter(input);\n\t\t\tif (!formatter) {\n\t\t\t\talert(input + ' is not a supported file formatter');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (formatter == 'xlsx') {\n\t\t\t\tif (!window.XLSX) {\n\t\t\t\t\talert('XLSX Library not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (formatter == 'pdf') {\n\t\t\t\tif (!window.jspdf) {\n\t\t\t\t\talert('jsPDF Library not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar doc = new jspdf.jsPDF({});\n\t\t\t\tif (!doc.autoTable) {\n\t\t\t\t\talert('jsPDF-AutoTable Plugin not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tdownload(config) {\n\t\t\tthis.tabulator.download(config.formatter, config.file, config.options)\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t`\n};\n\n","const elementDataMap = new WeakMap();\n\nexport default {\n\tmounted(el, binding) {\n\t\tlet open = false;\n\t\telementDataMap.set(el, evt => {\n\t\t\tif (!open)\n\t\t\t\treturn;\n\n\t\t\tif (el.contains(evt.target))\n\t\t\t\treturn;\n\n\t\t\tconst collapse = bootstrap.Collapse.getInstance(el)\n\t\t\tif (collapse)\n\t\t\t\tcollapse.hide();\n\t\t});\n\t\tel.addEventListener('shown.bs.collapse', () => {\n\t\t\topen = true;\n\t\t});\n\t\tel.addEventListener('hide.bs.collapse', () => {\n\t\t\topen = false;\n\t\t});\n\t\tdocument.addEventListener('click', elementDataMap.get(el), true);\n\t},\n\tbeforeUnmount(el, binding) {\n\t\tdocument.removeEventListener('click', elementDataMap.get(el));\n\t\tdelete el.collapsibleAutoHideFunc;\n\t}\n}","/**\n * This may need changes if Tabulator gets updated!\n *\n * Current working Version: 5.5.2\n * \n * This is a copy of the fitDataStretch function. The only difference\n * is the check for frozen columns on line 22.\n */\n\nexport default window.Tabulator?.extendModule(\"layout\", \"modes\", {\n\tfitDataStretchFrozen(columns, forced) {\n\t\tvar colsWidth = 0,\n\t\ttableWidth = this.table.rowManager.element.clientWidth,\n\t\tgap = 0,\n\t\tlastCol = false;\n\n\t\tcolumns.forEach((column, i) => {\n\t\t\tif (!column.widthFixed) {\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\n\t\t\tif (this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible && !column.definition.frozen) {\n\t\t\t\tlastCol = column;\n\t\t\t}\n\n\t\t\tif (column.visible) {\n\t\t\t\tcolsWidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\tif (lastCol){\n\t\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\t\tlastCol.setWidth(0);\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\n\t\t\tif (gap > 0) {\n\t\t\t\tlastCol.setWidth(gap);\n\t\t\t} else {\n\t\t\t\tlastCol.reinitializeWidth();\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t}\n\t}\n});\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/saveCustomFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t};\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/removeCustomFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t};\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/applyFilterFields',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t};\n\t},\n\taddFilterField(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/addFilterField',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t};\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/removeFilterField',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t};\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/filter/getFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t};\n\t},\n\tgetFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/filter/getFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport {CoreFetchCmpt} from '../../components/Fetch.js';\nimport FilterConfig from './Filter/Config.js';\nimport FilterColumns from './Filter/Columns.js';\nimport TableDownload from './Table/Download.js';\nimport collapseAutoClose from '../../directives/collapseAutoClose.js';\n\nimport moduleLayoutFitDataStretchFrozen from '../../tabulator/layouts/fitDataStretchFrozen.js';\n\nimport ApiFilter from '../../api/factory/filter.js';\n\n//\nconst FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';\nconst FILTER_COMPONENT_NEW_FILTER_TYPE = 'Filter Component New Filter Type';\n\nvar _uuid = 0;\n\n/**\n *\n */\nexport const CoreFilterCmpt = {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tFilterConfig,\n\t\tFilterColumns,\n\t\tTableDownload\n\t},\n\tdirectives: {\n\t\tcollapseAutoClose\n\t},\n\temits: [\n\t\t'nwNewEntry',\n\t\t'click:new',\n\t\t'tableBuilt',\n\t\t'uuidDefined'\n\t],\n\tprops: {\n\t\tonNwNewEntry: Function, // NOTE(chris): Hack to get the nwNewEntry listener into $props\n\t\ttitle: String,\n\t\tdescription: String,\n\t\tsideMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tfilterType: {\n\t\t\ttype: String\n\t\t},\n\t\ttabulatorOptions: Object,\n\t\ttabulatorEvents: Array,\n\t\ttableOnly: Boolean,\n\t\tnoColumnFilter:Boolean,\n\t\treload: Boolean,\n\t\treloadBtnInfotext: String,\n\t\tdownload: {\n\t\t\ttype: [Boolean, String, Function, Array, Object],\n\t\t\tdefault: false\n\t\t},\n\t\tnewBtnShow: Boolean,\n\t\tnewBtnClass: [String, Array, Object],\n\t\tnewBtnDisabled: Boolean,\n\t\tnewBtnLabel: String,\n\t\tuniqueId: String,\n\n\t\tidField: String,\n\t\tparentIdField: String,\n\t\tcountOnly: Boolean,\n\t\tuseSelectionSpan: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tuuid: 0,\n\t\t\t// FilterCmpt properties\n\t\t\tfilterName: null,\n\t\t\tfilterActive: false,\n\t\t\tfields: null,\n\t\t\tdataset: null,\n\t\t\tdatasetMetadata: null,\n\t\t\tselectedFields: null,\n\t\t\tfilterFields: null,\n\n\t\t\tavailableFilters: null,\n\t\t\tselectedFilter: null,\n\n\t\t\t// FetchCmpt binded properties\n\t\t\tfetchCmptRefresh: false,\n\t\t\tfetchCmptApiFunction: null,\n\t\t\tfetchCmptApiFunctionParams: null,\n\t\t\tfetchCmptDataFetched: null,\n\n\t\t\tfetchResult: null,\n\n\t\t\ttabulator: null,\n\t\t\ttableBuilt: false,\n\t\t\ttabulatorHasSelector: false,\n\t\t\tselectedData: [],\n\t\t\tpersistence: {\n\t\t\t\tsort: true,\n\t\t\t\tcolumns: true,\n\t\t\t\tfilter: false,\n\t\t\t\theaderFilter: false,\n\t\t\t\tgroup: false,\n\t\t\t\tpage: false,\n\t\t\t}\n\t\t};\n\t},\n\tcomputed: {\n\t\tnotSelectedFields() {\n\t\t\tif (!this.fields || !this.selectedFields)\n\t\t\t\treturn null;\n\t\t\treturn this.fields.filter(x => this.selectedFields.indexOf(x) === -1)\n\t\t},\n\t\tfilteredData() {\n\t\t\tif (!this.dataset)\n\t\t\t\treturn [];\n\t\t\treturn JSON.parse(JSON.stringify(this.dataset));\n\t\t},\n\t\tfilteredColumns() {\n\t\t\tlet fields = JSON.parse(JSON.stringify(this.fields)) || [];\n\t\t\tlet selectedFields = JSON.parse(JSON.stringify(this.selectedFields)) || [];\n\n\t\t\tlet columns = null;\n\n\t\t\t// If the tabulator options has been provided and it contains the property columns\n\t\t\tif (this.tabulatorOptions && this.tabulatorOptions.hasOwnProperty('columns'))\n\t\t\t\tcolumns = this.tabulatorOptions.columns;\n\n\t\t\t// If columns is not an array or it is an array with less elements then the array fields\n\t\t\tif (!Array.isArray(columns) || (Array.isArray(columns) && columns.length < fields.length))\n\t\t\t{\n\t\t\t\tcolumns = []; // set it as an empty array\n\n\t\t\t\t// Loop throught all the retrieved columns from database\n\t\t\t\tfor (let field of fields)\n\t\t\t\t{\n\t\t\t\t\t// Create a new column having the title equal to the field name\n\t\t\t\t\tlet column = {\n\t\t\t\t\t\ttitle: field,\n\t\t\t\t\t\tfield: field\n\t\t\t\t\t};\n\n\t\t\t\t\t// If the column has to be displayed or not\n\t\t\t\t\tcolumn.visible = selectedFields.indexOf(field) >= 0;\n\n\t\t\t\t\t// Add the new column to the list of columns\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // the property columns has been provided in the tabulator options\n\t\t\t{\n\t\t\t\t// Loop throught the property columns of the tabulator options\n\t\t\t\tfor (let col of columns)\n\t\t\t\t{\n\t\t\t\t\t// If the column has to be displayed or not\n\t\t\t\t\t/* fields.indexOf(col.field) == -1; ensures displaying formatter colums\n\t\t\t\t\te.g. column with rowSelection checkboxes or with custom formatted action buttons */\n\t\t\t\t\tcol.visible = selectedFields.indexOf(col.field) >= 0 || fields.indexOf(col.field) == -1;\n\n\t\t\t\t\tif (col.hasOwnProperty('resizable'))\n\t\t\t\t\t\tcol.resizable = col.visible;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn columns;\n\t\t},\n\t\tfieldIdsForVisibilty() {\n\t\t\tif (!this.tableBuilt)\n\t\t\t\treturn [];\n\t\t\treturn this.tabulator.getColumns().filter(col => {\n\t\t\t\tlet def = col.getDefinition();\n\t\t\t\treturn !def.frozen && def.title && def.formatter != \"responsiveCollapse\";\n\t\t\t}).map(col => col.getField());\n\t\t},\n\t\tfieldNames() {\n\t\t\tif (!this.tableBuilt)\n\t\t\t\treturn {};\n\t\t\treturn this.tabulator.getColumns().reduce((res, col) => {\n\t\t\t\tres[col.getField()] = col.getDefinition().title;\n\t\t\t\treturn res;\n\t\t\t}, {});\n\t\t},\n\t\tidExtra() {\n\t\t\tif (!this.uuid)\n\t\t\t\treturn '';\n\t\t\treturn '-' + this.uuid;\n\t\t},\n\t\tcolumnsForFilter() {\n\t\t\tif (!this.filteredColumns || !this.datasetMetadata)\n\t\t\t\treturn [];\n\t\t\tconst filterTitles = this.filteredColumns.reduce((a,c) => {\n\t\t\t\ta[c.field] = c.title;\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t\treturn this.datasetMetadata.map(el => ({...el, ...{title: filterTitles[el.name]}}));\n\t\t}\n\t},\n\tmethods: {\n\t\treloadTable() {\n\t\t\tif (this.tableOnly)\n\t\t\t\tthis.tabulator.setData();\n\t\t\telse\n\t\t\t\tthis.getFilter();\n\t\t},\n\t\tasync initTabulator() {\n\t\t\tlet placeholder = '< Phrasen Plugin not loaded! >';\n\t\t\tif (this.$p) {\n\t\t\t\tawait this.$p.loadCategory('ui');\n\t\t\t\tplaceholder = this.$p.t('ui/keineDatenVorhanden');\n\t\t\t}\n\n\t\t\tif (!this.tableOnly) {\n\t\t\t\t// prefetch data to get fields & selectedFields for filteredColumns & filteredData\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tconst filterId = window.location.hash ? window.location.hash.slice(1) : null;\n\n\t\t\t\t\tconst resolvePromiseFunc = data => {\n\t\t\t\t\t\tthis.setRenderData(data);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\t// get the filter data\n\t\t\t\t\tif (filterId === null)\n\t\t\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilter(wsParams)),\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tresolvePromiseFunc\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilterById(wsParams)),\n\t\t\t\t\t\t\t{ filterId },\n\t\t\t\t\t\t\tresolvePromiseFunc\n\t\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Define a default tabulator options in case it was not provided\n\t\t\tlet tabulatorOptions = {...{\n\t\t\t\t\tlayout: \"fitDataStretchFrozen\",\n\t\t\t\t\tmovableColumns: true,\n\t\t\t\t\tcolumnDefaults:{\n\t\t\t\t\t\ttooltip: true\n\t\t\t\t\t},\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tpersistence: this.persistence,\n\t\t\t\t}, ...(this.tabulatorOptions || {})};\n\n\t\t\t// set default height if no height property is set\n\t\t\tif (tabulatorOptions.height === undefined &&\n\t\t\t\ttabulatorOptions.minHeight === undefined &&\n\t\t\t\ttabulatorOptions.maxHeight === undefined) {\n\t\t\t\ttabulatorOptions.height = 500;\n\t\t\t}\n\n\t\t\tif (!this.tableOnly) {\n\t\t\t\ttabulatorOptions.data = this.filteredData;\n\t\t\t\ttabulatorOptions.columns = this.filteredColumns;\n\t\t\t} else {\n\t\t\t\ttabulatorOptions.columns.forEach(col => {\n\t\t\t\t\tif (col.visible === undefined)\n\t\t\t\t\t\tcol.visible = true;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (tabulatorOptions.selectable || (tabulatorOptions.columns && tabulatorOptions.columns.filter(el => el.formatter == 'rowSelection').length))\n\t\t\t\tthis.tabulatorHasSelector = true;\n\n\t\t\tif (this.idField) {\n\t\t\t\t// enable nested tabulator if parent Id given\n\t\t\t\tif (this.parentIdField) tabulatorOptions.dataTree = true;\n\t\t\t\t// set tabulator index\n\t\t\t\ttabulatorOptions.index = this.idField;\n\t\t\t}\n\n\t\t\t// Start the tabulator with the build options\n\t\t\tthis.tabulator = new Tabulator(\n\t\t\t\tthis.$refs.table,\n\t\t\t\ttabulatorOptions\n\t\t\t);\n\t\t\t// If event handlers have been provided\n\t\t\tif (Array.isArray(this.tabulatorEvents) && this.tabulatorEvents.length > 0)\n\t\t\t{\n\t\t\t\t// Attach all the provided event handlers to the started tabulator\n\t\t\t\tfor (let evt of this.tabulatorEvents)\n\t\t\t\t\tthis.tabulator.on(evt.event, evt.handler);\n\t\t\t}\n\t\t\tthis.tabulator.on('tableBuilt', () => {this.tableBuilt = true; this.$emit('tableBuilt');});\n\t\t\tthis.tabulator.on(\"rowSelectionChanged\", data => {\n\t\t\t\tthis.selectedData = data;\n\t\t\t});\n\n\t\t\t// if nested tabulator, restructure data\n\t\t\tif (this.parentIdField && this.idField) {\n\t\t\t\tthis.tabulator.on(\"dataLoading\", data => {\n\t\t\t\t\tlet toDelete = [];\n\n\t\t\t\t\t// loop through all data\n\t\t\t\t\tfor (let childIdx = 0; childIdx < data.length; childIdx++)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet child = data[childIdx];\n\n\t\t\t\t\t\t// if it has parent id, it is a child\n\t\t\t\t\t\tif (child[this.parentIdField])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// append the child on the right place. If parent found, mark original sw child on 0 level for deleting\n\t\t\t\t\t\t\tif (this.appendChild(data, child)) toDelete.push(childIdx);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// delete the marked children from 0 level\n\t\t\t\t\tfor (let counter = 0; counter < toDelete.length; counter++)\n\t\t\t\t\t{\n\t\t\t\t\t\t// decrease index by counter as index of data array changes after every deletion\n\t\t\t\t\t\tdata.splice(toDelete[counter] - counter, 1);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this.tableOnly) {\n\t\t\t\tthis.tabulator.on('tableBuilt', () => {\n\t\t\t\t\tconst cols = this.tabulator.getColumns();\n\t\t\t\t\tthis.fields = cols.map(col => col.getField());\n\t\t\t\t\tthis.selectedFields = cols.filter(col => col.isVisible()).map(col => col.getField());\n\t\t\t\t\tif (this.tabulator.options.persistence.headerFilter)\n\t\t\t\t\t\tthis._setHeaderFilter();\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t\tthis.tabulator.on(\"dataFiltered\", filters => {\n\t\t\t\tthis.filterActive = filters.length > 0;\n\t\t\t});\n\t\t},\n\t\tupdateTabulator() {\n\t\t\tif (this.tabulator) {\n\t\t\t\tif (this.tableBuilt)\n\t\t\t\t\tthis._updateTabulator();\n\t\t\t\telse\n\t\t\t\t\tthis.tabulator.on('tableBuilt', this._updateTabulator);\n\t\t\t}\n\t\t},\n\t\t_updateTabulator() {\n\t\t\tthis.tabulatorHasSelector = this.tabulatorOptions.selectable || this.filteredColumns.filter(el => el.formatter == 'rowSelection').length;\n\t\t\tthis.tabulator.setColumns(this.filteredColumns);\n\t\t\tthis.tabulator.setData(this.filteredData);\n\t\t\tthis._setHeaderFilter()\n\t\t},\n\t\tclearFilters()\n\t\t{\n\t\t\tlet existingFilters = this.tabulator.getHeaderFilters();\n\t\t\texistingFilters.forEach(filter => {\n\t\t\t\tthis.tabulator.setHeaderFilterValue(filter.field, \"\");\n\t\t\t});\n\t\t\tthis.tabulator.clearFilter();\n\t\t\tthis.filterActive = false;\n\t\t},\n\t\t_setHeaderFilter()\n\t\t{\n\t\t\tconst existingFilters = this.tabulator.getHeaderFilters();\n\t\t\texistingFilters.forEach(filter => {\n\t\t\t\tthis.tabulator.setHeaderFilterValue(filter.field, filter.value);\n\t\t\t});\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tgetFilter() {\n\t\t\tif (this.selectedFilter === null)\n\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilter(wsParams)),\n\t\t\t\t\tnull,\n\t\t\t\t\tthis.render\n\t\t\t\t);\n\t\t\telse\n\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilterById(wsParams)),\n\t\t\t\t\t{\n\t\t\t\t\t\tfilterId: this.selectedFilter\n\t\t\t\t\t},\n\t\t\t\t\tthis.render\n\t\t\t\t);\n\t\t},\n\t\tsetRenderData(data) {\n\t\t\tthis.fetchResult = data;\n\t\t\tthis.filterName = data.filterName;\n\t\t\tthis.dataset = data.dataset;\n\t\t\tthis.datasetMetadata = data.datasetMetadata;\n\n\t\t\tthis.fields = data.fields;\n\t\t\tthis.selectedFields = data.selectedFields;\n\t\t\tthis.filterFields = [];\n\n\t\t\tfor (let i = 0; i < data.datasetMetadata.length; i++)\n\t\t\t{\n\t\t\t\tfor (let j = 0; j < data.filters.length; j++)\n\t\t\t\t{\n\t\t\t\t\tif (data.datasetMetadata[i].name == data.filters[j].name)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet filter = data.filters[j];\n\t\t\t\t\t\tfilter.type = data.datasetMetadata[i].type;\n\n\t\t\t\t\t\tthis.filterFields.push(filter);\n\t\t\t\t\t\t//break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\trender(response) {\n\t\t\tlet data = response;\n\n\t\t\tthis.setRenderData(data);\n\n\t\t\t// If the side menu is active\n\t\t\tif (this.sideMenu === true)\n\t\t\t{\n\t\t\t\tthis.setSideMenu(data);\n\t\t\t}\n\t\t\telse // otherwise use the dropdown in the filter options\n\t\t\t{\n\t\t\t\tthis.setDropDownMenu(data);\n\t\t\t}\n\t\t\tthis.updateTabulator();\n\t\t},\n\t\t/**\n\t\t * Set the menu\n\t\t */\n\t\tsetSideMenu(data) {\n\t\t\tlet filters = data.sideMenu.filters;\n\t\t\tlet personalFilters = data.sideMenu.personalFilters;\n\t\t\tlet filtersArray = [];\n\n\t\t\tfor (let filtersCount = 0; filtersCount < filters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = filters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: filters[filtersCount].filter_id,\n\t\t\t\t\tlink: link + filters[filtersCount].filter_id,\n\t\t\t\t\tdescription: filters[filtersCount].desc,\n\t\t\t\t\tsort: filtersCount,\n\t\t\t\t\tonClickCall: this.handlerGetFilterById\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = personalFilters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: personalFilters[filtersCount].filter_id,\n\t\t\t\t\tlink: link + personalFilters[filtersCount].filter_id,\n\t\t\t\t\tdescription: personalFilters[filtersCount].desc,\n\t\t\t\t\tsubscriptDescription: personalFilters[filtersCount].subscriptDescription,\n\t\t\t\t\tsubscriptLinkClass: personalFilters[filtersCount].subscriptLinkClass,\n\t\t\t\t\tsubscriptLinkValue: personalFilters[filtersCount].subscriptLinkValue,\n\t\t\t\t\tsort: filtersCount,\n\t\t\t\t\tonClickCall: this.handlerGetFilterById,\n\t\t\t\t\tonClickSubscriptCall: this.handlerRemoveCustomFilter\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.availableFilters = filtersArray;\n\n\t\t\tthis.$emit(\n\t\t\t\t'nwNewEntry',\n\t\t\t\t{\n\t\t\t\t\tlink: \"#\",\n\t\t\t\t\tdescription: \"Filters\",\n\t\t\t\t\ticon: \"filter\",\n\t\t\t\t\tchildren: filtersArray\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t * Set the drop down menu\n\t\t */\n\t\tsetDropDownMenu(data) {\n\t\t\tlet filters = data.sideMenu.filters;\n\t\t\tlet personalFilters = data.sideMenu.personalFilters;\n\t\t\tlet filtersArray = [];\n\n\t\t\tfor (let filtersCount = 0; filtersCount < filters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = filters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: filters[filtersCount].filter_id,\n\t\t\t\t\toption: filters[filtersCount].filter_id,\n\t\t\t\t\tdescription: filters[filtersCount].desc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = personalFilters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: personalFilters[filtersCount].filter_id,\n\t\t\t\t\toption: personalFilters[filtersCount].filter_id,\n\t\t\t\t\tdescription: personalFilters[filtersCount].desc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.availableFilters = filtersArray;\n\t\t},\n\t\t/**\n\t\t * Used to start/refresh the FetchCmpt\n\t\t */\n\t\tstartFetchCmpt(apiFunction, apiFunctionParameters, dataFetchedCallback) {\n\t\t\t// Assign the function api of the FetchCmpt binded property\n\t\t\tthis.fetchCmptApiFunction = apiFunction;\n\n\t\t\t// In case a null value is provided set the parameters as an empty object\n\t\t\tif (apiFunctionParameters == null) apiFunctionParameters = {};\n\n\t\t\t// Always needed parameters\n\t\t\tapiFunctionParameters.filterUniqueId = FHC_JS_DATA_STORAGE_OBJECT.called_path + \"/\" + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\t\t\tapiFunctionParameters.filterType = this.filterType;\n\n\t\t\tif (this.uniqueId)\n\t\t\t\tapiFunctionParameters.filterUniqueId += '_' + this.uniqueId;\n\n\t\t\t// Assign parameters to the FetchCmpt binded properties\n\t\t\tthis.fetchCmptApiFunctionParams = apiFunctionParameters;\n\t\t\t// Assign data fetch callback to the FetchCmpt binded properties\n\t\t\tthis.fetchCmptDataFetched = dataFetchedCallback;\n\t\t\t// Set the FetchCmpt binded property refresh to have the component to refresh\n\t\t\t// NOTE: this should be the last one to be called because it triggers the FetchCmpt to start to refresh\n\t\t\tthis.fetchCmptRefresh === true ? this.fetchCmptRefresh = false : this.fetchCmptRefresh = true;\n\t\t},\n\n\t\t// ------------------------------------------------------------------------------------------------------------------\n\t\t// Event handlers\n\n\t\t/**\n\t\t *\n\t\t */\n\t\thandlerSaveCustomFilter(customFilterName) {\n\t\t\tthis.selectedFilter = null;\n\t\t\t//\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.saveCustomFilter(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tcustomFilterName\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\thandlerRemoveCustomFilter(event) {\n\t\t\tlet filterId = event.currentTarget.getAttribute(\"href\").substring(1);\n\t\t\tif (filterId === this.selectedFilter)\n\t\t\t\tthis.selectedFilter = null;\n\t\t\t//\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.removeCustomFilter(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tfilterId: filterId\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\n\t\t/*\n\t\t *\n\t\t */\n\t\thandlerGetFilterById: function(event) {\n\n\t\t\tlet filterId = null;\n\n\t\t\t// Get the attribute href if side menu is rendered\n\t\t\tlet attr = event.currentTarget.getAttribute(\"href\");\n\n\t\t\t// Otherwise get the value of the drop down menu\n\t\t\tif (attr == null)\n\t\t\t{\n\t\t\t\tfilterId = event.currentTarget.value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilterId = attr.substring(1);\n\t\t\t}\n\n\t\t\tthis.switchFilter(filterId);\n\t\t},\n\t\tswitchFilter(filterId) {\n\t\t\tthis.selectedFilter = filterId;\n\t\t\tthis.getFilter();\n\t\t},\n\t\tapplyFilterConfig(filterFields) {\n\t\t\tthis.selectedFilter = null;\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.applyFilterFields(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tfilterFields\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\n\t\t// append child to it's parent\n\t\tappendChild(data, child) {\n\t\t\t// get parent id\n\t\t\tlet parentId = child[this.parentIdField];\n\n\t\t\t// loop thorugh all data\n\t\t\tfor (let parentIdx = 0; parentIdx < data.length; parentIdx++)\n\t\t\t{\n\t\t\t\tlet parent = data[parentIdx];\n\n\t\t\t\t// if it's the parent\n\t\t\t\tif (parent[this.idField] == parentId)\n\t\t\t\t{\n\t\t\t\t\t// create children array if not done yet\n\t\t\t\t\tif (!parent._children) parent._children = [];\n\n\t\t\t\t\t// if child is not included in children array, append the child\n\t\t\t\t\tif (!parent._children.includes(child)) parent._children.push(child);\n\n\t\t\t\t\t// parent found\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// search children for parents\n\t\t\t\telse if (parent._children) this.appendChild(parent._children, child);\n\t\t\t}\n\n\t\t\t// parent not found\n\t\t\treturn false;\n\t\t}\n\t},\n\tbeforeCreate() {\n\t\tif (!this.tableOnly == !this.filterType)\n\t\t\talert('You can not have a filter-type in table-only mode!');\n\t},\n\tcreated() {\n\t\tif (this.sideMenu && (!this.$props.onNwNewEntry || !(this.$props.onNwNewEntry instanceof Function)))\n\t\t\talert('\"nwNewEntry\" listener is mandatory when sideMenu is true');\n\t\tthis.uuid = _uuid++;\n\t\tthis.$emit('uuidDefined', this.uuid)\n\t},\n\tmounted() {\n\t\tthis.initTabulator().then(() => {\n\t\t\tif (!this.tableOnly) {\n\t\t\t\tthis.selectedFilter = window.location.hash ? window.location.hash.slice(1) : null;\n\t\t\t\tthis.render(this.fetchResult);\n\t\t\t}\n\t\t});\n\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\n\t\t
    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t\t{{ title }}\n\t\t\t\t

    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ selectedData.length }} ausgewählt\n\t\t\t\t\t\t Mit {{ selectedData.length }} ausgewählten:\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t[ {{ filterName }} ]\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\n\t\t\n\t\t
    \n\t`\n};\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","export default {\n\tinject: [\n\t\t'$registerToForm'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfeedback: {\n\t\t\t\tsuccess: [],\n\t\t\t\tdanger: []\n\t\t\t}\n\t\t};\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.feedback = {\n\t\t\t\tsuccess: [],\n\t\t\t\tdanger: []\n\t\t\t};\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tconst ts = Date.now();\n\t\t\tthis.feedback[valid ? 'success' : 'danger']\n\t\t\t\t.push(...feedback.map(msg => [msg, ts]));\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$registerToForm)\n\t\t\tthis.$registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t`\n};\n","export default {\n\tcreated(el, binding) {\n\t\tswitch (binding.arg) {\n\t\t\tcase 'tab':\n\t\t\t\tel.style.cursor = 'pointer';\n\t\t\t\tconst [prev, next] = binding.modifiers.vertical ? ['ArrowUp', 'ArrowDown'] : ['ArrowLeft', 'ArrowRight'];\n\t\t\t\tel.addEventListener('click', () => {\n\t\t\t\t\tlet act = el.parentNode.querySelector('[tabindex=\"0\"]');\n\t\t\t\t\tif (act)\n\t\t\t\t\t\tact.tabIndex = -1;\n\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t});\n\t\t\t\tel.addEventListener('focus', () => {\n\t\t\t\t\tel.ariaSelected = \"true\";\n\t\t\t\t});\n\t\t\t\tel.addEventListener('blur', () => {\n\t\t\t\t\tel.ariaSelected = \"false\";\n\t\t\t\t});\n\t\t\t\tel.addEventListener('keydown', e => {\n\t\t\t\t\tswitch (e.code) {\n\t\t\t\t\t\tcase prev:\n\t\t\t\t\t\t\tif (el.previousSibling?.tabIndex !== undefined) {\n\t\t\t\t\t\t\t\tel.previousSibling.tabIndex = 0;\n\t\t\t\t\t\t\t\tel.tabIndex = -1;\n\t\t\t\t\t\t\t\tel.previousSibling.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase next:\n\t\t\t\t\t\t\tif (el.nextSibling?.tabIndex !== undefined) {\n\t\t\t\t\t\t\t\tel.nextSibling.tabIndex = 0;\n\t\t\t\t\t\t\t\tel.tabIndex = -1;\n\t\t\t\t\t\t\t\tel.nextSibling.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Enter':\n\t\t\t\t\t\t\tel.click();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tmounted(el, binding) {\n\t\tswitch (binding.arg) {\n\t\t\tcase 'tab':\n\t\t\t\tlet activetab = -1;\n\t\t\t\tArray.from(el.parentNode.children).forEach((node, index) => {\n\t\t\t\t\tnode.ariaSetSize = el.parentNode.children.length;\n\t\t\t\t\tnode.ariaPosInSet = index;\n\t\t\t\t\tif (node.tabIndex === 0)\n\t\t\t\t\t\tactivetab = index;\n\t\t\t\t});\n\t\t\t\tif (activetab == -1) {\n\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t} else if (el.classList.contains('active')) {\n\t\t\t\t\tel.parentNode.children[activetab].tabIndex = -1;\n\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t} else {\n\t\t\t\t\tel.tabIndex = -1;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},\n\tbeforeUnmount(el, binding) {\n\t\tswitch (binding.arg) {\n\t\t\tcase 'tab':\n\t\t\t\tif (el.tabIndex === 0) {\n\t\t\t\t\tif (el.previousSibling?.tabIndex !== undefined)\n\t\t\t\t\t\tel.previousSibling.tabIndex = 0;\n\t\t\t\t\telse if (el.nextSibling?.tabIndex !== undefined)\n\t\t\t\t\t\tel.nextSibling.tabIndex = 0;\n\t\t\t\t}\n\t\t\t\tconst pos = parseInt(el.ariaPosInSet);\n\t\t\t\tArray.from(el.parentNode.children).forEach((node, index) => {\n\t\t\t\t\tnode.ariaSetSize = el.parentNode.children.length;\n\t\t\t\t\tif (index > pos)\n\t\t\t\t\t\tnode.ariaPosInSet = index-1;\n\t\t\t\t});\n\t\t\tbreak;\n\t\t}\n\t}\n}","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: url\n\t\t};\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: url\n\t\t};\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: url\n\t\t};\n\t},\n\tsearch(params, studiensemester_kurzbz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/students/search/'\n\t\t\t\t+ encodeURIComponent(studiensemester_kurzbz),\n\t\t\tparams\n\t\t};\n\t},\n\tverband(relative_path) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/students/' + relative_path\n\t\t};\n\t},\n\tgetPerson(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/getPerson',\n\t\t\tparams\n\t\t};\n\t},\n\tadd(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/student/add',\n\t\t\tparams\n\t\t};\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget(uid) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/getAdressen/' + uid\n\t\t};\n\t},\n\tadd(uid, params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/addNewAddress/' + uid,\n\t\t\tparams\n\t\t};\n\t},\n\tload(address_id){\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/loadAddress/',\n\t\t\tparams: { address_id }\n\t\t};\n\t},\n\tupdate(address_id, params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tparams\n\t\t};\n\t},\n\tdelete(address_id) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/deleteAddress/',\n\t\t\tparams: { address_id }\n\t\t};\n\t},\n\tgetTypes() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/getAdressentypen/'\n\t\t};\n\t},\n\tgetPlaces(plz) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/address/getPlaces/' + plz\n\t\t};\n\t},\n\tgetNations() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/address/getNations/'\n\t\t};\n\t},\n\tgetAllFirmen(){\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/kontakt/getAllFirmen/'\n\t\t}\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAllStudiensemesterAndAktOrNext() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/organisation/Studiensemester/getAllStudiensemesterAndAktOrNext',\n\t\t};\n\t},\n\tgetAll(order = null, start = null)\n\t{\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/organisation/studiensemester/getAll',\n\t\t\tparams: { order, start }\n\t\t};\n\t}\n};","export default {\n\n\tgetStudienplaeneBySemester(studiengang_kz, studiensemester_kurzbz, ausbildungssemester, orgform_kurzbz)\n\t{\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/organisation/studienplan/getBySemester',\n\t\t\tparams: { studiengang_kz, studiensemester_kurzbz, ausbildungssemester, orgform_kurzbz },\n\t\t};\n\t}\n}","import {CoreRESTClient} from '../../../../RESTClient.js';\nimport BsModal from '../../../Bootstrap/Modal.js';\nimport FhcForm from '../../../Form/Form.js';\nimport FormValidation from '../../../Form/Validation.js';\nimport FormInput from '../../../Form/Input.js';\nimport accessibility from '../../../../directives/accessibility.js';\n\nimport ApiStvStudents from '../../../../api/factory/stv/students.js';\nimport ApiStvAddress from '../../../../api/factory/stv/kontakt/address.js';\nimport ApiStudiensemester from '../../../../api/factory/studiensemester.js';\nimport ApiStudienplan from '../../../../api/factory/studienplan.js';\n\nvar _uuid = 0;\nconst FORMDATA_DEFAULT = {\n\taddress: {\n\t\tchecked: true,\n\t\tnation: 'A'\n\t},\n\tvorname: '',\n\tnachname: '',\n\tgeburtsnation: 'A',\n\tstaatsbuergerschaft: 'A',\n\tausbildungssemester: 1,\n\torgform_kurzbz: '',\n\tstudienplan_id: ''\n};\n\nexport default {\n\tcomponents: {\n\t\tBsModal,\n\t\tFhcForm,\n\t\tFormValidation,\n\t\tFormInput\n\t},\n\tdirectives: {\n\t\taccessibility\n\t},\n\tinject: [\n\t\t'lists'\n\t],\n\temits: ['saved'],\n\tprops: {\n\t\tpersonOnly: Boolean,\n\t\tstudiengangKz: Number,\n\t\tstudiensemesterKurzbz: String\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tplaces: [],\n\t\t\tformData: null,\n\t\t\tsuggestions: {},\n\t\t\tperson: null,\n\t\t\tsemester: [],\n\t\t\tstudienplaene: [],\n\t\t\tabortController: {\n\t\t\t\tsuggestions: null,\n\t\t\t\tplaces: null\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\tformDataPerson() {\n\t\t\tif (this.person)\n\t\t\t\treturn this.person;\n\t\t\treturn this.formData;\n\t\t},\n\t\torte() {\n\t\t\treturn this.places.filter(ort => ort.name == this.formData?.address.gemeinde);\n\t\t},\n\t\tgemeinden() {\n\t\t\treturn Object.values(this.places.reduce((res,place) => {\n\t\t\t\tres[place.name] = place;\n\t\t\t\treturn res;\n\t\t\t}, {}));\n\t\t},\n\t\tformDataStg: {\n\t\t\tget() {\n\t\t\t\treturn this.formData?.studiengang_kz !== undefined ? this.formData?.studiengang_kz : this.studiengangKz;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.formData.studiengang_kz = v;\n\t\t\t}\n\t\t},\n\t\tformDataSem: {\n\t\t\tget() {\n\t\t\t\treturn this.formData?.studiensemester_kurzbz !== undefined ? this.formData?.studiensemester_kurzbz : this.studiensemesterKurzbz;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.formData.studiensemester_kurzbz = v;\n\t\t\t}\n\t\t}\n\t},\n\twatch: {\n\t\tformDataStg() {\n\t\t\tthis.loadStudienplaene();\n\t\t},\n\t\tformDataSem() {\n\t\t\tthis.loadStudienplaene();\n\t\t}\n\t},\n\tmethods: {\n\t\topen() {\n\t\t\tthis.$refs.modal.show();\n\t\t},\n\t\treset() {\n\t\t\tthis.formData = JSON.parse(JSON.stringify(FORMDATA_DEFAULT));\n\t\t\tthis.person = null;\n\t\t\tthis.suggestions = [];\n\t\t\tif (this.$refs.form) this.$refs.form.clearValidation();\n\t\t},\n\t\tloadSuggestions() {\n\t\t\tif (this.abortController.suggestions)\n\t\t\t\tthis.abortController.suggestions.abort();\n\t\t\tif (this.person !== null)\n\t\t\t\treturn;\n\n\t\t\tthis.abortController.suggestions = new AbortController();\n\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStvStudents.getPerson({\n\t\t\t\t\tvorname: this.formData?.vorname,\n\t\t\t\t\tnachname: this.formData?.nachname,\n\t\t\t\t\tgebdatum: this.formData?.gebdatum\n\t\t\t\t}), {\n\t\t\t\t\tsignal: this.abortController.suggestions.signal\n\t\t\t\t})\n\t\t\t\t.then(result => this.suggestions = result.data)\n\t\t\t\t.catch(error => {\n\n\t\t\t\t\tif (error.code == 'ERR_BAD_REQUEST') {\n\t\t\t\t\t\treturn this.suggestions = [];\n\t\t\t\t\t}\n\n\t\t\t\t\t// NOTE(chris): repeat request\n\t\t\t\t\tif (error.code != \"ERR_CANCELED\")\n\t\t\t\t\t\twindow.setTimeout(this.loadSuggestions, 100);\n\t\t\t\t});\n\t\t},\n\t\tloadPlaces() {\n\t\t\tif (this.abortController.places)\n\t\t\t\tthis.abortController.places.abort();\n\t\t\tif (this.formData?.address?.nation != 'A' || !this?.formData?.address?.plz)\n\t\t\t\treturn;\n\n\t\t\tthis.abortController.places = new AbortController();\n\t\t\tthis.$refs.form.call(\n\t\t\t\tApiStvAddress.getPlaces(this.formData?.address.plz)\n\t\t\t\t//~ undefined,\n\t\t\t\t//~ {\n\t\t\t\t\t//~ signal: this.abortController.places.signal\n\t\t\t\t//~ }\n\t\t\t)\n\t\t\t.then(result => {\n\t\t\t\tthis.places = result.data\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tif (error.code != \"ERR_CANCELED\")\n\t\t\t\t\twindow.setTimeout(this.loadPlaces, 100);\n\t\t\t\telse\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t});\n\t\t},\n\t\tloadStudienplaene() {\n\t\t\tif (this.formDataStg) {\n\t\t\t\tthis.$api\n\t\t\t\t\t.call(ApiStudienplan.getStudienplaeneBySemester(\n\t\t\t\t\t\tthis.formDataStg,\n\t\t\t\t\t\tthis.formDataSem,\n\t\t\t\t\t\tthis.formData?.ausbildungssemester,\n\t\t\t\t\t\tthis.formData?.orgform_kurzbz\n\t\t\t\t\t))\n\t\t\t\t\t.then(result => result.data || [])\n\t\t\t\t\t.then(result => {\n\t\t\t\t\t\tthis.studienplaene = result;\n\t\t\t\t\t\tif (this.formData?.studienplan_id !== '' && !this.studienplaene.filter(plan => plan.studienplan_id == this.formData?.studienplan_id).length)\n\t\t\t\t\t\t\tthis.formData.studienplan_id = '';\n\t\t\t\t\t})\n\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\tif (error.code == 'ERR_BAD_REQUEST') {\n\t\t\t\t\t\t\treturn this.studienplaene = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// NOTE(chris): repeat request\n\t\t\t\t\t\tif (error.code != \"ERR_CANCELED\")\n\t\t\t\t\t\t\twindow.setTimeout(this.loadStudienplaene, 100);\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tchangeAddressNation(e) {\n\t\t\tif (this.formData.geburtsnation == this.formData?.address.nation)\n\t\t\t\tthis.formData.geburtsnation = e.target.value;\n\t\t\tif (this.formData.staatsbuergerschaft == this.formData?.address.nation)\n\t\t\t\tthis.formData.staatsbuergerschaft = e.target.value;\n\t\t\tthis.loadPlaces();\n\t\t},\n\t\tsend(e) {\n\t\t\tif (this.person === null)\n\t\t\t\treturn this.person = 0;\n\n\t\t\t//this.$fhcAlert.resetFormValidation(this.$refs.form);\n\t\t\tconst data = {...this.formData, ...(this.person || {})};\n\t\t\tif (data.studiengang_kz === undefined)\n\t\t\t\tdata.studiengang_kz = this.studiengangKz;\n\t\t\tif (data.studiensemester_kurzbz === undefined)\n\t\t\t\tdata.studiensemester_kurzbz = this.studiensemesterKurzbz;\n\n\t\t\tdata.personOnly = this.personOnly;\n\n\t\t\tthis.$refs.form.call(\n\t\t\t\tApiStvStudents.add(data)\n\t\t\t)\n\t\t\t.then(result => {\n\t\t\t\tthis.$emit('saved', result.data);\n\t\t\t\tthis.$fhcAlert.alertSuccess('Gespeichert');\n\t\t\t\tthis.$refs.modal.hide();\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tsetPerson(suggestion)\n\t\t{\n\t\t\tthis.person = suggestion;\n\t\t\tthis.formData.address.checked = false;\n\t\t},\n\t\tdateFormatter(val)\n\t\t{\n\t\t\tif (!val)\n\t\t\t\treturn '';\n\t\t\tlet date = new Date(val);\n\t\t\treturn date.toLocaleDateString('de-AT', {\n\t\t\t\t\"day\": \"2-digit\",\n\t\t\t\t\"month\": \"2-digit\",\n\t\t\t\t\"year\": \"numeric\"\n\t\t\t});\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.uuid = _uuid++;\n\t\tthis.reset();\n\t\tthis.$api.call(ApiStudiensemester.getAll())\n\t\t.then(result => result.data || [])\n\t\t.then(result => {\n\t\t\tthis.semester = result;\n\t\t})\n\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\ttemplate: `\n\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tconfigFilter() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/config/filter'\n\t\t};\n\t},\n\tconfigStudent() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/config/student'\n\t\t};\n\t},\n\tconfigStudents() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/config/students'\n\t\t};\n\t}\n};","import FilterItem from './Filter/Item.js';\n\nimport ApiStvApp from '../../../../api/factory/stv/app.js';\n\nexport default {\n\tname: \"ListPrestudentsFilter\",\n\tcomponents: {\n\t\tFilterItem\n\t},\n\temits: [\n\t\t'change'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfilters: [],\n\t\t\tfilterConfig: [// TODO(chris): get from BE!\n\t\t\t\t{\n\t\t\t\t\tname: 'stv/konto_filter_count_0',\n\t\t\t\t\ttype: 'konto',\n\t\t\t\t\tfixed: {\n\t\t\t\t\t\tmissing: true,\n\t\t\t\t\t\tusestdsem: true\n\t\t\t\t\t},\n\t\t\t\t\tdynamic: {\n\t\t\t\t\t\tbuchungstyp_kurzbz: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\ttest1: 'Test1',\n\t\t\t\t\t\t\t\ttest2: 'Test2'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'stv/konto_filter_missing_counter',\n\t\t\t\t\ttype: 'konto_counter',\n\t\t\t\t\tdynamic: {\n\t\t\t\t\t\tbuchungstyp_kurzbz: {\n\t\t\t\t\t\t\ttype: 'select',\n\t\t\t\t\t\t\tvalues: {\n\t\t\t\t\t\t\t\ttest1: 'Test1',\n\t\t\t\t\t\t\t\ttest2: 'Test2'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsamestg: {\n\t\t\t\t\t\t\ttype: 'bool',\n\t\t\t\t\t\t\tlabel: 'stv/konto',\n\t\t\t\t\t\t\tdefault: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t},\n\tcomputed: {\n\t\tcleanFilters() {\n\t\t\treturn this.filters.filter(filter => {\n\t\t\t\tif (!filter.type)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Object.values(filter).some(v => v === undefined))\n\t\t\t\t\treturn false;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\t},\n\twatch: {\n\t\tcleanFilters(n) {\n\t\t\tthis.$emit('change', n);\n\t\t}\n\t},\n\tmethods: {\n\t\tadd() {\n\t\t\tthis.filters.push({});\n\t\t},\n\t\tremove(index) {\n\t\t\tthis.filters.splice(index, 1);\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.$api\n\t\t\t.call(ApiStvApp.configFilter())\n\t\t\t.then(result => {\n\t\t\t\tthis.filterConfig = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\ttemplate: /* html */`\n\t
    \n\t\t\n\t\t\n\t
    `\n};\n","export default {\n\tname: \"FilterItem\",\n\tprops: {\n\t\tmodelValue: Object,\n\t\tfilterConfig: Array\n\t},\n\temits: [\n\t\t'update:modelValue',\n\t\t'remove'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\t//type: this.modelValue.type\n\t\t};\n\t},\n\tcomputed: {\n\t\tvalue: {\n\t\t\tget() {\n\t\t\t\treturn this.modelValue;\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.$emit('update:modelValue', value);\n\t\t\t}\n\t\t},\n\t\tfilterid: {\n\t\t\tget() {\n\t\t\t\treturn this.modelValue.filterid\n\t\t\t},\n\t\t\tset(filterid) {\n\t\t\t\tconst config = this.filterConfig.find(config => config.id == filterid);\n\t\t\t\tconst dynamic = Object.fromEntries(\n\t\t\t\t\tObject.keys(config.dynamic || {}).map(key => {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tconfig.dynamic[key].default\n\t\t\t\t\t\t];\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t\tthis.value = {\n\t\t\t\t\tfilterid,\n\t\t\t\t\ttype: config.type,\n\t\t\t\t\t...(config.fixed || {}),\n\t\t\t\t\t...dynamic\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tcurrentConfig() {\n\t\t\treturn this.filterConfig.find(config => config.id == this.filterid);\n\t\t}\n\t},\n\tmethods: {\n\t\tupdate() {\n\t\t\tthis.$emit('update:modelValue', this.value);\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t
    \n\t\t\n\t\t\t{{ $p.t('stv/filter_for') }}\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t{{ filter.label }}\n\t\t\t\n\t\t\n\t\t\n\t\t\n\t
    `\n};\n","export function capitalize(string) {\n\tif (!string) return '';\n\treturn string[0].toUpperCase() + string.slice(1);\n}","import { setTransferData, convertToValidDragObject } from '../helpers/DragAndDrop.js';\n\nconst EFFECTS = [\n\t'none',\n\t'copy',\n\t'copyLink',\n\t'copyMove',\n\t'link',\n\t'linkMove',\n\t'move',\n\t'all',\n\t'uninitialized'\n];\n\nexport default {\n\tmounted(el, binding) {\n\t\tupdateValue(el, binding.value);\n\t\tupdateEffectAllowed(el, binding.arg);\n\n\t\t// if modifier capture is set we assume it's on a parent element\n\t\t// i.e: for dragging multiple elements\n\t\t// otherwise set draggable attribute\n\t\tif (!binding.modifiers.capture) {\n\t\t\tel.draggable = true;\n\t\t}\n\n\t\tconst bcc = new BroadcastChannel('fhc-dnd');\n\t\tlet blocked = false;\n\n\t\tfunction onStart(evt) {\n\t\t\tconst value = el.dataset.fhcDraggableValue;\n\t\t\tif (value) {\n\t\t\t\tsetTransferData(evt, JSON.parse(value), true);\n\t\t\t\tif (el.dataset.fhcEffectAllowed)\n\t\t\t\t\tevt.dataTransfer.effectAllowed = el.dataset.fhcEffectAllowed;\n\n\t\t\t\tbcc.onmessage = e => {\n\t\t\t\t\tif (e.data == 'block') {\n\t\t\t\t\t\tblocked = true;\n\t\t\t\t\t} else if (e.data == 'release') {\n\t\t\t\t\t\tlet evt = null;\n\t\t\t\t\t\tif (blocked && blocked.evt) {\n\t\t\t\t\t\t\tevt = blocked.evt;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblocked = false;\n\t\t\t\t\t\tif (evt)\n\t\t\t\t\t\t\tel.dispatchEvent(evt);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tevt.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\tfunction onEnd(evt) {\n\t\t\tif (blocked) {\n\t\t\t\tblocked = {\n\t\t\t\t\tevt,\n\t\t\t\t\tdt: evt.dataTransfer\n\t\t\t\t};\n\t\t\t\tevt.stopPropagation();\n\t\t\t\tel.dispatchEvent(new DragEvent(\"beforedragend\", evt));\n\t\t\t} else {\n\t\t\t\tbcc.onmessage = () => {};\n\t\t\t}\n\t\t}\n\t\tel.addEventListener('dragstart', onStart, binding.modifiers.capture);\n\n\t\tel.addEventListener('dragend', onEnd, true);\n\n\t\tel.fhcDraggableCleanup = () => {\n\t\t\tel.removeEventListener('dragstart', onStart, binding.modifiers.capture);\n\t\t\tel.removeEventListener('dragend', onEnd, true);\n\t\t};\n\t},\n\tupdated(el, binding) {\n\t\tupdateValue(el, binding.value);\n\t\tupdateEffectAllowed(el, binding.arg);\n\t},\n\tbeforeUnmount(el) {\n\t\tel.fhcDraggableCleanup();\n\t\tdelete el.fhcDraggableCleanup;\n\t}\n}\n\n// Helper functions\nfunction updateValue(el, value) {\n\tvalue = convertToValidDragObject(value);\n\tif (value) {\n\t\tel.dataset.fhcDraggableValue = JSON.stringify(value);\n\t} else if (el.dataset.fhcDraggableValue) {\n\t\tdelete el.dataset.fhcDraggableValue;\n\t}\n}\nfunction updateEffectAllowed(el, effectAllowed) {\n\tif (effectAllowed && EFFECTS.includes(effectAllowed)) {\n\t\tel.dataset.fhcEffectAllowed = effectAllowed;\n\t} else if (el.dataset.fhcEffectAllowed) {\n\t\tdelete el.dataset.fhcEffectAllowed;\n\t}\n}\n","import {CoreFilterCmpt} from \"../../filter/Filter.js\";\nimport ListNew from './List/New.js';\nimport ListFilter from './List/Filter.js';\n\nimport { capitalize } from '../../../helpers/StringHelpers.js';\n\nimport draggable from '../../../directives/draggable.js';\n\nexport default {\n\tname: \"ListPrestudents\",\n\tcomponents: {\n\t\tCoreFilterCmpt,\n\t\tListNew,\n\t\tListFilter\n\t},\n\tdirectives: {\n\t\tdraggable\n\t},\n\tinject: {\n\t\tlists: {\n\t\t\tfrom: 'lists',\n\t\t\trequired: true\n\t\t},\n\t\t$reloadList: {\n\t\t\tfrom: '$reloadList',\n\t\t\trequired: true\n\t\t},\n\t\tcurrentSemester: {\n\t\t\tfrom: 'currentSemester',\n\t\t\trequired: true\n\t\t}\n\t},\n\tprops: {\n\t\tselected: Array,\n\t\tstudiengangKz: Number,\n\t\tstudiensemesterKurzbz: String\n\t},\n\temits: [\n\t\t'update:selected'\n\t],\n\tdata() {\n\t\tfunction dateFormatter(cell)\n\t\t{\n\t\t\tlet val = cell.getValue();\n\t\t\tif (!val)\n\t\t\t\treturn ' ';\n\t\t\tlet date = new Date(val);\n\t\t\treturn date.toLocaleDateString('de-AT', {\n\t\t\t\t\"day\": \"2-digit\",\n\t\t\t\t\"month\": \"2-digit\",\n\t\t\t\t\"year\": \"numeric\"\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\ttabulatorOptions: {\n\t\t\t\tcolumns:[\n\t\t\t\t\t{title:\"UID\", field:\"uid\", headerFilter: true},\n\t\t\t\t\t{title:\"TitelPre\", field:\"titelpre\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Nachname\", field:\"nachname\", headerFilter: true},\n\t\t\t\t\t{title:\"Vorname\", field:\"vorname\", headerFilter: true},\n\t\t\t\t\t{title:\"Wahlname\", field:\"wahlname\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"Vornamen\", field:\"vornamen\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"TitelPost\", field:\"titelpost\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Ersatzkennzeichen\", field:\"ersatzkennzeichen\", headerFilter: true},\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: \"Geburtsdatum\",\n\t\t\t\t\t\tfield: \"gebdatum\",\n\t\t\t\t\t\tformatter: dateFormatter, \n\t\t\t\t\t\theaderFilter: true,\n\t\t\t\t\t\theaderFilterFunc(headerValue, rowValue) {\n\t\t\t\t\t\t\tconst matches = headerValue.match(/^(([0-9]{2})\\.)?([0-9]{2})\\.([0-9]{4})?$/);\n\t\t\t\t\t\t\tlet comparestr = headerValue;\n\t\t\t\t\t\t\tif(matches !== null) {\n\t\t\t\t\t\t\t\tconst year = (matches[4] !== undefined) ? matches[4] : '';\n\t\t\t\t\t\t\t\tconst month = matches[3];\n\t\t\t\t\t\t\t\tconst day = (matches[2] !== undefined) ? matches[2] : '';\n\t\t\t\t\t\t\t\tcomparestr = year + '-' + month + '-' + day;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rowValue.match(comparestr);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{title:\"Geschlecht\", field:\"geschlecht\", headerFilter: \"list\", headerFilterParams: {values:{'m':'männlich','w':'weiblich','x':'divers','u':'unbekannt'}, listOnEmpty:true, autocomplete:true}},\n\t\t\t\t\t{title:\"Sem.\", field:\"semester\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Verb.\", field:\"verband\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Grp.\", field:\"gruppe\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Studiengang\", field:\"studiengang\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Studiengang_kz\", field:\"studiengang_kz\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"Personenkennzeichen\", field:\"matrikelnr\", headerFilter: true},\n\t\t\t\t\t{title:\"PersonID\", field:\"person_id\", headerFilter: true},\n\t\t\t\t\t{title:\"Status\", field:\"status\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Status Datum\", field:\"status_datum\", visible:false, formatter:dateFormatter},\n\t\t\t\t\t{title:\"Status Bestaetigung\", field:\"status_bestaetigung\", visible:false, formatter:dateFormatter, headerFilter: true},\n\t\t\t\t\t{title:\"EMail (Privat)\", field:\"mail_privat\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"EMail (Intern)\", field:\"mail_intern\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"Anmerkungen\", field:\"anmerkungen\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"AnmerkungPre\", field:\"anmerkung\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"OrgForm\", field:\"orgform_kurzbz\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"Aufmerksamdurch\", field:\"aufmerksamdurch_kurzbz\", visible:false},\n\t\t\t\t\t{title:\"Gesamtpunkte\", field:\"punkte\", visible:false},\n\t\t\t\t\t{title:\"Aufnahmegruppe\", field:\"aufnahmegruppe_kurzbz\", visible:false},\n\t\t\t\t\t{title:\"Dual\", field:\"dual\", visible:false, \n\t\t\t\t\t\tformatter:'tickCross', formatterParams: {\n\t\t\t\t\t\t\ttickElement: '',\n\t\t\t\t\t\t\tcrossElement: ''\n\t\t\t\t\t\t},\t\t\t\t\t\t\n\t\t\t\t\t\theaderFilter:\"tickCross\", headerFilterParams: {\n\t\t\t\t\t\t\t\"tristate\":true, elementAttributes:{\"value\":\"true\"}\n\t\t\t\t\t\t}, headerFilterEmptyCheck:function(value){return value === null}\n\t\t\t\t\t},\n\t\t\t\t\t{title:\"Matrikelnummer\", field:\"matr_nr\", visible:false, headerFilter: true},\n\t\t\t\t\t{title:\"Studienplan\", field:\"studienplan_bezeichnung\", headerFilter: \"list\", headerFilterParams: {valuesLookup:true, listOnEmpty:true, autocomplete:true, sort:\"asc\"}},\n\t\t\t\t\t{title:\"PreStudentInnenID\", field:\"prestudent_id\", headerFilter: true},\n\t\t\t\t\t{title:\"Priorität\", field:\"priorisierung_relativ\"},\n\t\t\t\t\t{title:\"Mentor\", field:\"mentor\", visible:false},\n\t\t\t\t\t{title:\"Aktiv\", field:\"bnaktiv\", visible:false, \n\t\t\t\t\t\tformatter:'tickCross', formatterParams: {\n\t\t\t\t\t\t\tallowEmpty:true,\n\t\t\t\t\t\t\ttickElement: '',\n\t\t\t\t\t\t\tcrossElement: ''\n\t\t\t\t\t\t},\t\t\t\t\t\t\n\t\t\t\t\t\theaderFilter:\"tickCross\", headerFilterParams: {\n\t\t\t\t\t\t\t\"tristate\":true, elementAttributes:{\"value\":\"true\"}\n\t\t\t\t\t\t}, headerFilterEmptyCheck:function(value){return value === null}\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\trowFormatter(row) {\n\t\t\t\t\tif (row.getData().bnaktiv === false) {\n\t\t\t\t\t\trow.getElement().classList.add('text-black','text-opacity-50','fst-italic');\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tajaxRequestFunc: (url, config, params) => {\n\t\t\t\t\tif( url === '' ) \n\t\t\t\t\t{\n\t\t\t\t\t\treturn Promise.resolve({ data: []});\n\t\t\t\t\t}\n\t\t\t\t\t/**\n\t\t\t\t\t * NOTE(chris): Because of a bug in Tabulator\n\t\t\t\t\t * we need to get the params from elsewhere.\n\t\t\t\t\t * @see https://github.com/olifolkerd/tabulator/issues/4318\n\t\t\t\t\t */\n\t\t\t\t\tconst apiconfig = {\n\t\t\t\t\t\t...this.tabulatorOptions.ajaxConfig,\n\t\t\t\t\t\turl: this.tabulatorOptions.ajaxURL,\n\t\t\t\t\t\tparams: this.tabulatorOptions.ajaxParams\n\t\t\t\t\t};\n\t\t\t\t\treturn this.$api.call(apiconfig);\n\t\t\t\t},\n\t\t\t\tajaxResponse: (url, params, response) => {\n\t\t\t\t\treturn response?.data;\n\t\t\t\t},\n\n\t\t\t\tlayout: 'fitDataStretch',\n\t\t\t\tlayoutColumnsOnNewData: false,\n\t\t\t\theight: '100%',\n\t\t\t\tselectable: true,\n\t\t\t\tselectableRangeMode: 'click',\n\t\t\t\tindex: 'prestudent_id',\n\t\t\t\tpersistenceID: 'stv-list'\n\t\t\t},\n\t\t\ttabulatorEvents: [\n\t\t\t\t{\n\t\t\t\t\tevent: 'rowSelectionChanged',\n\t\t\t\t\thandler: this.rowSelectionChanged\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tevent: 'dataProcessed',\n\t\t\t\t\thandler: this.autoSelectRows\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tevent: 'dataLoaded',\n\t\t\t\t\thandler: data => this.count = data.length\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tevent: 'dataFiltered',\n\t\t\t\t\thandler: (filters, rows) => this.filteredcount = rows.length\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tevent: 'rowClick',\n\t\t\t\t\thandler: this.handleRowClick // TODO(chris): this should be in the filter component\n\t\t\t\t}\n\t\t\t],\n\t\t\tfocusObj: null, // TODO(chris): this should be in the filter component\n\t\t\tlastSelected: null,\n\t\t\tfilter: [],\n\t\t\tcount: 0,\n\t\t\tfilteredcount: 0,\n\t\t\tselectedcount: 0,\n\t\t\tcurrentEndpoint: null\n\t\t}\n\t},\n\tcomputed: {\n\t\tcountsToHTML: function() {\n\t\t\treturn this.$p.t('global/ausgewaehlt')\n\t\t\t\t+ ': ' + (this.selectedcount || 0) + ''\n\t\t\t\t+ ' | '\n\t\t\t\t+ this.$p.t('global/gefiltert')\n\t\t\t\t+ ': '\n\t\t\t\t+ '' + (this.filteredcount || 0) + ''\n\t\t\t\t+ ' | '\n\t\t\t\t+ this.$p.t('global/gesamt')\n\t\t\t\t+ ': ' + (this.count || 0) + '';\n\t\t},\n\t\tselectedDragObject() {\n\t\t\treturn this.selected.map(item => {\n\t\t\t\tlet type, id;\n\t\t\t\tif (item.uid) {\n\t\t\t\t\ttype = 'student';\n\t\t\t\t\tid = item.uid;\n\t\t\t\t} else if (item.prestudent_id) {\n\t\t\t\t\ttype = 'prestudent';\n\t\t\t\t\tid = item.prestudent_id;\n\t\t\t\t} else if (item.person_id) {\n\t\t\t\t\ttype = 'person';\n\t\t\t\t\tid = item.person_id;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\ttype,\n\t\t\t\t\tid\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tdownloadConfig() {\n\t\t\treturn {\n\t\t\t\tcsv: {\n\t\t\t\t\tformatter: 'csv',\n\t\t\t\t\tfile: this.fileString,\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tdelimiter: ';',\n\t\t\t\t\t\tbom: true,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tfileString() {\n\t\t\tlet today = new Date().toLocaleDateString('en-GB')\n\t\t\t\t.replace(/\\//g, '_');\n\t\t\treturn \"StudentList_\" + today + \".csv\";\n\t\t}\n\t},\n\twatch: {\n\t\t'$p.user_language.value'(n, o) {\n\t\t\tif (n !== o && o !== undefined && this.$refs.table.tableBuilt) {\n\t\t\t\tthis.translateTabulator();\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\ttranslateTabulator() {\n\t\t\tthis.$p\n\t\t\t\t.loadCategory(['global', 'person', 'lehre', 'ui', 'profilUpdate', 'admission', 'stv'])\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst translations = {\n\t\t\t\t\t\tuid: capitalize(this.$p.t('person/uid')),\n\t\t\t\t\t\ttitelpre: capitalize(this.$p.t('person/titelpre')),\n\t\t\t\t\t\tnachname: capitalize(this.$p.t('person/nachname')),\n\t\t\t\t\t\tvorname: capitalize(this.$p.t('person/vorname')),\n\t\t\t\t\t\twahlname: capitalize(this.$p.t('person/wahlname')),\n\t\t\t\t\t\tvornamen: capitalize(this.$p.t('person/vornamen')),\n\t\t\t\t\t\ttitelpost: capitalize(this.$p.t('person/titelpost')),\n\t\t\t\t\t\tersatzkennzeichen: capitalize(this.$p.t('person/ersatzkennzeichen')),\n\t\t\t\t\t\tgebdatum: capitalize(this.$p.t('person/geburtsdatum')),\n\t\t\t\t\t\tgeschlecht: capitalize(this.$p.t('person/geschlecht')),\n\t\t\t\t\t\tsemester: capitalize(this.$p.t('lehre/sem')),\n\t\t\t\t\t\tverband: capitalize(this.$p.t('lehre/verb')),\n\t\t\t\t\t\tgruppe: capitalize(this.$p.t('lehre/grp')),\n\t\t\t\t\t\tstudiengang: capitalize(this.$p.t('lehre/studiengang')),\n\t\t\t\t\t\tstudiengang_kz: capitalize(this.$p.t('lehre/studiengang_kz')),\n\t\t\t\t\t\tmatrikelnr: capitalize(this.$p.t('person/personenkennzeichen')),\n\t\t\t\t\t\tperson_id: capitalize(this.$p.t('person/person_id')),\n\t\t\t\t\t\tstatus: capitalize(this.$p.t('global/status')),\n\t\t\t\t\t\tstatus_datum: capitalize(this.$p.t('profilUpdate/statusDate')),\n\t\t\t\t\t\tstatus_bestaetigung: capitalize(this.$p.t('global/status_bestaetigung')),\n\t\t\t\t\t\tmail_privat: capitalize(this.$p.t('person/email_private')),\n\t\t\t\t\t\tmail_intern: capitalize(this.$p.t('person/email_intern')),\n\t\t\t\t\t\tanmerkungen: capitalize(this.$p.t('stv/notes_person')),\n\t\t\t\t\t\tanmerkung: capitalize(this.$p.t('stv/notes_prestudent')),\n\t\t\t\t\t\torgform_kurzbz: capitalize(this.$p.t('lehre/orgform')),\n\t\t\t\t\t\taufmerksamdurch_kurzbz: capitalize(this.$p.t('person/aufmerksamDurch')),\n\t\t\t\t\t\tpunkte: capitalize(this.$p.t('admission/gesamtpunkte')),\n\t\t\t\t\t\taufnahmegruppe_kurzbz: capitalize(this.$p.t('stv/aufnahmegruppe_kurzbz')),\n\t\t\t\t\t\tdual: capitalize(this.$p.t('lehre/dual_short')),\n\t\t\t\t\t\tmatr_nr: capitalize(this.$p.t('person/matrikelnummer')),\n\t\t\t\t\t\tstudienplan_bezeichnung: capitalize(this.$p.t('lehre/studienplan')),\n\t\t\t\t\t\tprestudent_id: capitalize(this.$p.t('ui/prestudent_id')),\n\t\t\t\t\t\tpriorisierung_relativ: capitalize(this.$p.t('lehre/prioritaet')),\n\t\t\t\t\t\tmentor: capitalize(this.$p.t('stv/mentor')),\n\t\t\t\t\t\tbnaktiv: capitalize(this.$p.t('person/aktiv'))\n\t\t\t\t\t};\n\n\t\t\t\t\t/** NOTE(chris):\n\t\t\t\t\t * use this approach because updateDefinition\n\t\t\t\t\t * on the Tabulator columns is way slower and\n\t\t\t\t\t * freezes up the GUI.\n\t\t\t\t\t */\n\t\t\t\t\t// Overwrite definition for column show/hide\n\t\t\t\t\tthis.$refs.table.tabulator.getColumns().forEach(col => {\n\t\t\t\t\t\tconst trans = translations[col.getField()];\n\t\t\t\t\t\tif (!trans)\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tcol.getDefinition().title = trans;\n\t\t\t\t\t});\n\t\t\t\t\t// Overwrite node in dom\n\t\t\t\t\tthis.$refs.table.tabulator.element\n\t\t\t\t\t\t.querySelectorAll('.tabulator-col[tabulator-field]')\n\t\t\t\t\t\t.forEach(el => {\n\t\t\t\t\t\t\tconst field = el.getAttribute('tabulator-field');\n\t\t\t\t\t\t\tif (!translations[field])\n\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\tconst title = el.querySelector('.tabulator-col-title');\n\t\t\t\t\t\t\tif (!title)\n\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\ttitle.innerText = translations[field];\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t},\n\t\treload() {\n\t\t\tthis.$refs.table.reloadTable();\n\t\t},\n\t\tactionNewPrestudent() {\n\t\t\tthis.$refs.new.open();\n\t\t},\n\t\trowSelectionChanged(data, rows) {\n\t\t\tthis.selectedcount = data.length;\n\t\t\tthis.lastSelected = this.selected;\n\t\t\tthis.$emit('update:selected', data);\n\n\t\t\t// set selected elements draggable\n\t\t\tconst tableEl = this.$refs.table?.$refs?.table;\n\t\t\tif (tableEl) {\n\t\t\t\tconst oldDragables = tableEl.querySelectorAll('[draggable]');\n\t\t\t\tfor (const draggable of oldDragables)\n\t\t\t\t\tdraggable.removeAttribute('draggable');\n\t\t\t}\n\t\t\trows.forEach(row => row.getElement().draggable = true);\n\t\t},\n\t\tautoSelectRows(data) {\n\t\t\tif (this.lastSelected) {\n\t\t\t\t// NOTE(chris): reselect rows on refresh\n\t\t\t\tlet selected = this.lastSelected.map(el => this.$refs.table.tabulator.getRow(el.prestudent_id))\n\t\t\t\t// TODO(chris): unselect current item if it's no longer in the table?\n\t\t\t\t// or maybe reselect only the last one?\n\t\t\t\tselected = selected.filter(el => el);\n\n\t\t\t\tif (selected.length)\n\t\t\t\t\tthis.$refs.table.tabulator.selectRow(selected);\n\t\t\t} else if(this.lastSelected === undefined) {\n\t\t\t\t// NOTE(chris): select row if it's the only one (preferably only on startup)\n\t\t\t\tif (data.length == 1) {\n\t\t\t\t\tthis.$refs.table.tabulator.selectRow(this.$refs.table.tabulator.getRows());\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tupdateFilter(filter) {\n\t\t\tthis.filter = filter;\n\t\t\tthis.updateUrl();\n\t\t},\n\t\tupdateUrl(endpoint, first) {\n\t\t\tthis.lastSelected = first ? undefined : this.selected;\n\n\t\t\tconsole.log('function param endpoint: ' + JSON.stringify(endpoint));\n\t\t\tconsole.log('current endpoint: ' + JSON.stringify(this.currentEndpoint));\n\n\t\t\tif( endpoint === undefined && this.currentEndpoint === null)\n\t\t\t{\n\t\t\t\tendpoint = { url: '' };\n\t\t\t}\n\t\t\telse if( endpoint === undefined )\n\t\t\t{\n\t\t\t\tendpoint = JSON.parse(JSON.stringify(this.currentEndpoint));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.currentEndpoint = JSON.parse(JSON.stringify(endpoint));\n\t\t\t}\n\n\t\t\tendpoint.url = endpoint.url.replace(\n\t\t\t\t'CURRENT_SEMESTER',\n\t\t\t\tencodeURIComponent(this.currentSemester)\n\t\t\t\t);\n\n\t\t\tconst params = (endpoint?.params !== undefined) ? endpoint.params : {};\n\t\t\tlet method = (endpoint?.method !== undefined) ? endpoint.method : 'get';\n\t\t\tif (this.filter.length && !endpoint.url.match(/\\/search\\//))\n\t\t\t{\n\t\t\t\tparams.filter = this.filter;\n\t\t\t\tmethod = 'post';\n\t\t\t}\n\n\t\t\tthis.tabulatorOptions.ajaxURL = endpoint.url;\n\t\t\tthis.tabulatorOptions.ajaxParams = { ...params };\n\t\t\tthis.tabulatorOptions.ajaxConfig = {method};\n\t\t\tif (!this.$refs.table.tableBuilt) {\n\t\t\t\tif (this.$refs.table.tabulator) {\n\t\t\t\t\tthis.$refs.table.tabulator.on(\"tableBuilt\", () => {\n\t\t\t\t\t\tthis.$refs.table.tabulator.setData(endpoint.url, params, method);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else\n\t\t\t\tthis.$refs.table.tabulator.setData(endpoint.url, params, method);\n\t\t},\n\t\tdragCleanup(evt) {\n\t\t\tif (evt.dataTransfer.dropEffect == 'none')\n\t\t\t\treturn; // aborted or wrong target\n\t\t\t\n\t\t\tthis.$reloadList();\n\t\t},\n\t\tonKeydown(e) { // TODO(chris): this should be in the filter component\n\t\t\tif (!this.focusObj)\n\t\t\t\treturn;\n\n\t\t\tvar next;\n\t\t\tswitch (e.code) {\n\t\t\t\tcase 'Enter':\n\t\t\t\tcase 'Space':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tvar e2 = new Event('click', e);\n\t\t\t\t\te2.altKey = e.altKey;\n\t\t\t\t\te2.ctrlKey = e.ctrlKey;\n\t\t\t\t\te2.shiftKey = e.shiftKey;\n\t\t\t\t\tthis.focusObj.dispatchEvent(e2);\n\t\t\t\t\t//row.component.toggleSelect();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tnext = this.focusObj.previousElementSibling;\n\t\t\t\t\tif (next)\n\t\t\t\t\t\tthis.changeFocus(this.focusObj, next);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tnext = this.focusObj.nextElementSibling;\n\t\t\t\t\tif (next)\n\t\t\t\t\t\tthis.changeFocus(this.focusObj, next);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tchangeFocus(a, b) { // TODO(chris): this should be in the filter component\n\t\t\tif (b) {\n\t\t\t\tb.tabIndex = 0;\n\t\t\t\tthis.focusObj = b;\n\t\t\t\tb.focus();\n\t\t\t} else {\n\t\t\t\tthis.focusObj = null;\n\t\t\t}\n\t\t\ta.tabIndex = -1;\n\t\t\treturn this.focusObj;\n\t\t},\n\t\tonFocus(e) { // TODO(chris): this should be in the filter component\n\t\t\tif (!this.focusObj) {\n\t\t\t\tvar container, target;\n\t\t\t\tif (e.target.classList.contains('tabulator-container')) {\n\t\t\t\t\tcontainer = e.target;\n\t\t\t\t\ttarget = container.querySelector('.tabulator-row');\n\t\t\t\t} else if (e.target.classList.contains('tabulator-row')) {\n\t\t\t\t\tcontainer = e.target.closest('.tabulator-container');\n\t\t\t\t\ttarget = e.target;\n\t\t\t\t}\n\t\t\t\tif (container && target) {\n\t\t\t\t\tthis.changeFocus(container, target);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thandleRowClick(e, row) { // TODO(chris): this should be in the filter component\n\t\t\tif (this.focusObj) {\n\t\t\t\tlet el = row.getElement();\n\t\t\t\tif (el != this.focusObj)\n\t\t\t\t\tthis.changeFocus(this.focusObj, el);\n\t\t\t}\n\t\t}\n\t},\n\t// TODO(chris): focusin, focusout, keydown and tabindex should be in the filter component\n\t// TODO(chris): filter component column chooser has no accessibilty features\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\t\t\n\t
    `\n};\n","import accessibility from \"../directives/accessibility.js\";\n\nimport TabView from '../../../index.ci.php/public/js/components/primevue/tabview/tabview.esm.min.js';\nimport TabPanel from '../../../index.ci.php/public/js/components/primevue/tabpanel/tabpanel.esm.min.js';\n\nexport default {\n\tcomponents: {\n\t\ttabview: TabView,\n\t\ttabpanel: TabPanel\n\t},\n\tdirectives: {\n\t\taccessibility\n\t},\n\temits: [\n\t\t'update:modelValue',\n\t\t'change',\n\t\t'changed'\n\t],\n\tprops: {\n\t\tconfig: {\n\t\t\ttype: [String, Array, Object, Promise],\n\t\t\trequired: true\n\t\t},\n\t\tdefault: String,\n\t\tmodelValue: [String, Number, Boolean, Array, Object, Date, Function, Symbol],\n\t\tvertical: Boolean,\n\t\tborder: Boolean,\n\t\tuseprimevue: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcurrent: null,\n\t\t\ttabs: {},\n\t\t\tcount: null\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentTab() {\n\t\t\tif (this.tabs[this.current])\n\t\t\t\treturn this.tabs[this.current];\n\n\t\t\treturn { component: 'div' };\n\t\t},\n\t\tvalue: {\n\t\t\tget() {\n\t\t\t\treturn this.modelValue;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tthis.$emit('update:modelValue', v);\n\t\t\t}\n\t\t},\n\t\tcalcActiveIndex: function() {\n\t\t\tlet keys = Object.keys(this.tabs);\n\t\t\tlet index = keys.indexOf(this.default);\n\t\t\tif( index === -1 ) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn index;\n\t\t\t}\n\t\t}\n\t},\n\twatch: {\n\t\tconfig(n) {\n\t\t\tthis.initConfig(n);\n\t\t}\n\t},\n\tmethods: {\n\t\thandleTabClick: function (e) {\n\t\t\tlet keys = Object.keys(this.tabs);\n\t\t\tthis.change(keys[e.index]);\n\t\t},\n\t\tchange(key) {\n\t\t\tthis.$emit(\"change\", key)\n\t\t\tthis.current = key;\n\t\t\tthis.$nextTick(() => this.$emit(\"changed\", key));\n\t\t},\n\t\tinitConfig(config) {\n\t\t\tif (!config)\n\t\t\t\treturn;\n\t\t\tif (config instanceof Promise)\n\t\t\t\treturn config\n\t\t\t\t\t.then(result => result.data)\n\t\t\t\t\t.then(this.initConfig)\n\t\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t\tif (typeof config === 'string' || config instanceof String)\n\t\t\t\treturn this.$api\n\t\t\t\t\t.get(config)\n\t\t\t\t\t.then(result => result.data)\n\t\t\t\t\t.then(this.initConfig)\n\t\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\t\tconst tabs = {};\n\n\t\t\tfunction _addToTabs(key, item) {\n\t\t\t\tif (!item.component)\n\t\t\t\t\treturn console.error('Component missing for ' + key);\n\n\t\t\t\t//making it reactive for showing headerSuffix\n\t\t\t\tconst value = Vue.reactive({\n\t\t\t\t\tsuffix: '',\n\t\t\t\t\tshowSuffix: item.showSuffix || false\n\t\t\t\t});\n\n\t\t\t\ttabs[key] = {\n\t\t\t\t\tcomponent: Vue.markRaw(Vue.defineAsyncComponent(() => import(item.component))),\n\t\t\t\t\ttitle: Vue.computed(() => item.title || key),\n\t\t\t\t\tconfig: item.config,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tsuffixhelper: item.suffixhelper ?? null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (Array.isArray(config)) {\n\t\t\t\tconfig.forEach((item, key) => _addToTabs(key, item));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tObject.entries(config).forEach(([key, item]) => _addToTabs(key, item));\n\t\t\t}\n\n\t\t\tif (this.current === null || !tabs[this.current]) {\n\t\t\t\tif (tabs[this.default])\n\t\t\t\t\tthis.current = this.default;\n\t\t\t\telse\n\t\t\t\t\tthis.current = Object.keys(tabs)[0];\n\t\t\t}\n\t\t\tthis.tabs = tabs;\n\t\t},\n\t\tupdateSuffix() {\n\t\t\tthis.getTabSuffix(this.currentTab);\n\t\t},\n\t\tremoveInvalidCountTabs(){\n\t\t\tif(this.modelValue.length)\n\t\t\t{\n\t\t\t\tlet countIst = this.modelValue.length;\n\t\t\t\tconst tabsToDelete = [];\n\n\t\t\t\tObject.entries(this.config).forEach(([key, item]) => {\n\n\t\t\t\t\tconst target = item?.config ? item : item?.value || item;\n\n\t\t\t\t\t// check config for validCountMulti\n\t\t\t\t\tif (target.config?.validCountMulti !== undefined) {\n\t\t\t\t\t\tlet tab;\n\t\t\t\t\t\tlet countSoll;\n\t\t\t\t\t\ttab = key;\n\t\t\t\t\t\tcountSoll = target.config.validCountMulti;\n\n\t\t\t\t\t\t//check if tab is existing\n\t\t\t\t\t\tif (countSoll !== undefined && countSoll == countIst) {\n\t\t\t\t\t\t\t//add tab if it was removed before\n\t\t\t\t\t\t\tif (tab in this.tabs == false) {\n\t\t\t\t\t\t\t\tconst value = Vue.reactive({\n\t\t\t\t\t\t\t\t\tsuffix: '',\n\t\t\t\t\t\t\t\t\tshowSuffix: item.showSuffix || false\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tthis.tabs[tab] = {\n\t\t\t\t\t\t\t\t\tcomponent: Vue.markRaw(Vue.defineAsyncComponent(() => import(item.component))),\n\t\t\t\t\t\t\t\t\ttitle: Vue.computed(() => item.title || tab),\n\t\t\t\t\t\t\t\t\tconfig: item.config,\n\t\t\t\t\t\t\t\t\ttab,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tsuffixhelper: item.suffixhelper ?? null\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//add to toDeleteArray if count is not allowed\n\t\t\t\t\t\tif (countSoll !== undefined && countSoll !== countIst) {\n\t\t\t\t\t\t\ttabsToDelete.push(tab);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Delete all tabs with count not allowed\n\t\t\t\ttabsToDelete.forEach(k => {\n\t\t\t\t\tdelete this.tabs[k];\n\t\t\t\t});\n\n\t\t\t}\n\t\t},\n\t\tasync getTabSuffix(tab) {\n\t\t\tif (!tab.value.showSuffix) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (tab.suffixhelper !== null) {\n\t\t\t\tconst suffixhelper = await import(tab.suffixhelper);\n\t\t\t\tconst suffix = await suffixhelper.getSuffix(this.$api, this.modelValue);\n\t\t\t\ttab.value.suffix = suffix;\n\t\t\t} else {\n\t\t\t\ttab.value.suffix = '';\n\t\t\t}\n\t\t},\n\t\tgetTabSuffixes() {\n\t\t\tObject.entries(this.tabs).forEach(([key, item]) => this.getTabSuffix(item));\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.initConfig(this.config);\n\t},\n\tmounted() {\n\t\tthis.getTabSuffixes();\n\t\tthis.removeInvalidCountTabs();\n\t},\n\tupdated() {\n\t\tthis.getTabSuffixes();\n\t\tthis.removeInvalidCountTabs();\n\t},\n\ttemplate: `\n\t\n\t`\n};\n\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(person_id){\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/vertraege/vertraege/getHeader/' + person_id,\n\t\t};\n\t},\n\tgetPersonAbteilung(mitarbeiter_uid){\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/vertraege/vertraege/getPersonAbteilung/' + mitarbeiter_uid,\n\t\t};\n\t},\n\tgetLeitungOrg(oekurzbz){\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/vertraege/vertraege/getLeitungOrg/' + oekurzbz,\n\t\t};\n\t},\n}","import FhcTabs from \"../../Tabs.js\";\nimport FhcHeader from \"../../DetailHeader/DetailHeader.js\";\n\nimport ApiStvApp from '../../../api/factory/stv/app.js';\n\n// TODO(chris): alt & title\n// TODO(chris): phrasen\n\nexport default {\n\tname: \"DetailsPrestudent\",\n\tcomponents: {\n\t\tFhcTabs,\n\t\tFhcHeader\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tconfigStudent: {},\n\t\t\tconfigStudents: {}\n\t\t};\n\t},\n\tprops: {\n\t\tstudents: Array\n\t},\n\tcomputed: {\n\t\tappRoot() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root;\n\t\t},\n\t\tconfig() {\n\t\t\tif (!this.students.length)\n\t\t\t\treturn {};\n\t\t\tif (this.students.length == 1) {\n\t\t\t\tconst student = this.students[0];\n\t\t\t\tif (student.uid)\n\t\t\t\t\treturn Object.fromEntries(Object.entries(this.configStudent).filter(([ , value ]) => !value.showOnlyWithoutUid));\n\t\t\t\treturn Object.fromEntries(Object.entries(this.configStudent).filter(([ , value ]) => !value.showOnlyWithUid));\n\t\t\t} else if (this.students.every(student => student.uid)) {\n\t\t\t\treturn Object.fromEntries(Object.entries(this.configStudents).filter(([ , value ]) => !value.showOnlyWithoutUid));\n\t\t\t} else if (this.students.every(student => !student.uid)) {\n\t\t\t\t\treturn Object.fromEntries(Object.entries(this.configStudents).filter(([ , value ]) => !value.showOnlyWithUid));\n\t\t\t}\n\t\t\treturn Object.fromEntries(Object.entries(this.configStudents).filter(([ , value ]) => !value.showOnlyWithUid && !value.showOnlyWithUid));\n\t\t}\n\t},\n\twatch: {\n\t\t'$p.user_language.value'(n, o) {\n\t\t\tif (n !== o && o !== undefined)\n\t\t\t\tthis.loadConfig();\n\t\t}\n\t},\n\tmethods: {\n\t\tloadConfig() {\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStvApp.configStudent())\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.configStudent = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStvApp.configStudents())\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.configStudents = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\treload() {\n\t\t\tif (this.$refs.tabs?.$refs?.current?.reload)\n\t\t\t\tthis.$refs.tabs.$refs.current.reload();\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.loadConfig();\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t{{$p.t('ui', 'chooseStudent')}}\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\tLoading...\n\t\t
    \n\t
    `\n};\n","import ApiDetailHeader from \"../../api/factory/detailHeader.js\";\n\nexport default {\n\tname: 'DetailHeader',\n\tinject: {\n\t\tdomain: {\n\t\t\tfrom: 'configDomain',\n\t\t\tdefault: 'technikum-wien.at'\n\t\t},\n\t},\n\tprops: {\n\t\theaderData: {\n\t\t\ttype: Object,\n\t\t\trequired: false\n\t\t},\n\t\tperson_id: {\n\t\t\ttype: Number,\n\t\t\trequired: false\n\t\t},\n\t\ttypeHeader: {\n\t\t\ttype: String,\n\t\t\tdefault: 'student',\n\t\t\tvalidator(value) {\n\t\t\t\treturn [\n\t\t\t\t\t'student',\n\t\t\t\t\t'mitarbeiter',\n\t\t\t\t].includes(value)\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\tappRoot() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root;\n\t\t},\n\t\tvalidatedHeaderData() {\n\t\t\tif (this.typeHeader === 'student') return this.headerData;\n\t\t\tif (this.typeHeader === 'mitarbeiter') return this.person_id;\n\t\t\treturn null;\n\t\t}\n\t},\n\tcreated(){\n\t\tif(this.person_id) {\n\t\t\tthis.getHeader(this.person_id);\n\n\t\t\tthis.loadDepartmentData(this.mitarbeiter_uid)\n\t\t\t\t.then(() => {\n\t\t\t\t\t// Call getLeitungOrg only after departmentData is loaded\n\t\t\t\t\tthis.getLeitungOrg(this.departmentData.oe_kurzbz);\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.error(\"Error loading department data:\", error);\n\t\t\t\t});\n\t\t}\n\t},\n\twatch: {\n\t\tperson_id: {\n\t\t\thandler(newVal) {\n\t\t\t\tif (newVal) {\n\t\t\t\t\tthis.getHeader(this.person_id);\n\t\t\t\t\tthis.loadDepartmentData(this.person_id).\n\t\t\t\t\tthen(() => {\n\t\t\t\t\t\tthis.getLeitungOrg(this.departmentData.oe_kurzbz);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeep: true,\n\t\t},\n\t},\n\tdata(){\n\t\treturn{\n\t\t\theaderDataMa: {},\n\t\t\tdepartmentData: {},\n\t\t\tleitungData: {},\n\t\t};\n\t},\n\tmethods: {\n\t\tgetHeader(person_id) {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiDetailHeader.getHeader(person_id))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.headerDataMa = result.data;\n\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tloadDepartmentData(mitarbeiter_uid) {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiDetailHeader.getPersonAbteilung(mitarbeiter_uid))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.departmentData = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tgetLeitungOrg(oekurzbz){\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiDetailHeader.getLeitungOrg(oekurzbz))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.leitungData = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tredirectToLeitung(){\n\t\t\tthis.$emit('redirectToLeitung', {\n\t\t\t\tperson_id: this.leitungData.person_id});\n\t\t},\n\t\tgetFotoSrc(foto) {\n\t\t\tif(foto === null) {\n\t\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root + 'skin/images/profilbild_dummy.jpg';\n\t\t\t} else {\n\t\t\t\treturn 'data:image/jpeg;base64,' + foto;\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t\t
    \n\n\t\t\t\n\n\t\t\n\t
    \n\t`\n}\n","import {CoreRESTClient} from '../../../RESTClient.js';\n\nexport default {\n\temits: [\n\t\t'update:studiensemesterKurzbz'\n\t],\n\tprops: {\n\t\tstudiensemesterKurzbz: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcurrent: 0,\n\t\t\tloading: true,\n\t\t\tlist: [],\n\t\t\ttoday: -1\n\t\t};\n\t},\n\tmethods: {\n\t\tset(n) {\n\t\t\tthis.loading = true;\n\t\t\tlet fallback = this.current;\n\t\t\tthis.current = n;\n\t\t\tthis.save(fallback);\n\t\t},\n\t\tnext() {\n\t\t\tthis.loading = true;\n\t\t\tlet fallback = this.current;\n\t\t\tif (this.current++ >= this.list.length)\n\t\t\t\tthis.current = this.list.length - 1;\n\t\t\tthis.save(fallback);\n\t\t},\n\t\tprev() {\n\t\t\tthis.loading = true;\n\t\t\tlet fallback = this.current;\n\t\t\tif (this.current-- < 0)\n\t\t\t\tthis.current = 0;\n\t\t\tthis.save(fallback);\n\t\t},\n\t\tsetToToday() {\n\t\t\tif (this.today > 0) {\n\t\t\t\tif (this.today == this.current)\n\t\t\t\t\treturn;\n\t\t\t\treturn this.set(this.today);\n\t\t\t}\n\n\t\t\tthis.loading = true;\n\t\t\tCoreRESTClient\n\t\t\t\t.get('components/stv/studiensemester/now')\n\t\t\t\t.then(result => CoreRESTClient.getData(result.data))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.today = this.list.indexOf(result);\n\t\t\t\t\tif (this.today >= 0) {\n\t\t\t\t\t\tif (this.today != this.current)\n\t\t\t\t\t\t\tthis.set(this.today);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// TODO(chris): handle error (list might not be loaded yet)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tsave(fallback) {\n\t\t\tCoreRESTClient\n\t\t\t\t.post('components/stv/studiensemester/set', {\n\t\t\t\t\tstudiensemester: this.list[this.current]\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tthis.$emit('update:studiensemesterKurzbz', this.list[this.current]);\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.current = fallback;\n\t\t\t\t\tthis.loading = false;\n\t\t\t\t\tthis.$fhcAlert.handleFormValidation(error);\n\t\t\t\t});\n\t\t}\n\t},\n\twatch: {\n\t\t'studiensemesterKurzbz': function () {\n\t\t\tthis.current = this.list.indexOf(this.studiensemesterKurzbz);\n\t\t}\n\t},\n\tcreated() {\n\t\tCoreRESTClient\n\t\t\t.get('components/stv/studiensemester')\n\t\t\t.then(result => CoreRESTClient.getData(result.data) || [])\n\t\t\t.then(result => {\n\t\t\t\tthis.list = result.map(el => el.studiensemester_kurzbz);\n\t\t\t\tthis.loading = false;\n\t\t\t\tthis.current = this.list.indexOf(this.studiensemesterKurzbz);\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t\t\t{{item}}\n\t\t\t\t\t
    • \n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n}","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/searchbar/search',\n\t\t\tparams\n\t\t};\n\t},\n\tsearchCis(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/searchbar/searchCis',\n\t\t\tparams\n\t\t};\n\t},\n\tsearchStv(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/searchbar/searchStv',\n\t\t\tparams\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetSprachen() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getSprachen'\n\t\t};\n\t},\n\tgetGeschlechter() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getGeschlechter'\n\t\t};\n\t},\n\tgetAusbildungen() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getAusbildungen'\n\t\t};\n\t},\n\tgetStgs() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getStgs'\n\t\t};\n\t},\n\tgetOrgforms() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getOrgforms'\n\t\t};\n\t},\n\tgetStudiensemester() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/lists/getStudiensemester'\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget(path) {\n\t\tlet url = 'api/frontend/v1/stv/verband';\n\t\tif (path)\n\t\t\turl += '/' + path;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn {\n\t\t\t\tmethod: 'get',\n\t\t\t\turl: 'api/frontend/v1/stv/favorites'\n\t\t\t};\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn {\n\t\t\t\tmethod: 'post',\n\t\t\t\turl: 'api/frontend/v1/stv/favorites/set',\n\t\t\t\tparams: { favorites }\n\t\t\t};\n\t\t}\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport app from './stv/app.js';\nimport lists from './stv/lists.js';\nimport verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport admissionDates from './stv/admissionDates.js';\n\nexport default {\n\tapp,\n\tlists,\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tadmissionDates\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget(person_id, only_open, studiengang_kz) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/get',\n\t\t\tparams: {\n\t\t\t\tperson_id,\n\t\t\t\tonly_open,\n\t\t\t\tstudiengang_kz\n\t\t\t}\n\t\t};\n\t},\n\tcheckDoubles(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/checkDoubles',\n\t\t\tparams,\n\t\t\tconfig: {\n\t\t\t\tconfirmErrorHandler: error => true\n\t\t\t}\n\t\t};\n\t},\n\tinsert(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/insert',\n\t\t\tparams\n\t\t};\n\t},\n\tcounter(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/counter',\n\t\t\tparams\n\t\t};\n\t},\n\tedit(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/update',\n\t\t\tparams\n\t\t};\n\t},\n\tdelete(buchungsnr) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/konto/delete',\n\t\t\tparams: { buchungsnr }\n\t\t};\n\t},\n\tgetBuchungstypen() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/konto/getBuchungstypen'\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport address from './kontakt/address.js';\nimport bankaccount from './kontakt/bankaccount.js';\nimport contact from './kontakt/contact.js';\nimport company from './kontakt/company.js';\n\nexport default {\n\taddress,\n\tbankaccount,\n\tcontact,\n\tcompany\n};","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tget() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: 'api/frontend/v1/stv/config/get'\n\t\t};\n\t},\n\tset(params) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: 'api/frontend/v1/stv/config/set',\n\t\t\tparams\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport CoreSearchbar from \"../searchbar/searchbar.js\";\nimport NavLanguage from \"../navigation/Language.js\";\nimport VerticalSplit from \"../verticalsplit/verticalsplit.js\";\nimport AppMenu from \"../AppMenu.js\";\nimport AppConfig from \"../AppConfig.js\";\nimport StvVerband from \"./Studentenverwaltung/Verband.js\";\nimport StvList from \"./Studentenverwaltung/List.js\";\nimport StvDetails from \"./Studentenverwaltung/Details.js\";\nimport StvStudiensemester from \"./Studentenverwaltung/Studiensemester.js\";\n\nimport ApiSearchbar from \"../../api/factory/searchbar.js\";\nimport ApiStv from \"../../api/factory/stv.js\";\nimport ApiStvVerband from '../../api/factory/stv/verband.js';\nimport ApiStvConfig from '../../api/factory/stv/config.js';\n\n\nexport default {\n\tname: 'Studentenverwaltung',\n\tcomponents: {\n\t\tCoreSearchbar,\n\t\tNavLanguage,\n\t\tVerticalSplit,\n\t\tAppMenu,\n\t\tAppConfig,\n\t\tStvVerband,\n\t\tStvList,\n\t\tStvDetails,\n\t\tStvStudiensemester\n\t},\n\tprops: {\n\t\tdefaultSemester: String,\n\t\tconfig: Object,\n\t\tpermissions: Object,\n\t\tstvRoot: String,\n\t\tcisRoot: String,\n\t\tavatarUrl: String,\n\t\tlogoutUrl: String,\n\t\tactiveAddons: String, // semicolon separated list of active addons\n\t\turl_studiensemester_kurzbz: String,\n\t\turl_mode: String,\n\t\turl_prestudent_id: String,\n\t\turl_tab: String,\n\t\turl_studiengang: String\n\t},\n\tprovide() {\n\t\treturn {\n\t\t\tcisRoot: this.cisRoot,\n\t\t\tactiveAddonBewerbung: this.activeAddons.split(';').includes('bewerbung'),\n\t\t\tconfigGenerateAlias: this.config.generateAlias,\n\t\t\tconfigShowHintKommPrfg: this.config.showHintKommPrfg,\n\t\t\thasBpkPermission: this.permissions['student/bpk'],\n\t\t\thasAliasPermission: this.permissions['student/alias'],\n\t\t\thasPrestudentPermission: this.permissions['basis/prestudent'],\n\t\t\thasPrestudentstatusPermission: this.permissions['basis/prestudentstatus'],\n\t\t\thasAssistenzPermissionForStgs: this.permissions['assistenz_stgs'],\n\t\t\thasSchreibrechtAss: this.permissions['assistenz_schreibrechte'],\n\t\t\thasAdminPermission: this.permissions['admin'],\n\t\t\thasPermissionToSkipStatusCheck: this.permissions['student/keine_studstatuspruefung'],\n\t\t\thasPermissionRtAufsicht: this.permissions['lehre/reihungstestAufsicht'],\n\t\t\thasPermissionOutputformat: this.permissions['system/change_outputformat'],\n\t\t\tlists: this.lists,\n\t\t\tcurrentSemester: Vue.computed(() => this.studiensemesterKurzbz),\n\t\t\tdefaultSemester: this.defaultSemester,\n\t\t\t$reloadList: () => {\n\t\t\t\tthis.$refs.stvList.reload();\n\t\t\t},\n\t\t\tconfigShowAufnahmegruppen: this.config.showAufnahmegruppen,\n\t\t\tconfigAllowUebernahmePunkte: this.config.allowUebernahmePunkte,\n\t\t\tconfigUseReihungstestPunkte: this.config.useReihungstestPunkte,\n\t\t\tappConfig: Vue.computed(() => this.appconfig),\n\t\t\thasZGVBakkPermission: this.permissions['student/editBakkZgv'],\n\t\t\thasZGVMasterPermission: this.permissions['student/editMakkZgv'],\n\t\t\thasZGVDoctorPermission: this.permissions['student/editDokZgv'],\n\t\t\thasBismeldenPermission: this.permissions['student/editBismelden'],\n\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tappconfig: {},\n\t\t\tconfigEndpoints: ApiStvConfig,\n\t\t\tselected: [],\n\t\t\tsearchbaroptions: {\n\t\t\t\torigin: 'stv',\n\t\t\t\tcalcheightonly: true,\n\t\t\t\tnolivesearch: true,\n\t\t\t\ttypes: {\n\t\t\t\t\tstudent: Vue.computed(() => this.$p.t('search/type_student')),\n\t\t\t\t\tprestudent: Vue.computed(() => this.$p.t('search/type_prestudent'))\n\t\t\t\t},\n\t\t\t\tactions: {\n\t\t\t\t\tstudent: {\n\t\t\t\t\t\tdefaultaction: {\n\t\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\t\taction: this.buildStudentSearchResultLink\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildactions: [\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tprestudent: {\n\t\t\t\t\t\tdefaultaction: {\n\t\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\t\taction: this.buildPrestudentSearchResultLink\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildactions: [\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\tmergedPerson: {\n\t\t\t\t\t\tdefaultaction: {\n\t\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\t\taction: this.buildPersonSearchResultLink\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultactionstudent: {\n\t\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\t\taction: this.buildMergedPersonSearchResultLink\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildactions: []\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmergeResults: 'person'\n\t\t\t},\n\t\t\tstudiengangKz: undefined,\n\t\t\tstudiengangKuerzel: '',\n\t\t\tstudiensemesterKurzbz: this.defaultSemester,\n\t\t\tselected_semester: undefined,\n\t\t\tselected_orgform: undefined,\n\t\t\tlists: {\n\t\t\t\tnations: [],\n\t\t\t\tsprachen: [],\n\t\t\t\tgeschlechter: []\n\t\t\t},\n\t\t\tverbandEndpoint: ApiStvVerband\n\t\t}\n\t},\n\tcomputed: {\n\t\tappMenuExtraItems() {\n\t\t\tconst extraItems = [];\n\n\t\t\tif (this.studiengangKz !== undefined && this.selected_semester !== undefined) {\n\t\t\t\tconst studiengang_kz = String(this.studiengangKz);\n\t\t\t\tconst semester = String(this.selected_semester);\n\t\t\t\tconst orgform = this.selected_orgform || '';\n\n\t\t\t\textraItems.push({\n\t\t\t\t\tlink: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t\t\t+ 'content/statistik/notenspiegel.php?typ=xls'\n\t\t\t\t\t\t+ '&studiengang_kz=' + studiengang_kz\n\t\t\t\t\t\t+ '&semester=' + semester\n\t\t\t\t\t\t+ '&studiensemester=' + this.studiensemesterKurzbz\n\t\t\t\t\t\t+ '&orgform=' + orgform,\n\t\t\t\t\tdescription: 'stv/grade_report_xls'\n\t\t\t\t});\n\t\t\t\textraItems.push({\n\t\t\t\t\tlink: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t\t\t+ 'content/statistik/notenspiegel_erweitert.php?typ=xls'\n\t\t\t\t\t\t+ '&studiengang_kz=' + studiengang_kz\n\t\t\t\t\t\t+ '&semester=' + semester\n\t\t\t\t\t\t+ '&studiensemester=' + this.studiensemesterKurzbz\n\t\t\t\t\t\t+ '&orgform=' + orgform,\n\t\t\t\t\tdescription: 'stv/grade_report_xls_extended'\n\t\t\t\t});\n\t\t\t\textraItems.push({\n\t\t\t\t\tlink: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t\t\t+ 'content/statistik/notenspiegel.php?typ=html'\n\t\t\t\t\t\t+ '&studiengang_kz=' + studiengang_kz\n\t\t\t\t\t\t+ '&semester=' + semester\n\t\t\t\t\t\t+ '&studiensemester=' + this.studiensemesterKurzbz\n\t\t\t\t\t\t+ '&orgform=' + orgform,\n\t\t\t\t\tdescription: 'stv/grade_report_html'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn extraItems;\n\t\t}\n\t},\n\twatch: {\n\t\t'url_studiensemester_kurzbz': function (newVal, oldVal) {\n\t\t\tif (newVal !== oldVal) {\n\t\t\t\tthis.studiensemesterKurzbz = newVal;\n\t\t\t\tif(this.$route.name === 'search')\n\t\t\t\t{\n\t\t\t\t\tthis.handleSearchUrl();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.$refs.stvList.updateUrl();\n\t\t\t\t\tthis.$refs.details.reload();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'url_studiengang': function (newVal, oldVal) {\n\t\t\tif (newVal !== oldVal) {\n\t\t\t\tthis.checkUrlStudiengang();\n\t\t\t}\n\t\t},\n\t\t'url_mode': function () {\n\t\t\tthis.handlePersonUrl();\n\t\t},\n\t\turl_prestudent_id() {\n\t\t\tthis.handlePersonUrl();\n\t\t},\n\t\t'appconfig.font_size'() {\n\t\t\t// add to html class\n\t\t\tconst classList = Object.keys(this.$refs.config.setup.font_size.options);\n\t\t\tclassList.forEach(cn => document.documentElement.classList.remove(cn));\n\t\t\tdocument.documentElement.classList.add(this.appconfig.font_size);\n\t\t\t// recalc Tabulator heights\n\t\t\tif (this.$el) {\n\t\t\t\tconst tabulatorEls = this.$el.querySelectorAll('.tabulator');\n\t\t\t\tfor (const el of tabulatorEls) {\n\t\t\t\t\tconst tabulators = Tabulator.findTable(el);\n\t\t\t\t\tif (tabulators) {\n\t\t\t\t\t\ttabulators[0].searchRows().forEach(row => row.normalizeHeight());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tbuildMergedPersonSearchResultLink(data) {\n\t\t\tif (data.prestudent_id) {\n\t\t\t\treturn this.buildPrestudentSearchResultLink(data);\n\t\t\t} else if (data.uid) {\n\t\t\t\treturn this.buildStudentSearchResultLink(data);\n\t\t\t} else {\n\t\t\t\treturn this.buildPersonSearchResultLink(data);\n\t\t\t}\n\t\t},\n\t\tbuildPrestudentSearchResultLink(data) {\n\t\t\treturn this.$api.getUri(\n\t\t\t\t'/studentenverwaltung'\n\t\t\t\t+ '/' + this.studiensemesterKurzbz\n\t\t\t\t+ '/prestudent/'\n\t\t\t\t+ data.prestudent_id\n\t\t\t\t);\n\t\t},\n\t\tbuildStudentSearchResultLink(data) {\n\t\t\treturn this.$api.getUri(\n\t\t\t\t'/studentenverwaltung'\n\t\t\t\t+ '/' + this.studiensemesterKurzbz\n\t\t\t\t+ '/student/'\n\t\t\t\t+ data.uid\n\t\t\t\t);\n\t\t},\n\t\tbuildPersonSearchResultLink(data) {\n\t\t\treturn this.$api.getUri(\n\t\t\t\t'/studentenverwaltung'\n\t\t\t\t+ '/' + this.studiensemesterKurzbz\n\t\t\t\t+ '/person/'\n\t\t\t\t+ data.person_id\n\t\t\t\t);\n\t\t},\n\t\tonSelectVerband({ link, studiengang_kz, semester, orgform_kurzbz }) {\n\t\t\tlet urlpath = String(link);\n\t\t\tif (!urlpath.match(/\\/prestudent/))\n\t\t\t{\n\t\t\t\turlpath = 'CURRENT_SEMESTER' + '/' + urlpath;\n\t\t\t}\n\t\t\tthis.$refs.stvList.updateUrl(ApiStv.students.verband(urlpath));\n\n\t\t\tthis.studiengangKz = studiengang_kz;\n\t\t\tthis.selected_semester = semester;\n\t\t\tthis.selected_orgform = orgform_kurzbz;\n\t\t\tconst stg = this.lists.stgs.find((element) => {\n\t\t\t\treturn (element.studiengang_kz === this.studiengangKz);\n\t\t\t});\n\t\t\tif (stg)\n\t\t\t{\n\t\t\t\tthis.studiengangKuerzel = (stg.typ + stg.kurzbz).toUpperCase()\n\t\t\t\tthis.$router.push({\n\t\t\t\t\tname: 'studiengang',\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz,\n\t\t\t\t\t\tstudiengang: this.studiengangKuerzel\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else\n\t\t\t{\n\t\t\t\tthis.studiengangKuerzel = '';\n\t\t\t\tthis.$router.push({\n\t\t\t\t\tname: 'studiensemester',\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\t},\n\t\tstudiensemesterChanged(v) {\n\t\t\tthis.studiensemesterKurzbz = v;\n\n\t\t\tthis.$router.push({\n\t\t\t\tparams: {\n\t\t\t\t\tstudiensemester_kurzbz: v\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\treloadList() {\n\t\t\tthis.$refs.stvList.reload();\n\t\t},\n\t\tsearchfunction(params, config) {\n\t\t\treturn this.$api.call(ApiSearchbar.searchStv(params), config);\n\t\t},\n\t\thandlePersonUrl() {\n\t\t\tif (this.$route.params.id) {\n\t\t\t\tthis.$refs.stvList.updateUrl(\n\t\t\t\t\tApiStv.students.uid(this.$route.params.id, 'CURRENT_SEMESTER'),\n\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t} else if (this.$route.params.prestudent_id) {\n\t\t\t\tthis.$refs.stvList.updateUrl(\n\t\t\t\t\tApiStv.students.prestudent(this.$route.params.prestudent_id, 'CURRENT_SEMESTER'),\n\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t} else if (this.$route.params.person_id) {\n\t\t\t\tthis.$refs.stvList.updateUrl(\n\t\t\t\t\tApiStv.students.person(this.$route.params.person_id, 'CURRENT_SEMESTER'),\n\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t} else if (this.$route.params.searchstr) {\n\t\t\t\tthis.handleSearchUrl();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.clearTabulator();\n\t\t\t}\n\t\t},\n\t\thandleSearchUrl() {\n\t\t\tconst searchsettings = {\n\t\t\t\tsearchstr: this.$route.params.searchstr,\n\t\t\t\ttypes: this.$route.params.types?.split('+') || []\n\t\t\t};\n\n\t\t\t// init into student list\n\t\t\tthis.$refs.stvList.updateUrl(\n\t\t\t\tApiStv.students.search(searchsettings, this.studiensemesterKurzbz)\n\t\t\t);\n\n\t\t\t// init into searchbar\n\t\t\tthis.$refs.searchbar.searchsettings.searchstr = searchsettings.searchstr;\n\t\t\tthis.$refs.searchbar.searchsettings.types = searchsettings.types;\n\t\t\tthis.$nextTick(this.blurSearchbar);\n\t\t},\n\t\tclearTabulator() {\n\t\t\tif(['index', 'studiensemester'].includes(this.$route.name))\n\t\t\t{\n\t\t\t\tif(this.$refs?.stvList?.$refs?.table?.tabulator)\n\t\t\t\t{\n\t\t\t\t\tthis.$refs.stvList.$refs.table.tabulator.setData([]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcheckUrlStudiengang() {\n\t\t\tif (this.url_studiengang) {\n\t\t\t\tconst stg = this.lists.stgs.find((element) => {\n\t\t\t\t\tconst kuerzel = (element.typ + element.kurzbz).toUpperCase();\n\t\t\t\t\treturn (this.url_studiengang === kuerzel);\n\t\t\t\t});\n\t\t\t\tif (stg) {\n\t\t\t\t\tthis.studiengangKz = stg.studiengang_kz;\n\t\t\t\t\tthis.studiengangKuerzel = (stg.typ + stg.kurzbz).toUpperCase();\n\t\t\t\t} else {\n\t\t\t\t\tthis.$router.replace({\n\t\t\t\t\t\tname: 'studiensemester',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.studiengangKz = undefined;\n\t\t\t\tthis.studiengangKuerzel = '';\n\t\t\t\tthis.clearTabulator();\n\t\t\t}\n\t\t},\n\t\tonSearch(e) {\n\t\t\tconst searchsettings = { ...this.$refs.searchbar.searchsettings };\n\t\t\tif (searchsettings.searchstr.length >= 2) {\n\t\t\t\tthis.blurSearchbar();\n\t\t\t\t\n\t\t\t\tif (!searchsettings.types.length || searchsettings.types.length == this.$refs.searchbar.types.length) {\n\t\t\t\t\tthis.$router.push({\n\t\t\t\t\t\tname: 'search',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz,\n\t\t\t\t\t\t\tsearchstr: searchsettings.searchstr\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.$router.push({\n\t\t\t\t\t\tname: 'search_w_types',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tstudiensemester_kurzbz: this.studiensemesterKurzbz,\n\t\t\t\t\t\t\tsearchstr: searchsettings.searchstr,\n\t\t\t\t\t\t\ttypes: searchsettings.types.join('+')\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tblurSearchbar() {\n\t\t\tthis.$refs.searchbar.$refs.input.blur();\n\t\t\tthis.$refs.searchbar.abort();\n\t\t\tthis.$refs.searchbar.hideresult();\n\t\t}\n\t},\n\tcreated() {\n\t\tif (!this.url_studiensemester_kurzbz) {\n\t\t\tthis.$router.replace({\n\t\t\t\tname: 'studiensemester',\n\t\t\t\tparams: {\n\t\t\t\t\tstudiensemester_kurzbz: this.defaultSemester\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.studiensemesterKurzbz = this.url_studiensemester_kurzbz;\n\t\t}\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.kontakt.address.getNations())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.nations = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getSprachen())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.sprachen = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getGeschlechter())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.geschlechter = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getAusbildungen())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.ausbildungen = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getStgs())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.stgs = result.data;\n\t\t\t\tthis.lists.active_stgs = this.lists.stgs.filter(stg => stg.aktiv);\n\t\t\t\tthis.checkUrlStudiengang();\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getOrgforms())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.orgforms = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.konto.getBuchungstypen())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.buchungstypen = result.data;\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\n\t\tthis.$api\n\t\t\t.call(ApiStv.lists.getStudiensemester())\n\t\t\t.then(result => {\n\t\t\t\tthis.lists.studiensemester = result.data;\n\t\t\t\tthis.lists.studiensemester_desc = result.data.toReversed();\n\t\t\t})\n\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t},\n\tmounted() {\n\t\t//Test manu Systemerror\n\t\t//FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto = 'ma0068@technikum-wien.at';this.$fhcAlert.handleSystemError(1);\n\t\tthis.handlePersonUrl();\n\t},\n\ttemplate: /* html */`\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\tStudVw: {{studiensemesterKurzbz}} {{studiengangKuerzel}}\n\t\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ $p.t('ui/settings') }}\n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t\t

  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t\t

  • \n\t\t\t\t\t
  • \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ $p.t('ui/logout') }}\n\t\t\t\t\t\t\n\t\t\t\t\t
  • \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t\n\t
    `\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\t\n\t\t\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport FhcStudentenverwaltung from \"../components/Stv/Studentenverwaltung.js\";\nimport fhcapifactory from \"./api/fhcapifactory.js\";\n\nimport PluginsPhrasen from \"../plugins/Phrasen.js\";\n\n\nconst ciPath = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\\/\\/)(.*?\\/)/g, '') + FHC_JS_DATA_STORAGE_OBJECT.ci_router;\n\nconst router = VueRouter.createRouter({\n\thistory: VueRouter.createWebHistory(),\n\troutes: [\n\t\t{\n\t\t\tname: 'index',\n\t\t\tpath: `/${ciPath}/studentenverwaltung`,\n\t\t\tcomponent: FhcStudentenverwaltung\n\t\t},\n\t\t{\n\t\t\tname: 'studiensemester',\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: 'studiengang',\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/:studiengang`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_studiengang: route.params.studiengang,\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tconst isStudiengang = /^[A-Z]{3}/.test(to.params.studiengang);\n\t\t\t\tif (!isStudiengang) {\n\t\t\t\t\treturn next({\n\t\t\t\t\t\tname: 'studiensemester',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tstudiensemester_kurzbz: to.params.studiensemester_kurzbz\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/prestudent/:prestudent_id`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'prestudent',\n\t\t\t\t\turl_prestudent_id: route.params.prestudent_id\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/prestudent/:prestudent_id/:tab`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'prestudent',\n\t\t\t\t\turl_prestudent_id: route.params.prestudent_id,\n\t\t\t\t\turl_tab: route.params.tab\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/student/:id`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'student',\n\t\t\t\t\turl_student_id: route.params.id\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/person/:person_id`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops: (route) => {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'person',\n\t\t\t\t\turl_prestudent_id: route.params.person_id\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter: (to, from, next) => {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: 'search',\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/search/:searchstr`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops(route) {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'search',\n\t\t\t\t\turl_prestudent_id: route.params.searchstr\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter(to, from, next) {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: 'search_w_types',\n\t\t\tpath: `/${ciPath}/studentenverwaltung/:studiensemester_kurzbz/search/:types/:searchstr`,\n\t\t\tcomponent: FhcStudentenverwaltung,\n\t\t\tprops(route) {\n\t\t\t\treturn {\n\t\t\t\t\turl_studiensemester_kurzbz: route.params.studiensemester_kurzbz,\n\t\t\t\t\turl_mode: 'search',\n\t\t\t\t\turl_prestudent_id: route.params.type + '/' + route.params.searchstr\n\t\t\t\t};\n\t\t\t},\n\t\t\tbeforeEnter(to, from, next) {\n\t\t\t\tconst isSemester = /^[WS]S\\d{4}$/.test(to.params.studiensemester_kurzbz);\n\t\t\t\tif (!isSemester) {\n\t\t\t\t\treturn next({name: 'index'});\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tpath: '/:pathMatch(.*)*',\n\t\t\tredirect: {\n\t\t\t\tname: 'index'\n\t\t\t}\n\t\t}\n\t]\n});\n\nrouter.afterEach((to, from, failure) => {\n\tlet title = 'Studierendenverwaltung FH-Complete';\n\tif (to.params.studiengang) {\n\t\ttitle = to.params.studiengang + ' ' + title;\n\t}\n\tif (to.params.studiensemester_kurzbz) {\n\t\ttitle = to.params.studiensemester_kurzbz + ' ' + title;\n\t}\n\tdocument.title = title;\n});\n\nconst app = Vue.createApp({\n\tname: 'StudentenverwaltungApp'\n});\n\napp\n\t.use(router)\n\t.use(primevue.config.default, {\n\t\tzIndex: {\n\t\t\toverlay: 1100\n\t\t}\n\t})\n\t.use(PluginsPhrasen)\n\t.mount('#main');\n","export default {\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: String\n\t},\n\tcomputed: {\n\t\tvalueAsBase64DataString() {\n\t\t\tif (!this.modelValue || this.modelValue.substring(0, 10) == 'data:image')\n\t\t\t\treturn this.modelValue;\n\t\t\treturn 'data:image/jpeg;charset=utf-8;base64,' + this.modelValue;\n\t\t}\n\t},\n\tmethods: {\n\t\topenUploadDialog() {\n\t\t\tthis.$refs.fileInput.click();\n\t\t},\n\t\tpickFile() {\n\t\t\tlet file = this.$refs.fileInput.files;\n\t\t\tif (file && file[0]) {\n\t\t\t\tlet reader = new FileReader();\n\t\t\t\treader.onload = e => {\n\t\t\t\t\tthis.$emit('update:modelValue', e.target.result);\n\t\t\t\t}\n\t\t\t\treader.readAsDataURL(file[0]);\n\t\t\t}\n\t\t},\n\t\tdeleteImage() {\n\t\t\tthis.$emit('update:modelValue', '');\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    `\n}","import DmsItem from './Dms/Item.js';\n\nexport default {\n\tcomponents: {\n\t\tDmsItem\n\t},\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [ FileList, Array ],\n\t\t\trequired: true\n\t\t},\n\t\tmultiple: Boolean,\n\t\tid: String,\n\t\tname: String,\n\t\tinputClass: [String, Array, Object],\n\t\tnoList: Boolean,\n\t\taccept: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tmethods: {\n\t\tstringifyFile(file) {\n\t\t\treturn JSON.stringify({\n\t\t\t\tlastModified: file.lastModified,\n\t\t\t\tlastModifiedDate: file.lastModifiedDate,\n\t\t\t\tname: file.name,\n\t\t\t\tsize: file.size,\n\t\t\t\ttype: file.type\n\t\t\t});\n\t\t},\n\t\taddFiles(event) {\n\t\t\tif (!this.multiple)\n\t\t\t\treturn this.$emit('update:modelValue', event.target.files);\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst doubles = [];\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tdt.items.add(file);\n\t\t\t\tdoubles.push(this.stringifyFile(file));\n\t\t\t}\n\t\t\tfor (var file of event.target.files) {\n\t\t\t\t// NOTE(chris): deep check (with FileReader) would require an async function so we only check the basic attributes\n\t\t\t\tif (doubles.indexOf(this.stringifyFile(file)) < 0)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t},\n\t\tremoveFile(id) {\n\t\t\tconst fileToRemove = Array.from(this.modelValue)[id];\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tif (file !== fileToRemove)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (!n)\n\t\t\t\treturn;\n\t\t\tif (n instanceof FileList) {\n\t\t\t\tif (!this.$refs.upload) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn this.$refs.upload.files = n;\n\t\t\t}\n\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst dms = [];\n\t\t\tfor (var file of n) {\n\t\t\t\tif (file instanceof File) {\n\t\t\t\t\tdt.items.add(file);\n\t\t\t\t} else {\n\t\t\t\t\tconst dmsFile = new File([JSON.stringify(file)], file.name, {\n\t\t\t\t\t\ttype: 'application/x.fhc-dms+json'\n\t\t\t\t\t});\n\t\t\t\t\tdt.items.add(dmsFile);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    `\n}","export default {\n\temits: [\n\t\t'delete'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [File, Object],\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreview: ''\n\t\t};\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (n.type == 'application/x.fhc-dms+json') {\n\t\t\t\tn.text().then(result => {\n\t\t\t\t\tconst obj = JSON.parse(result);\n\t\t\t\t\tthis.preview = obj.preview || '';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • `\n}\n"],"names":["TemplateAction","name","emits","props","res","Object","action","computed","actionHref","this","type","methods","actionFunc","$emit","renderif","undefined","template","TemplateFrame","components","ResultAction","ResultActions","actions","Array","title","String","image","imageFallback","person$3","emails","Set","email","room","mode","equipment","replace","RegExp","address","zip","city","street","floor","$p","t","employee","organisationunit","student","photo_url","foto","prestudent$1","status","stg_kuerzel","dms","icon","mimetype","cms$1","inject","preview","template_kurzbz","text","content","length","lower","toLowerCase","firstOccurence","Math","min","query","split","reduce","a","c","i","indexOf","includes","posInText","push","substr","url","content_url","$fhcApi","getUri","FHC_JS_DATA_STORAGE_OBJECT","app_root","mergedStudent","ResultPrestudent","ResultStudent","prestudent","list","filter","item","pop","mergedPerson","person","isArray","find","person_id","students","el","idx","arr","some","tmpitem","uid","sort","b","telurl","phone","inaktiv","aktiv","CoreSearchbar","cms","searchoptions","required","searchfunction","Function","showBtnSubmit","Boolean","provide","Vue","lastQuery","data","searchtimer","hidetimer","searchsettings","searchstr","getSearchStr","types","getInitiallySelectedTypes","searchresult","searchmode","showresult","searching","error","abortController","settingsDropdown","searchTypesPlaceholder","map","typeLabels","join","values","keys","watch","newSearchValue","origin","sessionStorage","setItem","newValue","localStorage","JSON","stringify","search","mounted","bootstrap","Collapse","$refs","settings","toggle","console","warn","updated","nextTick","calcSearchResultHeight","clearInput","hideresult","input","focus","result","localStorageValue","getItem","parse","checkSettingsVisibility","event","contains","target","hide","handleShowSettings","document","addEventListener","handleHideSettings","removeEventListener","rect","results","getBoundingClientRect","height","window","innerHeight","style","ceil","calcSearchResultExtent","calcheightonly","searchbox","top","bottom","right","width","nolivesearch","abort","setTimeout","callsearchapi","clearTimeout","splice","showsearchresult","AbortController","timeout","signal","then","response","meta","searchstring","mergeResults","counter","mergeTypes","mergedType","mergeKey","renderer","rank","retry","catch","code","refreshsearch","togglesettings","searchfocusin","e","preventDefault","stopPropagation","searchfocusout","dash2camelCase","string","g","toUpperCase","isValidRenderer","camelCaseRenderer","$","getActions","NavLanguage","activeClass","default","itemClass","languages","server_languages","onChange","lang","l","sprache","setLanguage","querySelector","location","reload","VerticalSplit","availHeight","topheight","bottomheight","mousePosY","resize","vsplitter","vsplitterOffset","selfOffsetTop","calcHeights","trackVerticalSplitterOffsetTop","windowheight","oldavailHeight","verticalsplit","offsetTop","offsetHeight","collapseTop","collapseBottom","showBoth","isCollapsed","dragStart","dragEnd","drag","clientY","offsetY","topOrBottomClass","topheightcss","bottomheightcss","ApiNavigation","getHeader","navigation_page","method","params","getMenu","AppMenu","appIdentifier","navigationPage","items","getItems","$api","call","$fhcAlert","handleSystemError","created","BsModal","modal","fullscreen","backdrop","validator","value","keyboard","noCloseBtn","dialogClass","headerClass","bodyClass","footerClass","allowFullscreenExpand","dispose","handleUpdate","show","relatedTarget","toggleFullscreen","Modal","popup","body","options","footer","slots","includedPrimevue","primevue","Promise","resolve","reject","instance","createApp","setup","h","class","ref","unmount","beforeUnmount","unmounted","wrapper","parentElement","removeChild","createElement","use","config","zIndex","overlay","Phrasen","mount","appendChild","FhcFragment","render","$slots","FhcForm","$registerToForm","component","inputs","$clearValidationForName","clearValidationForName","tag","sortedInputs","lcType","lastIndexOf","factory","create","getPrototypeOf","getOwnPropertyDescriptors","get","post","_defaultErrorHandlers","args","clearValidation","setFeedback","unshift","overwriteconfig","_sendFeedbackToInput","feedback","valid","forEach","remaining","fb","entries","slice","p","fromEntries","send","promise","hasOwnProperty","retval","_uuid","FormInput","inheritAttrs","registerToForm","from","bsFeedback","noAutoClass","noFeedback","inputGroup","containerClass","label","onInput","modelValueDummy","hasContainer","prop","autoContainerClass","hasOwn","acc","validationClass","classes","$attrs","feedbackClass","modelValueCmp","modelValue","set","v","idCmp","uuid","id","clearValidationForThisName","selector","$el","parentNode","querySelectorAll","_loadComponents","_","VueDatePicker","PvAutocomplete","UploadImage","UploadDms","defineAsyncComponent","autocomplete","import","beforeMount","beforeUpdate","AppConfig","endpoints","tempValues","n","o","key","binding","handleSystemErrors","update","form","alertSuccess","TYPE_DEFINITION","lehreinheit","dragIcon","extras","vevent","VALID_TYPES","isValidDragObject","every","prototype","extra","getValidTransferData","allowedTypes","strict","obj","dataTransfer","base_type","collection","getData","getTransferData","_error","convertToValidDragObject","converted","sorted","found","typedef","newData","setTransferData","validDragObject","setDragImage","dragElements","iconContainer","className","textContent","boxShadow","append","itemContainer","container","requestAnimationFrame","setData","bindDragEnterLeave","onEnter","onLeave","skipLeave","skipLeaveParent","init","evt","globalDragenter","globalDragleave","globalDrop","cleanup","wasDropped","EFFECTS","drop","modifiers","singleType","arg","match","effect","bcc","BroadcastChannel","allowed","onOver","dropEffect","onDrop","r","postMessage","cleanupEnterLeave","eventHasTypes","fhcDropCleanup","dragClick","delay","parseInt","lastTarget","lastX","lastY","startCountdown","stopCountdown","onDragOver","offsetX","fhcDragClickCleanup","ApiStvGroups","add","gruppe_kurzbz","studiensemester_kurzbz","studiengang_kz","getGruppen","deleteGroup","details$1","prestudent_id","encodeURIComponent","save","saveStudent","student_uid","StvVerband","PvTreetable","treetable","PvColumn","column","directives","$reloadList","currentSemester","appConfig","number_displayed_past_studiensemester","endpoint","preselectedKey","loading","nodes","selectedKey","expandedKeys","filters","favorites","on","filteredNodes","node","noSemReloadNodes","mapNodesToNoSemReloadNodes","newVal","oldVal","setPreselection","children","onExpandTreeNode","findNodeByKey","link","activeEl","$nextTick","activeElement","subNodes","mapResultToTreeData","realNode","treeitem","tree","closest","dispatchEvent","KeyboardEvent","onSelectTreeNode","stg_kz","semester","orgform_kurzbz","no_sem_reload","cp","leaf","filterFav","markFav","index","unsetFavFocus","dataset","linkFavAdd","tabIndex","setFavFocus","rawKey","parts","currentKey","currentNode","currentSelectedKey","toggleTreeNode","getStudentAjaxId","vorname","nachname","dropStudents","verband","gruppe","ApiStvDetails","root","CoreFetchCmpt","refresh","apiFunction","apiFunctionParameters","oldValue","fetchData","errorMessage","apiFunctionResult","successHandler","errorHandler","finally","finallyHandler","setError","message","FILTER_COMPONENT_NEW_FILTER","FilterConfig","columns","fields","switchFilter","applyFilterConfig","saveCustomFilter","currentFields","currentTarget","filteredFields","condition","alert","addField","removeField","FilterColumns","selected","names","selectedFields","field","DEFAULT_ICONS","jsonLines","xlsx","pdf","html","json","csv","DEFAULT_LABELS","TableDownload","tabulator","iconClass","currentConfig","toString","newConfig","k","stringToFileFormatter","formatter","validateFileFormatter","lcInput","XLSX","jspdf","jsPDF","autoTable","download","file","elementDataMap","WeakMap","collapseAutoClose","open","collapse","getInstance","collapsibleAutoHideFunc","Tabulator","extendModule","fitDataStretchFrozen","forced","colsWidth","tableWidth","table","rowManager","element","clientWidth","gap","lastCol","widthFixed","reinitializeWidth","responsiveLayout","modules","responsive","visible","definition","frozen","getWidth","modExists","setWidth","ApiFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","CoreFilterCmpt","onNwNewEntry","description","sideMenu","tabulatorOptions","tabulatorEvents","tableOnly","noColumnFilter","reloadBtnInfotext","newBtnShow","newBtnClass","newBtnDisabled","newBtnLabel","uniqueId","idField","parentIdField","countOnly","useSelectionSpan","filterName","filterActive","datasetMetadata","availableFilters","selectedFilter","fetchCmptRefresh","fetchCmptApiFunction","fetchCmptApiFunctionParams","fetchCmptDataFetched","fetchResult","tableBuilt","tabulatorHasSelector","selectedData","persistence","headerFilter","group","page","notSelectedFields","x","filteredData","filteredColumns","col","resizable","fieldIdsForVisibilty","getColumns","def","getDefinition","getField","fieldNames","idExtra","columnsForFilter","filterTitles","reloadTable","initTabulator","placeholder","loadCategory","hash","resolvePromiseFunc","setRenderData","startFetchCmpt","layout","movableColumns","columnDefaults","tooltip","minHeight","maxHeight","selectable","dataTree","handler","toDelete","childIdx","child","cols","isVisible","_setHeaderFilter","updateTabulator","_updateTabulator","setColumns","clearFilters","getHeaderFilters","setHeaderFilterValue","clearFilter","j","setSideMenu","setDropDownMenu","personalFilters","filtersArray","filtersCount","filter_id","desc","onClickCall","handlerGetFilterById","subscriptDescription","subscriptLinkClass","subscriptLinkValue","onClickSubscriptCall","handlerRemoveCustomFilter","option","dataFetchedCallback","called_path","called_method","handlerSaveCustomFilter","getAttribute","substring","attr","parentId","parentIdx","parent","_children","beforeCreate","$props","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","isError","hasData","trim","getError","getErrorCode","_generateRouterURI","uri","ci_router","_printDebug","parameters","errorThrown","axiosCallObj","axios","FormValidation","success","danger","ts","Date","now","msg","accessibility","cursor","prev","next","vertical","act","ariaSelected","previousSibling","nextSibling","click","activetab","ariaSetSize","ariaPosInSet","classList","pos","students$1","relative_path","getPerson","load","address_id","delete","getTypes","getPlaces","plz","getNations","getAllFirmen","ApiStudiensemester","getAllStudiensemesterAndAktOrNext","getAll","order","start","ApiStudienplan","getStudienplaeneBySemester","ausbildungssemester","FORMDATA_DEFAULT","checked","nation","geburtsnation","staatsbuergerschaft","studienplan_id","ListNew","personOnly","studiengangKz","Number","studiensemesterKurzbz","places","formData","suggestions","studienplaene","formDataPerson","orte","ort","gemeinde","gemeinden","place","formDataStg","formDataSem","loadStudienplaene","reset","loadSuggestions","ApiStvStudents","gebdatum","loadPlaces","ApiStvAddress","plan","changeAddressNation","setPerson","suggestion","dateFormatter","val","toLocaleDateString","day","month","year","app$1","configFilter","configStudent","configStudents","ListFilter","FilterItem","filterConfig","filterid","dynamic","fixed","missing","usestdsem","buchungstyp_kurzbz","test1","test2","samestg","cleanFilters","remove","ApiStvApp","capitalize","updateValue","fhcDraggableValue","updateEffectAllowed","effectAllowed","fhcEffectAllowed","StvList","draggable","capture","blocked","onStart","onmessage","onEnd","dt","DragEvent","fhcDraggableCleanup","lists","cell","getValue","headerFilterParams","valuesLookup","listOnEmpty","headerFilterFunc","headerValue","rowValue","matches","comparestr","m","w","u","formatterParams","tickElement","crossElement","tristate","elementAttributes","headerFilterEmptyCheck","allowEmpty","rowFormatter","row","bnaktiv","getElement","ajaxRequestFunc","apiconfig","ajaxConfig","ajaxURL","ajaxParams","ajaxResponse","layoutColumnsOnNewData","selectableRangeMode","persistenceID","rowSelectionChanged","autoSelectRows","count","rows","filteredcount","handleRowClick","focusObj","lastSelected","selectedcount","currentEndpoint","countsToHTML","selectedDragObject","downloadConfig","fileString","delimiter","bom","translateTabulator","translations","titelpre","wahlname","vornamen","titelpost","ersatzkennzeichen","geschlecht","studiengang","matrikelnr","status_datum","status_bestaetigung","mail_privat","mail_intern","anmerkungen","anmerkung","aufmerksamdurch_kurzbz","punkte","aufnahmegruppe_kurzbz","dual","matr_nr","studienplan_bezeichnung","priorisierung_relativ","mentor","trans","innerText","actionNewPrestudent","new","tableEl","oldDragables","removeAttribute","getRow","selectRow","getRows","updateFilter","updateUrl","first","log","dragCleanup","onKeydown","e2","Event","altKey","ctrlKey","shiftKey","previousElementSibling","changeFocus","nextElementSibling","onFocus","FhcTabs","tabview","TabView","tabpanel","TabPanel","Symbol","border","useprimevue","current","tabs","currentTab","calcActiveIndex","initConfig","handleTabClick","change","_addToTabs","reactive","suffix","showSuffix","markRaw","suffixhelper","updateSuffix","getTabSuffix","removeInvalidCountTabs","countIst","tabsToDelete","validCountMulti","tab","countSoll","getSuffix","getTabSuffixes","ApiDetailHeader","getPersonAbteilung","mitarbeiter_uid","getLeitungOrg","oekurzbz","StvDetails","FhcHeader","domain","headerData","typeHeader","appRoot","validatedHeaderData","loadDepartmentData","departmentData","oe_kurzbz","deep","headerDataMa","leitungData","redirectToLeitung","getFotoSrc","showOnlyWithoutUid","showOnlyWithUid","loadConfig","StvStudiensemester","today","fallback","setToToday","studiensemester","handleFormValidation","ApiSearchbar","searchCis","searchStv","getSprachen","getGeschlechter","getAusbildungen","getStgs","getOrgforms","getStudiensemester","ApiStvVerband","path","ApiStv","only_open","checkDoubles","confirmErrorHandler","insert","edit","buchungsnr","getBuchungstypen","ApiStvConfig","FhcStudentenverwaltung","defaultSemester","permissions","stvRoot","cisRoot","avatarUrl","logoutUrl","activeAddons","url_studiensemester_kurzbz","url_mode","url_prestudent_id","url_tab","url_studiengang","activeAddonBewerbung","configGenerateAlias","generateAlias","configShowHintKommPrfg","showHintKommPrfg","hasBpkPermission","hasAliasPermission","hasPrestudentPermission","hasPrestudentstatusPermission","hasAssistenzPermissionForStgs","hasSchreibrechtAss","hasAdminPermission","hasPermissionToSkipStatusCheck","hasPermissionRtAufsicht","hasPermissionOutputformat","stvList","configShowAufnahmegruppen","showAufnahmegruppen","configAllowUebernahmePunkte","allowUebernahmePunkte","configUseReihungstestPunkte","useReihungstestPunkte","appconfig","hasZGVBakkPermission","hasZGVMasterPermission","hasZGVDoctorPermission","hasBismeldenPermission","configEndpoints","searchbaroptions","defaultaction","buildStudentSearchResultLink","childactions","buildPrestudentSearchResultLink","buildPersonSearchResultLink","defaultactionstudent","buildMergedPersonSearchResultLink","studiengangKuerzel","selected_semester","selected_orgform","nations","sprachen","geschlechter","verbandEndpoint","appMenuExtraItems","extraItems","orgform","$route","handleSearchUrl","details","checkUrlStudiengang","handlePersonUrl","font_size","cn","documentElement","tabulatorEls","tabulators","findTable","searchRows","normalizeHeight","onSelectVerband","urlpath","stg","stgs","typ","kurzbz","$router","studiensemesterChanged","reloadList","clearTabulator","searchbar","blurSearchbar","kuerzel","onSearch","blur","kontakt","ausbildungen","active_stgs","orgforms","konto","buchungstypen","studiensemester_desc","toReversed","searchAdvanced","searchdummy","phrasen$1","category","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","filter$1","studstatus","abmeldung","getDetails","antrag_id","stdsem","grund","errorHandling","cancel","allSettled","antrag","studierendenantrag_id","errorHeader","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","getLvs","saveLvs","forbiddenLvs","mandatoryLvs","leitung","getAntraege","getHistory","getPrestudents","approve","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","getProfilRequestFiles","requestID","selectProfilRequest","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","getStg","setStg","tabulatorConfig","self","studiengang_kz_intern","getAdressen","addNewAddress","loadAddress","updateAddress","deleteAddress","getFirmen","searchString","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","lehrveranstaltung_id","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","notiz","getNotizen","getUid","addNewNotiz","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","getContentID","ort_kurbz","getRooms","datum","von","bis","personenanzahl","getRoomTypes","content_id","version","sichtbar","getNews","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studienplan","getStudiengaengeForStudienSemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","ampeln","all","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","OldFhcApi","install","app","globalProperties","addEndpoints","_get_config","TypeError","_clean_return_value","fhcApiAxios","baseURL","interceptors","request","FormData","FileList","File","nd","jsondata","errors","err","handled","alertDefault","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","severity","alertSystemError","exception","db","heading","sql","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","defineProperty","noWarn","bind","helperAppContainer","helperApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","detail","openMessagecard","getOrCreateInstance","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","FhcAlert","FhcPhrasen","toast","summary","life","alertInfo","alertWarning","confirmDelete","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","alertMultiple","messageArray","errMsg","stack","handleSystemMessage","resetFormValidation","nodeType","Node","ELEMENT_NODE","notFound","CustomEvent","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","fail","combine","async","_format_toast","_default","msgs","n_errors","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","configoverwrite","typedErrors","reason","errType","getErrorHandler","ApiPhrasen","loadingModules","user_language","user_locale","LC_Time","catArray","phrase","elem","extractCategory","t_ref","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","ciPath","router","VueRouter","createRouter","history","createWebHistory","routes","route","beforeEnter","to","test","url_student_id","redirect","afterEach","failure","Image","valueAsBase64DataString","openUploadDialog","fileInput","pickFile","files","reader","FileReader","onload","readAsDataURL","deleteImage","Dms","DmsItem","multiple","inputClass","noList","disabled","stringifyFile","lastModified","lastModifiedDate","addFiles","DataTransfer","doubles","removeFile","fileToRemove","upload","dmsFile"],"mappings":"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"} \ No newline at end of file diff --git a/public/dist/js/apps/lehre/Antrag.js b/public/dist/js/apps/lehre/Antrag.js index 544a3cb91..05405ded7 100644 --- a/public/dist/js/apps/lehre/Antrag.js +++ b/public/dist/js/apps/lehre/Antrag.js @@ -1,4 +1,4 @@ -import t from"../../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js?2025121701";import e from"../../../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js?2025121701";import n from"../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js?2025121701";import r from"../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js?2025121701";const a={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t'};var s={render(){return this.$slots&&this.$slots.default?this.$slots.default():null}},i={components:{FhcFragment:s},provide(){return{$registerToForm:t=>{this.inputs.indexOf(t)<0&&this.inputs.push(t)},$clearValidationForName:this.clearValidationForName}},props:{tag:{type:String,default:"form"}},data:()=>({inputs:[]}),computed:{sortedInputs(){return this.inputs.reduce((t,e)=>{let n=e.name||"_default";return t[n]||(t[n]=[]),t[n].push(e),"checkbox"==e.lcType&&"]"==n.substr(-1)&&n.indexOf("[")&&(n=n.substr(0,n.lastIndexOf("[")),t[n]||(t[n]=[]),t[n].push(e)),t},{})},factory(){console.warn(".factory is deprecated! Use .call() instead.");const t=Object.create(Object.getPrototypeOf(this.$fhcApi.factory),Object.getOwnPropertyDescriptors(this.$fhcApi.factory));return t.$fhcApi={get:this.get,post:this.post,_defaultErrorHandlers:this.$fhcApi._defaultErrorHandlers},t}},methods:{get(...t){return"object"==typeof t[0]&&t[0].clearValidation&&t[0].setFeedback?t[0]=this:t.unshift(this),this.$api?this.$api.get(...t):this.$fhcApi.get(...t)},post(...t){return"object"==typeof t[0]&&t[0].clearValidation&&t[0].setFeedback?t[0]=this:t.unshift(this),this.$api?this.$api.post(...t):this.$fhcApi.post(...t)},call(t,e){return this.$api.call(t,e,this)},_sendFeedbackToInput(t,e,n){return t.length?(t.forEach(t=>t.setFeedback(n,e)),!1):!this.$fhcAlert||(this.$fhcAlert[n?"alertSuccess":"alertError"](e),!1)},setFeedback(t,e){if(Array.isArray(e)){let n=e.filter(e=>this._sendFeedbackToInput(this.sortedInputs._default||[],e,t));return n.length?n:null}if("object"==typeof e){let n=Object.entries(e).filter(([e,n])=>this._sendFeedbackToInput(this.sortedInputs[e.split(".")[0]+e.split(".").slice(1).map(t=>`[${t}]`).join("")]||this.sortedInputs._default||[],n,t));return n.length?Object.fromEntries(n):null}return this._sendFeedbackToInput(this.sortedInputs._default||[],e,t)?e:null},clearValidation(){this.inputs.forEach(t=>t.clearValidation())},send(t){return new Promise((e,n)=>{t.then(t=>{if(200==t?.status&&t.data){if("object"!=typeof t.data||!t.data.hasOwnProperty("retval"))return n(t);if(t.data.error)return n(t);const r=t.data.retval;return 1==t.data.code&&this.setFeedback(!0,r),e(r)}n(t)}).catch(t=>{if(400==t?.response?.status&&t.response.data){if("object"!=typeof t.response.data||!t.response.data.hasOwnProperty("retval"))return n(t);this.clearValidation();const e=this.setFeedback(!1,t.response.data.retval);if(e)return t.response.data.retval=e,n(t)}else{if(500!=t?.response?.status)return n(t);if(!this.$fhcAlert)return n(t);this.$fhcAlert.handleSystemError(t)}})})},clearValidationForName(t){(this.sortedInputs[t.split(".")[0]+t.split(".").slice(1).map(t=>`[${t}]`).join("")]||this.sortedInputs._default||[]).forEach(t=>t.clearValidation())}},template:'\n\t\n\t\t\n\t'},o={inject:["$registerToForm"],data:()=>({feedback:{success:[],danger:[]}}),methods:{clearValidation(){this.feedback={success:[],danger:[]}},setFeedback(t,e){e||(e=[]),Array.isArray(e)||(e=[e]);const n=Date.now();this.feedback[t?"success":"danger"].push(...e.map(t=>[t,n]))}},mounted(){this.$registerToForm&&this.$registerToForm(this)},template:'\n\t\n\t'};let d={};var u={name:"FormInput",inheritAttrs:!1,components:{FhcFragment:s},inject:{registerToForm:{from:"$registerToForm",default:null},clearValidationForName:{from:"$clearValidationForName",default:null}},props:{bsFeedback:Boolean,noAutoClass:Boolean,noFeedback:Boolean,inputGroup:Boolean,type:String,name:String,containerClass:[String,Array,Object],label:String,onInput:[Array,Function],"onUpdate:modelValue":[Array,Function]},data:()=>({valid:void 0,feedback:[],modelValueDummy:void 0}),computed:{hasContainer(){if(!this.bsFeedback)return!0;if(this.containerClass)return!0;for(const t in this.autoContainerClass)if(Object.hasOwn(this.autoContainerClass,t))return!0;return!1},acc(){return this.containerClass?"string"==typeof this.containerClass||this.containerClass instanceof String?this.containerClass.split(" ").reduce((t,e)=>(t[e]=!0,t),{}):Array.isArray(this.containerClass)?this.containerClass.reduce((t,e)=>(t[e]=!0,t),{}):this.containerClass:{}},autoContainerClass(){if(this.noAutoClass)return this.acc;const t={...this.acc};return this.inputGroup&&(t["input-group-item"]=!0),"radio"!=this.lcType&&"checkbox"!=this.lcType||(t["form-check"]=!0),this.inputGroup&&t["form-check"]&&(t["input-group-item"]=!1,t["form-check"]=!1,t["input-group-text"]=!0),t},lcType(){return this.type?this.type.toLowerCase():"text"},tag(){switch(this.lcType){case"textarea":case"select":return this.lcType;case"datepicker":return"VueDatePicker";case"autocomplete":return"PvAutocomplete";case"uploadimage":return"UploadImage";case"uploadfile":case"uploaddms":return"UploadDms";default:return"input"}},validationClass(){const t=[];if(this.valid?t.push("is-valid"):!1===this.valid&&t.push("is-invalid"),!this.noAutoClass){let e=this.$attrs.class?this.$attrs.class.split(" "):[];switch(this.lcType){case"select":e.includes("form-select")||t.push("form-select");break;case"range":e.includes("form-range")||t.push("form-range");break;case"radio":case"checkbox":e.includes("form-check-input")||e.includes("btn-check")||t.push("form-check-input");break;case"color":e.includes("form-control-color")||t.push("form-control-color"),e.includes("form-control")||t.push("form-control");break;case"autocomplete":case"datepicker":t.push("p-0"),t.push("border-0"),e.includes("form-control")||t.push("form-control");break;case"text":case"number":case"password":case"textarea":e.includes("form-control")||t.push("form-control")}}return t},feedbackClass(){return this.feedback&&!0!==this.feedback?this.bsFeedback?{"valid-feedback":!0===this.valid,"invalid-feedback":!1===this.valid}:{"valid-tooltip":!0===this.valid,"invalid-tooltip":!1===this.valid}:""},modelValueCmp:{get(){return this.$attrs.hasOwnProperty("modelValue")?this.$attrs.modelValue:this.modelValueDummy},set(t){this.$attrs.hasOwnProperty("modelValue")||(this.modelValueDummy=t),this.$emit("update:modelValue",t)}},idCmp(){let t=this.$attrs.id;if("datepicker"==this.lcType&&(t=this.$attrs.uid),!t&&this.label&&(t="fhc-form-input"),t)return"datepicker"==this.lcType&&(t="dp-input-"+t),void 0===d[t]&&(d[t]=0),t+"-"+d[t]++}},methods:{clearValidation(){this.valid=void 0,this.feedback=[]},clearValidationForThisName(){void 0!==this.valid&&(this.clearValidationForName&&this.name?this.clearValidationForName(this.name):this.clearValidation())},setFeedback(t,e){if(e||(e=[]),Array.isArray(e)||(e=[e]),this.valid=t,this.name&&("radio"==this.lcType||"checkbox"==this.lcType)){const t='input[type="'+this.lcType+'"][name="'+this.name+'"]';if([...this.$el.parentNode.querySelectorAll(t)].pop()!=this.$refs.input)return}this.feedback=e},_loadComponents(){"VueDatePicker"!=this.tag||this._.components.VueDatePicker?"PvAutocomplete"!=this.tag||this._.components.PvAutocomplete?"UploadImage"!=this.tag||this._.components.UploadImage?"UploadDms"!=this.tag||this._.components.UploadDms||(this._.components.UploadDms=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return dt}))):this._.components.UploadImage=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return it})):this._.components.PvAutocomplete=primevue.autocomplete:this._.components.VueDatePicker=Vue.defineAsyncComponent(()=>import("../../../../js/components/vueDatepicker.js.php?2025121701"))}},beforeMount(){this._loadComponents()},beforeUpdate(){this._loadComponents()},mounted(){this.registerToForm&&this.registerToForm(this)},template:'\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs[\'input-class-name\'] ? $attrs[\'input-class-name\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs[\'input-class\'] ? $attrs[\'input-class\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t'},l={getDetails:(t,e)=>({method:"get",url:"/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e)}),create:(t,e,n)=>({method:"post",url:"/api/frontend/v1/studstatus/abmeldung/createAntrag",params:{studiensemester:t,prestudent_id:e,grund:n}}),cancel:t=>({method:"post",url:"/api/frontend/v1/studstatus/abmeldung/cancelAntrag",params:{antrag_id:t}})},p=0,c={components:{CoreFetchCmpt:a,CoreForm:i,FormValidation:o,FormInput:u},emits:["setInfos","setStatus"],props:{prestudentId:Number,studierendenantragId:Number},data:()=>({data:null,saving:!1,formData:{grund:""}}),computed:{statusSeverity(){switch(this.data.status){case"Erstellt":return"info";case"Pause":case"Zurueckgezogen":return"danger";case"Genehmigt":return"success";default:return"warning"}}},methods:{load(){return this.$api.call(l.getDetails(this.studierendenantragId,this.prestudentId)).then(t=>{if(this.data=t.data,this.data.status){const t="Pause"==this.data.status&&"Studienabbruch"==this.data.status_insertvon?Vue.computed(()=>{let t=this.$p.t("studierendenantrag/status_stop");return this.$p.t("studierendenantrag","status_x",{status:t})}):Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp}));this.$emit("setStatus",{msg:t,severity:this.statusSeverity})}return t}).catch(this.$fhcAlert.handleSystemError)},createAntrag(){bootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide(),this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_saving")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(l.create(this.data.studiensemester_kurzbz,this.data.prestudent_id,this.formData.grund)).then(t=>{!0===t.data&&(document.location+=""),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_open")})),severity:"success"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})},cancelAntrag(){this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_cancelling")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(l.cancel(this.data.studierendenantrag_id)).then(t=>{Number.isInteger(t.data)&&(document.location=document.location.replace(/abmeldung\/([0-9]*)\/[0-9]*[\/]?$/,"abmeldung/$1")+"/"+t.data),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_cancelled")})),severity:"danger"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})}},created(){this.uuid=p++},template:'\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t(\'lehre\', \'studiengang\')}}{{data.bezeichnung}}
    {{$p.t(\'lehre\', \'organisationsform\')}}{{data.orgform_bezeichnung}}
    {{$p.t(\'projektarbeitsbeurteilung\', \'nameStudierende\')}}{{data.name}}
    {{$p.t(\'person\', \'personenkennzeichen\')}}{{data.matrikelnr}}
    {{$p.t(\'lehre\', \'studienjahr\')}}{{data.studienjahr_kurzbz}}
    {{$p.t(\'lehre\', \'studiensemester\')}}{{data.studiensemester_kurzbz}}
    {{$p.t(\'lehre\', \'semester\')}}{{data.semester}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    {{$p.t(\'studierendenantrag\', \'antrag_grund\')}}:
    \n\t\t\t\t\t
    {{data.grund}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_cancel\')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_create_Abmeldung\')}}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t
    '},g={updatePersonUnrulyStatus:(t,e)=>({method:"post",url:"/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus",params:{person_id:t,unruly:e}}),filterPerson:(t,e="")=>({method:"post",url:e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson",params:t})},h=0,f={components:{CoreFetchCmpt:a,CoreForm:i,FormValidation:o,FormInput:u},emits:["setInfos","setStatus"],props:{prestudentId:Number,studierendenantragId:Number},data:()=>({data:null,saving:!1,formData:{grund:""},unrulyInternal:!1}),computed:{statusSeverity(){switch(this.data?.status){case"Erstellt":return"info";case"Pause":case"Zurueckgezogen":return"danger";case"EinspruchAbgelehnt":case"Abgemeldet":return"success";default:return"warning"}}},methods:{load(){return this.$api.call(l.getDetails(this.studierendenantragId,this.prestudentId)).then(t=>{if(this.data=t.data,this.data.status){const t="Pause"==this.data.status&&"Studienabbruch"==this.data.status_insertvon?Vue.computed(()=>{let t=this.$p.t("studierendenantrag/status_stop");return this.$p.t("studierendenantrag","status_x",{status:t})}):Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp}));this.$emit("setStatus",{msg:t,severity:this.statusSeverity})}return t})},createAntrag(){bootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide(),this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_saving")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(l.create(this.data.studiensemester_kurzbz,this.data.prestudent_id,this.formData.grund)).then(t=>{this.unrulyInternal&&this.$api.call(g.updatePersonUnrulyStatus(this.data.person_id,!0)).then(t=>{"success"===t?.meta?.status&&this.$fhcAlert.alertSuccess(this.$p.t("studierendenantrag","antrag_unruly_updated"))}),!0===t.data&&(document.location+=""),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_open")})),severity:"success"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})},appendDropDownText(t){this.formData.grund=t.target.value?this.$p.t("studierendenantrag",t.target.value):""}},created(){this.uuid=h++},watch:{"formData.grund"(t){this.unrulyInternal=t===this.$p.t("studierendenantrag","textLong_unruly")}},template:'\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t(\'lehre\', \'studiengang\')}}{{data.bezeichnung}}
    {{$p.t(\'lehre\', \'organisationsform\')}}{{data.orgform_bezeichnung}}
    {{$p.t(\'projektarbeitsbeurteilung\', \'nameStudierende\')}}{{data.name}}
    {{$p.t(\'person\', \'personenkennzeichen\')}}{{data.matrikelnr}}
    {{$p.t(\'lehre\', \'studienjahr\')}}{{data.studienjahr_kurzbz}}
    {{$p.t(\'lehre\', \'studiensemester\')}}{{data.studiensemester_kurzbz}}
    {{$p.t(\'lehre\', \'semester\')}}{{data.semester}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t
    {{$p.t(\'studierendenantrag\', \'antrag_grund\')}}:
    \n\t\t\t\t\n\t\t\t\t\t
    {{data?.grund}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_create_Abmeldung\')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t
    '},m={getDetails:(t,e)=>({method:"get",url:"/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e)}),create:(t,e,n,r,a)=>({method:"post",url:"/api/frontend/v1/studstatus/unterbrechung/createAntrag",params:{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:r,attachment:a}}),cancel:t=>({method:"post",url:"/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",params:{antrag_id:t}})},v={components:{CoreFetchCmpt:a,CoreForm:i,FormValidation:o,FormInput:u},emits:["setInfos","setStatus"],props:{prestudentId:Number,studierendenantragId:Number},data:()=>({data:null,saving:!1,attachment:[],stsem:null,currentWiedereinstieg:"",siteUrl:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router}),computed:{statusSeverity(){switch(this.data.status){case"Erstellt":return"info";case"Pause":case"Zurueckgezogen":case"Abgelehnt":return"danger";case"Genehmigt":case"EmailVersandt":return"success";default:return"warning"}},datumWsFormatted(){let t="";return this.data.datum_wiedereinstieg?t=this.data.datum_wiedereinstieg:null!==this.stsem&&this.data.studiensemester[this.stsem].wiedereinstieg&&(t=this.data.studiensemester[this.stsem].wiedereinstieg),""===t?t:new Date(t).toLocaleDateString()},semesterOffsets(){return this.data&&this.data.studiensemester?Object.values(this.data.studiensemester).filter(t=>!t.disabled).map(t=>t.studiensemester_kurzbz):[]},semester(){return this.stsem?this.data.semester+this.semesterOffsets.indexOf(this.stsem):""}},methods:{load(){return this.$api.call(m.getDetails(this.studierendenantragId,this.prestudentId)).then(t=>{if(this.data=t.data,this.data.status){const t="Pause"==this.data.status&&"Studienabbruch"==this.data.status_insertvon?Vue.computed(()=>{let t=this.$p.t("studierendenantrag/status_stop");return this.$p.t("studierendenantrag","status_x",{status:t})}):Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp}));this.$emit("setStatus",{msg:t,severity:this.statusSeverity})}return t})},createAntrag(){this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_saving")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(m.create(null!==this.stsem&&this.data.studiensemester[this.stsem].studiensemester_kurzbz,this.data.prestudent_id,this.data.grund,null!==this.stsem&&this.currentWiedereinstieg,this.attachment)).then(t=>{Number.isInteger(t.data)&&(document.location+="/"+t.data),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_created")})),severity:"info"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})},cancelAntrag(){this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_cancelling")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(m.cancel(this.data.studierendenantrag_id)).then(t=>{Number.isInteger(t.data)&&(document.location=document.location.replace(/unterbrechung\/([0-9]*)\/[0-9]*[\/]?$/,"unterbrechung/$1")+"/"+t.data),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_cancelled")})),severity:"danger"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})}},template:'\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t(\'lehre\', \'studiengang\')}}{{data.bezeichnung}}
    {{$p.t(\'lehre\', \'organisationsform\')}}{{data.orgform_bezeichnung}}
    {{$p.t(\'projektarbeitsbeurteilung\', \'nameStudierende\')}}{{data.name}}
    {{$p.t(\'person\', \'personenkennzeichen\')}}{{data.matrikelnr}}
    {{$p.t(\'lehre\', \'studienjahr\')}}{{data.studienjahr_kurzbz}}{{stsem === null ? \'\' : data.studiensemester[stsem].studienjahr_kurzbz}}
    {{$p.t(\'lehre\', \'semester\')}}{{data.semester}}{{semester}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{{data.studiensemester_kurzbz}}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{{datumWsFormatted}}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {{$p.t(\'studierendenantrag\', \'antrag_dateianhaenge\')}} \n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'no_attachments\')}}\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_create_Unterbrechung\')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_cancel\')}}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t
    '},A={getDetails:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t}),getLvs:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getLvs/"+t}),create:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/createAntrag",params:{prestudent_id:t,studiensemester:e}}),cancel:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/cancelAntrag",params:{prestudent_id:t,studiensemester:e}}),saveLvs:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/saveLvs",params:{forbiddenLvs:t,mandatoryLvs:e}})},b={components:{CoreFetchCmpt:a,CoreForm:i,FormValidation:o},emits:["setInfos","setStatus","update:status"],props:{status:String,prestudentId:Number,studierendenantragId:Number},data:()=>({data:null,saving:!1,infos:[]}),computed:{statusSeverity(){switch(this.data.status){case"Offen":case"Erstellt":case"ErsteAufforderungVersandt":return"info";case"Genehmigt":return"success";case"Pause":case"Verzichtet":case"Abgemeldet":return"danger";default:return"warning"}},datumPruefungFormatted(){if(!this.data.pruefungsdatum)return"";return new Date(this.data.pruefungsdatum).toLocaleDateString()}},methods:{load(){return this.$api.call(A.getDetails(this.prestudentId)).then(t=>{this.data=t.data,this.data.status&&"ErsteAufforderungVersandt"!=this.data.status&&"ZweiteAufforderungVersandt"!=this.data.status||(this.data.status="Offen",this.data.statustyp=this.$p.t("studierendenantrag","status_open")),this.$emit("update:status",this.data.status);const e="Pause"==this.data.status&&"Studienabbruch"==this.data.status_insertvon?Vue.computed(()=>{let t=this.$p.t("studierendenantrag/status_stop");return this.$p.t("studierendenantrag","status_x",{status:t})}):Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp}));return this.$emit("setStatus",{msg:e,severity:this.statusSeverity}),t})},createAntrag(){this.createAntragWithStatus(!0)},cancelAntrag(){this.createAntragWithStatus(!1)},createAntragWithStatus(t){let e=t?"create":"cancel",n=t?"Erstellt":"Verzichtet";this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_saving")})),severity:"warning"}),this.saving=!0,this.$refs.form.call(A[e](this.data.prestudent_id,this.data.studiensemester_kurzbz)).then(t=>{!0===t.data&&(document.location+=""),this.data=t.data,this.data.status||(this.data.status=n),this.$emit("update:status",this.data.status),this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})}},mounted(){this.infos=[...Array(5).keys()].map(t=>({body:Vue.computed(()=>this.$p.t("studierendenantrag","infotext_Wiederholung_"+t))})),this.$emit("setInfos",this.infos)},template:'\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t(\'lehre\', \'studiengang\')}}{{data.bezeichnung}}
    {{$p.t(\'lehre\', \'organisationsform\')}}{{data.orgform_bezeichnung}}
    {{$p.t(\'projektarbeitsbeurteilung\', \'nameStudierende\')}}{{data.name}}
    {{$p.t(\'person\', \'personenkennzeichen\')}}{{data.matrikelnr}}
    {{$p.t(\'studierendenantrag\', \'antrag_Wiederholung_pruefung\')}}{{data.lvbezeichnung}}
    {{$p.t(\'studierendenantrag\', \'antrag_Wiederholung_pruefung_date\')}}{{datumPruefungFormatted}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag/antrag_Wiederholung_button_yes\')}}\n\t\t\t\t\t\n\x3c!--\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag/antrag_Wiederholung_button_no\')}}\n\t\t\t\t\t--\x3e\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t'},_={components:{StudierendenantragAbmeldung:c,StudierendenantragAbmeldungStgl:f,StudierendenantragUnterbrechung:v,StudierendenantragWiederholung:b},emits:["update:infoArray","update:statusMsg","update:statusSeverity"],props:{antragType:String,prestudentId:Number,studierendenantragId:Number,infoArray:Array,statusMsg:String,statusSeverity:String},data:()=>({status:""}),computed:{typeComponent(){return"Studierendenantrag"+this.antragType},infoText(){return this.$p.t("studierendenantrag/info_"+this.antragType+"_"+this.status)}},template:'\n\t
    \n\t\t
    \n\t\t {{$p.t(\'studierendenantrag\', \'title_\' + antragType)}}\n\t\t
    \n\t\t\n\t\t\n\t\t\n\t
    \n\t'},$={props:{msg:String,severity:String},computed:{severityClass(){return"alert-"+this.severity}},template:'\n\t\n\t'},y={props:{infos:Array},template:'\n\t
    \n\t\t\n\t
    \n\t'},S={search(t,e){return this.$fhcApi.post("/api/frontend/v1/searchbar/search",t,e)},searchAdvanced(t,e){return this.$fhcApi.post("/api/frontend/v1/searchbar/searchAdvanced",t,e)},searchdummy(t){return this.$fhcApi.post("public/js/apps/api/dummyapi.php/Search",t)}},k={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const n={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",n)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},C={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})}},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})}},P={abmeldung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n},{errorHandling:"strict"})},cancel(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t.studierendenantrag_id},{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t})}},unterbrechung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n,r,a){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:r,attachment:a},{errorHandling:"strict"})},cancel(t){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:t},{errorHandling:"strict"})}},wiederholung:{getDetails(t){const e="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t;return this.$fhcApi.get(e)},getLvs(t){const e="/api/frontend/v1/studstatus/wiederholung/getLvs/"+t;return this.$fhcApi.get(e)},create(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},cancel(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},saveLvs(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:t,mandatoryLvs:e})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(t,e,n){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+t).then(t=>t.data)},getHistory(t){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+t)},getPrestudents(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:t},{signal:e,timeout:3e4})},approve(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t)},reject(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t)},reopen(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t)},pause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t)},unpause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t)},object(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t)},approveObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t)},denyObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t)}}},E={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",{})}},F={ +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 n from"../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js";import r from"../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js";const s={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t'};var a={render(){return this.$slots&&this.$slots.default?this.$slots.default():null}},i={components:{FhcFragment:a},provide(){return{$registerToForm:t=>{this.inputs.indexOf(t)<0&&this.inputs.push(t)},$clearValidationForName:this.clearValidationForName}},props:{tag:{type:String,default:"form"}},data:()=>({inputs:[]}),computed:{sortedInputs(){return this.inputs.reduce((t,e)=>{let n=e.name||"_default";return t[n]||(t[n]=[]),t[n].push(e),"checkbox"==e.lcType&&"]"==n.substr(-1)&&n.indexOf("[")&&(n=n.substr(0,n.lastIndexOf("[")),t[n]||(t[n]=[]),t[n].push(e)),t},{})},factory(){console.warn(".factory is deprecated! Use .call() instead.");const t=Object.create(Object.getPrototypeOf(this.$fhcApi.factory),Object.getOwnPropertyDescriptors(this.$fhcApi.factory));return t.$fhcApi={get:this.get,post:this.post,_defaultErrorHandlers:this.$fhcApi._defaultErrorHandlers},t}},methods:{get(...t){return"object"==typeof t[0]&&t[0].clearValidation&&t[0].setFeedback?t[0]=this:t.unshift(this),this.$api?this.$api.get(...t):this.$fhcApi.get(...t)},post(...t){return"object"==typeof t[0]&&t[0].clearValidation&&t[0].setFeedback?t[0]=this:t.unshift(this),this.$api?this.$api.post(...t):this.$fhcApi.post(...t)},call(t,e){return this.$api.call(t,e,this)},_sendFeedbackToInput(t,e,n){return t.length?(t.forEach(t=>t.setFeedback(n,e)),!1):!this.$fhcAlert||(this.$fhcAlert[n?"alertSuccess":"alertError"](e),!1)},setFeedback(t,e){if(Array.isArray(e)){let n=e.filter(e=>this._sendFeedbackToInput(this.sortedInputs._default||[],e,t));return n.length?n:null}if("object"==typeof e){let n=Object.entries(e).filter(([e,n])=>this._sendFeedbackToInput(this.sortedInputs[e.split(".")[0]+e.split(".").slice(1).map(t=>`[${t}]`).join("")]||this.sortedInputs._default||[],n,t));return n.length?Object.fromEntries(n):null}return this._sendFeedbackToInput(this.sortedInputs._default||[],e,t)?e:null},clearValidation(){this.inputs.forEach(t=>t.clearValidation())},send(t){return new Promise((e,n)=>{t.then(t=>{if(200==t?.status&&t.data){if("object"!=typeof t.data||!t.data.hasOwnProperty("retval"))return n(t);if(t.data.error)return n(t);const r=t.data.retval;return 1==t.data.code&&this.setFeedback(!0,r),e(r)}n(t)}).catch(t=>{if(400==t?.response?.status&&t.response.data){if("object"!=typeof t.response.data||!t.response.data.hasOwnProperty("retval"))return n(t);this.clearValidation();const e=this.setFeedback(!1,t.response.data.retval);if(e)return t.response.data.retval=e,n(t)}else{if(500!=t?.response?.status)return n(t);if(!this.$fhcAlert)return n(t);this.$fhcAlert.handleSystemError(t)}})})},clearValidationForName(t){(this.sortedInputs[t.split(".")[0]+t.split(".").slice(1).map(t=>`[${t}]`).join("")]||this.sortedInputs._default||[]).forEach(t=>t.clearValidation())}},template:'\n\t\n\t\t\n\t'},o={inject:["$registerToForm"],data:()=>({feedback:{success:[],danger:[]}}),methods:{clearValidation(){this.feedback={success:[],danger:[]}},setFeedback(t,e){e||(e=[]),Array.isArray(e)||(e=[e]);const n=Date.now();this.feedback[t?"success":"danger"].push(...e.map(t=>[t,n]))}},mounted(){this.$registerToForm&&this.$registerToForm(this)},template:'\n\t\n\t'};let d={};var u={name:"FormInput",inheritAttrs:!1,components:{FhcFragment:a},inject:{registerToForm:{from:"$registerToForm",default:null},clearValidationForName:{from:"$clearValidationForName",default:null}},props:{bsFeedback:Boolean,noAutoClass:Boolean,noFeedback:Boolean,inputGroup:Boolean,type:String,name:String,containerClass:[String,Array,Object],label:String,onInput:[Array,Function],"onUpdate:modelValue":[Array,Function]},data:()=>({valid:void 0,feedback:[],modelValueDummy:void 0}),computed:{hasContainer(){if(!this.bsFeedback)return!0;if(this.containerClass)return!0;for(const t in this.autoContainerClass)if(Object.hasOwn(this.autoContainerClass,t))return!0;return!1},acc(){return this.containerClass?"string"==typeof this.containerClass||this.containerClass instanceof String?this.containerClass.split(" ").reduce((t,e)=>(t[e]=!0,t),{}):Array.isArray(this.containerClass)?this.containerClass.reduce((t,e)=>(t[e]=!0,t),{}):this.containerClass:{}},autoContainerClass(){if(this.noAutoClass)return this.acc;const t={...this.acc};return this.inputGroup&&(t["input-group-item"]=!0),"radio"!=this.lcType&&"checkbox"!=this.lcType||(t["form-check"]=!0),this.inputGroup&&t["form-check"]&&(t["input-group-item"]=!1,t["form-check"]=!1,t["input-group-text"]=!0),t},lcType(){return this.type?this.type.toLowerCase():"text"},tag(){switch(this.lcType){case"textarea":case"select":return this.lcType;case"datepicker":return"VueDatePicker";case"autocomplete":return"PvAutocomplete";case"uploadimage":return"UploadImage";case"uploadfile":case"uploaddms":return"UploadDms";default:return"input"}},validationClass(){const t=[];if(this.valid?t.push("is-valid"):!1===this.valid&&t.push("is-invalid"),!this.noAutoClass){let e=this.$attrs.class?this.$attrs.class.split(" "):[];switch(this.lcType){case"select":e.includes("form-select")||t.push("form-select");break;case"range":e.includes("form-range")||t.push("form-range");break;case"radio":case"checkbox":e.includes("form-check-input")||e.includes("btn-check")||t.push("form-check-input");break;case"color":e.includes("form-control-color")||t.push("form-control-color"),e.includes("form-control")||t.push("form-control");break;case"autocomplete":case"datepicker":t.push("p-0"),t.push("border-0"),e.includes("form-control")||t.push("form-control");break;case"text":case"number":case"password":case"textarea":e.includes("form-control")||t.push("form-control")}}return t},feedbackClass(){return this.feedback&&!0!==this.feedback?this.bsFeedback?{"valid-feedback":!0===this.valid,"invalid-feedback":!1===this.valid}:{"valid-tooltip":!0===this.valid,"invalid-tooltip":!1===this.valid}:""},modelValueCmp:{get(){return this.$attrs.hasOwnProperty("modelValue")?this.$attrs.modelValue:this.modelValueDummy},set(t){this.$attrs.hasOwnProperty("modelValue")||(this.modelValueDummy=t),this.$emit("update:modelValue",t)}},idCmp(){let t=this.$attrs.id;if("datepicker"==this.lcType&&(t=this.$attrs.uid),!t&&this.label&&(t="fhc-form-input"),t)return"datepicker"==this.lcType&&(t="dp-input-"+t),void 0===d[t]&&(d[t]=0),t+"-"+d[t]++}},methods:{clearValidation(){this.valid=void 0,this.feedback=[]},clearValidationForThisName(){void 0!==this.valid&&(this.clearValidationForName&&this.name?this.clearValidationForName(this.name):this.clearValidation())},setFeedback(t,e){if(e||(e=[]),Array.isArray(e)||(e=[e]),this.valid=t,this.name&&("radio"==this.lcType||"checkbox"==this.lcType)){const t='input[type="'+this.lcType+'"][name="'+this.name+'"]';if([...this.$el.parentNode.querySelectorAll(t)].pop()!=this.$refs.input)return}this.feedback=e},_loadComponents(){"VueDatePicker"!=this.tag||this._.components.VueDatePicker?"PvAutocomplete"!=this.tag||this._.components.PvAutocomplete?"UploadImage"!=this.tag||this._.components.UploadImage?"UploadDms"!=this.tag||this._.components.UploadDms||(this._.components.UploadDms=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return dt}))):this._.components.UploadImage=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return it})):this._.components.PvAutocomplete=primevue.autocomplete:this._.components.VueDatePicker=Vue.defineAsyncComponent(()=>import("../../../../js/components/vueDatepicker.js.php"))}},beforeMount(){this._loadComponents()},beforeUpdate(){this._loadComponents()},mounted(){this.registerToForm&&this.registerToForm(this)},template:'\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs[\'input-class-name\'] ? $attrs[\'input-class-name\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs[\'input-class\'] ? $attrs[\'input-class\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t'},l={getDetails:(t,e)=>({method:"get",url:"/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e)}),create:(t,e,n)=>({method:"post",url:"/api/frontend/v1/studstatus/abmeldung/createAntrag",params:{studiensemester:t,prestudent_id:e,grund:n}}),cancel:t=>({method:"post",url:"/api/frontend/v1/studstatus/abmeldung/cancelAntrag",params:{antrag_id:t}})},p=0,c={components:{CoreFetchCmpt:s,CoreForm:i,FormValidation:o,FormInput:u},emits:["setInfos","setStatus"],props:{prestudentId:Number,studierendenantragId:Number},data:()=>({data:null,saving:!1,formData:{grund:""}}),computed:{statusSeverity(){switch(this.data.status){case"Erstellt":return"info";case"Pause":case"Zurueckgezogen":return"danger";case"Genehmigt":return"success";default:return"warning"}}},methods:{load(){return this.$api.call(l.getDetails(this.studierendenantragId,this.prestudentId)).then(t=>{if(this.data=t.data,this.data.status){const t="Pause"==this.data.status&&"Studienabbruch"==this.data.status_insertvon?Vue.computed(()=>{let t=this.$p.t("studierendenantrag/status_stop");return this.$p.t("studierendenantrag","status_x",{status:t})}):Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp}));this.$emit("setStatus",{msg:t,severity:this.statusSeverity})}return t}).catch(this.$fhcAlert.handleSystemError)},createAntrag(){bootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide(),this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_saving")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(l.create(this.data.studiensemester_kurzbz,this.data.prestudent_id,this.formData.grund)).then(t=>{!0===t.data&&(document.location+=""),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_open")})),severity:"success"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})},cancelAntrag(){this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_cancelling")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(l.cancel(this.data.studierendenantrag_id)).then(t=>{Number.isInteger(t.data)&&(document.location=document.location.replace(/abmeldung\/([0-9]*)\/[0-9]*[\/]?$/,"abmeldung/$1")+"/"+t.data),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_cancelled")})),severity:"danger"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})}},created(){this.uuid=p++},template:'\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t(\'lehre\', \'studiengang\')}}{{data.bezeichnung}}
    {{$p.t(\'lehre\', \'organisationsform\')}}{{data.orgform_bezeichnung}}
    {{$p.t(\'projektarbeitsbeurteilung\', \'nameStudierende\')}}{{data.name}}
    {{$p.t(\'person\', \'personenkennzeichen\')}}{{data.matrikelnr}}
    {{$p.t(\'lehre\', \'studienjahr\')}}{{data.studienjahr_kurzbz}}
    {{$p.t(\'lehre\', \'studiensemester\')}}{{data.studiensemester_kurzbz}}
    {{$p.t(\'lehre\', \'semester\')}}{{data.semester}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    {{$p.t(\'studierendenantrag\', \'antrag_grund\')}}:
    \n\t\t\t\t\t
    {{data.grund}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_cancel\')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_create_Abmeldung\')}}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t'},g={updatePersonUnrulyStatus:(t,e)=>({method:"post",url:"/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus",params:{person_id:t,unruly:e}}),filterPerson:(t,e="")=>({method:"post",url:e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson",params:t})},h=0,f={components:{CoreFetchCmpt:s,CoreForm:i,FormValidation:o,FormInput:u},emits:["setInfos","setStatus"],props:{prestudentId:Number,studierendenantragId:Number},data:()=>({data:null,saving:!1,formData:{grund:""},unrulyInternal:!1}),computed:{statusSeverity(){switch(this.data?.status){case"Erstellt":return"info";case"Pause":case"Zurueckgezogen":return"danger";case"EinspruchAbgelehnt":case"Abgemeldet":return"success";default:return"warning"}}},methods:{load(){return this.$api.call(l.getDetails(this.studierendenantragId,this.prestudentId)).then(t=>{if(this.data=t.data,this.data.status){const t="Pause"==this.data.status&&"Studienabbruch"==this.data.status_insertvon?Vue.computed(()=>{let t=this.$p.t("studierendenantrag/status_stop");return this.$p.t("studierendenantrag","status_x",{status:t})}):Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp}));this.$emit("setStatus",{msg:t,severity:this.statusSeverity})}return t})},createAntrag(){bootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide(),this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_saving")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(l.create(this.data.studiensemester_kurzbz,this.data.prestudent_id,this.formData.grund)).then(t=>{this.unrulyInternal&&this.$api.call(g.updatePersonUnrulyStatus(this.data.person_id,!0)).then(t=>{"success"===t?.meta?.status&&this.$fhcAlert.alertSuccess(this.$p.t("studierendenantrag","antrag_unruly_updated"))}),!0===t.data&&(document.location+=""),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_open")})),severity:"success"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})},appendDropDownText(t){this.formData.grund=t.target.value?this.$p.t("studierendenantrag",t.target.value):""}},created(){this.uuid=h++},watch:{"formData.grund"(t){this.unrulyInternal=t===this.$p.t("studierendenantrag","textLong_unruly")}},template:'\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t(\'lehre\', \'studiengang\')}}{{data.bezeichnung}}
    {{$p.t(\'lehre\', \'organisationsform\')}}{{data.orgform_bezeichnung}}
    {{$p.t(\'projektarbeitsbeurteilung\', \'nameStudierende\')}}{{data.name}}
    {{$p.t(\'person\', \'personenkennzeichen\')}}{{data.matrikelnr}}
    {{$p.t(\'lehre\', \'studienjahr\')}}{{data.studienjahr_kurzbz}}
    {{$p.t(\'lehre\', \'studiensemester\')}}{{data.studiensemester_kurzbz}}
    {{$p.t(\'lehre\', \'semester\')}}{{data.semester}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t
    {{$p.t(\'studierendenantrag\', \'antrag_grund\')}}:
    \n\t\t\t\t\n\t\t\t\t\t
    {{data?.grund}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_create_Abmeldung\')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t'},m={getDetails:(t,e)=>({method:"get",url:"/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e)}),create:(t,e,n,r,s)=>({method:"post",url:"/api/frontend/v1/studstatus/unterbrechung/createAntrag",params:{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:r,attachment:s}}),cancel:t=>({method:"post",url:"/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",params:{antrag_id:t}})},v={components:{CoreFetchCmpt:s,CoreForm:i,FormValidation:o,FormInput:u},emits:["setInfos","setStatus"],props:{prestudentId:Number,studierendenantragId:Number},data:()=>({data:null,saving:!1,attachment:[],stsem:null,currentWiedereinstieg:"",siteUrl:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router}),computed:{statusSeverity(){switch(this.data.status){case"Erstellt":return"info";case"Pause":case"Zurueckgezogen":case"Abgelehnt":return"danger";case"Genehmigt":case"EmailVersandt":return"success";default:return"warning"}},datumWsFormatted(){let t="";return this.data.datum_wiedereinstieg?t=this.data.datum_wiedereinstieg:null!==this.stsem&&this.data.studiensemester[this.stsem].wiedereinstieg&&(t=this.data.studiensemester[this.stsem].wiedereinstieg),""===t?t:new Date(t).toLocaleDateString()},semesterOffsets(){return this.data&&this.data.studiensemester?Object.values(this.data.studiensemester).filter(t=>!t.disabled).map(t=>t.studiensemester_kurzbz):[]},semester(){return this.stsem?this.data.semester+this.semesterOffsets.indexOf(this.stsem):""}},methods:{load(){return this.$api.call(m.getDetails(this.studierendenantragId,this.prestudentId)).then(t=>{if(this.data=t.data,this.data.status){const t="Pause"==this.data.status&&"Studienabbruch"==this.data.status_insertvon?Vue.computed(()=>{let t=this.$p.t("studierendenantrag/status_stop");return this.$p.t("studierendenantrag","status_x",{status:t})}):Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp}));this.$emit("setStatus",{msg:t,severity:this.statusSeverity})}return t})},createAntrag(){this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_saving")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(m.create(null!==this.stsem&&this.data.studiensemester[this.stsem].studiensemester_kurzbz,this.data.prestudent_id,this.data.grund,null!==this.stsem&&this.currentWiedereinstieg,this.attachment)).then(t=>{Number.isInteger(t.data)&&(document.location+="/"+t.data),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_created")})),severity:"info"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})},cancelAntrag(){this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_cancelling")})),severity:"warning"}),this.saving=!0,this.$refs.form.clearValidation(),this.$refs.form.call(m.cancel(this.data.studierendenantrag_id)).then(t=>{Number.isInteger(t.data)&&(document.location=document.location.replace(/unterbrechung\/([0-9]*)\/[0-9]*[\/]?$/,"unterbrechung/$1")+"/"+t.data),this.data=t.data,this.data.status?this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}):this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_cancelled")})),severity:"danger"}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})}},template:'\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t(\'lehre\', \'studiengang\')}}{{data.bezeichnung}}
    {{$p.t(\'lehre\', \'organisationsform\')}}{{data.orgform_bezeichnung}}
    {{$p.t(\'projektarbeitsbeurteilung\', \'nameStudierende\')}}{{data.name}}
    {{$p.t(\'person\', \'personenkennzeichen\')}}{{data.matrikelnr}}
    {{$p.t(\'lehre\', \'studienjahr\')}}{{data.studienjahr_kurzbz}}{{stsem === null ? \'\' : data.studiensemester[stsem].studienjahr_kurzbz}}
    {{$p.t(\'lehre\', \'semester\')}}{{data.semester}}{{semester}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{{data.studiensemester_kurzbz}}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{{datumWsFormatted}}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {{$p.t(\'studierendenantrag\', \'antrag_dateianhaenge\')}} \n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'no_attachments\')}}\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_create_Unterbrechung\')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'btn_cancel\')}}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t
    '},A={getDetails:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t}),getLvs:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getLvs/"+t}),create:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/createAntrag",params:{prestudent_id:t,studiensemester:e}}),cancel:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/cancelAntrag",params:{prestudent_id:t,studiensemester:e}}),saveLvs:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/saveLvs",params:{forbiddenLvs:t,mandatoryLvs:e}})},b={components:{CoreFetchCmpt:s,CoreForm:i,FormValidation:o},emits:["setInfos","setStatus","update:status"],props:{status:String,prestudentId:Number,studierendenantragId:Number},data:()=>({data:null,saving:!1,infos:[]}),computed:{statusSeverity(){switch(this.data.status){case"Offen":case"Erstellt":case"ErsteAufforderungVersandt":return"info";case"Genehmigt":return"success";case"Pause":case"Verzichtet":case"Abgemeldet":return"danger";default:return"warning"}},datumPruefungFormatted(){if(!this.data.pruefungsdatum)return"";return new Date(this.data.pruefungsdatum).toLocaleDateString()}},methods:{load(){return this.$api.call(A.getDetails(this.prestudentId)).then(t=>{this.data=t.data,this.data.status&&"ErsteAufforderungVersandt"!=this.data.status&&"ZweiteAufforderungVersandt"!=this.data.status||(this.data.status="Offen",this.data.statustyp=this.$p.t("studierendenantrag","status_open")),this.$emit("update:status",this.data.status);const e="Pause"==this.data.status&&"Studienabbruch"==this.data.status_insertvon?Vue.computed(()=>{let t=this.$p.t("studierendenantrag/status_stop");return this.$p.t("studierendenantrag","status_x",{status:t})}):Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp}));return this.$emit("setStatus",{msg:e,severity:this.statusSeverity}),t})},createAntrag(){this.createAntragWithStatus(!0)},cancelAntrag(){this.createAntragWithStatus(!1)},createAntragWithStatus(t){let e=t?"create":"cancel",n=t?"Erstellt":"Verzichtet";this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_saving")})),severity:"warning"}),this.saving=!0,this.$refs.form.call(A[e](this.data.prestudent_id,this.data.studiensemester_kurzbz)).then(t=>{!0===t.data&&(document.location+=""),this.data=t.data,this.data.status||(this.data.status=n),this.$emit("update:status",this.data.status),this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.data.statustyp})),severity:this.statusSeverity}),this.saving=!1}).catch(t=>{this.$emit("setStatus",{msg:Vue.computed(()=>this.$p.t("studierendenantrag","status_x",{status:this.$p.t("studierendenantrag","status_error")})),severity:"danger"}),this.saving=!1,this.$fhcAlert.handleSystemError(t)})}},mounted(){this.infos=[...Array(5).keys()].map(t=>({body:Vue.computed(()=>this.$p.t("studierendenantrag","infotext_Wiederholung_"+t))})),this.$emit("setInfos",this.infos)},template:'\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t(\'lehre\', \'studiengang\')}}{{data.bezeichnung}}
    {{$p.t(\'lehre\', \'organisationsform\')}}{{data.orgform_bezeichnung}}
    {{$p.t(\'projektarbeitsbeurteilung\', \'nameStudierende\')}}{{data.name}}
    {{$p.t(\'person\', \'personenkennzeichen\')}}{{data.matrikelnr}}
    {{$p.t(\'studierendenantrag\', \'antrag_Wiederholung_pruefung\')}}{{data.lvbezeichnung}}
    {{$p.t(\'studierendenantrag\', \'antrag_Wiederholung_pruefung_date\')}}{{datumPruefungFormatted}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag/antrag_Wiederholung_button_yes\')}}\n\t\t\t\t\t\n\x3c!--\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t(\'studierendenantrag/antrag_Wiederholung_button_no\')}}\n\t\t\t\t\t--\x3e\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t'},_={components:{StudierendenantragAbmeldung:c,StudierendenantragAbmeldungStgl:f,StudierendenantragUnterbrechung:v,StudierendenantragWiederholung:b},emits:["update:infoArray","update:statusMsg","update:statusSeverity"],props:{antragType:String,prestudentId:Number,studierendenantragId:Number,infoArray:Array,statusMsg:String,statusSeverity:String},data:()=>({status:""}),computed:{typeComponent(){return"Studierendenantrag"+this.antragType},infoText(){return this.$p.t("studierendenantrag/info_"+this.antragType+"_"+this.status)}},template:'\n\t
    \n\t\t
    \n\t\t {{$p.t(\'studierendenantrag\', \'title_\' + antragType)}}\n\t\t
    \n\t\t\n\t\t\n\t\t\n\t
    \n\t'},$={props:{msg:String,severity:String},computed:{severityClass(){return"alert-"+this.severity}},template:'\n\t\n\t'},y={props:{infos:Array},template:'\n\t
    \n\t\t\n\t
    \n\t'},S={search(t,e){return this.$fhcApi.post("/api/frontend/v1/searchbar/search",t,e)},searchAdvanced(t,e){return this.$fhcApi.post("/api/frontend/v1/searchbar/searchAdvanced",t,e)},searchdummy(t){return this.$fhcApi.post("public/js/apps/api/dummyapi.php/Search",t)}},C={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const n={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",n)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},k={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})}},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})}},E={abmeldung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n},{errorHandling:"strict"})},cancel(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t.studierendenantrag_id},{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t})}},unterbrechung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n,r,s){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:r,attachment:s},{errorHandling:"strict"})},cancel(t){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:t},{errorHandling:"strict"})}},wiederholung:{getDetails(t){const e="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t;return this.$fhcApi.get(e)},getLvs(t){const e="/api/frontend/v1/studstatus/wiederholung/getLvs/"+t;return this.$fhcApi.get(e)},create(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},cancel(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},saveLvs(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:t,mandatoryLvs:e})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(t,e,n){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+t).then(t=>t.data)},getHistory(t){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+t)},getPrestudents(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:t},{signal:e,timeout:3e4})},approve(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t)},reject(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t)},reopen(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t)},pause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t)},unpause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t)},object(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t)},approveObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t)},denyObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t)}}},P={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",{})}},F={ //! API calls for profil update requests -getStatus:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getStatus",{})},getTopic:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getTopic",{})},acceptProfilRequest:function({profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:a}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",{profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:a})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:n,status_message:r}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/denyProfilRequest",{profil_update_id:t,uid:e,topic:n,status_message:r})},insertFile:function(t,e=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,t)},getProfilRequestFiles:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`,{})},selectProfilRequest:function(t=null,e=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...t?{uid:t}:{},...e?{id:e}:{}})},insertProfilRequest:function(t,e,n=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/insertProfilRequest",{topic:t,payload:e,...n?{fileID:n}:{}})},updateProfilRequest:function(t,e,n,r=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/updateProfilRequest",{topic:t,payload:e,ID:n,...r?{fileID:r}:{}})},deleteProfilRequest:function(t){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",{requestID:t})}},D={getRoomInfo(t,e,n){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:n})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,n){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:n})},getLvPlanReservierungen(t,e){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:t,end_date:e})},getLehreinheitStudiensemester(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${t}`,{})},studiensemesterDateInterval(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${t}`,{})},LvPlanEvents(t,e,n){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:n})}},O={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(t){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:t})}}},students:{uid(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},prestudent(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},person(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},verband(t){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+t)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(t){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:t})}},konto:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/konto/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id),only_open:e.filter,studiengang_kz:e.studiengang_kz_intern?e.stg_kz:""}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},checkDoubles(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/checkDoubles",e,{confirmErrorHandler:t=>!0})},insert(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/insert",e)},counter(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",t)},edit(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/update",e)},delete(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:t})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+n.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+n.id)},addNewAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,n)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,n)},deleteAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:t})},getPlaces(t){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+t)},getFirmen(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+t)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+n.id)},addNewBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,n)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,n)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+n.id)},addNewContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,n)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,n)},deleteContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:t})},getStandorteByFirma(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+t)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(t,e){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e))},updatePrestudent(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,n)},getBezeichnungZGV(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungZGV/")},getBezeichnungMZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungMZgv/")},getBezeichnungDZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungDZgv/")},getStgs(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStgs/")},getAusbildung(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAusbildung/")},getAufmerksamdurch(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAufmerksamdurch/")},getBerufstaetigkeit(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBerufstaetigkeit/")},getTypenStg(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getTypenStg/")},getBisstandort(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBisstandort/")},getHistoryPrestudent(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+n.id)},getMaxSem(t){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:t})},advanceStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+n+"/"+r)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+n+"/"+r)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+n+"/"+r)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+n.id)}},status:{insertStatus(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,n)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+n+"/"+r)},updateStatus(t,{prestudent_id:e,status_kurzbz:n,studiensemester_kurzbz:r,ausbildungssemester:a},s){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+n+"/"+r+"/"+a,s)},getStudienplaene(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+t)},getStudiengang(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+t)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+t,e,{errorHeader:t})},changeStatus(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+t,e,{errorHeader:t})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(t,e){let n="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(n)},save(t,e,n,r){let a="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(n);return this.$fhcApi.post(t,a,r)}},exam:{getPruefungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+n.id)},loadPruefung(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+t)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",t)},getLvsByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+t)},getLvsandLesByStudent(t,e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+t+"/"+e)},getLvsAndMas(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+t)},getMitarbeiterLv(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",t)},addPruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/insertPruefung/",e)},updatePruefung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,n)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+n.id)},addNewAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",e)},loadAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:t})},updateAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",e)},deleteAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:t})},getTypenAbschlusspruefung(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/")},getTypenAntritte(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/")},getBeurteilungen(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/")},getAkadGrade(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:t})},getTypStudiengang(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:t})},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+t)},getPruefer(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:t})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(t,e){let n="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getTeacherProposal(t,e){let n="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getRepeaterGrades(t,e){let n="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r,lehrveranstaltung_bezeichnung:a}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r},{errorHeader:a})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:t,lv_bezeichnung:e}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:t},{errorHeader:e})},getGradeFromPoints(t,e,n,r){const a=r?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:n},a)}},mobility:{getMobilitaeten(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+n.id)},getProgramsMobility(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getProgramsMobility/")},addNewMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/insertMobility/",e)},loadMobility(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+t)},updateMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/updateMobility/",e)},deleteMobility(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+t)},getLVList(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+t)},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",t)},getLvsandLesByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+t)},getPurposes(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+n.id)},getSupports(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+n.id)},getListPurposes(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListPurposes/")},getListSupports(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListSupports/")},deleteMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+t.bisio_id,t)},addMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+t.bisio_id,t)},deleteMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+t.bisio_id,t)},addMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+t.bisio_id,t)}},archiv:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/archiv/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id)}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(t){return this.$fhcApi.post("api/frontend/v1/documents/archive",t)},archiveSigned(t){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",t)},update(t){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",t)},delete({akte_id:t,studiengang_kz:e}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:t,studiengang_kz:e})}},documents:{getDocumentsUnaccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+n.id+"/"+n.studiengang_kz)},getDocumentsAccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+n.id+"/"+n.studiengang_kz)},deleteZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},createZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},loadAkte(t){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+t)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+t,e)},deleteFile(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+t)},uploadFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+t,e)}},exemptions:{getAnrechnungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+n.id)},getLehrveranstaltungen(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+t)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+t)},getLektoren(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+t)},addNewAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",e)},loadAnrechnung(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+t)},editAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",e)},deleteAnrechnung(t){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+t)}},jointstudies:{getStudies(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+n.id)},getTypenMobility(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/")},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/")},getStudyprograms(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/")},getListPartner(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/")},getStatiPrestudent(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/")},loadStudy(t){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+t)},insertStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",e)},updateStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",e)},deleteStudy(t){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+t)}},courselist:{getCourselist(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+n.student_uid+"/"+n.start_date+"/"+n.end_date+"/"+n.group_consecutiveHours+"/"+n.dbStundenplanTable)},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStudiensemester/")}},configStudent(){return this.$fhcApi.get("api/frontend/v1/stv/config/student")},configStudents(){return this.$fhcApi.get("api/frontend/v1/stv/config/students")}},w={person:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,n)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,n)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+t)},isBerechtigt(t,e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}}},V={person:{getAllBetriebsmittel(t,e,n){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+n.type+"/"+n.id)},addNewBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,n)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,n)},deleteBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+t)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(t){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+t)}}},z={updatePersonUnrulyStatus(t,e){try{const n={person_id:t,unruly:e},r="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(r,n,null)}catch(t){throw t}},filterPerson(t,e=""){try{const n=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(n,t)}catch(t){throw t}}},L={getContentID(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/ContentID",{ort_kurzbz:t})},getRooms(t,e,n,r,a=0){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getRooms",{datum:t,von:e,bis:n,typ:r,personenanzahl:a})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},j={content(t,e=null,n=null,r=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...n?{sprache:n}:{},...r?{sichtbar:r}:{}})},getNews(t=1,e=10,n){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:n})},news(t){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:t})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},R={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}`,{})},getStudentProjektarbeiten(t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${t}`,{})},getStudentProjektabgaben(t){return this.$fhcApi.get("/api/frontend/v1/Lehre/getStudentProjektabgaben",{projektarbeit_id:t.projektarbeit_id,student_uid:t.student_uid})},postStudentProjektarbeitEndupload(t){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload",t,{Headers:{"Content-Type":"multipart/form-data"}})},postStudentProjektarbeitZwischenabgabe(t){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe",t,{Headers:{"Content-Type":"multipart/form-data"}})},getStudentProjektarbeitAbgabeFile(t,e){const n=`/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${t}&student_uid=${e}`;window.location=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+n},getMitarbeiterProjektarbeiten(t,e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${e}`,{})},postProjektarbeitAbgabe(t){const e={paabgabe_id:t.paabgabe_id,paabgabetyp_kurzbz:t.bezeichnung.paabgabetyp_kurzbz,datum:t.datum,fixtermin:t.fixtermin,insertvon:t.insertvon,kurzbz:t.kurzbz,projektarbeit_id:t.projektarbeit_id};return this.$fhcApi.post("/api/frontend/v1/Lehre/postProjektarbeitAbgabe",e,null)},deleteProjektarbeitAbgabe(t){const e={paabgabe_id:t};return this.$fhcApi.post("/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe",e,null)},postSerientermin(t,e,n,r,a){const s={datum:t,paabgabetyp_kurzbz:e,bezeichnung:n,kurzbz:r,projektarbeit_ids:a};return this.$fhcApi.post("/api/frontend/v1/Lehre/postSerientermin",s,null)},fetchDeadlines(t){const e={person_id:t};return this.$fhcApi.post("/api/frontend/v1/Lehre/fetchDeadlines",e,null)}},x={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,n){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+n.id+"/"+n.type+"/"+n.size+"/"+n.page)},getVorlagen(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getVorlagen/")},getMsgVarsLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/")},getMessageVarsPerson(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+t.id+"/"+t.type_id)},getMsgVarsPrestudent(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+t.id+"/"+t.type_id)},getPersonId(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id)},getUid(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+t.id+"/"+t.type_id)},getDataVorlage(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+t)},getNameOfDefaultRecipient(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+t.id+"/"+t.type_id)},getPreviewText(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+t.id+"/"+t.type_id,e)},getReplyData(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+t)},sendMessageFromModalContext(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,n)},sendMessage(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+t,e)},deleteMessage(t){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+t)}}},B={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},J={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,n=void 0,r=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:n,studienplan:r})},getStudiengaengeForStudienSemester:function(t){return this.$fhcApi.get(`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${t}`,{})},getStudienplaeneBySemester:function(t,e){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienplaeneBySemester",{studiengang:t,studiensemester:e})},getLvPlanForStudiensemester:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${t}/${e}`,{})},getLvEvaluierungInfo:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/Studium/getLvEvaluierungInfo/${t}/${e}`,{})}},I={search:S,phrasen:k,navigation:C,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:T,studstatus:P,profil:E,profilUpdate:F,lvPlan:D,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(t){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${t}`,{})},update:function({bookmark_id:t,url:e,title:n,tag:r=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:n})},insert:function({url:t,title:e,tag:n}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:n})}},stv:O,notiz:w,betriebsmittel:V,checkperson:z,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:L,cms:j,lehre:R,addons:x,messages:H,vorlagen:B,addons:x,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",{})}},studium:J,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 n(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function r(t){const e=t.data;return delete t.data,e.meta?e.meta.response=t:e.meta={response:t},e}FHC_JS_DATA_STORAGE_OBJECT.app_root,FHC_JS_DATA_STORAGE_OBJECT.ci_router;const a=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});a.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),a.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),r(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),a.getUri({url:t})),get:(t,e,r,s)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,r,s]=n(t,e,r,s),r&&(s?s.params=r:s={params:r}),a.get(e,s)),post:(t,e,r,s)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,r,s]=n(t,e,r,s),a.post(e,r,s)),_defaultErrorHandlers:{validation(e,n){const r=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(r.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>r.alertDefault("error",t,e,!0)),!1)},general(e,n){const r=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n.alertSystemError(r)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var r="";r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),n.alertSystemError(r)},db(e){const n=t.config.globalProperties.$fhcAlert;var r="";void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),n.alertSystemError(r)},auth(e,n){const r=t.config.globalProperties.$fhcAlert;var a="";a+="Controller name: "+e.controller+"\n",a+="Method name: "+e.method+"\n",a+="Required permissions: "+e.required_permissions,n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertDefault("error",e.message,a)}}};class s{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,r,a)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,r,a)),post:(e,n,r,a)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,r,a))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e,!0)}addEndpoints(t,e){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new s(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const i=new s(I);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),i.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=i,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};const M="error",G="retval",N={get:function(t,e,n=null){return N._axiosCall(t,e,"get",n)},post:function(t,e,n=null){return N._axiosCall(t,e,"post",n)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(M)||!t.hasOwnProperty(G)||0!=t.error)},isError:function(t){return!N.isSuccess(t)},hasData:function(t){return!(!N.isSuccess(t)||!("object"==typeof t[G]&&Object.keys(t[G]).length>0||"array"==typeof t[G]&&t[G].length>0||"string"==typeof t[G]&&""!=t[G].trim()||"number"==typeof t[G]))},getData:function(t){return N.hasData(t)?t[G]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(G)?t[G]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(M)?t[M]:1},_generateRouterURI:function(t){var e=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(e=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+t),e},_printDebug:function(t,e,n){},_axiosCall:function(t,e,n,r){let a={method:n,url:N._generateRouterURI(t),timeout:5e3};if("get"==n?a.params=e:a.data=e,"object"==typeof r)for(var s in r)a[s]=r[s];return axios(a)}},q=document.createElement("div"),W=Vue.createApp({name:"FhcAlertApp",components:{PvToast:e,PvConfirm:n},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\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});W.use(t),W.use(r);const Z=W.mount(q);document.body.appendChild(q);var K={install:(t,e)=>{t.config.globalProperties.$p||t.use(at);const n={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);Z.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);Z.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);Z.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);Z.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);Z.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,n)=>{Z.$confirm.require({group:"fhcAlertConfirm",header:Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:Vue.computed(()=>t.config.globalProperties.$p.t("alert/confirm_delete")),acceptLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/loeschen")),acceptClass:"p-button-danger",rejectLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:"p-button-secondary",accept(){e(!0)},reject(){e(!1)}})}),confirm:e=>new Promise((n,r)=>{Z.$confirm.require({group:e?.group??"fhcAlertConfirm",header:e?.header??Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:e?.message??"",acceptLabel:e?.acceptLabel??"Ok",acceptClass:e?.acceptClass??"btn btn-primary",rejectLabel:e?.rejectLabel??Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:e?.rejectClass??"btn btn-outline-secondary",accept(){n(!0)},reject(){n(!1)}})}),alertDefault(t,e,n,r=!1,a=!1){let s={severity:t,summary:e,detail:n,html:a};r||(s.life=3e3),Z.$refs.toast.add(s)},alertMultiple(t,e="info",n="Info",r=!1,a=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,n,t,r,a)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return n.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(n.alertSystemError);if(!t.hasOwnProperty("handled")||!t.handled){if("object"==typeof t&&null!==t){let e="";return t.hasOwnProperty("response")&&t.response?.data?.retval?e+="Error Message: "+(t.response.data.retval.message||t.response.data.retval)+"\r\n":t.hasOwnProperty("message")&&(e+="Error Message: "+t.message.toUpperCase()+"\r\n"),t.hasOwnProperty("config")&&t.config.hasOwnProperty("url")&&(e+="Error ConfigURL: "+t.config.url+"\r\n"),t.hasOwnProperty("stack")&&(e+="Error Stack: "+t.stack+"\r\n"),""==e&&(e="Error Message: "+JSON.stringify(t)+"\r\n"),e+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,n.alertSystemError(e)}n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method)}}},handleSystemMessage(t){if("string"==typeof t)return n.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(n.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method):t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))},resetFormValidation(t){const e=new Event("fhc-form-reset");t.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(t=>t.dispatchEvent(e))},handleFormValidation(t,e){if(void 0===e){if(t&&t.nodeType===Node.ELEMENT_NODE)return e=>n.handleFormValidation(e,t)}else if(400==t?.response?.status){let r=N.getError(t.response.data);"object"!=typeof r&&(r=t.response.data),n.resetFormValidation(e);const a=Object.entries(r).filter(([t,n])=>{const r=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!r||(r.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:n})),!1)}).map(t=>t[1]),s=e.querySelector("[data-fhc-form-error]");return void(s&&a.length?s.dispatchEvent(new CustomEvent("fhc-form-error",{detail:a})):a.forEach(n.alertError))}if(400==t?.response?.status){let e=N.getError(t.response.data);n.alertError("object"==typeof e?Object.values(e):e)}else n.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=n,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}},Q={install:(t,e)=>{if(t.config.globalProperties.$api)return;function n(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,n])=>n.forEach(n=>e(n,t)))}t.config.globalProperties.$fhcAlert||t.use(K);let r={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(t,e){t.clearValidation(),e.forEach(e=>t.setFeedback(!1,e.messages||e.message))},async toast(e){const n=t.config.globalProperties.$p;if(!n)return Promise.reject("Phrasen plugin not loaded!");async function r(t){t=t.reduce((t,e)=>{switch(e.type){case"not_found":case"site_failed":e.message?t[e.message]=[e.url]:t._default=[e.url];break;case"general":t._default||(t._default=[]),t._default.push(e.message);break;case"validation":Object.entries(e.messages).forEach(([e,n])=>{t[e]||(t[e]=[]),Array.isArray(n)?t[e].push(...n):t[e].push(n)})}return t},{});let e=0;const r=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,r])=>{if("_default"==t){await n.loadCategory("dashboard");t='
    '+n.t("dashboard/general")+"
    "}else t="
    "+t+"
    ";return e+=r.length,t+"
    "+r.join("
    ")+"
    "}));return{counter:e,msgs:r}}let a,s;Array.isArray(e)?({counter:a,msgs:s}=await r(e)):({counter:a,msgs:s}=await Object.entries(e).reduce(async(t,[e,n])=>{const a=await t,{counter:s,msgs:i}=await r(n);return a.counter+=s,a.msgs.push("
    "+e+"
    "+i.join("")+"
    "),a},Promise.resolve({counter:0,msgs:[]}))),await n.loadCategory("ui");const i=n.t("ui/n_errors",{n:a});t.config.globalProperties.$fhcAlert.alertDefault("error",i,"
    "+s.join("")+"
    ",!0,!0)},php(e){n(e,(e,n)=>{var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",n,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",n,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n&&(r=n+"\n\n"+r),t.config.globalProperties.$fhcAlert.alertSystemError(r)}})},exception(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},db(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},auth(e){n(e,(e,n)=>{n?n+=": "+e.message:n=e.message;var r="";r+="Controller name: "+e.controller+"\n",r+="Method name: "+e.method+"\n",r+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",n,r,!0)})}}};function a(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function s(t){if("string"==typeof t.data||t.data instanceof String)return s({data:t});const e=t.data;return delete t.data,e?(e.meta?e.meta.response=t:e.meta={response:t},e):{meta:{response:t},data:null}}function i(t){if(!1===t||"off"===t)return{...r,success:!1,fail:!1};if(!t||!0===t)return{...r};if("success"===t)return{...r,fail:!1};if("fail"===t)return{...r,success:!1};const{success:e,fail:n,handler:a,combine:s}=t;return t={...r},Object.entries({fail:n,success:e}).forEach(([e,n])=>{void 0!==n&&(t[e]=n)}),Object.entries({handler:a,combine:s}).forEach(([e,n])=>{void 0!==n&&(t[e]={...t[e],...n})}),t}function o(t){const e=i(t?.errorHandling);if(t?.form){const n=e.handler.form;e.handler={...e.handler,form:e=>n(t.form,e)}}else e.combine={...e.combine,form:[]};return e}function d(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 u(t,e){const n={},r=[];if(null==e)return{};for(;e.length;)r.push(e.pop());for(var a of r){let r=a.type,i=null;for(var s in t.combine){let e=t.combine[s].includes(r),n=t.handler[s];if(e&&n&&(i=s,"form"==i))break}i&&(r=i);t.handler[r]?(n[r]||(n[r]=[]),Array.isArray(a)?n[r].push(...a):n[r].push(a)):e.push(a)}return n}void 0!==e?.errorHandling&&(r=i(e.errorHandling));const l=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});l.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),l.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[n.type])(n,e.config))),s(e)),t=>{if("ERR_CANCELED"==t.code)return Promise.reject({handled:!0,...t});const e=o(t.config);if(!e.fail)return Promise.reject(t);const n=d(t),r=u(e,n);for(var a in r)e.handler[a](r[a]);return n.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>l.getUri({url:t}),get:(t,e,n,r)=>([e,n,r]=a(t,e,n,r),n&&(r?r.params=n:r={params:n}),l.get(e,r)),post:(t,e,n,r)=>([e,n,r]=a(t,e,n,r),l.post(e,n,r)),call(e,n,r){if(Array.isArray(e)){const s=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),s.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=a(r,void 0,void 0,n||{}),s=o(e);if(!s.success&&!s.fail)return t;const i={};for(var l of t){const[t,e]="fulfilled"===l.status?[s.success,l.value]:[s.fail,l.reason];if(!t)return;const n=u(s,d(e));for(var p in n)i[p]?i[p][e.config.errorHeader]=n[p]:i[p]={[e.config.errorHeader]:n[p]}}for(var c in i)s.handler[c](i[c]);return t})}let{method:s,url:i,params:l,config:p}=e;return void 0!==n&&(p=n),s||(s="get"),s.toLowerCase&&(s=s.toLowerCase()),"get"==s?this.get(r,i,l,p):"post"==s?this.post(r,i,l,p):void console.error("FhcApi: method not allowed:",s)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},Y={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 X=Vue.reactive({}),tt={};let et=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),nt=Vue.computed(()=>et.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==et.value).LC_Time:null);const rt={user_language:et,user_locale:nt,setLanguage(t){const e=Object.keys(X);return this.config.globalProperties.$api.call(Y.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{X[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(Y.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=>{X[t]=e})),tt[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let r=Vue.computed(()=>X[t]?function(t,e,n){let r=X[t][e];return r?(n&&(r=r.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),r):"<< PHRASE "+e+">>"}(t,e,n):"");return X[t]||this.loadCategory(t),r.value}};var at={install(t,e){t.config.globalProperties.$fhcApi||t.use(U),t.config.globalProperties.$api||t.use(Q),t.config.globalProperties.$p={t:rt.t,loadCategory:e=>rt.loadCategory.call(t,e),setLanguage:e=>rt.setLanguage.call(t,e),user_language:et,user_locale:nt,t_ref:rt.t_ref},t.provide("$p",t.config.globalProperties.$p)}};Vue.createApp({name:"AntragApp",components:{StudierendenantragAntrag:_,StudierendenantragStatus:$,StudierendenantragInfoblock:y},data:()=>({status:{msg:"",severity:""},infoArray:[]})}).use(at).mount("#wrapper");var st={emits:["update:modelValue"],props:{modelValue:String},computed:{valueAsBase64DataString(){return this.modelValue&&"data:image"!=this.modelValue.substring(0,10)?"data:image/jpeg;charset=utf-8;base64,"+this.modelValue:this.modelValue}},methods:{openUploadDialog(){this.$refs.fileInput.click()},pickFile(){let t=this.$refs.fileInput.files;if(t&&t[0]){let e=new FileReader;e.onload=t=>{this.$emit("update:modelValue",t.target.result)},e.readAsDataURL(t[0])}},deleteImage(){this.$emit("update:modelValue","")}},template:'\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    '},it=Object.freeze({__proto__:null,default:st}),ot={components:{DmsItem:{emits:["delete"],props:{modelValue:{type:[File,Object],required:!0}},data:()=>({preview:""}),watch:{modelValue(t){"application/x.fhc-dms+json"==t.type&&t.text().then(t=>{const e=JSON.parse(t);this.preview=e.preview||""})}},template:'\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • '}},emits:["update:modelValue"],props:{modelValue:{type:[FileList,Array],required:!0},multiple:Boolean,id:String,name:String,inputClass:[String,Array,Object],noList:Boolean,accept:{type:String,default:""},disabled:{type:Boolean,default:!1}},methods:{stringifyFile:t=>JSON.stringify({lastModified:t.lastModified,lastModifiedDate:t.lastModifiedDate,name:t.name,size:t.size,type:t.type}),addFiles(t){if(!this.multiple)return this.$emit("update:modelValue",t.target.files);const e=new DataTransfer,n=[];for(var r of this.modelValue)e.items.add(r),n.push(this.stringifyFile(r));for(var r of t.target.files)n.indexOf(this.stringifyFile(r))<0&&e.items.add(r);this.$emit("update:modelValue",e.files)},removeFile(t){const e=Array.from(this.modelValue)[t],n=new DataTransfer;for(var r of this.modelValue)r!==e&&n.items.add(r);this.$emit("update:modelValue",n.files)}},watch:{modelValue(t){if(!t)return;if(t instanceof FileList){if(!this.$refs.upload)return;return this.$refs.upload.files=t}const e=new DataTransfer;for(var n of t)if(n instanceof File)e.items.add(n);else{const t=new File([JSON.stringify(n)],n.name,{type:"application/x.fhc-dms+json"});e.items.add(t)}this.$emit("update:modelValue",e.files)}},template:'\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    '},dt=Object.freeze({__proto__:null,default:ot}); +getStatus:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getStatus",{})},getTopic:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getTopic",{})},acceptProfilRequest:function({profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:s}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",{profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:s})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:n,status_message:r}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/denyProfilRequest",{profil_update_id:t,uid:e,topic:n,status_message:r})},insertFile:function(t,e=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,t)},getProfilRequestFiles:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`,{})},selectProfilRequest:function(t=null,e=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...t?{uid:t}:{},...e?{id:e}:{}})},insertProfilRequest:function(t,e,n=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/insertProfilRequest",{topic:t,payload:e,...n?{fileID:n}:{}})},updateProfilRequest:function(t,e,n,r=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/updateProfilRequest",{topic:t,payload:e,ID:n,...r?{fileID:r}:{}})},deleteProfilRequest:function(t){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",{requestID:t})}},D={getRoomInfo(t,e,n){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:n})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,n){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:n})},getLvPlanReservierungen(t,e){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:t,end_date:e})},getLehreinheitStudiensemester(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${t}`,{})},studiensemesterDateInterval(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${t}`,{})},LvPlanEvents(t,e,n){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:n})}},O={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(t){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:t})}}},students:{uid(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},prestudent(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},person(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},verband(t){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+t)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(t){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:t})}},konto:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/konto/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id),only_open:e.filter,studiengang_kz:e.studiengang_kz_intern?e.stg_kz:""}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},checkDoubles(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/checkDoubles",e,{confirmErrorHandler:t=>!0})},insert(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/insert",e)},counter(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",t)},edit(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/update",e)},delete(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:t})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+n.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+n.id)},addNewAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,n)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,n)},deleteAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:t})},getPlaces(t){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+t)},getFirmen(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+t)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+n.id)},addNewBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,n)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,n)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+n.id)},addNewContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,n)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,n)},deleteContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:t})},getStandorteByFirma(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+t)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(t,e){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e))},updatePrestudent(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,n)},getBezeichnungZGV(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungZGV/")},getBezeichnungMZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungMZgv/")},getBezeichnungDZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungDZgv/")},getStgs(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStgs/")},getAusbildung(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAusbildung/")},getAufmerksamdurch(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAufmerksamdurch/")},getBerufstaetigkeit(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBerufstaetigkeit/")},getTypenStg(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getTypenStg/")},getBisstandort(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBisstandort/")},getHistoryPrestudent(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+n.id)},getMaxSem(t){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:t})},advanceStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+n+"/"+r)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+n+"/"+r)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+n+"/"+r)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+n.id)}},status:{insertStatus(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,n)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+n+"/"+r)},updateStatus(t,{prestudent_id:e,status_kurzbz:n,studiensemester_kurzbz:r,ausbildungssemester:s},a){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+n+"/"+r+"/"+s,a)},getStudienplaene(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+t)},getStudiengang(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+t)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+t,e,{errorHeader:t})},changeStatus(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+t,e,{errorHeader:t})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(t,e){let n="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(n)},save(t,e,n,r){let s="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(n);return this.$fhcApi.post(t,s,r)}},exam:{getPruefungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+n.id)},loadPruefung(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+t)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",t)},getLvsByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+t)},getLvsandLesByStudent(t,e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+t+"/"+e)},getLvsAndMas(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+t)},getMitarbeiterLv(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",t)},addPruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/insertPruefung/",e)},updatePruefung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,n)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+n.id)},addNewAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",e)},loadAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:t})},updateAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",e)},deleteAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:t})},getTypenAbschlusspruefung(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/")},getTypenAntritte(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/")},getBeurteilungen(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/")},getAkadGrade(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:t})},getTypStudiengang(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:t})},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+t)},getPruefer(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:t})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(t,e){let n="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getTeacherProposal(t,e){let n="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getRepeaterGrades(t,e){let n="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r,lehrveranstaltung_bezeichnung:s}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r},{errorHeader:s})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:t,lv_bezeichnung:e}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:t},{errorHeader:e})},getGradeFromPoints(t,e,n,r){const s=r?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:n},s)}},mobility:{getMobilitaeten(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+n.id)},getProgramsMobility(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getProgramsMobility/")},addNewMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/insertMobility/",e)},loadMobility(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+t)},updateMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/updateMobility/",e)},deleteMobility(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+t)},getLVList(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+t)},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",t)},getLvsandLesByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+t)},getPurposes(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+n.id)},getSupports(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+n.id)},getListPurposes(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListPurposes/")},getListSupports(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListSupports/")},deleteMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+t.bisio_id,t)},addMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+t.bisio_id,t)},deleteMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+t.bisio_id,t)},addMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+t.bisio_id,t)}},archiv:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/archiv/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id)}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(t){return this.$fhcApi.post("api/frontend/v1/documents/archive",t)},archiveSigned(t){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",t)},update(t){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",t)},delete({akte_id:t,studiengang_kz:e}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:t,studiengang_kz:e})}},documents:{getDocumentsUnaccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+n.id+"/"+n.studiengang_kz)},getDocumentsAccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+n.id+"/"+n.studiengang_kz)},deleteZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},createZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},loadAkte(t){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+t)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+t,e)},deleteFile(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+t)},uploadFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+t,e)}},exemptions:{getAnrechnungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+n.id)},getLehrveranstaltungen(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+t)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+t)},getLektoren(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+t)},addNewAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",e)},loadAnrechnung(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+t)},editAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",e)},deleteAnrechnung(t){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+t)}},jointstudies:{getStudies(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+n.id)},getTypenMobility(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/")},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/")},getStudyprograms(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/")},getListPartner(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/")},getStatiPrestudent(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/")},loadStudy(t){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+t)},insertStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",e)},updateStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",e)},deleteStudy(t){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+t)}},courselist:{getCourselist(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+n.student_uid+"/"+n.start_date+"/"+n.end_date+"/"+n.group_consecutiveHours+"/"+n.dbStundenplanTable)},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStudiensemester/")}},configStudent(){return this.$fhcApi.get("api/frontend/v1/stv/config/student")},configStudents(){return this.$fhcApi.get("api/frontend/v1/stv/config/students")}},w={person:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,n)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,n)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+t)},isBerechtigt(t,e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}}},V={person:{getAllBetriebsmittel(t,e,n){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+n.type+"/"+n.id)},addNewBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,n)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,n)},deleteBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+t)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(t){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+t)}}},R={updatePersonUnrulyStatus(t,e){try{const n={person_id:t,unruly:e},r="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(r,n,null)}catch(t){throw t}},filterPerson(t,e=""){try{const n=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(n,t)}catch(t){throw t}}},L={getContentID(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/ContentID",{ort_kurzbz:t})},getRooms(t,e,n,r,s=0){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getRooms",{datum:t,von:e,bis:n,typ:r,personenanzahl:s})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},x={content(t,e=null,n=null,r=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...n?{sprache:n}:{},...r?{sichtbar:r}:{}})},getNews(t=1,e=10,n){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:n})},news(t){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:t})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},z={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}`,{})}},H={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}`,{})}},B={person:{getMessages(t,e,n){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+n.id+"/"+n.type+"/"+n.size+"/"+n.page)},getVorlagen(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getVorlagen/")},getMsgVarsLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/")},getMessageVarsPerson(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+t.id+"/"+t.type_id)},getMsgVarsPrestudent(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+t.id+"/"+t.type_id)},getPersonId(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id)},getUid(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+t.id+"/"+t.type_id)},getDataVorlage(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+t)},getNameOfDefaultRecipient(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+t.id+"/"+t.type_id)},getPreviewText(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+t.id+"/"+t.type_id,e)},getReplyData(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+t)},sendMessageFromModalContext(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,n)},sendMessage(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+t,e)},deleteMessage(t){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+t)}}},J={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},j={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,n=void 0,r=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:n,studienplan:r})},getStudiengaengeForStudienSemester:function(t){return this.$fhcApi.get(`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${t}`,{})},getStudienplaeneBySemester:function(t,e){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienplaeneBySemester",{studiengang:t,studiensemester:e})},getLvPlanForStudiensemester:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${t}/${e}`,{})},getLvEvaluierungInfo:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/Studium/getLvEvaluierungInfo/${t}/${e}`,{})}},I={search:S,phrasen:C,navigation:k,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:T,studstatus:E,profil:P,profilUpdate:F,lvPlan:D,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(t){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${t}`,{})},update:function({bookmark_id:t,url:e,title:n,tag:r=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:n})},insert:function({url:t,title:e,tag:n}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:n})}},stv:O,notiz:w,betriebsmittel:V,checkperson:R,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:L,cms:x,lehre:z,addons:H,messages:B,vorlagen:J,addons:H,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",{})}},studium:j,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 n(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function r(t){const e=t.data;return delete t.data,e.meta?e.meta.response=t:e.meta={response:t},e}FHC_JS_DATA_STORAGE_OBJECT.app_root,FHC_JS_DATA_STORAGE_OBJECT.ci_router;const s=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});s.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),s.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),r(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),s.getUri({url:t})),get:(t,e,r,a)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,r,a]=n(t,e,r,a),r&&(a?a.params=r:a={params:r}),s.get(e,a)),post:(t,e,r,a)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,r,a]=n(t,e,r,a),s.post(e,r,a)),_defaultErrorHandlers:{validation(e,n){const r=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(r.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>r.alertDefault("error",t,e,!0)),!1)},general(e,n){const r=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n.alertSystemError(r)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var r="";r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),n.alertSystemError(r)},db(e){const n=t.config.globalProperties.$fhcAlert;var r="";void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),n.alertSystemError(r)},auth(e,n){const r=t.config.globalProperties.$fhcAlert;var s="";s+="Controller name: "+e.controller+"\n",s+="Method name: "+e.method+"\n",s+="Required permissions: "+e.required_permissions,n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertDefault("error",e.message,s)}}};class a{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,r,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,r,s)),post:(e,n,r,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,r,s))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e,!0)}addEndpoints(t,e){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new a(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const i=new a(I);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),i.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=i,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};const M="error",G="retval",N={get:function(t,e,n=null){return N._axiosCall(t,e,"get",n)},post:function(t,e,n=null){return N._axiosCall(t,e,"post",n)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(M)||!t.hasOwnProperty(G)||0!=t.error)},isError:function(t){return!N.isSuccess(t)},hasData:function(t){return!(!N.isSuccess(t)||!("object"==typeof t[G]&&Object.keys(t[G]).length>0||"array"==typeof t[G]&&t[G].length>0||"string"==typeof t[G]&&""!=t[G].trim()||"number"==typeof t[G]))},getData:function(t){return N.hasData(t)?t[G]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(G)?t[G]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(M)?t[M]:1},_generateRouterURI:function(t){var e=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(e=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+t),e},_printDebug:function(t,e,n){},_axiosCall:function(t,e,n,r){let s={method:n,url:N._generateRouterURI(t),timeout:5e3};if("get"==n?s.params=e:s.data=e,"object"==typeof r)for(var a in r)s[a]=r[a];return axios(s)}},q=document.createElement("div"),W=Vue.createApp({name:"FhcAlertApp",components:{PvToast:e,PvConfirm:n},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\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});W.use(t),W.use(r);const Z=W.mount(q);document.body.appendChild(q);var K={install:(t,e)=>{t.config.globalProperties.$p||t.use(st);const n={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);Z.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);Z.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);Z.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);Z.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);Z.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,n)=>{Z.$confirm.require({group:"fhcAlertConfirm",header:Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:Vue.computed(()=>t.config.globalProperties.$p.t("alert/confirm_delete")),acceptLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/loeschen")),acceptClass:"p-button-danger",rejectLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:"p-button-secondary",accept(){e(!0)},reject(){e(!1)}})}),confirm:e=>new Promise((n,r)=>{Z.$confirm.require({group:e?.group??"fhcAlertConfirm",header:e?.header??Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:e?.message??"",acceptLabel:e?.acceptLabel??"Ok",acceptClass:e?.acceptClass??"btn btn-primary",rejectLabel:e?.rejectLabel??Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:e?.rejectClass??"btn btn-outline-secondary",accept(){n(!0)},reject(){n(!1)}})}),alertDefault(t,e,n,r=!1,s=!1){let a={severity:t,summary:e,detail:n,html:s};r||(a.life=3e3),Z.$refs.toast.add(a)},alertMultiple(t,e="info",n="Info",r=!1,s=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,n,t,r,s)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return n.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(n.alertSystemError);if(!t.hasOwnProperty("handled")||!t.handled){if("object"==typeof t&&null!==t){let e="";return t.hasOwnProperty("response")&&t.response?.data?.retval?e+="Error Message: "+(t.response.data.retval.message||t.response.data.retval)+"\r\n":t.hasOwnProperty("message")&&(e+="Error Message: "+t.message.toUpperCase()+"\r\n"),t.hasOwnProperty("config")&&t.config.hasOwnProperty("url")&&(e+="Error ConfigURL: "+t.config.url+"\r\n"),t.hasOwnProperty("stack")&&(e+="Error Stack: "+t.stack+"\r\n"),""==e&&(e="Error Message: "+JSON.stringify(t)+"\r\n"),e+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,n.alertSystemError(e)}n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method)}}},handleSystemMessage(t){if("string"==typeof t)return n.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(n.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method):t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))},resetFormValidation(t){const e=new Event("fhc-form-reset");t.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(t=>t.dispatchEvent(e))},handleFormValidation(t,e){if(void 0===e){if(t&&t.nodeType===Node.ELEMENT_NODE)return e=>n.handleFormValidation(e,t)}else if(400==t?.response?.status){let r=N.getError(t.response.data);"object"!=typeof r&&(r=t.response.data),n.resetFormValidation(e);const s=Object.entries(r).filter(([t,n])=>{const r=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!r||(r.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:n})),!1)}).map(t=>t[1]),a=e.querySelector("[data-fhc-form-error]");return void(a&&s.length?a.dispatchEvent(new CustomEvent("fhc-form-error",{detail:s})):s.forEach(n.alertError))}if(400==t?.response?.status){let e=N.getError(t.response.data);n.alertError("object"==typeof e?Object.values(e):e)}else n.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=n,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}},Q={install:(t,e)=>{if(t.config.globalProperties.$api)return;function n(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,n])=>n.forEach(n=>e(n,t)))}t.config.globalProperties.$fhcAlert||t.use(K);let r={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(t,e){t.clearValidation(),e.forEach(e=>t.setFeedback(!1,e.messages||e.message))},async toast(e){const n=t.config.globalProperties.$p;if(!n)return Promise.reject("Phrasen plugin not loaded!");async function r(t){t=t.reduce((t,e)=>{switch(e.type){case"not_found":case"site_failed":e.message?t[e.message]=[e.url]:t._default=[e.url];break;case"general":t._default||(t._default=[]),t._default.push(e.message);break;case"validation":Object.entries(e.messages).forEach(([e,n])=>{t[e]||(t[e]=[]),Array.isArray(n)?t[e].push(...n):t[e].push(n)})}return t},{});let e=0;const r=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,r])=>{if("_default"==t){await n.loadCategory("dashboard");t='
    '+n.t("dashboard/general")+"
    "}else t="
    "+t+"
    ";return e+=r.length,t+"
    "+r.join("
    ")+"
    "}));return{counter:e,msgs:r}}let s,a;Array.isArray(e)?({counter:s,msgs:a}=await r(e)):({counter:s,msgs:a}=await Object.entries(e).reduce(async(t,[e,n])=>{const s=await t,{counter:a,msgs:i}=await r(n);return s.counter+=a,s.msgs.push("
    "+e+"
    "+i.join("")+"
    "),s},Promise.resolve({counter:0,msgs:[]}))),await n.loadCategory("ui");const i=n.t("ui/n_errors",{n:s});t.config.globalProperties.$fhcAlert.alertDefault("error",i,"
    "+a.join("")+"
    ",!0,!0)},php(e){n(e,(e,n)=>{var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",n,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",n,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n&&(r=n+"\n\n"+r),t.config.globalProperties.$fhcAlert.alertSystemError(r)}})},exception(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},db(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},auth(e){n(e,(e,n)=>{n?n+=": "+e.message:n=e.message;var r="";r+="Controller name: "+e.controller+"\n",r+="Method name: "+e.method+"\n",r+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",n,r,!0)})}}};function s(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function a(t){if("string"==typeof t.data||t.data instanceof String)return a({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 i(t){if(!1===t||"off"===t)return{...r,success:!1,fail:!1};if(!t||!0===t)return{...r};if("success"===t)return{...r,fail:!1};if("fail"===t)return{...r,success:!1};const{success:e,fail:n,handler:s,combine:a}=t;return t={...r},Object.entries({fail:n,success:e}).forEach(([e,n])=>{void 0!==n&&(t[e]=n)}),Object.entries({handler:s,combine:a}).forEach(([e,n])=>{void 0!==n&&(t[e]={...t[e],...n})}),t}function o(t){const e=i(t?.errorHandling);if(t?.form){const n=e.handler.form;e.handler={...e.handler,form:e=>n(t.form,e)}}else e.combine={...e.combine,form:[]};return e}function d(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 u(t,e){const n={},r=[];if(null==e)return{};for(;e.length;)r.push(e.pop());for(var s of r){let r=s.type,i=null;for(var a in t.combine){let e=t.combine[a].includes(r),n=t.handler[a];if(e&&n&&(i=a,"form"==i))break}i&&(r=i);t.handler[r]?(n[r]||(n[r]=[]),Array.isArray(s)?n[r].push(...s):n[r].push(s)):e.push(s)}return n}void 0!==e?.errorHandling&&(r=i(e.errorHandling));const l=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});l.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),l.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[n.type])(n,e.config))),a(e)),t=>{if("ERR_CANCELED"==t.code)return Promise.reject({handled:!0,...t});const e=o(t.config);if(!e.fail)return Promise.reject(t);const n=d(t),r=u(e,n);for(var s in r)e.handler[s](r[s]);return n.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>l.getUri({url:t}),get:(t,e,n,r)=>([e,n,r]=s(t,e,n,r),n&&(r?r.params=n:r={params:n}),l.get(e,r)),post:(t,e,n,r)=>([e,n,r]=s(t,e,n,r),l.post(e,n,r)),call(e,n,r){if(Array.isArray(e)){const a=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),a.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=s(r,void 0,void 0,n||{}),a=o(e);if(!a.success&&!a.fail)return t;const i={};for(var l of t){const[t,e]="fulfilled"===l.status?[a.success,l.value]:[a.fail,l.reason];if(!t)return;const n=u(a,d(e));for(var p in n)i[p]?i[p][e.config.errorHeader]=n[p]:i[p]={[e.config.errorHeader]:n[p]}}for(var c in i)a.handler[c](i[c]);return t})}let{method:a,url:i,params:l,config:p}=e;return void 0!==n&&(p=n),a||(a="get"),a.toLowerCase&&(a=a.toLowerCase()),"get"==a?this.get(r,i,l,p):"post"==a?this.post(r,i,l,p):void console.error("FhcApi: method not allowed:",a)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},Y={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 X=Vue.reactive({}),tt={};let et=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),nt=Vue.computed(()=>et.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==et.value).LC_Time:null);const rt={user_language:et,user_locale:nt,setLanguage(t){const e=Object.keys(X);return this.config.globalProperties.$api.call(Y.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{X[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(Y.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=>{X[t]=e})),tt[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let r=Vue.computed(()=>X[t]?function(t,e,n){let r=X[t][e];return r?(n&&(r=r.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),r):"<< PHRASE "+e+">>"}(t,e,n):"");return X[t]||this.loadCategory(t),r.value}};var st={install(t,e){t.config.globalProperties.$fhcApi||t.use(U),t.config.globalProperties.$api||t.use(Q),t.config.globalProperties.$p={t:rt.t,loadCategory:e=>rt.loadCategory.call(t,e),setLanguage:e=>rt.setLanguage.call(t,e),user_language:et,user_locale:nt,t_ref:rt.t_ref},t.provide("$p",t.config.globalProperties.$p)}};Vue.createApp({name:"AntragApp",components:{StudierendenantragAntrag:_,StudierendenantragStatus:$,StudierendenantragInfoblock:y},data:()=>({status:{msg:"",severity:""},infoArray:[]})}).use(st).mount("#wrapper");var at={emits:["update:modelValue"],props:{modelValue:String},computed:{valueAsBase64DataString(){return this.modelValue&&"data:image"!=this.modelValue.substring(0,10)?"data:image/jpeg;charset=utf-8;base64,"+this.modelValue:this.modelValue}},methods:{openUploadDialog(){this.$refs.fileInput.click()},pickFile(){let t=this.$refs.fileInput.files;if(t&&t[0]){let e=new FileReader;e.onload=t=>{this.$emit("update:modelValue",t.target.result)},e.readAsDataURL(t[0])}},deleteImage(){this.$emit("update:modelValue","")}},template:'\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    '},it=Object.freeze({__proto__:null,default:at}),ot={components:{DmsItem:{emits:["delete"],props:{modelValue:{type:[File,Object],required:!0}},data:()=>({preview:""}),watch:{modelValue(t){"application/x.fhc-dms+json"==t.type&&t.text().then(t=>{const e=JSON.parse(t);this.preview=e.preview||""})}},template:'\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • '}},emits:["update:modelValue"],props:{modelValue:{type:[FileList,Array],required:!0},multiple:Boolean,id:String,name:String,inputClass:[String,Array,Object],noList:Boolean,accept:{type:String,default:""},disabled:{type:Boolean,default:!1}},methods:{stringifyFile:t=>JSON.stringify({lastModified:t.lastModified,lastModifiedDate:t.lastModifiedDate,name:t.name,size:t.size,type:t.type}),addFiles(t){if(!this.multiple)return this.$emit("update:modelValue",t.target.files);const e=new DataTransfer,n=[];for(var r of this.modelValue)e.items.add(r),n.push(this.stringifyFile(r));for(var r of t.target.files)n.indexOf(this.stringifyFile(r))<0&&e.items.add(r);this.$emit("update:modelValue",e.files)},removeFile(t){const e=Array.from(this.modelValue)[t],n=new DataTransfer;for(var r of this.modelValue)r!==e&&n.items.add(r);this.$emit("update:modelValue",n.files)}},watch:{modelValue(t){if(!t)return;if(t instanceof FileList){if(!this.$refs.upload)return;return this.$refs.upload.files=t}const e=new DataTransfer;for(var n of t)if(n instanceof File)e.items.add(n);else{const t=new File([JSON.stringify(n)],n.name,{type:"application/x.fhc-dms+json"});e.items.add(t)}this.$emit("update:modelValue",e.files)}},template:'\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    '},dt=Object.freeze({__proto__:null,default:ot}); //# sourceMappingURL=Antrag.js.map diff --git a/public/dist/js/apps/lehre/Antrag.js.map b/public/dist/js/apps/lehre/Antrag.js.map index 2479dc117..0f4a09c63 100644 --- a/public/dist/js/apps/lehre/Antrag.js.map +++ b/public/dist/js/apps/lehre/Antrag.js.map @@ -1 +1 @@ -{"version":3,"file":"Antrag.js","sources":["../../../../js/components/Fetch.js","../../../../js/components/Fragment.js","../../../../js/components/Form/Form.js","../../../../js/components/Form/Validation.js","../../../../js/components/Form/Input.js","../../../../js/api/factory/studstatus/abmeldung.js","../../../../js/components/Studierendenantrag/Form/Abmeldung.js","../../../../js/api/factory/checkperson.js","../../../../js/components/Studierendenantrag/Form/AbmeldungStgl.js","../../../../js/api/factory/studstatus/unterbrechung.js","../../../../js/components/Studierendenantrag/Form/Unterbrechung.js","../../../../js/api/factory/studstatus/wiederholung.js","../../../../js/components/Studierendenantrag/Form/Wiederholung.js","../../../../js/components/Studierendenantrag/Antrag.js","../../../../js/components/Studierendenantrag/Status.js","../../../../js/components/Studierendenantrag/Infoblock.js","../../../../js/api/search.js","../../../../js/api/phrasen.js","../../../../js/api/navigation.js","../../../../js/api/filter.js","../../../../js/api/studstatus.js","../../../../js/api/profil.js","../../../../js/api/profilUpdate.js","../../../../js/api/lvPlan.js","../../../../js/api/stv.js","../../../../js/api/stv/verband.js","../../../../js/api/stv/students.js","../../../../js/api/stv/filter.js","../../../../js/api/stv/konto.js","../../../../js/api/stv/group.js","../../../../js/api/stv/kontakt.js","../../../../js/api/stv/prestudent.js","../../../../js/api/stv/status.js","../../../../js/api/stv/details.js","../../../../js/api/stv/exam.js","../../../../js/api/stv/abschlusspruefung.js","../../../../js/api/stv/grades.js","../../../../js/api/stv/mobility.js","../../../../js/api/stv/archiv.js","../../../../js/api/stv/documents.js","../../../../js/api/stv/exemptions.js","../../../../js/api/stv/jointstudies.js","../../../../js/api/stv/courselist.js","../../../../js/api/notiz.js","../../../../js/api/notiz/person.js","../../../../js/api/betriebsmittel.js","../../../../js/api/betriebsmittel/person.js","../../../../js/api/checkperson.js","../../../../js/api/ort.js","../../../../js/api/cms.js","../../../../js/api/lehre.js","../../../../js/api/addons.js","../../../../js/api/messages.js","../../../../js/api/messages/person.js","../../../../js/api/vorlagen.js","../../../../js/api/studium.js","../../../../js/api/fhcapifactory.js","../../../../js/api/dashboard.js","../../../../js/api/bookmark.js","../../../../js/api/ampeln.js","../../../../js/api/studiengang.js","../../../../js/api/menu.js","../../../../js/api/authinfo.js","../../../../js/api/language.js","../../../../js/plugin/OldFhcApi.js","../../../../js/RESTClient.js","../../../../js/plugins/FhcAlert.js","../../../../js/plugins/Api.js","../../../../js/api/factory/phrasen.js","../../../../js/plugins/Phrasen.js","../../../../js/apps/lehre/Antrag.js","../../../../js/components/Form/Upload/Image.js","../../../../js/components/Form/Upload/Dms.js","../../../../js/components/Form/Upload/Dms/Item.js"],"sourcesContent":["/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","export default {\n\trender() {\n\t\treturn (this.$slots && this.$slots.default) ? this.$slots.default() : null;\n\t}\n};","import FhcFragment from \"../Fragment.js\";\n\nexport default {\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tprovide() {\n\t\treturn {\n\t\t\t$registerToForm: component => {\n\t\t\t\tif (this.inputs.indexOf(component) < 0)\n\t\t\t\t\tthis.inputs.push(component);\n\t\t\t},\n\t\t\t$clearValidationForName: this.clearValidationForName\n\t\t};\n\t},\n\tprops: {\n\t\ttag: {\n\t\t\ttype: String,\n\t\t\tdefault: 'form'\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tinputs: []\n\t\t}\n\t},\n\tcomputed: {\n\t\tsortedInputs() {\n\t\t\treturn this.inputs.reduce((a,c) => {\n\t\t\t\tlet name = c.name || '_default';\n\t\t\t\tif (!a[name])\n\t\t\t\t\ta[name] = [];\n\t\t\t\ta[name].push(c);\n\n\t\t\t\tif (c.lcType == 'checkbox' && name.substr(-1) == ']' && name.indexOf('[')) {\n\t\t\t\t\tname = name.substr(0, name.lastIndexOf('['));\n\t\t\t\t\tif (!a[name])\n\t\t\t\t\t\ta[name] = [];\n\t\t\t\t\ta[name].push(c);\n\t\t\t\t}\n\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t},\n\t\t/* Deprecated Code start */\n\t\tfactory() {\n\t\t\tconsole.warn('.factory is deprecated! Use .call() instead.');\n\t\t\tconst factory = Object.create(Object.getPrototypeOf(this.$fhcApi.factory), Object.getOwnPropertyDescriptors(this.$fhcApi.factory));\n\t\t\tfactory.$fhcApi = {\n\t\t\t\tget: this.get,\n\t\t\t\tpost: this.post,\n\t\t\t\t_defaultErrorHandlers: this.$fhcApi._defaultErrorHandlers\n\t\t\t};\n\t\t\treturn factory;\n\t\t}\n\t\t/* Deprecated Code end */\n\t},\n\tmethods: {\n\t\tget(...args) {\n\t\t\tif (typeof args[0] == 'object' && args[0].clearValidation && args[0].setFeedback)\n\t\t\t\targs[0] = this;\n\t\t\telse\n\t\t\t\targs.unshift(this);\n\t\t\t\n\t\t\t/* Deprecated Code start */\n\t\t\tif (!this.$api)\n\t\t\t\treturn this.$fhcApi.get(...args);\n\t\t\t/* Deprecated Code end */\n\t\t\t\n\t\t\treturn this.$api.get(...args);\n\t\t},\n\t\tpost(...args) {\n\t\t\tif (typeof args[0] == 'object' && args[0].clearValidation && args[0].setFeedback)\n\t\t\t\targs[0] = this;\n\t\t\telse\n\t\t\t\targs.unshift(this);\n\t\t\t\n\t\t\t/* Deprecated Code start */\n\t\t\tif (!this.$api)\n\t\t\t\treturn this.$fhcApi.post(...args);\n\t\t\t/* Deprecated Code end */\n\t\t\t\n\t\t\treturn this.$api.post(...args);\n\t\t},\n\t\tcall(factory, overwriteconfig) {\n\t\t\treturn this.$api.call(factory, overwriteconfig, this);\n\t\t},\n\t\t_sendFeedbackToInput(inputs, feedback, valid) {\n\t\t\tif (inputs.length) {\n\t\t\t\tinputs.forEach(input => input.setFeedback(valid, feedback));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.$fhcAlert) {\n\t\t\t\tthis.$fhcAlert[valid ? 'alertSuccess' : 'alertError'](feedback);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (Array.isArray(feedback)) {\n\t\t\t\tlet remaining = feedback.filter(fb => \n\t\t\t\t\tthis._sendFeedbackToInput(\n\t\t\t\t\t\tthis.sortedInputs['_default'] || [],\n\t\t\t\t\t\tfb,\n\t\t\t\t\t\tvalid\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn remaining.length ? remaining : null;\n\t\t\t}\n\t\t\tif (typeof feedback === 'object') {\n\t\t\t\tlet remaining = Object.entries(feedback).filter(([name, fb]) => \n\t\t\t\t\tthis._sendFeedbackToInput(\n\t\t\t\t\t\tthis.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join(\"\")] || this.sortedInputs['_default'] || [],\n\t\t\t\t\t\tfb,\n\t\t\t\t\t\tvalid\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn remaining.length ? Object.fromEntries(remaining) : null;\n\t\t\t}\n\n\t\t\tlet remaining = this._sendFeedbackToInput(\n\t\t\t\tthis.sortedInputs['_default'] || [],\n\t\t\t\tfeedback,\n\t\t\t\tvalid\n\t\t\t);\n\t\t\treturn remaining ? feedback : null;\n\t\t},\n\t\tclearValidation() {\n\t\t\tthis.inputs.forEach(input => input.clearValidation());\n\t\t},\n\t\tsend(promise) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tpromise.then(result => {\n\t\t\t\t\tif (result?.status == 200 && result.data) {\n\t\t\t\t\t\tif (typeof result.data !== 'object' || !result.data.hasOwnProperty('retval'))\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tif (result.data.error)\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tconst data = result.data.retval;\n\t\t\t\t\t\t// TODO(chris): check for something better/add new standardized return value\n\t\t\t\t\t\tif (result.data.code == 1)\n\t\t\t\t\t\t\tthis.setFeedback(true, data);\n\t\t\t\t\t\treturn resolve(data);\n\t\t\t\t\t}\n\t\t\t\t\t// TODO(chris): IMPLEMENT! Wrong result object\n\t\t\t\t\treject(result);\n\t\t\t\t}).catch(result => {\n\t\t\t\t\tif (result?.response?.status == 400 && result.response.data) {\n\t\t\t\t\t\tif (typeof result.response.data !== 'object' || !result.response.data.hasOwnProperty('retval'))\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tthis.clearValidation();\n\t\t\t\t\t\tconst remaining = this.setFeedback(\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tresult.response.data.retval\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (remaining) {\n\t\t\t\t\t\t\tresult.response.data.retval = remaining;\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (result?.response?.status == 500) {\n\t\t\t\t\t\tif (this.$fhcAlert)\n\t\t\t\t\t\t\tthis.$fhcAlert.handleSystemError(result);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tclearValidationForName(name) {\n\t\t\t(this.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join(\"\")] || this.sortedInputs['_default'] || [])\n\t\t\t\t.forEach(input => input.clearValidation());\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t\n\t`\n}\n","export default {\n\tinject: [\n\t\t'$registerToForm'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfeedback: {\n\t\t\t\tsuccess: [],\n\t\t\t\tdanger: []\n\t\t\t}\n\t\t};\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.feedback = {\n\t\t\t\tsuccess: [],\n\t\t\t\tdanger: []\n\t\t\t};\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tconst ts = Date.now();\n\t\t\tthis.feedback[valid ? 'success' : 'danger']\n\t\t\t\t.push(...feedback.map(msg => [msg, ts]));\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$registerToForm)\n\t\t\tthis.$registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t`\n};\n","import FhcFragment from \"../Fragment.js\";\n\nlet _uuid = {};\n\nexport default {\n\tname: \"FormInput\",\n\tinheritAttrs: false,\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tinject: {\n\t\tregisterToForm: {\n\t\t\tfrom: '$registerToForm',\n\t\t\tdefault: null\n\t\t},\n\t\tclearValidationForName: {\n\t\t\tfrom: '$clearValidationForName',\n\t\t\tdefault: null\n\t\t}\n\t},\n\tprops: {\n\t\tbsFeedback: Boolean,\n\t\tnoAutoClass: Boolean,\n\t\tnoFeedback: Boolean,\n\t\tinputGroup: Boolean,\n\t\ttype: String,\n\t\tname: String,\n\t\tcontainerClass: [String, Array, Object],\n\t\tlabel: String,\n\t\t// NOTE(chris): remove these from $attrs array to prevent doubled event listeners\n\t\tonInput: [Array, Function],\n\t\t'onUpdate:modelValue': [Array, Function]\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tvalid: undefined,\n\t\t\tfeedback: [],\n\t\t\tmodelValueDummy: undefined\n\t\t}\n\t},\n\tcomputed: {\n\t\thasContainer() {\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn true;\n\t\t\tif (this.containerClass)\n\t\t\t\treturn true;\n\t\t\tfor (const prop in this.autoContainerClass)\n\t\t\t\tif (Object.hasOwn(this.autoContainerClass, prop))\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t},\n\t\tacc() {\n\t\t\tif (!this.containerClass)\n\t\t\t\treturn {};\n\t\t\tif (typeof this.containerClass === 'string' || this.containerClass instanceof String)\n\t\t\t\treturn this.containerClass.split(' ').reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\tif (Array.isArray(this.containerClass))\n\t\t\t\treturn this.containerClass.reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\treturn this.containerClass;\n\t\t},\n\t\tautoContainerClass() {\n\t\t\tif (this.noAutoClass)\n\t\t\t\treturn this.acc;\n\t\t\t\n\t\t\tconst acc = {...this.acc};\n\t\t\t\n\t\t\tif (this.inputGroup)\n\t\t\t\tacc['input-group-item'] = true;\n\n\t\t\tif (this.lcType == 'radio' || this.lcType == 'checkbox')\n\t\t\t\tacc['form-check'] = true;\n\t\t\t\n\t\t\tif (this.inputGroup && acc['form-check']) {\n\t\t\t\tacc['input-group-item'] = false;\n\t\t\t\tacc['form-check'] = false;\n\t\t\t\tacc['input-group-text'] = true;\n\t\t\t}\n\t\t\treturn acc;\n\t\t},\n\t\tlcType() {\n\t\t\tif (!this.type)\n\t\t\t\treturn 'text';\n\t\t\treturn this.type.toLowerCase();\n\t\t},\n\t\ttag() {\n\t\t\tswitch (this.lcType) {\n\t\t\t\tcase 'textarea':\n\t\t\t\tcase 'select':\n\t\t\t\t\treturn this.lcType;\n\t\t\t\tcase 'datepicker':\n\t\t\t\t\treturn 'VueDatePicker';\n\t\t\t\tcase 'autocomplete':\n\t\t\t\t\treturn 'PvAutocomplete';\n\t\t\t\tcase 'uploadimage':\n\t\t\t\t\treturn 'UploadImage';\n\t\t\t\tcase 'uploadfile':\n\t\t\t\tcase 'uploaddms':\n\t\t\t\t\treturn 'UploadDms';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'input';\n\t\t\t}\n\t\t},\n\t\tvalidationClass() {\n\t\t\tconst classes = [];\n\t\t\tif (this.valid)\n\t\t\t\tclasses.push('is-valid');\n\t\t\telse if (this.valid === false)\n\t\t\t\tclasses.push('is-invalid');\n\t\t\t\n\t\t\tif (!this.noAutoClass) {\n\t\t\t\tlet c = this.$attrs.class ? this.$attrs.class.split(' ') : [];\n\t\t\t\tswitch (this.lcType) {\n\t\t\t\t\t// TODO(chris): complete list!\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tif (!c.includes('form-select'))\n\t\t\t\t\t\t\tclasses.push('form-select');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'range':\n\t\t\t\t\t\tif (!c.includes('form-range'))\n\t\t\t\t\t\t\tclasses.push('form-range');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\tcase 'checkbox':\n\t\t\t\t\t\t// TODO(chris): maybe different handling?\n\t\t\t\t\t\tif (!c.includes('form-check-input') && !c.includes('btn-check'))\n\t\t\t\t\t\t\tclasses.push('form-check-input');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tif (!c.includes('form-control-color'))\n\t\t\t\t\t\t\tclasses.push('form-control-color');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'autocomplete':\n\t\t\t\t\tcase 'datepicker':\n\t\t\t\t\t\tclasses.push('p-0');\n\t\t\t\t\t\tclasses.push('border-0');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'text':\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'password':\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\tfeedbackClass() {\n\t\t\tif (!this.feedback || this.feedback === true)\n\t\t\t\treturn '';\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn {\n\t\t\t\t\t'valid-tooltip': this.valid === true,\n\t\t\t\t\t'invalid-tooltip': this.valid === false\n\t\t\t\t};\n\t\t\treturn {\n\t\t\t\t'valid-feedback': this.valid === true,\n\t\t\t\t'invalid-feedback': this.valid === false\n\t\t\t};\n\t\t},\n\t\tmodelValueCmp: {\n\t\t\tget() {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\treturn this.modelValueDummy;\n\t\t\t\treturn this.$attrs.modelValue;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\tthis.modelValueDummy = v;\n\t\t\t\tthis.$emit('update:modelValue', v);\n\t\t\t}\n\t\t},\n\t\tidCmp() {\n\t\t\tlet uuid = this.$attrs.id;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = this.$attrs.uid;\n\t\t\tif (!uuid && this.label)\n\t\t\t\tuuid = 'fhc-form-input';\n\t\t\tif (!uuid)\n\t\t\t\treturn undefined;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = 'dp-input-' + uuid;\n\t\t\tif (_uuid[uuid] === undefined)\n\t\t\t\t_uuid[uuid] = 0;\n\t\t\treturn uuid + '-' + (_uuid[uuid]++);\n\t\t}\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.valid = undefined;\n\t\t\tthis.feedback = [];\n\t\t},\n\t\tclearValidationForThisName() {\n\t\t\tif (this.valid === undefined)\n\t\t\t\treturn;\n\t\t\tif (this.clearValidationForName && this.name)\n\t\t\t\tthis.clearValidationForName(this.name);\n\t\t\telse\n\t\t\t\tthis.clearValidation();\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tthis.valid = valid;\n\t\t\t// NOTE(chris): On a list of radios/checkboxes only add the feedback message to the last item\n\t\t\tif (this.name && (this.lcType == 'radio' || this.lcType == 'checkbox')) {\n\t\t\t\tconst selector = 'input[type=\"' + this.lcType + '\"][name=\"' + this.name + '\"]';\n\t\t\t\tif ([...this.$el.parentNode.querySelectorAll(selector)].pop() != this.$refs.input)\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.feedback = feedback;\n\t\t},\n\t\t_loadComponents() {\n\t\t\tif (this.tag == 'VueDatePicker' && !this._.components.VueDatePicker) {\n\t\t\t\tthis._.components.VueDatePicker = Vue.defineAsyncComponent(() => import(\"../vueDatepicker.js.php\"));\n\t\t\t} else if (this.tag == 'PvAutocomplete' && !this._.components.PvAutocomplete) {\n\t\t\t\tthis._.components.PvAutocomplete = primevue.autocomplete;\n\t\t\t} else if (this.tag == 'UploadImage' && !this._.components.UploadImage) {\n\t\t\t\tthis._.components.UploadImage = Vue.defineAsyncComponent(() => import(\"./Upload/Image.js\"));\n\t\t\t} else if (this.tag == 'UploadDms' && !this._.components.UploadDms) {\n\t\t\t\tthis._.components.UploadDms = Vue.defineAsyncComponent(() => import(\"./Upload/Dms.js\"));\n\t\t\t}\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis._loadComponents();\n\t},\n\tbeforeUpdate() {\n\t\tthis._loadComponents();\n\t},\n\tmounted() {\n\t\tif (this.registerToForm)\n\t\t\tthis.registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class-name'] ? $attrs['input-class-name'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class'] ? $attrs['input-class'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(antrag_id, prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(studiensemester, prestudent_id, grund) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/abmeldung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}\n\t\t};\n\t},\n\tcancel(antrag_id) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\tparams: { antrag_id }\n\t\t};\n\t}\n};","import {CoreFetchCmpt} from '../../Fetch.js';\nimport CoreForm from '../../Form/Form.js';\nimport FormValidation from '../../Form/Validation.js';\nimport FormInput from '../../Form/Input.js';\n\nimport ApiStudstatusAbmeldung from '../../../api/factory/studstatus/abmeldung.js';\n\nvar _uuid = 0;\n\nexport default {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tCoreForm,\n\t\tFormValidation,\n\t\tFormInput\n\t},\n\temits: [\n\t\t'setInfos',\n\t\t'setStatus'\n\t],\n\tprops: {\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdata: null,\n\t\t\tsaving: false,\n\t\t\tformData: {\n\t\t\t\tgrund: ''\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\tstatusSeverity() {\n\t\t\tswitch (this.data.status)\n\t\t\t{\n\t\t\t\tcase 'Erstellt': return 'info';\n\t\t\t\tcase 'Pause':\n\t\t\t\tcase 'Zurueckgezogen': return 'danger';\n\t\t\t\tcase 'Genehmigt': return 'success';\n\t\t\t\tdefault: return 'warning';\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tload() {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusAbmeldung.getDetails(this.studierendenantragId, this.prestudentId))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status) {\n\t\t\t\t\t\tconst msg = (this.data.status == 'Pause' && this.data.status_insertvon == \"Studienabbruch\") ? Vue.computed(() => {\n\t\t\t\t\t\t\tlet status = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\t\t\treturn this.$p.t('studierendenantrag', 'status_x', {status});\n\t\t\t\t\t\t}) : Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp}));\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg,\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tcreateAntrag() {\n\t\t\tbootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide();\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusAbmeldung.create(\n\t\t\t\t\tthis.data.studiensemester_kurzbz,\n\t\t\t\t\tthis.data.prestudent_id,\n\t\t\t\t\tthis.formData.grund\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\n\t\t\t\t\tif (result.data === true)\n\t\t\t\t\t\tdocument.location += \"\";\n\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_open')})),\n\t\t\t\t\t\t\tseverity:'success'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t},\n\t\tcancelAntrag() {\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelling')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form.call(ApiStudstatusAbmeldung.cancel(this.data.studierendenantrag_id))\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (Number.isInteger(result.data))\n\t\t\t\t\t\tdocument.location = document.location.replace(/abmeldung\\/([0-9]*)\\/[0-9]*[\\/]?$/, 'abmeldung/$1') + \"/\" + result.data;\n\t\t\t\t\t\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelled')})),\n\t\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.uuid = _uuid++;\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t('lehre', 'studiengang')}}{{data.bezeichnung}}
    {{$p.t('lehre', 'organisationsform')}}{{data.orgform_bezeichnung}}
    {{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{data.name}}
    {{$p.t('person', 'personenkennzeichen')}}{{data.matrikelnr}}
    {{$p.t('lehre', 'studienjahr')}}{{data.studienjahr_kurzbz}}
    {{$p.t('lehre', 'studiensemester')}}{{data.studiensemester_kurzbz}}
    {{$p.t('lehre', 'semester')}}{{data.semester}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    {{$p.t('studierendenantrag', 'antrag_grund')}}:
    \n\t\t\t\t\t
    {{data.grund}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_cancel')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Abmeldung')}}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'title_Abmeldung')}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Abmeldung')}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t`\n}","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tupdatePersonUnrulyStatus(person_id, unruly) {\n\t\tconst params = { person_id, unruly }\n\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl,\n\t\t\tparams\n\t\t};\n\t},\n\tfilterPerson(params, base = '') {\n\t\t// TODO(chris): seems to be called from nowhere?\n\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl,\n\t\t\tparams\n\t\t};\n\t}\n};","import {CoreFetchCmpt} from '../../Fetch.js';\nimport CoreForm from '../../Form/Form.js';\nimport FormValidation from '../../Form/Validation.js';\nimport FormInput from '../../Form/Input.js';\n\nimport ApiStudstatusAbmeldung from '../../../api/factory/studstatus/abmeldung.js';\nimport ApiCheckperson from '../../../api/factory/checkperson.js';\n\nvar _uuid = 0;\n\nexport default {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tCoreForm,\n\t\tFormValidation,\n\t\tFormInput\n\t},\n\temits: [\n\t\t'setInfos',\n\t\t'setStatus'\n\t],\n\tprops: {\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdata: null,\n\t\t\tsaving: false,\n\t\t\tformData: {\n\t\t\t\tgrund: ''\n\t\t\t},\n\t\t\tunrulyInternal: false\n\t\t}\n\t},\n\tcomputed: {\n\t\tstatusSeverity() {\n\t\t\tswitch (this.data?.status)\n\t\t\t{\n\t\t\t\tcase 'Erstellt': return 'info';\n\t\t\t\tcase 'Pause':\n\t\t\t\tcase 'Zurueckgezogen': return 'danger';\n\t\t\t\tcase 'EinspruchAbgelehnt':\n\t\t\t\tcase 'Abgemeldet': return 'success';\n\t\t\t\tdefault: return 'warning';\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tload() {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusAbmeldung.getDetails(this.studierendenantragId, this.prestudentId))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status) {\n\t\t\t\t\t\tconst msg = (this.data.status == 'Pause' && this.data.status_insertvon == \"Studienabbruch\") ? Vue.computed(() => {\n\t\t\t\t\t\t\tlet status = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\t\t\treturn this.$p.t('studierendenantrag', 'status_x', {status});\n\t\t\t\t\t\t}) : Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp}));\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg,\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t});\n\t\t},\n\t\tcreateAntrag() {\n\t\t\tbootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide();\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusAbmeldung.create(\n\t\t\t\t\tthis.data.studiensemester_kurzbz,\n\t\t\t\t\tthis.data.prestudent_id,\n\t\t\t\t\tthis.formData.grund\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\n\t\t\t\t\tif (this.unrulyInternal) {\n\t\t\t\t\t\tthis.$api\n\t\t\t\t\t\t\t.call(ApiCheckperson.updatePersonUnrulyStatus(this.data.person_id, true))\n\t\t\t\t\t\t\t.then(res => {\n\t\t\t\t\t\t\t\tif (res?.meta?.status === \"success\") {\n\t\t\t\t\t\t\t\t\tthis.$fhcAlert.alertSuccess(this.$p.t('studierendenantrag', 'antrag_unruly_updated'))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (result.data === true)\n\t\t\t\t\t\tdocument.location += \"\";\n\t\t\t\t\t\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_open')})),\n\t\t\t\t\t\t\tseverity:'success'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t},\n\t\tappendDropDownText(event) {\n\t\t\tthis.formData.grund = event.target.value\n\t\t\t\t? this.$p.t('studierendenantrag', event.target.value)\n\t\t\t\t: '';\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.uuid = _uuid++;\n\t},\n\twatch: {\n\t\t'formData.grund'(newVal) {\n\t\t\tthis.unrulyInternal = (newVal === this.$p.t('studierendenantrag', 'textLong_unruly'))\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t('lehre', 'studiengang')}}{{data.bezeichnung}}
    {{$p.t('lehre', 'organisationsform')}}{{data.orgform_bezeichnung}}
    {{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{data.name}}
    {{$p.t('person', 'personenkennzeichen')}}{{data.matrikelnr}}
    {{$p.t('lehre', 'studienjahr')}}{{data.studienjahr_kurzbz}}
    {{$p.t('lehre', 'studiensemester')}}{{data.studiensemester_kurzbz}}
    {{$p.t('lehre', 'semester')}}{{data.semester}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t
    {{$p.t('studierendenantrag', 'antrag_grund')}}:
    \n\t\t\t\t\n\t\t\t\t\t
    {{data?.grund}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Abmeldung')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'title_Abmeldung')}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Abmeldung')}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(antrag_id, prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/unterbrechung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}\n\t\t};\n\t},\n\tcancel(antrag_id) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/unterbrechung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tantrag_id\n\t\t\t}\n\t\t};\n\t}\n};","import {CoreFetchCmpt} from '../../Fetch.js';\nimport CoreForm from '../../Form/Form.js';\nimport FormValidation from '../../Form/Validation.js';\nimport FormInput from '../../Form/Input.js';\n\nimport ApiStudstatusUnterbrechung from '../../../api/factory/studstatus/unterbrechung.js';\n\nexport default {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tCoreForm,\n\t\tFormValidation,\n\t\tFormInput\n\t},\n\temits: [\n\t\t'setInfos',\n\t\t'setStatus'\n\t],\n\tprops: {\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdata: null,\n\t\t\tsaving: false,\n\t\t\tattachment: [],\n\t\t\tstsem: null,\n\t\t\tcurrentWiedereinstieg: '',\n\t\t\tsiteUrl: FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t}\n\t},\n\tcomputed: {\n\t\tstatusSeverity() {\n\t\t\tswitch (this.data.status)\n\t\t\t{\n\t\t\t\tcase 'Erstellt': return 'info';\n\t\t\t\tcase 'Pause':\n\t\t\t\tcase 'Zurueckgezogen':\n\t\t\t\tcase 'Abgelehnt': return 'danger';\n\t\t\t\tcase 'Genehmigt':\n\t\t\t\tcase 'EmailVersandt': return 'success';\n\t\t\t\tdefault: return 'warning';\n\t\t\t}\n\t\t},\n\t\tdatumWsFormatted() {\n\t\t\tlet datumUnformatted = '';\n\n\t\t\tif (this.data.datum_wiedereinstieg) {\n\t\t\t\tdatumUnformatted = this.data.datum_wiedereinstieg;\n\t\t\t} else {\n\t\t\t\tif (this.stsem !== null && this.data.studiensemester[this.stsem].wiedereinstieg)\n\t\t\t\t\tdatumUnformatted = this.data.studiensemester[this.stsem].wiedereinstieg;\n\t\t\t}\n\t\t\tif (datumUnformatted === '')\n\t\t\t\treturn datumUnformatted;\n\t\t\tlet datum = new Date(datumUnformatted);\n\t\t\treturn datum.toLocaleDateString();\n\t\t},\n\t\tsemesterOffsets() {\n\t\t\tif (!this.data || !this.data.studiensemester)\n\t\t\t\treturn [];\n\t\t\treturn Object.values(this.data.studiensemester)\n\t\t\t\t.filter(el => !el.disabled)\n\t\t\t\t.map(el => el.studiensemester_kurzbz);\n\t\t},\n\t\tsemester() {\n\t\t\tif (!this.stsem)\n\t\t\t\treturn '';\n\t\t\treturn this.data.semester + this.semesterOffsets.indexOf(this.stsem);\n\t\t}\n\t},\n\tmethods: {\n\t\tload() {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusUnterbrechung.getDetails(\n\t\t\t\t\tthis.studierendenantragId,\n\t\t\t\t\tthis.prestudentId\n\t\t\t\t))\n\t\t\t\t.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\t\tif (this.data.status) {\n\t\t\t\t\t\t\tconst msg = (this.data.status == 'Pause' && this.data.status_insertvon == \"Studienabbruch\") ? Vue.computed(() => {\n\t\t\t\t\t\t\t\tlet status = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\t\t\t\treturn this.$p.t('studierendenantrag', 'status_x', {status});\n\t\t\t\t\t\t\t}) : Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp}));\n\t\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\t\tmsg,\n\t\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t},\n\t\tcreateAntrag() {\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusUnterbrechung.create(\n\t\t\t\t\tthis.stsem !== null && this.data.studiensemester[this.stsem].studiensemester_kurzbz,\n\t\t\t\t\tthis.data.prestudent_id,\n\t\t\t\t\tthis.data.grund,\n\t\t\t\t\tthis.stsem !== null && this.currentWiedereinstieg,\n\t\t\t\t\tthis.attachment\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (Number.isInteger(result.data))\n\t\t\t\t\t\tdocument.location += \"/\" + result.data;\n\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_created')})),\n\t\t\t\t\t\t\tseverity: 'info'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t},\n\t\tcancelAntrag() {\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelling')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusUnterbrechung.cancel(\n\t\t\t\t\tthis.data.studierendenantrag_id\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (Number.isInteger(result.data))\n\t\t\t\t\t\tdocument.location = document.location.replace(/unterbrechung\\/([0-9]*)\\/[0-9]*[\\/]?$/, 'unterbrechung/$1') + \"/\" + result.data;\n\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelled')})),\n\t\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t('lehre', 'studiengang')}}{{data.bezeichnung}}
    {{$p.t('lehre', 'organisationsform')}}{{data.orgform_bezeichnung}}
    {{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{data.name}}
    {{$p.t('person', 'personenkennzeichen')}}{{data.matrikelnr}}
    {{$p.t('lehre', 'studienjahr')}}{{data.studienjahr_kurzbz}}{{stsem === null ? '' : data.studiensemester[stsem].studienjahr_kurzbz}}
    {{$p.t('lehre', 'semester')}}{{data.semester}}{{semester}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{{data.studiensemester_kurzbz}}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{{datumWsFormatted}}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {{$p.t('studierendenantrag', 'antrag_dateianhaenge')}} \n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'no_attachments')}}\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Unterbrechung')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_cancel')}}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t
    `\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tgetLvs(antrag_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tcancel(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/saveLvs',\n\t\t\tparams: {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t}\n\t\t};\n\t}\n};","import {CoreFetchCmpt} from '../../Fetch.js';\nimport CoreForm from '../../Form/Form.js';\nimport FormValidation from '../../Form/Validation.js';\n\nimport ApiStudstatusWiederholung from '../../../api/factory/studstatus/wiederholung.js';\n\nexport default {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tCoreForm,\n\t\tFormValidation\n\t},\n\temits: [\n\t\t'setInfos',\n\t\t'setStatus',\n\t\t'update:status'\n\t],\n\tprops: {\n\t\tstatus: String,\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdata: null,\n\t\t\tsaving: false,\n\t\t\tinfos: []\n\t\t}\n\t},\n\tcomputed: {\n\t\tstatusSeverity() {\n\t\t\tswitch (this.data.status)\n\t\t\t{\n\t\t\t\tcase 'Offen':\n\t\t\t\tcase 'Erstellt':\n\t\t\t\tcase 'ErsteAufforderungVersandt': return 'info';\n\t\t\t\tcase 'Genehmigt': return 'success';\n\t\t\t\tcase 'Pause':\n\t\t\t\tcase 'Verzichtet':\n\t\t\t\tcase 'Abgemeldet': return 'danger';\n\t\t\t\tdefault: return 'warning';\n\t\t\t}\n\t\t},\n\t\tdatumPruefungFormatted() {\n\t\t\tif(!this.data.pruefungsdatum)\n\t\t\t\treturn '';\n\t\t\tlet datum = new Date(this.data.pruefungsdatum);\n\t\t\treturn datum.toLocaleDateString();\n\t\t}\n\t},\n\tmethods: {\n\t\tload() {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusWiederholung.getDetails(\n\t\t\t\t\tthis.prestudentId\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (!this.data.status || this.data.status == 'ErsteAufforderungVersandt' || this.data.status == 'ZweiteAufforderungVersandt') {\n\t\t\t\t\t\tthis.data.status = 'Offen';\n\t\t\t\t\t\tthis.data.statustyp = this.$p.t('studierendenantrag', 'status_open');\n\t\t\t\t\t}\n\t\t\t\t\tthis.$emit('update:status', this.data.status);\n\t\t\t\t\tconst msg = (this.data.status == 'Pause' && this.data.status_insertvon == \"Studienabbruch\") ? Vue.computed(() => {\n\t\t\t\t\t\tlet status = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\t\treturn this.$p.t('studierendenantrag', 'status_x', {status});\n\t\t\t\t\t}) : Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp}));\n\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\tmsg,\n\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t});\n\t\t\t\t\treturn result;\n\t\t\t\t});\n\t\t},\n\t\tcreateAntrag() {\n\t\t\tthis.createAntragWithStatus(true);\n\t\t},\n\t\tcancelAntrag() {\n\t\t\tthis.createAntragWithStatus(false);\n\t\t},\n\t\tcreateAntragWithStatus(repeat) {\n\t\t\tlet func = repeat ? 'create' : 'cancel';\n\t\t\tlet nextState = repeat ? 'Erstellt' : 'Verzichtet';\n\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusWiederholung[func](\n\t\t\t\t\tthis.data.prestudent_id,\n\t\t\t\t\tthis.data.studiensemester_kurzbz\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (result.data === true)\n\t\t\t\t\t\tdocument.location += \"\";\n\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (!this.data.status)\n\t\t\t\t\t\tthis.data.status = nextState;\n\t\t\t\t\tthis.$emit('update:status', this.data.status);\n\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.infos = [...Array(5).keys()].map(n => ({\n\t\t\tbody: Vue.computed(() => this.$p.t('studierendenantrag', 'infotext_Wiederholung_' + n))\n\t\t}));\n\t\tthis.$emit('setInfos', this.infos);\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t('lehre', 'studiengang')}}{{data.bezeichnung}}
    {{$p.t('lehre', 'organisationsform')}}{{data.orgform_bezeichnung}}
    {{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{data.name}}
    {{$p.t('person', 'personenkennzeichen')}}{{data.matrikelnr}}
    {{$p.t('studierendenantrag', 'antrag_Wiederholung_pruefung')}}{{data.lvbezeichnung}}
    {{$p.t('studierendenantrag', 'antrag_Wiederholung_pruefung_date')}}{{datumPruefungFormatted}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag/antrag_Wiederholung_button_yes')}}\n\t\t\t\t\t\n\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t`\n}\n","import StudierendenantragAbmeldung from './Form/Abmeldung.js';\nimport StudierendenantragAbmeldungStgl from './Form/AbmeldungStgl.js';\nimport StudierendenantragUnterbrechung from './Form/Unterbrechung.js';\nimport StudierendenantragWiederholung from './Form/Wiederholung.js';\n\nexport default {\n\tcomponents: {\n\t\tStudierendenantragAbmeldung,\n\t\tStudierendenantragAbmeldungStgl,\n\t\tStudierendenantragUnterbrechung,\n\t\tStudierendenantragWiederholung\n\t},\n\temits: [\n\t\t'update:infoArray',\n\t\t'update:statusMsg',\n\t\t'update:statusSeverity'\n\t],\n\tprops: {\n\t\tantragType: String,\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number,\n\t\tinfoArray: Array,\n\t\tstatusMsg: String,\n\t\tstatusSeverity: String\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstatus: ''\n\t\t};\n\t},\n\tcomputed: {\n\t\ttypeComponent() {\n\t\t\treturn 'Studierendenantrag' + this.antragType;\n\t\t},\n\t\tinfoText() {\n\t\t\treturn this.$p.t('studierendenantrag/info_' + this.antragType + '_' + this.status);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t {{$p.t('studierendenantrag', 'title_' + antragType)}}\n\t\t
    \n\t\t
    \n\t\t
    \n\t\t\n\t\t\n\t
    \n\t`\n}","export default {\n\tprops: {\n\t\tmsg: String,\n\t\tseverity: String\n\t},\n\tcomputed: {\n\t\tseverityClass() {\n\t\t\treturn 'alert-' + this.severity;\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t
    \n\t`\n}\n","export default {\n\tprops: {\n\t\tinfos: Array,\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t\t{{info.title}}\n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t
    \n\t\t\t

    \n\t\t
    \n\t
    \n\t`\n}\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektarbeiten(uid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${uid}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektabgaben(detail) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektabgaben`\n\t\t\t, {\n\t\t\t\tprojektarbeit_id: detail.projektarbeit_id,\n\t\t\t\tstudent_uid: detail.student_uid\n\t\t\t}\n\t\t);\n\t},\n\tpostStudentProjektarbeitEndupload(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tpostStudentProjektarbeitZwischenabgabe(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tgetStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) {\n\t\tconst url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`;\n\n\t\twindow.location = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url\n\t},\n\tgetMitarbeiterProjektarbeiten(uid, all) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${all}`\n\t\t\t, {}\n\t\t);\n\t},\n\tpostProjektarbeitAbgabe(termin) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id: termin.paabgabe_id,\n\t\t\tpaabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz,\n\t\t\tdatum: termin.datum,\n\t\t\tfixtermin: termin.fixtermin,\n\t\t\tinsertvon: termin.insertvon,\n\t\t\tkurzbz: termin.kurzbz,\n\t\t\tprojektarbeit_id: termin.projektarbeit_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t\t\n\t},\n\tdeleteProjektarbeitAbgabe(paabgabe_id) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tpostSerientermin(datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids) {\n\t\tconst payload = {\n\t\t\tdatum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postSerientermin';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tfetchDeadlines(person_id) {\n\t\tconst payload = {\n\t\t\tperson_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/fetchDeadlines';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","import StudierendenantragAntrag from \"../../components/Studierendenantrag/Antrag.js\";\nimport StudierendenantragStatus from \"../../components/Studierendenantrag/Status.js\";\nimport StudierendenantragInfoblock from \"../../components/Studierendenantrag/Infoblock.js\";\nimport PluginsPhrasen from '../../plugins/Phrasen.js';\n\nconst app = Vue.createApp({\n\tname: 'AntragApp',\n\tcomponents: {\n\t\tStudierendenantragAntrag,\n\t\tStudierendenantragStatus,\n\t\tStudierendenantragInfoblock\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstatus: {\n\t\t\t\tmsg: '',\n\t\t\t\tseverity: ''\n\t\t\t},\n\t\t\tinfoArray: []\n\t\t};\n\t}\n});\napp\n\t.use(PluginsPhrasen)\n\t.mount('#wrapper');","export default {\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: String\n\t},\n\tcomputed: {\n\t\tvalueAsBase64DataString() {\n\t\t\tif (!this.modelValue || this.modelValue.substring(0, 10) == 'data:image')\n\t\t\t\treturn this.modelValue;\n\t\t\treturn 'data:image/jpeg;charset=utf-8;base64,' + this.modelValue;\n\t\t}\n\t},\n\tmethods: {\n\t\topenUploadDialog() {\n\t\t\tthis.$refs.fileInput.click();\n\t\t},\n\t\tpickFile() {\n\t\t\tlet file = this.$refs.fileInput.files;\n\t\t\tif (file && file[0]) {\n\t\t\t\tlet reader = new FileReader();\n\t\t\t\treader.onload = e => {\n\t\t\t\t\tthis.$emit('update:modelValue', e.target.result);\n\t\t\t\t}\n\t\t\t\treader.readAsDataURL(file[0]);\n\t\t\t}\n\t\t},\n\t\tdeleteImage() {\n\t\t\tthis.$emit('update:modelValue', '');\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    `\n}","import DmsItem from './Dms/Item.js';\n\nexport default {\n\tcomponents: {\n\t\tDmsItem\n\t},\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [ FileList, Array ],\n\t\t\trequired: true\n\t\t},\n\t\tmultiple: Boolean,\n\t\tid: String,\n\t\tname: String,\n\t\tinputClass: [String, Array, Object],\n\t\tnoList: Boolean,\n\t\taccept: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tmethods: {\n\t\tstringifyFile(file) {\n\t\t\treturn JSON.stringify({\n\t\t\t\tlastModified: file.lastModified,\n\t\t\t\tlastModifiedDate: file.lastModifiedDate,\n\t\t\t\tname: file.name,\n\t\t\t\tsize: file.size,\n\t\t\t\ttype: file.type\n\t\t\t});\n\t\t},\n\t\taddFiles(event) {\n\t\t\tif (!this.multiple)\n\t\t\t\treturn this.$emit('update:modelValue', event.target.files);\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst doubles = [];\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tdt.items.add(file);\n\t\t\t\tdoubles.push(this.stringifyFile(file));\n\t\t\t}\n\t\t\tfor (var file of event.target.files) {\n\t\t\t\t// NOTE(chris): deep check (with FileReader) would require an async function so we only check the basic attributes\n\t\t\t\tif (doubles.indexOf(this.stringifyFile(file)) < 0)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t},\n\t\tremoveFile(id) {\n\t\t\tconst fileToRemove = Array.from(this.modelValue)[id];\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tif (file !== fileToRemove)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (!n)\n\t\t\t\treturn;\n\t\t\tif (n instanceof FileList) {\n\t\t\t\tif (!this.$refs.upload) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn this.$refs.upload.files = n;\n\t\t\t}\n\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst dms = [];\n\t\t\tfor (var file of n) {\n\t\t\t\tif (file instanceof File) {\n\t\t\t\t\tdt.items.add(file);\n\t\t\t\t} else {\n\t\t\t\t\tconst dmsFile = new File([JSON.stringify(file)], file.name, {\n\t\t\t\t\t\ttype: 'application/x.fhc-dms+json'\n\t\t\t\t\t});\n\t\t\t\t\tdt.items.add(dmsFile);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    `\n}","export default {\n\temits: [\n\t\t'delete'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [File, Object],\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreview: ''\n\t\t};\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (n.type == 'application/x.fhc-dms+json') {\n\t\t\t\tn.text().then(result => {\n\t\t\t\t\tconst obj = JSON.parse(result);\n\t\t\t\t\tthis.preview = obj.preview || '';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • `\n}\n"],"names":["CoreFetchCmpt","emits","props","refresh","type","Boolean","apiFunction","required","Function","apiFunctionParameters","watch","newValue","oldValue","this","fetchData","data","loading","error","errorMessage","created","methods","apiFunctionResult","Promise","then","successHandler","catch","errorHandler","finally","finallyHandler","setError","response","$emit","undefined","retval","message","template","FhcFragment","render","$slots","default","CoreForm","components","provide","$registerToForm","component","inputs","indexOf","push","$clearValidationForName","clearValidationForName","tag","String","computed","sortedInputs","reduce","a","c","name","lcType","substr","lastIndexOf","factory","console","warn","Object","create","getPrototypeOf","$fhcApi","getOwnPropertyDescriptors","get","post","_defaultErrorHandlers","args","clearValidation","setFeedback","unshift","$api","call","overwriteconfig","_sendFeedbackToInput","feedback","valid","length","forEach","input","$fhcAlert","Array","isArray","remaining","filter","fb","entries","split","slice","map","p","join","fromEntries","send","promise","resolve","reject","result","status","hasOwnProperty","code","handleSystemError","FormValidation","inject","success","danger","ts","Date","now","msg","mounted","_uuid","FormInput","inheritAttrs","registerToForm","from","bsFeedback","noAutoClass","noFeedback","inputGroup","containerClass","label","onInput","modelValueDummy","hasContainer","prop","autoContainerClass","hasOwn","acc","toLowerCase","validationClass","classes","$attrs","class","includes","feedbackClass","modelValueCmp","modelValue","set","v","idCmp","uuid","id","uid","clearValidationForThisName","selector","$el","parentNode","querySelectorAll","pop","$refs","_loadComponents","_","VueDatePicker","PvAutocomplete","UploadImage","UploadDms","Vue","defineAsyncComponent","primevue","autocomplete","import","beforeMount","beforeUpdate","ApiStudstatusAbmeldung","getDetails","antrag_id","prestudent_id","method","url","studiensemester","grund","params","cancel","StudierendenantragAbmeldung","prestudentId","Number","studierendenantragId","saving","formData","statusSeverity","load","status_insertvon","$p","t","statustyp","severity","createAntrag","bootstrap","Modal","getOrCreateInstance","modal","hide","form","studiensemester_kurzbz","document","location","cancelAntrag","studierendenantrag_id","isInteger","replace","ApiCheckperson","updatePersonUnrulyStatus","person_id","unruly","filterPerson","base","StudierendenantragAbmeldungStgl","unrulyInternal","res","meta","alertSuccess","appendDropDownText","event","target","value","newVal","ApiStudstatusUnterbrechung","datum_wiedereinstieg","attachment","StudierendenantragUnterbrechung","stsem","currentWiedereinstieg","siteUrl","FHC_JS_DATA_STORAGE_OBJECT","app_root","ci_router","datumWsFormatted","datumUnformatted","wiedereinstieg","toLocaleDateString","semesterOffsets","values","el","disabled","semester","ApiStudstatusWiederholung","getLvs","saveLvs","forbiddenLvs","mandatoryLvs","StudierendenantragWiederholung","infos","datumPruefungFormatted","pruefungsdatum","createAntragWithStatus","repeat","func","nextState","keys","n","body","StudierendenantragAntrag","antragType","infoArray","statusMsg","typeComponent","infoText","StudierendenantragStatus","severityClass","StudierendenantragInfoblock","search","searchsettings","config","searchAdvanced","searchdummy","phrasen$1","loadCategory","category","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","getHeader","navigation_page","getMenu","filter$1","saveCustomFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","studstatus","abmeldung","stdsem","errorHandling","allSettled","antrag","errorHeader","unterbrechung","wiederholung","leitung","getStgs","getAntraege","getHistory","getPrestudents","query","signal","timeout","approve","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","getProfilRequestFiles","requestID","selectProfilRequest","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","students","encodeURIComponent","getUri","prestudent","person","relative_path","getStg","setStg","studiengang_kz","konto","tabulatorConfig","self","ajaxURL","ajaxParams","e","only_open","studiengang_kz_intern","stg_kz","ajaxRequestFunc","ajaxResponse","checkDoubles","confirmErrorHandler","insert","counter","edit","delete","buchungsnr","getBuchungstypen","group","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","save","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","lehrveranstaltung_id","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","update","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","unrulyParam","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","typ","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","getStudentProjektarbeiten","getStudentProjektabgaben","detail","projektarbeit_id","postStudentProjektarbeitEndupload","Headers","postStudentProjektarbeitZwischenabgabe","getStudentProjektarbeitAbgabeFile","paabgabe_id","window","getMitarbeiterProjektarbeiten","all","postProjektarbeitAbgabe","termin","paabgabetyp_kurzbz","bezeichnung","fixtermin","insertvon","kurzbz","deleteProjektarbeitAbgabe","postSerientermin","projektarbeit_ids","fetchDeadlines","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","title","ampeln","open","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","options","globalProperties","addEndpoints","_get_config","uri","TypeError","_clean_return_value","fhcApiAxios","baseURL","interceptors","request","use","FormData","every","item","FileList","i","File","newData","nd","key","file","append","jsondata","JSON","stringify","errors","err","handled","alertDefault","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","alertSystemError","exception","db","heading","sql","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","bind","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","isError","hasData","trim","getData","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","helperAppContainer","createElement","helperApp","createApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","called_path","called_method","openMessagecard","Collapse","getAttribute","toggle","unmounted","parentElement","removeChild","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","mount","appendChild","FhcAlert","FhcPhrasen","toast","add","summary","life","alertInfo","alertWarning","alert","confirmDelete","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","html","alertMultiple","messageArray","errMsg","toUpperCase","stack","handleSystemMessage","resetFormValidation","Event","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","errs","DEFAULT_ERROR_CONFIG","fail","combine","handler","async","_format_toast","_default","field","msgs","sort","b","n_errors","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","configoverwrite","index","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","ref","user_locale","server_languages","find","LC_Time","catArray","row","phrase","text","obj","elem","extractCategory","t_ref","val","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang","Image","valueAsBase64DataString","substring","openUploadDialog","fileInput","click","pickFile","files","reader","FileReader","onload","readAsDataURL","deleteImage","Dms","DmsItem","preview","parse","multiple","inputClass","noList","stringifyFile","lastModified","lastModifiedDate","addFiles","dt","DataTransfer","doubles","items","removeFile","fileToRemove","upload","dmsFile"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Antrag.js","sources":["../../../../js/components/Fetch.js","../../../../js/components/Fragment.js","../../../../js/components/Form/Form.js","../../../../js/components/Form/Validation.js","../../../../js/components/Form/Input.js","../../../../js/api/factory/studstatus/abmeldung.js","../../../../js/components/Studierendenantrag/Form/Abmeldung.js","../../../../js/api/factory/checkperson.js","../../../../js/components/Studierendenantrag/Form/AbmeldungStgl.js","../../../../js/api/factory/studstatus/unterbrechung.js","../../../../js/components/Studierendenantrag/Form/Unterbrechung.js","../../../../js/api/factory/studstatus/wiederholung.js","../../../../js/components/Studierendenantrag/Form/Wiederholung.js","../../../../js/components/Studierendenantrag/Antrag.js","../../../../js/components/Studierendenantrag/Status.js","../../../../js/components/Studierendenantrag/Infoblock.js","../../../../js/api/search.js","../../../../js/api/phrasen.js","../../../../js/api/navigation.js","../../../../js/api/filter.js","../../../../js/api/studstatus.js","../../../../js/api/profil.js","../../../../js/api/profilUpdate.js","../../../../js/api/lvPlan.js","../../../../js/api/stv.js","../../../../js/api/stv/verband.js","../../../../js/api/stv/students.js","../../../../js/api/stv/filter.js","../../../../js/api/stv/konto.js","../../../../js/api/stv/group.js","../../../../js/api/stv/kontakt.js","../../../../js/api/stv/prestudent.js","../../../../js/api/stv/status.js","../../../../js/api/stv/details.js","../../../../js/api/stv/exam.js","../../../../js/api/stv/abschlusspruefung.js","../../../../js/api/stv/grades.js","../../../../js/api/stv/mobility.js","../../../../js/api/stv/archiv.js","../../../../js/api/stv/documents.js","../../../../js/api/stv/exemptions.js","../../../../js/api/stv/jointstudies.js","../../../../js/api/stv/courselist.js","../../../../js/api/notiz.js","../../../../js/api/notiz/person.js","../../../../js/api/betriebsmittel.js","../../../../js/api/betriebsmittel/person.js","../../../../js/api/checkperson.js","../../../../js/api/ort.js","../../../../js/api/cms.js","../../../../js/api/lehre.js","../../../../js/api/addons.js","../../../../js/api/messages.js","../../../../js/api/messages/person.js","../../../../js/api/vorlagen.js","../../../../js/api/studium.js","../../../../js/api/fhcapifactory.js","../../../../js/api/dashboard.js","../../../../js/api/bookmark.js","../../../../js/api/ampeln.js","../../../../js/api/studiengang.js","../../../../js/api/menu.js","../../../../js/api/authinfo.js","../../../../js/api/language.js","../../../../js/plugin/OldFhcApi.js","../../../../js/RESTClient.js","../../../../js/plugins/FhcAlert.js","../../../../js/plugins/Api.js","../../../../js/api/factory/phrasen.js","../../../../js/plugins/Phrasen.js","../../../../js/apps/lehre/Antrag.js","../../../../js/components/Form/Upload/Image.js","../../../../js/components/Form/Upload/Dms.js","../../../../js/components/Form/Upload/Dms/Item.js"],"sourcesContent":["/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","export default {\n\trender() {\n\t\treturn (this.$slots && this.$slots.default) ? this.$slots.default() : null;\n\t}\n};","import FhcFragment from \"../Fragment.js\";\n\nexport default {\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tprovide() {\n\t\treturn {\n\t\t\t$registerToForm: component => {\n\t\t\t\tif (this.inputs.indexOf(component) < 0)\n\t\t\t\t\tthis.inputs.push(component);\n\t\t\t},\n\t\t\t$clearValidationForName: this.clearValidationForName\n\t\t};\n\t},\n\tprops: {\n\t\ttag: {\n\t\t\ttype: String,\n\t\t\tdefault: 'form'\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tinputs: []\n\t\t}\n\t},\n\tcomputed: {\n\t\tsortedInputs() {\n\t\t\treturn this.inputs.reduce((a,c) => {\n\t\t\t\tlet name = c.name || '_default';\n\t\t\t\tif (!a[name])\n\t\t\t\t\ta[name] = [];\n\t\t\t\ta[name].push(c);\n\n\t\t\t\tif (c.lcType == 'checkbox' && name.substr(-1) == ']' && name.indexOf('[')) {\n\t\t\t\t\tname = name.substr(0, name.lastIndexOf('['));\n\t\t\t\t\tif (!a[name])\n\t\t\t\t\t\ta[name] = [];\n\t\t\t\t\ta[name].push(c);\n\t\t\t\t}\n\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t},\n\t\t/* Deprecated Code start */\n\t\tfactory() {\n\t\t\tconsole.warn('.factory is deprecated! Use .call() instead.');\n\t\t\tconst factory = Object.create(Object.getPrototypeOf(this.$fhcApi.factory), Object.getOwnPropertyDescriptors(this.$fhcApi.factory));\n\t\t\tfactory.$fhcApi = {\n\t\t\t\tget: this.get,\n\t\t\t\tpost: this.post,\n\t\t\t\t_defaultErrorHandlers: this.$fhcApi._defaultErrorHandlers\n\t\t\t};\n\t\t\treturn factory;\n\t\t}\n\t\t/* Deprecated Code end */\n\t},\n\tmethods: {\n\t\tget(...args) {\n\t\t\tif (typeof args[0] == 'object' && args[0].clearValidation && args[0].setFeedback)\n\t\t\t\targs[0] = this;\n\t\t\telse\n\t\t\t\targs.unshift(this);\n\t\t\t\n\t\t\t/* Deprecated Code start */\n\t\t\tif (!this.$api)\n\t\t\t\treturn this.$fhcApi.get(...args);\n\t\t\t/* Deprecated Code end */\n\t\t\t\n\t\t\treturn this.$api.get(...args);\n\t\t},\n\t\tpost(...args) {\n\t\t\tif (typeof args[0] == 'object' && args[0].clearValidation && args[0].setFeedback)\n\t\t\t\targs[0] = this;\n\t\t\telse\n\t\t\t\targs.unshift(this);\n\t\t\t\n\t\t\t/* Deprecated Code start */\n\t\t\tif (!this.$api)\n\t\t\t\treturn this.$fhcApi.post(...args);\n\t\t\t/* Deprecated Code end */\n\t\t\t\n\t\t\treturn this.$api.post(...args);\n\t\t},\n\t\tcall(factory, overwriteconfig) {\n\t\t\treturn this.$api.call(factory, overwriteconfig, this);\n\t\t},\n\t\t_sendFeedbackToInput(inputs, feedback, valid) {\n\t\t\tif (inputs.length) {\n\t\t\t\tinputs.forEach(input => input.setFeedback(valid, feedback));\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (this.$fhcAlert) {\n\t\t\t\tthis.$fhcAlert[valid ? 'alertSuccess' : 'alertError'](feedback);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (Array.isArray(feedback)) {\n\t\t\t\tlet remaining = feedback.filter(fb => \n\t\t\t\t\tthis._sendFeedbackToInput(\n\t\t\t\t\t\tthis.sortedInputs['_default'] || [],\n\t\t\t\t\t\tfb,\n\t\t\t\t\t\tvalid\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn remaining.length ? remaining : null;\n\t\t\t}\n\t\t\tif (typeof feedback === 'object') {\n\t\t\t\tlet remaining = Object.entries(feedback).filter(([name, fb]) => \n\t\t\t\t\tthis._sendFeedbackToInput(\n\t\t\t\t\t\tthis.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join(\"\")] || this.sortedInputs['_default'] || [],\n\t\t\t\t\t\tfb,\n\t\t\t\t\t\tvalid\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\treturn remaining.length ? Object.fromEntries(remaining) : null;\n\t\t\t}\n\n\t\t\tlet remaining = this._sendFeedbackToInput(\n\t\t\t\tthis.sortedInputs['_default'] || [],\n\t\t\t\tfeedback,\n\t\t\t\tvalid\n\t\t\t);\n\t\t\treturn remaining ? feedback : null;\n\t\t},\n\t\tclearValidation() {\n\t\t\tthis.inputs.forEach(input => input.clearValidation());\n\t\t},\n\t\tsend(promise) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tpromise.then(result => {\n\t\t\t\t\tif (result?.status == 200 && result.data) {\n\t\t\t\t\t\tif (typeof result.data !== 'object' || !result.data.hasOwnProperty('retval'))\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tif (result.data.error)\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tconst data = result.data.retval;\n\t\t\t\t\t\t// TODO(chris): check for something better/add new standardized return value\n\t\t\t\t\t\tif (result.data.code == 1)\n\t\t\t\t\t\t\tthis.setFeedback(true, data);\n\t\t\t\t\t\treturn resolve(data);\n\t\t\t\t\t}\n\t\t\t\t\t// TODO(chris): IMPLEMENT! Wrong result object\n\t\t\t\t\treject(result);\n\t\t\t\t}).catch(result => {\n\t\t\t\t\tif (result?.response?.status == 400 && result.response.data) {\n\t\t\t\t\t\tif (typeof result.response.data !== 'object' || !result.response.data.hasOwnProperty('retval'))\n\t\t\t\t\t\t\t// TODO(chris): IMPLEMENT! Error in API\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\tthis.clearValidation();\n\t\t\t\t\t\tconst remaining = this.setFeedback(\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t\tresult.response.data.retval\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (remaining) {\n\t\t\t\t\t\t\tresult.response.data.retval = remaining;\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (result?.response?.status == 500) {\n\t\t\t\t\t\tif (this.$fhcAlert)\n\t\t\t\t\t\t\tthis.$fhcAlert.handleSystemError(result);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn reject(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tclearValidationForName(name) {\n\t\t\t(this.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join(\"\")] || this.sortedInputs['_default'] || [])\n\t\t\t\t.forEach(input => input.clearValidation());\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t\t\n\t`\n}\n","export default {\n\tinject: [\n\t\t'$registerToForm'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfeedback: {\n\t\t\t\tsuccess: [],\n\t\t\t\tdanger: []\n\t\t\t}\n\t\t};\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.feedback = {\n\t\t\t\tsuccess: [],\n\t\t\t\tdanger: []\n\t\t\t};\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tconst ts = Date.now();\n\t\t\tthis.feedback[valid ? 'success' : 'danger']\n\t\t\t\t.push(...feedback.map(msg => [msg, ts]));\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$registerToForm)\n\t\t\tthis.$registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t`\n};\n","import FhcFragment from \"../Fragment.js\";\n\nlet _uuid = {};\n\nexport default {\n\tname: \"FormInput\",\n\tinheritAttrs: false,\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tinject: {\n\t\tregisterToForm: {\n\t\t\tfrom: '$registerToForm',\n\t\t\tdefault: null\n\t\t},\n\t\tclearValidationForName: {\n\t\t\tfrom: '$clearValidationForName',\n\t\t\tdefault: null\n\t\t}\n\t},\n\tprops: {\n\t\tbsFeedback: Boolean,\n\t\tnoAutoClass: Boolean,\n\t\tnoFeedback: Boolean,\n\t\tinputGroup: Boolean,\n\t\ttype: String,\n\t\tname: String,\n\t\tcontainerClass: [String, Array, Object],\n\t\tlabel: String,\n\t\t// NOTE(chris): remove these from $attrs array to prevent doubled event listeners\n\t\tonInput: [Array, Function],\n\t\t'onUpdate:modelValue': [Array, Function]\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tvalid: undefined,\n\t\t\tfeedback: [],\n\t\t\tmodelValueDummy: undefined\n\t\t}\n\t},\n\tcomputed: {\n\t\thasContainer() {\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn true;\n\t\t\tif (this.containerClass)\n\t\t\t\treturn true;\n\t\t\tfor (const prop in this.autoContainerClass)\n\t\t\t\tif (Object.hasOwn(this.autoContainerClass, prop))\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t},\n\t\tacc() {\n\t\t\tif (!this.containerClass)\n\t\t\t\treturn {};\n\t\t\tif (typeof this.containerClass === 'string' || this.containerClass instanceof String)\n\t\t\t\treturn this.containerClass.split(' ').reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\tif (Array.isArray(this.containerClass))\n\t\t\t\treturn this.containerClass.reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\treturn this.containerClass;\n\t\t},\n\t\tautoContainerClass() {\n\t\t\tif (this.noAutoClass)\n\t\t\t\treturn this.acc;\n\t\t\t\n\t\t\tconst acc = {...this.acc};\n\t\t\t\n\t\t\tif (this.inputGroup)\n\t\t\t\tacc['input-group-item'] = true;\n\n\t\t\tif (this.lcType == 'radio' || this.lcType == 'checkbox')\n\t\t\t\tacc['form-check'] = true;\n\t\t\t\n\t\t\tif (this.inputGroup && acc['form-check']) {\n\t\t\t\tacc['input-group-item'] = false;\n\t\t\t\tacc['form-check'] = false;\n\t\t\t\tacc['input-group-text'] = true;\n\t\t\t}\n\t\t\treturn acc;\n\t\t},\n\t\tlcType() {\n\t\t\tif (!this.type)\n\t\t\t\treturn 'text';\n\t\t\treturn this.type.toLowerCase();\n\t\t},\n\t\ttag() {\n\t\t\tswitch (this.lcType) {\n\t\t\t\tcase 'textarea':\n\t\t\t\tcase 'select':\n\t\t\t\t\treturn this.lcType;\n\t\t\t\tcase 'datepicker':\n\t\t\t\t\treturn 'VueDatePicker';\n\t\t\t\tcase 'autocomplete':\n\t\t\t\t\treturn 'PvAutocomplete';\n\t\t\t\tcase 'uploadimage':\n\t\t\t\t\treturn 'UploadImage';\n\t\t\t\tcase 'uploadfile':\n\t\t\t\tcase 'uploaddms':\n\t\t\t\t\treturn 'UploadDms';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'input';\n\t\t\t}\n\t\t},\n\t\tvalidationClass() {\n\t\t\tconst classes = [];\n\t\t\tif (this.valid)\n\t\t\t\tclasses.push('is-valid');\n\t\t\telse if (this.valid === false)\n\t\t\t\tclasses.push('is-invalid');\n\t\t\t\n\t\t\tif (!this.noAutoClass) {\n\t\t\t\tlet c = this.$attrs.class ? this.$attrs.class.split(' ') : [];\n\t\t\t\tswitch (this.lcType) {\n\t\t\t\t\t// TODO(chris): complete list!\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tif (!c.includes('form-select'))\n\t\t\t\t\t\t\tclasses.push('form-select');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'range':\n\t\t\t\t\t\tif (!c.includes('form-range'))\n\t\t\t\t\t\t\tclasses.push('form-range');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\tcase 'checkbox':\n\t\t\t\t\t\t// TODO(chris): maybe different handling?\n\t\t\t\t\t\tif (!c.includes('form-check-input') && !c.includes('btn-check'))\n\t\t\t\t\t\t\tclasses.push('form-check-input');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tif (!c.includes('form-control-color'))\n\t\t\t\t\t\t\tclasses.push('form-control-color');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'autocomplete':\n\t\t\t\t\tcase 'datepicker':\n\t\t\t\t\t\tclasses.push('p-0');\n\t\t\t\t\t\tclasses.push('border-0');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'text':\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'password':\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\tfeedbackClass() {\n\t\t\tif (!this.feedback || this.feedback === true)\n\t\t\t\treturn '';\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn {\n\t\t\t\t\t'valid-tooltip': this.valid === true,\n\t\t\t\t\t'invalid-tooltip': this.valid === false\n\t\t\t\t};\n\t\t\treturn {\n\t\t\t\t'valid-feedback': this.valid === true,\n\t\t\t\t'invalid-feedback': this.valid === false\n\t\t\t};\n\t\t},\n\t\tmodelValueCmp: {\n\t\t\tget() {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\treturn this.modelValueDummy;\n\t\t\t\treturn this.$attrs.modelValue;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\tthis.modelValueDummy = v;\n\t\t\t\tthis.$emit('update:modelValue', v);\n\t\t\t}\n\t\t},\n\t\tidCmp() {\n\t\t\tlet uuid = this.$attrs.id;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = this.$attrs.uid;\n\t\t\tif (!uuid && this.label)\n\t\t\t\tuuid = 'fhc-form-input';\n\t\t\tif (!uuid)\n\t\t\t\treturn undefined;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = 'dp-input-' + uuid;\n\t\t\tif (_uuid[uuid] === undefined)\n\t\t\t\t_uuid[uuid] = 0;\n\t\t\treturn uuid + '-' + (_uuid[uuid]++);\n\t\t}\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.valid = undefined;\n\t\t\tthis.feedback = [];\n\t\t},\n\t\tclearValidationForThisName() {\n\t\t\tif (this.valid === undefined)\n\t\t\t\treturn;\n\t\t\tif (this.clearValidationForName && this.name)\n\t\t\t\tthis.clearValidationForName(this.name);\n\t\t\telse\n\t\t\t\tthis.clearValidation();\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tthis.valid = valid;\n\t\t\t// NOTE(chris): On a list of radios/checkboxes only add the feedback message to the last item\n\t\t\tif (this.name && (this.lcType == 'radio' || this.lcType == 'checkbox')) {\n\t\t\t\tconst selector = 'input[type=\"' + this.lcType + '\"][name=\"' + this.name + '\"]';\n\t\t\t\tif ([...this.$el.parentNode.querySelectorAll(selector)].pop() != this.$refs.input)\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.feedback = feedback;\n\t\t},\n\t\t_loadComponents() {\n\t\t\tif (this.tag == 'VueDatePicker' && !this._.components.VueDatePicker) {\n\t\t\t\tthis._.components.VueDatePicker = Vue.defineAsyncComponent(() => import(\"../vueDatepicker.js.php\"));\n\t\t\t} else if (this.tag == 'PvAutocomplete' && !this._.components.PvAutocomplete) {\n\t\t\t\tthis._.components.PvAutocomplete = primevue.autocomplete;\n\t\t\t} else if (this.tag == 'UploadImage' && !this._.components.UploadImage) {\n\t\t\t\tthis._.components.UploadImage = Vue.defineAsyncComponent(() => import(\"./Upload/Image.js\"));\n\t\t\t} else if (this.tag == 'UploadDms' && !this._.components.UploadDms) {\n\t\t\t\tthis._.components.UploadDms = Vue.defineAsyncComponent(() => import(\"./Upload/Dms.js\"));\n\t\t\t}\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis._loadComponents();\n\t},\n\tbeforeUpdate() {\n\t\tthis._loadComponents();\n\t},\n\tmounted() {\n\t\tif (this.registerToForm)\n\t\t\tthis.registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class-name'] ? $attrs['input-class-name'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class'] ? $attrs['input-class'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(antrag_id, prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(studiensemester, prestudent_id, grund) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/abmeldung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}\n\t\t};\n\t},\n\tcancel(antrag_id) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\tparams: { antrag_id }\n\t\t};\n\t}\n};","import {CoreFetchCmpt} from '../../Fetch.js';\nimport CoreForm from '../../Form/Form.js';\nimport FormValidation from '../../Form/Validation.js';\nimport FormInput from '../../Form/Input.js';\n\nimport ApiStudstatusAbmeldung from '../../../api/factory/studstatus/abmeldung.js';\n\nvar _uuid = 0;\n\nexport default {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tCoreForm,\n\t\tFormValidation,\n\t\tFormInput\n\t},\n\temits: [\n\t\t'setInfos',\n\t\t'setStatus'\n\t],\n\tprops: {\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdata: null,\n\t\t\tsaving: false,\n\t\t\tformData: {\n\t\t\t\tgrund: ''\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\tstatusSeverity() {\n\t\t\tswitch (this.data.status)\n\t\t\t{\n\t\t\t\tcase 'Erstellt': return 'info';\n\t\t\t\tcase 'Pause':\n\t\t\t\tcase 'Zurueckgezogen': return 'danger';\n\t\t\t\tcase 'Genehmigt': return 'success';\n\t\t\t\tdefault: return 'warning';\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tload() {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusAbmeldung.getDetails(this.studierendenantragId, this.prestudentId))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status) {\n\t\t\t\t\t\tconst msg = (this.data.status == 'Pause' && this.data.status_insertvon == \"Studienabbruch\") ? Vue.computed(() => {\n\t\t\t\t\t\t\tlet status = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\t\t\treturn this.$p.t('studierendenantrag', 'status_x', {status});\n\t\t\t\t\t\t}) : Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp}));\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg,\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tcreateAntrag() {\n\t\t\tbootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide();\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusAbmeldung.create(\n\t\t\t\t\tthis.data.studiensemester_kurzbz,\n\t\t\t\t\tthis.data.prestudent_id,\n\t\t\t\t\tthis.formData.grund\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\n\t\t\t\t\tif (result.data === true)\n\t\t\t\t\t\tdocument.location += \"\";\n\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_open')})),\n\t\t\t\t\t\t\tseverity:'success'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t},\n\t\tcancelAntrag() {\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelling')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form.call(ApiStudstatusAbmeldung.cancel(this.data.studierendenantrag_id))\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (Number.isInteger(result.data))\n\t\t\t\t\t\tdocument.location = document.location.replace(/abmeldung\\/([0-9]*)\\/[0-9]*[\\/]?$/, 'abmeldung/$1') + \"/\" + result.data;\n\t\t\t\t\t\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelled')})),\n\t\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.uuid = _uuid++;\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t('lehre', 'studiengang')}}{{data.bezeichnung}}
    {{$p.t('lehre', 'organisationsform')}}{{data.orgform_bezeichnung}}
    {{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{data.name}}
    {{$p.t('person', 'personenkennzeichen')}}{{data.matrikelnr}}
    {{$p.t('lehre', 'studienjahr')}}{{data.studienjahr_kurzbz}}
    {{$p.t('lehre', 'studiensemester')}}{{data.studiensemester_kurzbz}}
    {{$p.t('lehre', 'semester')}}{{data.semester}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    {{$p.t('studierendenantrag', 'antrag_grund')}}:
    \n\t\t\t\t\t
    {{data.grund}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_cancel')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Abmeldung')}}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'title_Abmeldung')}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Abmeldung')}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t`\n}","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tupdatePersonUnrulyStatus(person_id, unruly) {\n\t\tconst params = { person_id, unruly }\n\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl,\n\t\t\tparams\n\t\t};\n\t},\n\tfilterPerson(params, base = '') {\n\t\t// TODO(chris): seems to be called from nowhere?\n\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl,\n\t\t\tparams\n\t\t};\n\t}\n};","import {CoreFetchCmpt} from '../../Fetch.js';\nimport CoreForm from '../../Form/Form.js';\nimport FormValidation from '../../Form/Validation.js';\nimport FormInput from '../../Form/Input.js';\n\nimport ApiStudstatusAbmeldung from '../../../api/factory/studstatus/abmeldung.js';\nimport ApiCheckperson from '../../../api/factory/checkperson.js';\n\nvar _uuid = 0;\n\nexport default {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tCoreForm,\n\t\tFormValidation,\n\t\tFormInput\n\t},\n\temits: [\n\t\t'setInfos',\n\t\t'setStatus'\n\t],\n\tprops: {\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdata: null,\n\t\t\tsaving: false,\n\t\t\tformData: {\n\t\t\t\tgrund: ''\n\t\t\t},\n\t\t\tunrulyInternal: false\n\t\t}\n\t},\n\tcomputed: {\n\t\tstatusSeverity() {\n\t\t\tswitch (this.data?.status)\n\t\t\t{\n\t\t\t\tcase 'Erstellt': return 'info';\n\t\t\t\tcase 'Pause':\n\t\t\t\tcase 'Zurueckgezogen': return 'danger';\n\t\t\t\tcase 'EinspruchAbgelehnt':\n\t\t\t\tcase 'Abgemeldet': return 'success';\n\t\t\t\tdefault: return 'warning';\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tload() {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusAbmeldung.getDetails(this.studierendenantragId, this.prestudentId))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status) {\n\t\t\t\t\t\tconst msg = (this.data.status == 'Pause' && this.data.status_insertvon == \"Studienabbruch\") ? Vue.computed(() => {\n\t\t\t\t\t\t\tlet status = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\t\t\treturn this.$p.t('studierendenantrag', 'status_x', {status});\n\t\t\t\t\t\t}) : Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp}));\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg,\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t});\n\t\t},\n\t\tcreateAntrag() {\n\t\t\tbootstrap.Modal.getOrCreateInstance(this.$refs.modal).hide();\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusAbmeldung.create(\n\t\t\t\t\tthis.data.studiensemester_kurzbz,\n\t\t\t\t\tthis.data.prestudent_id,\n\t\t\t\t\tthis.formData.grund\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\n\t\t\t\t\tif (this.unrulyInternal) {\n\t\t\t\t\t\tthis.$api\n\t\t\t\t\t\t\t.call(ApiCheckperson.updatePersonUnrulyStatus(this.data.person_id, true))\n\t\t\t\t\t\t\t.then(res => {\n\t\t\t\t\t\t\t\tif (res?.meta?.status === \"success\") {\n\t\t\t\t\t\t\t\t\tthis.$fhcAlert.alertSuccess(this.$p.t('studierendenantrag', 'antrag_unruly_updated'))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (result.data === true)\n\t\t\t\t\t\tdocument.location += \"\";\n\t\t\t\t\t\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_open')})),\n\t\t\t\t\t\t\tseverity:'success'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t},\n\t\tappendDropDownText(event) {\n\t\t\tthis.formData.grund = event.target.value\n\t\t\t\t? this.$p.t('studierendenantrag', event.target.value)\n\t\t\t\t: '';\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.uuid = _uuid++;\n\t},\n\twatch: {\n\t\t'formData.grund'(newVal) {\n\t\t\tthis.unrulyInternal = (newVal === this.$p.t('studierendenantrag', 'textLong_unruly'))\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t('lehre', 'studiengang')}}{{data.bezeichnung}}
    {{$p.t('lehre', 'organisationsform')}}{{data.orgform_bezeichnung}}
    {{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{data.name}}
    {{$p.t('person', 'personenkennzeichen')}}{{data.matrikelnr}}
    {{$p.t('lehre', 'studienjahr')}}{{data.studienjahr_kurzbz}}
    {{$p.t('lehre', 'studiensemester')}}{{data.studiensemester_kurzbz}}
    {{$p.t('lehre', 'semester')}}{{data.semester}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t
    {{$p.t('studierendenantrag', 'antrag_grund')}}:
    \n\t\t\t\t\n\t\t\t\t\t
    {{data?.grund}}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Abmeldung')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'title_Abmeldung')}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Abmeldung')}}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(antrag_id, prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/unterbrechung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}\n\t\t};\n\t},\n\tcancel(antrag_id) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/unterbrechung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tantrag_id\n\t\t\t}\n\t\t};\n\t}\n};","import {CoreFetchCmpt} from '../../Fetch.js';\nimport CoreForm from '../../Form/Form.js';\nimport FormValidation from '../../Form/Validation.js';\nimport FormInput from '../../Form/Input.js';\n\nimport ApiStudstatusUnterbrechung from '../../../api/factory/studstatus/unterbrechung.js';\n\nexport default {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tCoreForm,\n\t\tFormValidation,\n\t\tFormInput\n\t},\n\temits: [\n\t\t'setInfos',\n\t\t'setStatus'\n\t],\n\tprops: {\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdata: null,\n\t\t\tsaving: false,\n\t\t\tattachment: [],\n\t\t\tstsem: null,\n\t\t\tcurrentWiedereinstieg: '',\n\t\t\tsiteUrl: FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t}\n\t},\n\tcomputed: {\n\t\tstatusSeverity() {\n\t\t\tswitch (this.data.status)\n\t\t\t{\n\t\t\t\tcase 'Erstellt': return 'info';\n\t\t\t\tcase 'Pause':\n\t\t\t\tcase 'Zurueckgezogen':\n\t\t\t\tcase 'Abgelehnt': return 'danger';\n\t\t\t\tcase 'Genehmigt':\n\t\t\t\tcase 'EmailVersandt': return 'success';\n\t\t\t\tdefault: return 'warning';\n\t\t\t}\n\t\t},\n\t\tdatumWsFormatted() {\n\t\t\tlet datumUnformatted = '';\n\n\t\t\tif (this.data.datum_wiedereinstieg) {\n\t\t\t\tdatumUnformatted = this.data.datum_wiedereinstieg;\n\t\t\t} else {\n\t\t\t\tif (this.stsem !== null && this.data.studiensemester[this.stsem].wiedereinstieg)\n\t\t\t\t\tdatumUnformatted = this.data.studiensemester[this.stsem].wiedereinstieg;\n\t\t\t}\n\t\t\tif (datumUnformatted === '')\n\t\t\t\treturn datumUnformatted;\n\t\t\tlet datum = new Date(datumUnformatted);\n\t\t\treturn datum.toLocaleDateString();\n\t\t},\n\t\tsemesterOffsets() {\n\t\t\tif (!this.data || !this.data.studiensemester)\n\t\t\t\treturn [];\n\t\t\treturn Object.values(this.data.studiensemester)\n\t\t\t\t.filter(el => !el.disabled)\n\t\t\t\t.map(el => el.studiensemester_kurzbz);\n\t\t},\n\t\tsemester() {\n\t\t\tif (!this.stsem)\n\t\t\t\treturn '';\n\t\t\treturn this.data.semester + this.semesterOffsets.indexOf(this.stsem);\n\t\t}\n\t},\n\tmethods: {\n\t\tload() {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusUnterbrechung.getDetails(\n\t\t\t\t\tthis.studierendenantragId,\n\t\t\t\t\tthis.prestudentId\n\t\t\t\t))\n\t\t\t\t.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\t\tif (this.data.status) {\n\t\t\t\t\t\t\tconst msg = (this.data.status == 'Pause' && this.data.status_insertvon == \"Studienabbruch\") ? Vue.computed(() => {\n\t\t\t\t\t\t\t\tlet status = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\t\t\t\treturn this.$p.t('studierendenantrag', 'status_x', {status});\n\t\t\t\t\t\t\t}) : Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp}));\n\t\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\t\tmsg,\n\t\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t},\n\t\tcreateAntrag() {\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusUnterbrechung.create(\n\t\t\t\t\tthis.stsem !== null && this.data.studiensemester[this.stsem].studiensemester_kurzbz,\n\t\t\t\t\tthis.data.prestudent_id,\n\t\t\t\t\tthis.data.grund,\n\t\t\t\t\tthis.stsem !== null && this.currentWiedereinstieg,\n\t\t\t\t\tthis.attachment\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (Number.isInteger(result.data))\n\t\t\t\t\t\tdocument.location += \"/\" + result.data;\n\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_created')})),\n\t\t\t\t\t\t\tseverity: 'info'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t},\n\t\tcancelAntrag() {\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelling')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form.clearValidation();\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusUnterbrechung.cancel(\n\t\t\t\t\tthis.data.studierendenantrag_id\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (Number.isInteger(result.data))\n\t\t\t\t\t\tdocument.location = document.location.replace(/unterbrechung\\/([0-9]*)\\/[0-9]*[\\/]?$/, 'unterbrechung/$1') + \"/\" + result.data;\n\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (this.data.status)\n\t\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t\t});\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_cancelled')})),\n\t\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t('lehre', 'studiengang')}}{{data.bezeichnung}}
    {{$p.t('lehre', 'organisationsform')}}{{data.orgform_bezeichnung}}
    {{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{data.name}}
    {{$p.t('person', 'personenkennzeichen')}}{{data.matrikelnr}}
    {{$p.t('lehre', 'studienjahr')}}{{data.studienjahr_kurzbz}}{{stsem === null ? '' : data.studiensemester[stsem].studienjahr_kurzbz}}
    {{$p.t('lehre', 'semester')}}{{data.semester}}{{semester}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{{data.studiensemester_kurzbz}}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{{datumWsFormatted}}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {{$p.t('studierendenantrag', 'antrag_dateianhaenge')}} \n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'no_attachments')}}\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_create_Unterbrechung')}}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag', 'btn_cancel')}}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t
    `\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tgetLvs(antrag_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tcancel(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/saveLvs',\n\t\t\tparams: {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t}\n\t\t};\n\t}\n};","import {CoreFetchCmpt} from '../../Fetch.js';\nimport CoreForm from '../../Form/Form.js';\nimport FormValidation from '../../Form/Validation.js';\n\nimport ApiStudstatusWiederholung from '../../../api/factory/studstatus/wiederholung.js';\n\nexport default {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tCoreForm,\n\t\tFormValidation\n\t},\n\temits: [\n\t\t'setInfos',\n\t\t'setStatus',\n\t\t'update:status'\n\t],\n\tprops: {\n\t\tstatus: String,\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdata: null,\n\t\t\tsaving: false,\n\t\t\tinfos: []\n\t\t}\n\t},\n\tcomputed: {\n\t\tstatusSeverity() {\n\t\t\tswitch (this.data.status)\n\t\t\t{\n\t\t\t\tcase 'Offen':\n\t\t\t\tcase 'Erstellt':\n\t\t\t\tcase 'ErsteAufforderungVersandt': return 'info';\n\t\t\t\tcase 'Genehmigt': return 'success';\n\t\t\t\tcase 'Pause':\n\t\t\t\tcase 'Verzichtet':\n\t\t\t\tcase 'Abgemeldet': return 'danger';\n\t\t\t\tdefault: return 'warning';\n\t\t\t}\n\t\t},\n\t\tdatumPruefungFormatted() {\n\t\t\tif(!this.data.pruefungsdatum)\n\t\t\t\treturn '';\n\t\t\tlet datum = new Date(this.data.pruefungsdatum);\n\t\t\treturn datum.toLocaleDateString();\n\t\t}\n\t},\n\tmethods: {\n\t\tload() {\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusWiederholung.getDetails(\n\t\t\t\t\tthis.prestudentId\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (!this.data.status || this.data.status == 'ErsteAufforderungVersandt' || this.data.status == 'ZweiteAufforderungVersandt') {\n\t\t\t\t\t\tthis.data.status = 'Offen';\n\t\t\t\t\t\tthis.data.statustyp = this.$p.t('studierendenantrag', 'status_open');\n\t\t\t\t\t}\n\t\t\t\t\tthis.$emit('update:status', this.data.status);\n\t\t\t\t\tconst msg = (this.data.status == 'Pause' && this.data.status_insertvon == \"Studienabbruch\") ? Vue.computed(() => {\n\t\t\t\t\t\tlet status = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\t\treturn this.$p.t('studierendenantrag', 'status_x', {status});\n\t\t\t\t\t}) : Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp}));\n\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\tmsg,\n\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t});\n\t\t\t\t\treturn result;\n\t\t\t\t});\n\t\t},\n\t\tcreateAntrag() {\n\t\t\tthis.createAntragWithStatus(true);\n\t\t},\n\t\tcancelAntrag() {\n\t\t\tthis.createAntragWithStatus(false);\n\t\t},\n\t\tcreateAntragWithStatus(repeat) {\n\t\t\tlet func = repeat ? 'create' : 'cancel';\n\t\t\tlet nextState = repeat ? 'Erstellt' : 'Verzichtet';\n\n\t\t\tthis.$emit('setStatus', {\n\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_saving')})),\n\t\t\t\tseverity: 'warning'\n\t\t\t});\n\t\t\tthis.saving = true;\n\n\t\t\tthis.$refs.form\n\t\t\t\t.call(ApiStudstatusWiederholung[func](\n\t\t\t\t\tthis.data.prestudent_id,\n\t\t\t\t\tthis.data.studiensemester_kurzbz\n\t\t\t\t))\n\t\t\t\t.then(result => {\n\t\t\t\t\tif (result.data === true)\n\t\t\t\t\t\tdocument.location += \"\";\n\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t\tif (!this.data.status)\n\t\t\t\t\t\tthis.data.status = nextState;\n\t\t\t\t\tthis.$emit('update:status', this.data.status);\n\t\t\t\t\tthis.$emit(\"setStatus\", {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.data.statustyp})),\n\t\t\t\t\t\tseverity: this.statusSeverity\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.$emit('setStatus', {\n\t\t\t\t\t\tmsg: Vue.computed(() => this.$p.t('studierendenantrag', 'status_x', {status: this.$p.t('studierendenantrag', 'status_error')})),\n\t\t\t\t\t\tseverity: 'danger'\n\t\t\t\t\t});\n\t\t\t\t\tthis.saving = false;\n\t\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\t});\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.infos = [...Array(5).keys()].map(n => ({\n\t\t\tbody: Vue.computed(() => this.$p.t('studierendenantrag', 'infotext_Wiederholung_' + n))\n\t\t}));\n\t\tthis.$emit('setInfos', this.infos);\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    {{$p.t('lehre', 'studiengang')}}{{data.bezeichnung}}
    {{$p.t('lehre', 'organisationsform')}}{{data.orgform_bezeichnung}}
    {{$p.t('projektarbeitsbeurteilung', 'nameStudierende')}}{{data.name}}
    {{$p.t('person', 'personenkennzeichen')}}{{data.matrikelnr}}
    {{$p.t('studierendenantrag', 'antrag_Wiederholung_pruefung')}}{{data.lvbezeichnung}}
    {{$p.t('studierendenantrag', 'antrag_Wiederholung_pruefung_date')}}{{datumPruefungFormatted}}
    \n\t\t\t\t
    \n\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t{{$p.t('studierendenantrag/antrag_Wiederholung_button_yes')}}\n\t\t\t\t\t\n\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t`\n}\n","import StudierendenantragAbmeldung from './Form/Abmeldung.js';\nimport StudierendenantragAbmeldungStgl from './Form/AbmeldungStgl.js';\nimport StudierendenantragUnterbrechung from './Form/Unterbrechung.js';\nimport StudierendenantragWiederholung from './Form/Wiederholung.js';\n\nexport default {\n\tcomponents: {\n\t\tStudierendenantragAbmeldung,\n\t\tStudierendenantragAbmeldungStgl,\n\t\tStudierendenantragUnterbrechung,\n\t\tStudierendenantragWiederholung\n\t},\n\temits: [\n\t\t'update:infoArray',\n\t\t'update:statusMsg',\n\t\t'update:statusSeverity'\n\t],\n\tprops: {\n\t\tantragType: String,\n\t\tprestudentId: Number,\n\t\tstudierendenantragId: Number,\n\t\tinfoArray: Array,\n\t\tstatusMsg: String,\n\t\tstatusSeverity: String\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstatus: ''\n\t\t};\n\t},\n\tcomputed: {\n\t\ttypeComponent() {\n\t\t\treturn 'Studierendenantrag' + this.antragType;\n\t\t},\n\t\tinfoText() {\n\t\t\treturn this.$p.t('studierendenantrag/info_' + this.antragType + '_' + this.status);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t {{$p.t('studierendenantrag', 'title_' + antragType)}}\n\t\t
    \n\t\t
    \n\t\t
    \n\t\t\n\t\t\n\t
    \n\t`\n}","export default {\n\tprops: {\n\t\tmsg: String,\n\t\tseverity: String\n\t},\n\tcomputed: {\n\t\tseverityClass() {\n\t\t\treturn 'alert-' + this.severity;\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t
    \n\t`\n}\n","export default {\n\tprops: {\n\t\tinfos: Array,\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t\t{{info.title}}\n\t\t\t\t

    \n\t\t\t\t

    \n\t\t\t
    \n\t\t\t

    \n\t\t
    \n\t
    \n\t`\n}\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\t\n\t\t\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","import StudierendenantragAntrag from \"../../components/Studierendenantrag/Antrag.js\";\nimport StudierendenantragStatus from \"../../components/Studierendenantrag/Status.js\";\nimport StudierendenantragInfoblock from \"../../components/Studierendenantrag/Infoblock.js\";\nimport PluginsPhrasen from '../../plugins/Phrasen.js';\n\nconst app = Vue.createApp({\n\tname: 'AntragApp',\n\tcomponents: {\n\t\tStudierendenantragAntrag,\n\t\tStudierendenantragStatus,\n\t\tStudierendenantragInfoblock\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tstatus: {\n\t\t\t\tmsg: '',\n\t\t\t\tseverity: ''\n\t\t\t},\n\t\t\tinfoArray: []\n\t\t};\n\t}\n});\napp\n\t.use(PluginsPhrasen)\n\t.mount('#wrapper');","export default {\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: String\n\t},\n\tcomputed: {\n\t\tvalueAsBase64DataString() {\n\t\t\tif (!this.modelValue || this.modelValue.substring(0, 10) == 'data:image')\n\t\t\t\treturn this.modelValue;\n\t\t\treturn 'data:image/jpeg;charset=utf-8;base64,' + this.modelValue;\n\t\t}\n\t},\n\tmethods: {\n\t\topenUploadDialog() {\n\t\t\tthis.$refs.fileInput.click();\n\t\t},\n\t\tpickFile() {\n\t\t\tlet file = this.$refs.fileInput.files;\n\t\t\tif (file && file[0]) {\n\t\t\t\tlet reader = new FileReader();\n\t\t\t\treader.onload = e => {\n\t\t\t\t\tthis.$emit('update:modelValue', e.target.result);\n\t\t\t\t}\n\t\t\t\treader.readAsDataURL(file[0]);\n\t\t\t}\n\t\t},\n\t\tdeleteImage() {\n\t\t\tthis.$emit('update:modelValue', '');\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    `\n}","import DmsItem from './Dms/Item.js';\n\nexport default {\n\tcomponents: {\n\t\tDmsItem\n\t},\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [ FileList, Array ],\n\t\t\trequired: true\n\t\t},\n\t\tmultiple: Boolean,\n\t\tid: String,\n\t\tname: String,\n\t\tinputClass: [String, Array, Object],\n\t\tnoList: Boolean,\n\t\taccept: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tmethods: {\n\t\tstringifyFile(file) {\n\t\t\treturn JSON.stringify({\n\t\t\t\tlastModified: file.lastModified,\n\t\t\t\tlastModifiedDate: file.lastModifiedDate,\n\t\t\t\tname: file.name,\n\t\t\t\tsize: file.size,\n\t\t\t\ttype: file.type\n\t\t\t});\n\t\t},\n\t\taddFiles(event) {\n\t\t\tif (!this.multiple)\n\t\t\t\treturn this.$emit('update:modelValue', event.target.files);\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst doubles = [];\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tdt.items.add(file);\n\t\t\t\tdoubles.push(this.stringifyFile(file));\n\t\t\t}\n\t\t\tfor (var file of event.target.files) {\n\t\t\t\t// NOTE(chris): deep check (with FileReader) would require an async function so we only check the basic attributes\n\t\t\t\tif (doubles.indexOf(this.stringifyFile(file)) < 0)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t},\n\t\tremoveFile(id) {\n\t\t\tconst fileToRemove = Array.from(this.modelValue)[id];\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tif (file !== fileToRemove)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (!n)\n\t\t\t\treturn;\n\t\t\tif (n instanceof FileList) {\n\t\t\t\tif (!this.$refs.upload) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn this.$refs.upload.files = n;\n\t\t\t}\n\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst dms = [];\n\t\t\tfor (var file of n) {\n\t\t\t\tif (file instanceof File) {\n\t\t\t\t\tdt.items.add(file);\n\t\t\t\t} else {\n\t\t\t\t\tconst dmsFile = new File([JSON.stringify(file)], file.name, {\n\t\t\t\t\t\ttype: 'application/x.fhc-dms+json'\n\t\t\t\t\t});\n\t\t\t\t\tdt.items.add(dmsFile);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    `\n}","export default {\n\temits: [\n\t\t'delete'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [File, Object],\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreview: ''\n\t\t};\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (n.type == 'application/x.fhc-dms+json') {\n\t\t\t\tn.text().then(result => {\n\t\t\t\t\tconst obj = JSON.parse(result);\n\t\t\t\t\tthis.preview = obj.preview || '';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • `\n}\n"],"names":["CoreFetchCmpt","emits","props","refresh","type","Boolean","apiFunction","required","Function","apiFunctionParameters","watch","newValue","oldValue","this","fetchData","data","loading","error","errorMessage","created","methods","apiFunctionResult","Promise","then","successHandler","catch","errorHandler","finally","finallyHandler","setError","response","$emit","undefined","retval","message","template","FhcFragment","render","$slots","default","CoreForm","components","provide","$registerToForm","component","inputs","indexOf","push","$clearValidationForName","clearValidationForName","tag","String","computed","sortedInputs","reduce","a","c","name","lcType","substr","lastIndexOf","factory","console","warn","Object","create","getPrototypeOf","$fhcApi","getOwnPropertyDescriptors","get","post","_defaultErrorHandlers","args","clearValidation","setFeedback","unshift","$api","call","overwriteconfig","_sendFeedbackToInput","feedback","valid","length","forEach","input","$fhcAlert","Array","isArray","remaining","filter","fb","entries","split","slice","map","p","join","fromEntries","send","promise","resolve","reject","result","status","hasOwnProperty","code","handleSystemError","FormValidation","inject","success","danger","ts","Date","now","msg","mounted","_uuid","FormInput","inheritAttrs","registerToForm","from","bsFeedback","noAutoClass","noFeedback","inputGroup","containerClass","label","onInput","modelValueDummy","hasContainer","prop","autoContainerClass","hasOwn","acc","toLowerCase","validationClass","classes","$attrs","class","includes","feedbackClass","modelValueCmp","modelValue","set","v","idCmp","uuid","id","uid","clearValidationForThisName","selector","$el","parentNode","querySelectorAll","pop","$refs","_loadComponents","_","VueDatePicker","PvAutocomplete","UploadImage","UploadDms","Vue","defineAsyncComponent","primevue","autocomplete","import","beforeMount","beforeUpdate","ApiStudstatusAbmeldung","getDetails","antrag_id","prestudent_id","method","url","studiensemester","grund","params","cancel","StudierendenantragAbmeldung","prestudentId","Number","studierendenantragId","saving","formData","statusSeverity","load","status_insertvon","$p","t","statustyp","severity","createAntrag","bootstrap","Modal","getOrCreateInstance","modal","hide","form","studiensemester_kurzbz","document","location","cancelAntrag","studierendenantrag_id","isInteger","replace","ApiCheckperson","updatePersonUnrulyStatus","person_id","unruly","filterPerson","base","StudierendenantragAbmeldungStgl","unrulyInternal","res","meta","alertSuccess","appendDropDownText","event","target","value","newVal","ApiStudstatusUnterbrechung","datum_wiedereinstieg","attachment","StudierendenantragUnterbrechung","stsem","currentWiedereinstieg","siteUrl","FHC_JS_DATA_STORAGE_OBJECT","app_root","ci_router","datumWsFormatted","datumUnformatted","wiedereinstieg","toLocaleDateString","semesterOffsets","values","el","disabled","semester","ApiStudstatusWiederholung","getLvs","saveLvs","forbiddenLvs","mandatoryLvs","StudierendenantragWiederholung","infos","datumPruefungFormatted","pruefungsdatum","createAntragWithStatus","repeat","func","nextState","keys","n","body","StudierendenantragAntrag","antragType","infoArray","statusMsg","typeComponent","infoText","StudierendenantragStatus","severityClass","StudierendenantragInfoblock","search","searchsettings","config","searchAdvanced","searchdummy","phrasen$1","loadCategory","category","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","getHeader","navigation_page","getMenu","filter$1","saveCustomFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","studstatus","abmeldung","stdsem","errorHandling","allSettled","antrag","errorHeader","unterbrechung","wiederholung","leitung","getStgs","getAntraege","getHistory","getPrestudents","query","signal","timeout","approve","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","getProfilRequestFiles","requestID","selectProfilRequest","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","students","encodeURIComponent","getUri","prestudent","person","relative_path","getStg","setStg","studiengang_kz","konto","tabulatorConfig","self","ajaxURL","ajaxParams","e","only_open","studiengang_kz_intern","stg_kz","ajaxRequestFunc","ajaxResponse","checkDoubles","confirmErrorHandler","insert","counter","edit","delete","buchungsnr","getBuchungstypen","group","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","save","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","lehrveranstaltung_id","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","update","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","unrulyParam","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","typ","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","title","ampeln","open","all","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","options","globalProperties","addEndpoints","_get_config","uri","TypeError","_clean_return_value","fhcApiAxios","baseURL","interceptors","request","use","FormData","every","item","FileList","i","File","newData","nd","key","file","append","jsondata","JSON","stringify","errors","err","handled","alertDefault","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","alertSystemError","exception","db","heading","sql","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","bind","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","isError","hasData","trim","getData","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","helperAppContainer","createElement","helperApp","createApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","called_path","called_method","detail","openMessagecard","Collapse","getAttribute","toggle","unmounted","parentElement","removeChild","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","mount","appendChild","FhcAlert","FhcPhrasen","toast","add","summary","life","alertInfo","alertWarning","alert","confirmDelete","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","html","alertMultiple","messageArray","errMsg","toUpperCase","stack","handleSystemMessage","resetFormValidation","Event","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","errs","DEFAULT_ERROR_CONFIG","fail","combine","handler","async","_format_toast","_default","field","msgs","sort","b","n_errors","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","configoverwrite","index","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","ref","user_locale","server_languages","find","LC_Time","catArray","row","phrase","text","obj","elem","extractCategory","t_ref","val","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang","Image","valueAsBase64DataString","substring","openUploadDialog","fileInput","click","pickFile","files","reader","FileReader","onload","readAsDataURL","deleteImage","Dms","DmsItem","preview","parse","multiple","inputClass","noList","stringifyFile","lastModified","lastModifiedDate","addFiles","dt","DataTransfer","doubles","items","removeFile","fileToRemove","upload","dmsFile"],"mappings":"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"} \ No newline at end of file diff --git a/public/dist/js/apps/lehre/Antrag/Leitung.js b/public/dist/js/apps/lehre/Antrag/Leitung.js index a8db0de34..63a7476c3 100644 --- a/public/dist/js/apps/lehre/Antrag/Leitung.js +++ b/public/dist/js/apps/lehre/Antrag/Leitung.js @@ -1,4 +1,4 @@ -import t from"../../../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js?2025121701";import e from"../../../../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js?2025121701";import n from"../../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js?2025121701";import r from"../../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js?2025121701";const s="studierendenantrag_leitung_2023-11-14_header_filter";var a={props:{stgs:Array},emits:["input"],data:()=>({todo_value:"",stg_value:""}),computed:{value(){const t=[];return this.todo_value&&t.push(this.todo_value),this.stg_value&&t.push(this.stg_value),t.join("/")}},watch:{value(t){window.localStorage.setItem(s,t),this.$emit("input",t)}},created(){var t="todo";const e=window.localStorage.getItem(s);null!==e&&(t=e),(t=t.split("/")).length&&(1==t.length&&("todo"==t[0]?t.push(""):t.unshift("")),this.stg_value=t.pop(),this.todo_value=t.pop())},template:'\n\t
    \n\t\t

    {{$p.t(\'studierendenantrag\', \'studierendenantraege\')}}

    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t
    \n\t'},i={name:"BootstrapModal",data:()=>({modal:null,fullscreen:!1}),props:{backdrop:{type:[Boolean,String],default:!0,validator:t=>["static",!0,!1].includes(t)},focus:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},noCloseBtn:Boolean,dialogClass:[String,Array,Object],headerClass:{type:[String,Array,Object],default:""},bodyClass:{type:[String,Array,Object],default:"px-4 py-5"},footerClass:{type:[String,Array,Object],default:""},allowFullscreenExpand:{type:Boolean,default:!1}},emits:["hideBsModal","hiddenBsModal","hidePreventedBsModal","showBsModal","shownBsModal"],methods:{dispose(){return this.modal.dispose()},handleUpdate(){return this.modal.handleUpdate()},hide(){return this.modal.hide()},show(t){return this.modal.show(t)},toggle(){return this.modal.toggle()},toggleFullscreen(){this.fullscreen=!this.fullscreen}},mounted(){this.$refs.modal&&(this.modal=new bootstrap.Modal(this.$refs.modal,{backdrop:this.backdrop,focus:this.focus,keyboard:this.keyboard}))},popup(t,e,n,r){const s=this,a={};void 0!==t&&(a.default=()=>t),void 0!==n&&(a.title=()=>n),void 0!==r&&(a.footer=()=>r);let i=!1;return"undefined"!=typeof primevue&&(i=!0),new Promise((t,n)=>{const r=Vue.createApp({name:"ModalTmpApp",setup:()=>()=>Vue.h(s,{class:"fade",...e,ref:"modal","onHidden.bs.modal":r.unmount},a),mounted(){this.$refs.modal.show()},beforeUnmount(){this.$refs.modal&&(!1!==this.$refs.modal.result?t(this.$refs.modal.result):n())},unmounted(){o.parentElement.removeChild(o)}}),o=document.createElement("div");i&&r.use(primevue.config.default,{zIndex:{overlay:9999}}),Promise.resolve().then(function(){return tt}).then(t=>{r.use(t.default),r.mount(o),document.body.appendChild(o)})})},template:''},o={name:"BootstrapAlert",components:{BsModal:i},mixins:[i],props:{dialogClass:{type:[String,Array,Object],default:"modal-dialog-centered"},onHideBsModal:Function,onHiddenBsModal:Function,onHidePreventedBsModal:Function,onShowBsModal:Function,onShownBsModal:Function},data:()=>({result:!0}),mounted(){this.modal=this.$refs.modalContainer.modal},popup(t,e){return i.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t'},d={getStgs:()=>({method:"get",url:"/api/frontend/v1/studstatus/leitung/getActiveStgs"}),getAntraege:(t,e,n)=>({method:"get",url:"/api/frontend/v1/studstatus/leitung/getAntraege/"+t}),getHistory:t=>({method:"get",url:"/api/frontend/v1/studstatus/leitung/getHistory/"+t}),getPrestudents:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/getPrestudents",params:{query:t}}),approve:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/approveAntrag",params:t}),reject:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/rejectAntrag",params:t}),reopen:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/reopenAntrag",params:t}),pause:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/pauseAntrag",params:t}),unpause:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/unpauseAntrag",params:t}),object:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/objectAntrag",params:t}),approveObjection:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/approveObjection",params:t}),denyObjection:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/denyObjection",params:t})},l={components:{ActionsNew:{components:{BsModal:i,AutoComplete:primevue.autocomplete},emits:["reload"],data:()=>({data:[],student:"",abortController:null}),computed:{newUrl(){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/lehre/Studierendenantrag/abmeldungStgl/"+this.student.prestudent_id}},methods:{openForm(){bootstrap.Modal.getInstance(this.$refs.modal).hide(),i.popup(Vue.h("iframe",{src:this.newUrl,class:"position-absolute top-0 start-0 w-100 h-100"}),{dialogClass:"modal-fullscreen"},this.$p.t("studierendenantrag","antrag_header")).then(()=>{this.$emit("reload"),this.student=""})},loadData(t){if(t.query.length<2)return!1;this.abortController&&this.abortController.abort(),this.abortController=new AbortController,this.$api.call(d.getPrestudents(t.query),{signal:this.abortController.signal,timeout:3e4}).then(t=>{this.data=t.data}).catch(this.$fhcAlert.handleSystemError)}},template:'\n\t
    \n\t\t\n\t\t\n\t
    \n\t'},ActionsColumns:{props:{columns:Array},methods:{toggleColumn(t){t.visible=!t.visible,t.original.toggle()}},template:'\n\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t'}},props:{selectedData:Array,columns:Array,stgL:Array,stgA:Array},emits:["reload","download","action:approve","action:reject","action:reopen"],data:()=>({currentStudent:""}),computed:{selectedCanBeApproved(){return!!this.selectedData.length&&(!!this.selectedData.every(t=>this.stgL.includes(t.studiengang_kz))&&this.selectedData.filter(t=>"Wiederholung"==t.typ&&"Lvszugewiesen"==t.status||"Wiederholung"!=t.typ&&("Erstellt"==t.status||"ErstelltStgl"==t.status)).length==this.selectedData.length)},selectedCanBeRejected(){return!!this.selectedData.length&&(!!this.selectedData.every(t=>this.stgL.includes(t.studiengang_kz))&&this.selectedData.filter(t=>"Unterbrechung"==t.typ&&"Erstellt"==t.status).length==this.selectedData.length)},selectedCanBeReopened(){return!!this.selectedData.length&&(!!this.selectedData.every(t=>this.stgA.includes(t.studiengang_kz))&&this.selectedData.filter(t=>"Wiederholung"==t.typ&&"Verzichtet"==t.status).length==this.selectedData.length)},newUrl(){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+this.currentStudent}},methods:{hideModal(){bootstrap.Modal.getInstance(this.$refs.modal).hide()}},template:'\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t{{$p.t(\'table\', \'with_selected\', {count: selectedData.length})}}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t'};const u={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t'};var p={getDetails:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t}),getLvs:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getLvs/"+t}),create:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/createAntrag",params:{prestudent_id:t,studiensemester:e}}),cancel:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/cancelAntrag",params:{prestudent_id:t,studiensemester:e}}),saveLvs:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/saveLvs",params:{forbiddenLvs:t,mandatoryLvs:e}})},c={name:"StudierendenantragLeitungLvPopup",components:{CoreFetchCmpt:u},mixins:[o],props:{footer:Boolean,antragId:Number,countRemaining:Number},data:()=>({lvs:null,repeat_last:!1,refresh:!0,result:!1,check:!1}),computed:{lvzugelassen(){let t={};for(let e in this.lvs)t[e]=this.lvs[e]?this.lvs[e].filter(t=>t.antrag_zugelassen):null;return t},lvzugelassenLength(){return Object.values(this.lvzugelassen).reduce((t,e)=>t+(e?e.length:0),0)}},methods:{setlvs(t){this.repeat_last=!!t.repeat_last,this.repeat_last&&delete t.repeat_last,this.lvs=t},loadlvs(){return this.antragId?this.$api.call(p.getLvs(this.antragId)):new Promise(()=>{})},submit(t){this.result=[t,this.check],this.hide()}},watch:{antragId(){Vue.nextTick(()=>{this.refresh=!this.refresh})}},popup(t,e){return"string"==typeof e&&(e={default:e}),o.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t\t\n\t'};function g(t,e,n){let r=document.createElement("div"),s=null,a=t.getValue();if(Array.isArray(a)){const t=a[0]?new Date(a[0]):null,e=a[1]?new Date(a[1]):null;s=[t,e]}return Vue.createApp({components:{PrimevueCalendar:primevue.calendar},data:()=>({val:s}),watch:{val(t){n(t)}},template:'\n\t\t\t\t '}).use(primevue.config.default).mount(r),r}primevue||console.error("PrimeVue not loaded!"),Tabulator.extendModule("filter","filters",{dates:(t,e)=>{if(!t)return!0;let n=new Date(e);if(Array.isArray(t)){let e=new Date(t[0]);if(t[1]){let r=new Date(t[1]);return r.setHours(23,59,59,999),n>=e&&n<=r}return n.toDateString()===e.toDateString()}let r=new Date(t);return n.toDateString()===r.toDateString()}});var h={components:{BsModal:i,CoreFetchCmpt:u,LvPopup:c},props:{selectedData:Array,columnData:Array,stgL:Array,stgA:Array,filter:String},emits:["update:columnData","update:selectedData","action:approve","action:reject","action:reopen","action:object","action:objectionDeny","action:objectionApprove","action:cancel","action:pause","action:unpause"],data:()=>({table:null,lastHistoryClickedId:null,historyData:[],lvsData:null}),methods:{reload(t){this.table.setData("/"+(t||""))},download(){this.table.download("csv","data.csv",{delimiter:";",bom:!0})},getHistory(){return null===this.lastHistoryClickedId?null:this.$api.call(d.getHistory(this.lastHistoryClickedId)).then(t=>{this.historyData=t.data.sort((t,e)=>t.insertamum>e.insertamum)}).catch(this.$fhcAlert.handleSystemError)},getHistoryStatus(t,e){if("Studienabbruch"==t.insertvon)return this.$p.t("studierendenantrag/status_stop");if(e>0&&"Pause"==this.historyData[e-1].studierendenantrag_statustyp_kurzbz){if(e>1&&"Pause"!=this.historyData[e-2].studierendenantrag_statustyp_kurzbz)return"Pause"==t.studierendenantrag_statustyp_kurzbz?t.typ:t.typ+" ("+this.$p.t("studierendenantrag/status_unpaused")+")";let n=2;for(;e-n>0&&"Pause"==this.historyData[e-n].studierendenantrag_statustyp_kurzbz;)n++;return"Pause"==t.studierendenantrag_statustyp_kurzbz&&n++,n%2?t.typ:t.typ+" ("+this.$p.t("studierendenantrag/status_unpaused")+")"}return t.typ},showHistoryGrund(t){this.$refs.modalGrund.$el.addEventListener("hidden.bs.modal",this.$refs.history.show,{once:!0}),this.$refs.modalGrundPre.innerHTML=t},showLVs(t){this.lvsData=t,this.$refs.lvList.show()}},async mounted(){function t(t){let e=t.getValue();return e?new Date(e).toLocaleDateString():" "}await this.$p.loadCategory(["lehre","studierendenantrag","person","global","ui"]),this.table=new Tabulator(this.$refs.table,{placeholder:"Keine zu bearbeitenden Datensätze",movableColumns:!0,height:"65vh",layout:"fitDataFill",ajaxURL:"/"+(this.filter||""),ajaxRequestFunc:t=>this.$api.call(d.getAntraege(t)),ajaxResponse:(t,e,n)=>n.data,persistence:{sort:!0,filter:!0,headerFilter:!0,group:!0,page:!0,columns:["width","visible"]},persistenceID:"studierendenantrag_leitung_2023-11-14",columns:[{formatter:"rowSelection",titleFormatter:"rowSelection",titleFormatterParams:{rowRange:"active"},hozAlign:"center",headerSort:!1},{field:"studierendenantrag_id",title:"#",sorter:"number"},{field:"bezeichnung",title:this.$p.t("lehre","studiengang"),headerFilter:"list",headerFilterParams:{valuesLookup:!0,clearable:!0,autocomplete:!0}},{field:"orgform",title:this.$p.t("lehre","organisationsform"),headerFilter:"list",headerFilterParams:{valuesLookup:!0,clearable:!0,autocomplete:!0}},{field:"typ",title:this.$p.t("studierendenantrag","antrag_typ"),headerFilter:"list",headerFilterParams:{valuesLookup:!0,clearable:!0,autocomplete:!0},formatter:(t,e,n)=>this.$p.t("studierendenantrag","antrag_typ_"+t.getValue())},{field:"statustyp",title:this.$p.t("studierendenantrag","antrag_status"),headerFilter:"list",headerFilterParams:{valuesLookup:!0,clearable:!0,autocomplete:!0},formatter:(t,e,n)=>{let r=t.getData(),s=t.getValue();"Studienabbruch"==r.status_insertvon&&"Pause"==r.status&&(s=this.$p.t("studierendenantrag/status_stop"));let a=document.createElement("a");return a.href="#",a.innerHTML=s,a.addEventListener("click",e=>{e.preventDefault(),this.lastHistoryClickedId=t.getData().studierendenantrag_id,this.$refs.historyLoader.fetchData(),this.$refs.history.show()}),a}},{field:"matrikelnr",title:this.$p.t("person","personenkennzeichen"),headerFilter:"input"},{field:"prestudent_id",title:this.$p.t("lehre","prestudent"),headerFilter:"input"},{field:"name",title:this.$p.t("global","name"),mutator:(t,e)=>(e.nachname+" "+e.vorname).replace(/^\s*(.*)\s*$/,"$1"),headerFilter:"input"},{field:"datum",title:this.$p.t("global","datum"),formatter:t,headerFilterFunc:"dates",headerFilter:g},{field:"datum_wiedereinstieg",title:this.$p.t("studierendenantrag","antrag_datum_wiedereinstieg"),formatter:t,headerFilterFunc:"dates",headerFilter:g},{field:"grund",title:this.$p.t("studierendenantrag","antrag_grund"),formatter:(t,e,n)=>{let r=document.createElement("a"),s=t.getValue();return r.href="#modal-grund",r.setAttribute("data-bs-toggle","modal"),r.innerHTML=this.$p.t("studierendenantrag","antrag_grund"),r.addEventListener("click",()=>{this.$refs.modalGrundPre.innerHTML=s}),s?r:" "}},{field:"dms_id",title:this.$p.t("studierendenantrag","antrag_dateianhaenge"),formatter:(t,e,n)=>{let r=t.getValue();if(!r)return" ";let s=document.createElement("a");return s.href=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/lehre/Antrag/Attachment/show/"+r,s.setAttribute("target","_blank"),s.innerHTML='',s.append(this.$p.t("studierendenantrag/antrag_anhang")),s}},{field:"actions",frozen:!0,title:this.$p.t("ui","aktion"),headerFilter:!1,headerSort:!1,formatter:(t,e,n)=>{let r=document.createElement("div"),s=t.getData();r.className="d-flex gap-2";let a=[];switch(s.typ){case"Abmeldung":a=["Genehmigt"];break;case"AbmeldungStgl":a=["EinspruchAbgelehnt","Abgemeldet"];break;case"Unterbrechung":a=["Genehmigt","EmailVersandt"];break;case"Wiederholung":a=["Abgemeldet"]}if(a.includes(s.status)){let t=document.createElement("a");t.innerHTML='',t.className="btn btn-outline-secondary",t.target="_blank",t.href=FHC_JS_DATA_STORAGE_OBJECT.app_root+"content/pdfExport.php?xml=Antrag"+s.typ+".xml.php&xsl=Antrag"+s.typ+"&id="+s.studierendenantrag_id+"&output=pdf",r.append(t)}if("Wiederholung"==s.typ&&("ErsteAufforderungVersandt"==s.status||"ZweiteAufforderungVersandt"==s.status)){let e=document.createElement("button"),n=document.createElement("i"),s=document.createElement("span");n.className="fa-solid fa-pause",n.setAttribute("aria-hidden",!0),n.setAttribute("title",this.$p.t("studierendenantrag","btn_pause")),s.className="fa-sr-only",s.append(this.$p.t("studierendenantrag","btn_pause")),e.append(n),e.append(s),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:pause",[t.getData()])),r.append(e)}let o="Pause"==s.status&&!["AbmeldungStgl","Studienabbruch"].includes(s.status_insertvon);if(o||"Pause"!=s.status||"AbmeldungStgl"!=s.status_insertvon||(o=t.getTable().getData().filter(t=>t.prestudent_id==s.prestudent_id&&"AbmeldungStgl"==t.typ&&"Zurueckgezogen"==t.status&&t.status_insertamum==s.status_insertamum).length),o){let e=document.createElement("button"),n=document.createElement("i"),s=document.createElement("span");n.className="fa-solid fa-play",n.setAttribute("aria-hidden",!0),n.setAttribute("title",this.$p.t("studierendenantrag","btn_unpause")),s.className="fa-sr-only",s.append(this.$p.t("studierendenantrag","btn_unpause")),e.append(n),e.append(s),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:unpause",[t.getData()])),r.append(e)}if("AbmeldungStgl"==s.typ&&"Genehmigt"==s.status){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_object")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:object",[t.getData()])),r.append(e)}if("AbmeldungStgl"==s.typ&&"Beeinsprucht"==s.status){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_objection_deny")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:objectionDeny",[t.getData()])),r.append(e),e=document.createElement("button"),e.append(this.$p.t("studierendenantrag","btn_objection_approve")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:objectionApprove",[t.getData()])),r.append(e)}if(this.stgA.includes(s.studiengang_kz)){if("Wiederholung"==s.typ&&"Verzichtet"==s.status){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_reopen")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:reopen",[t.getData()])),r.append(e)}if("Wiederholung"==s.typ&&("Erstellt"==s.status||"Lvszugewiesen"==s.status)){let e=document.createElement("a");e.append(this.$p.t("studierendenantrag","btn_lvzuweisen")),e.className="btn btn-outline-secondary",e.href=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/lehre/Antrag/Wiederholung/assistenz/"+t.getData().studierendenantrag_id+"/frame",e.onclick=n=>{n.preventDefault(),i.popup(Vue.h("iframe",{src:e.href,class:"position-absolute top-0 start-0 w-100 h-100"}),{dialogClass:"modal-fullscreen"},this.$p.t("studierendenantrag","title_lvzuweisen",t.getData())).then(()=>{this.$emit("reload")})},r.append(e)}if("AbmeldungStgl"==s.typ&&("Erstellt"==s.status||"Genehmigt"==s.status)){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_cancel")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:cancel",[t.getData()])),r.append(e)}}if(this.stgL.includes(s.studiengang_kz)){if("Wiederholung"==s.typ&&"Lvszugewiesen"==s.status||"Wiederholung"!=s.typ&&"Erstellt"==s.status){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_approve")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:approve",[t.getData()])),r.append(e)}if("Erstellt"==s.status&&"Unterbrechung"==s.typ){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_reject")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:reject",[t.getData()])),r.append(e)}}if("Wiederholung"==s.typ&&("Lvszugewiesen"==s.status||"Genehmigt"==s.status)){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_show_lvs")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.showLVs(t.getData())),r.append(e)}return""==r.innerHTML&&(r.innerHTML=" "),r}}]}),this.table.on("tableBuilt",()=>{let t=this.table.getColumns(),e=[];for(let n of t){let t=n.getDefinition();t.title&&!t.frozen&&e.push({title:t.title,visible:n.isVisible(),original:n})}this.$emit("update:columnData",e)}),this.table.on("rowSelectionChanged",t=>{this.$emit("update:selectedData",t)})},template:'\n\t
    \n\t\t
    \n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    {{(new Date(status.insertamum)).toLocaleString()}}{{status.insertvon}}{{getHistoryStatus(status, index)}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'antrag_grund\')}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t\n\t\t\t{{$p.t(\'studierendenantrag\', \'title_show_lvs\', lvsData ? lvsData : {name: \'\'}) }}\n\t\t\n\t
    \n\t'},f={name:"StudierendenantragLeitungGrundPopup",mixins:[o],props:{placeholder:String,default:String,countRemaining:Number,optional:Boolean},data:()=>({value:"",result:!1,check:!1,isInvalid:!1}),methods:{submit(){this.value||this.optional?(this.result=[this.value,this.check],this.hide()):this.isInvalid=!0}},created(){this.default&&(this.value=this.default)},popup(t,e){return"string"==typeof e&&(e={default:e}),o.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t\t\n\t'},m={getDetails:(t,e)=>({method:"get",url:"/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e)}),create:(t,e,n)=>({method:"post",url:"/api/frontend/v1/studstatus/abmeldung/createAntrag",params:{studiensemester:t,prestudent_id:e,grund:n}}),cancel:t=>({method:"post",url:"/api/frontend/v1/studstatus/abmeldung/cancelAntrag",params:{antrag_id:t}})},v={components:{LeitungHeader:a,LeitungTable:h,LeitungActions:l,FhcLoader:{components:{BsModal:i},props:{timeout:{type:Number,default:300}},data:()=>({t:null,state:0}),methods:{show(){switch(this.state){case 0:return this.timeout?(this.state=1,void(this.t=window.setTimeout(()=>this.$refs.modal.show(),this.timeout))):this.$refs.modal.show();case 4:return window.setTimeout(()=>this.show(),1)}},hide(){switch(this.state){case 1:return window.clearTimeout(this.t);case 2:return window.setTimeout(()=>this.hide(),1);case 3:this.$refs.modal.hide()}}},mounted(){this.$refs.modal.$refs.modal.addEventListener("show.bs.modal",()=>{this.state=2}),this.$refs.modal.$refs.modal.addEventListener("shown.bs.modal",()=>{this.state=3}),this.$refs.modal.$refs.modal.addEventListener("hide.bs.modal",()=>{this.state=4}),this.$refs.modal.$refs.modal.addEventListener("hidden.bs.modal",()=>{this.state=0})},template:'\n\t\n\t\tLoading...\n\t'}},props:{stgL:Array,stgA:Array},data:()=>({filter:void 0,selectedData:[],columns:[],stgs:[]}),computed:{stgkzL(){return this.stgL?this.stgL.map(t=>parseInt(t)):[]},stgkzA(){return this.stgA?this.stgA.map(t=>parseInt(t)):[]}},methods:{loadFilter(){this.$api.call(d.getStgs()).then(t=>this.stgs=t.data).catch(this.$fhcAlert.handleSystemError)},changeFilter(t){this.filter=t||void 0,this.reload()},reload(){this.$refs.table&&this.$refs.table.reload(this.filter),this.loadFilter()},download(){this.$refs.table.download()},actionApprove(t,e){var n=t||[...this.selectedData];e||(e=[]);var r=n.shift();r?"Wiederholung"!=r.typ?(e.push(r),this.actionApprove(n,e)):c.popup(this.$p.t("studierendenantrag","title_show_lvs",r),{antragId:r.studierendenantrag_id,footer:!0,dialogClass:"modal-lg",countRemaining:n.filter(t=>"Wiederholung"==t.typ).length}).then(t=>{if(t[0]){if(e.push(r),t[1])for(;n.length;)e.push(n.pop())}else if(t[1])for(;n.length;)"Wiederholung"!=(r=n.pop()).typ&&e.push(r);this.actionApprove(n,e)}).catch(()=>{}):(this.$refs.loader.show(),this._singleOrMultiApiCall(e,d.approve).then(this.showResults))},actionReject(t,e){var n=t||this.selectedData;e||(e=[]);var r=n.pop();r?f.popup(this.$p.t("studierendenantrag","title_grund",{id:r.studierendenantrag_id}),{countRemaining:n.length}).then(t=>{if(r.grund=t[0],e.push(r),t[1])for(;n.length;)(r=n.pop()).grund=t[0],e.push(r);this.actionReject(n,e)}).catch(()=>{}):(this.$refs.loader.show(),this._singleOrMultiApiCall(e,d.reject).then(this.showResults))},actionReopen(t){var e=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(e,d.reopen).then(this.showResults)},actionPause(t){var e=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(e,d.pause).then(this.showResults)},actionUnpause(t){var e=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(e,d.unpause).then(this.showResults)},actionObject(t){var e=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(e,d.object).then(this.showResults)},actionoObjectionDeny(t,e){var n=t||this.selectedData;e||(e=[]);var r=n.pop();r?f.popup(this.$p.t("studierendenantrag","title_grund",{id:r.studierendenantrag_id}),{countRemaining:n.length,optional:!0}).then(t=>{if(r.grund=t[0],e.push(r),t[1])for(;n.length;)(r=n.pop()).grund=t[0],e.push(r);this.actionoObjectionDeny(n,e)}).catch(()=>{}):(this.$refs.loader.show(),this._singleOrMultiApiCall(e,d.denyObjection).then(this.showResults))},actionObjectionApprove(t,e){var n=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(n,d.approveObjection).then(this.showResults)},actionCancel(t){var e=t||this.selectedData;this.$refs.loader.show(),Array.isArray(e)?Promise.allSettled(e.map(t=>this.$api.call(m.cancel(t.studierendenantrag_id),{errorHeader:"#"+t.studierendenantrag_id}))).then(this.showResults):this.$api.call(m.cancel(e)).then(this.showResults)},showResults(t){let e=t.filter(t=>"fulfilled"==t.status);this.$refs.loader.hide(),e.length&&this.reload()},_singleOrMultiApiCall(t,e){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$api.call(e(t),{errorHeader:"#"+t.studierendenantrag_id}))):this.$api.call(e(t))}},created(){this.loadFilter()},template:'\n\t
    \n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t
    \n\t'},A={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)}},b={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const n={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",n)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},_={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})}},y={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})}},$={abmeldung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n},{errorHandling:"strict"})},cancel(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t.studierendenantrag_id},{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t})}},unterbrechung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n,r,s){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:r,attachment:s},{errorHandling:"strict"})},cancel(t){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:t},{errorHandling:"strict"})}},wiederholung:{getDetails(t){const e="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t;return this.$fhcApi.get(e)},getLvs(t){const e="/api/frontend/v1/studstatus/wiederholung/getLvs/"+t;return this.$fhcApi.get(e)},create(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},cancel(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},saveLvs(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:t,mandatoryLvs:e})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(t,e,n){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+t).then(t=>t.data)},getHistory(t){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+t)},getPrestudents(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:t},{signal:e,timeout:3e4})},approve(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t)},reject(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t)},reopen(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t)},pause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t)},unpause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t)},object(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t)},approveObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t)},denyObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t)}}},S={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",{})}},E={ +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 n from"../../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js";import r from"../../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js";const s="studierendenantrag_leitung_2023-11-14_header_filter";var a={props:{stgs:Array},emits:["input"],data:()=>({todo_value:"",stg_value:""}),computed:{value(){const t=[];return this.todo_value&&t.push(this.todo_value),this.stg_value&&t.push(this.stg_value),t.join("/")}},watch:{value(t){window.localStorage.setItem(s,t),this.$emit("input",t)}},created(){var t="todo";const e=window.localStorage.getItem(s);null!==e&&(t=e),(t=t.split("/")).length&&(1==t.length&&("todo"==t[0]?t.push(""):t.unshift("")),this.stg_value=t.pop(),this.todo_value=t.pop())},template:'\n\t
    \n\t\t

    {{$p.t(\'studierendenantrag\', \'studierendenantraege\')}}

    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t
    \n\t'},i={name:"BootstrapModal",data:()=>({modal:null,fullscreen:!1}),props:{backdrop:{type:[Boolean,String],default:!0,validator:t=>["static",!0,!1].includes(t)},focus:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},noCloseBtn:Boolean,dialogClass:[String,Array,Object],headerClass:{type:[String,Array,Object],default:""},bodyClass:{type:[String,Array,Object],default:"px-4 py-5"},footerClass:{type:[String,Array,Object],default:""},allowFullscreenExpand:{type:Boolean,default:!1}},emits:["hideBsModal","hiddenBsModal","hidePreventedBsModal","showBsModal","shownBsModal","toggleFullscreen"],methods:{dispose(){return this.modal.dispose()},handleUpdate(){return this.modal.handleUpdate()},hide(){return this.modal.hide()},show(t){return this.modal.show(t)},toggle(){return this.modal.toggle()},toggleFullscreen(){this.fullscreen=!this.fullscreen,this.$emit("toggleFullscreen")}},mounted(){this.$refs.modal&&(this.modal=new bootstrap.Modal(this.$refs.modal,{backdrop:this.backdrop,focus:this.focus,keyboard:this.keyboard}))},popup(t,e,n,r){const s=this,a={};void 0!==t&&(a.default=()=>t),void 0!==n&&(a.title=()=>n),void 0!==r&&(a.footer=()=>r);let i=!1;return"undefined"!=typeof primevue&&(i=!0),new Promise((t,n)=>{const r=Vue.createApp({name:"ModalTmpApp",setup:()=>()=>Vue.h(s,{class:"fade",...e,ref:"modal","onHidden.bs.modal":r.unmount},a),mounted(){this.$refs.modal.show()},beforeUnmount(){this.$refs.modal&&(!1!==this.$refs.modal.result?t(this.$refs.modal.result):n())},unmounted(){o.parentElement.removeChild(o)}}),o=document.createElement("div");i&&r.use(primevue.config.default,{zIndex:{overlay:9999}}),Promise.resolve().then(function(){return tt}).then(t=>{r.use(t.default),r.mount(o),document.body.appendChild(o)})})},template:''},o={name:"BootstrapAlert",components:{BsModal:i},mixins:[i],props:{dialogClass:{type:[String,Array,Object],default:"modal-dialog-centered"},onHideBsModal:Function,onHiddenBsModal:Function,onHidePreventedBsModal:Function,onShowBsModal:Function,onShownBsModal:Function},data:()=>({result:!0}),mounted(){this.modal=this.$refs.modalContainer.modal},popup(t,e){return i.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t'},l={getStgs:()=>({method:"get",url:"/api/frontend/v1/studstatus/leitung/getActiveStgs"}),getAntraege:(t,e,n)=>({method:"get",url:"/api/frontend/v1/studstatus/leitung/getAntraege/"+t}),getHistory:t=>({method:"get",url:"/api/frontend/v1/studstatus/leitung/getHistory/"+t}),getPrestudents:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/getPrestudents",params:{query:t}}),approve:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/approveAntrag",params:t}),reject:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/rejectAntrag",params:t}),reopen:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/reopenAntrag",params:t}),pause:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/pauseAntrag",params:t}),unpause:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/unpauseAntrag",params:t}),object:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/objectAntrag",params:t}),approveObjection:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/approveObjection",params:t}),denyObjection:t=>({method:"post",url:"/api/frontend/v1/studstatus/leitung/denyObjection",params:t})},d={components:{ActionsNew:{components:{BsModal:i,AutoComplete:primevue.autocomplete},emits:["reload"],data:()=>({data:[],student:"",abortController:null}),computed:{newUrl(){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/lehre/Studierendenantrag/abmeldungStgl/"+this.student.prestudent_id}},methods:{openForm(){bootstrap.Modal.getInstance(this.$refs.modal).hide(),i.popup(Vue.h("iframe",{src:this.newUrl,class:"position-absolute top-0 start-0 w-100 h-100"}),{dialogClass:"modal-fullscreen"},this.$p.t("studierendenantrag","antrag_header")).then(()=>{this.$emit("reload"),this.student=""})},loadData(t){if(t.query.length<2)return!1;this.abortController&&this.abortController.abort(),this.abortController=new AbortController,this.$api.call(l.getPrestudents(t.query),{signal:this.abortController.signal,timeout:3e4}).then(t=>{this.data=t.data}).catch(this.$fhcAlert.handleSystemError)}},template:'\n\t
    \n\t\t\n\t\t\n\t
    \n\t'},ActionsColumns:{props:{columns:Array},methods:{toggleColumn(t){t.visible=!t.visible,t.original.toggle()}},template:'\n\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t'}},props:{selectedData:Array,columns:Array,stgL:Array,stgA:Array},emits:["reload","download","action:approve","action:reject","action:reopen"],data:()=>({currentStudent:""}),computed:{selectedCanBeApproved(){return!!this.selectedData.length&&(!!this.selectedData.every(t=>this.stgL.includes(t.studiengang_kz))&&this.selectedData.filter(t=>"Wiederholung"==t.typ&&"Lvszugewiesen"==t.status||"Wiederholung"!=t.typ&&("Erstellt"==t.status||"ErstelltStgl"==t.status)).length==this.selectedData.length)},selectedCanBeRejected(){return!!this.selectedData.length&&(!!this.selectedData.every(t=>this.stgL.includes(t.studiengang_kz))&&this.selectedData.filter(t=>"Unterbrechung"==t.typ&&"Erstellt"==t.status).length==this.selectedData.length)},selectedCanBeReopened(){return!!this.selectedData.length&&(!!this.selectedData.every(t=>this.stgA.includes(t.studiengang_kz))&&this.selectedData.filter(t=>"Wiederholung"==t.typ&&"Verzichtet"==t.status).length==this.selectedData.length)},newUrl(){return FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+this.currentStudent}},methods:{hideModal(){bootstrap.Modal.getInstance(this.$refs.modal).hide()}},template:'\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t{{$p.t(\'table\', \'with_selected\', {count: selectedData.length})}}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t'};const u={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t'};var p={getDetails:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t}),getLvs:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getLvs/"+t}),create:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/createAntrag",params:{prestudent_id:t,studiensemester:e}}),cancel:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/cancelAntrag",params:{prestudent_id:t,studiensemester:e}}),saveLvs:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/saveLvs",params:{forbiddenLvs:t,mandatoryLvs:e}})},c={name:"StudierendenantragLeitungLvPopup",components:{CoreFetchCmpt:u},mixins:[o],props:{footer:Boolean,antragId:Number,countRemaining:Number},data:()=>({lvs:null,repeat_last:!1,refresh:!0,result:!1,check:!1}),computed:{lvzugelassen(){let t={};for(let e in this.lvs)t[e]=this.lvs[e]?this.lvs[e].filter(t=>t.antrag_zugelassen):null;return t},lvzugelassenLength(){return Object.values(this.lvzugelassen).reduce((t,e)=>t+(e?e.length:0),0)}},methods:{setlvs(t){this.repeat_last=!!t.repeat_last,this.repeat_last&&delete t.repeat_last,this.lvs=t},loadlvs(){return this.antragId?this.$api.call(p.getLvs(this.antragId)):new Promise(()=>{})},submit(t){this.result=[t,this.check],this.hide()}},watch:{antragId(){Vue.nextTick(()=>{this.refresh=!this.refresh})}},popup(t,e){return"string"==typeof e&&(e={default:e}),o.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t\t\n\t'};function g(t,e,n){let r=document.createElement("div"),s=null,a=t.getValue();if(Array.isArray(a)){const t=a[0]?new Date(a[0]):null,e=a[1]?new Date(a[1]):null;s=[t,e]}return Vue.createApp({components:{PrimevueCalendar:primevue.calendar},data:()=>({val:s}),watch:{val(t){n(t)}},template:'\n\t\t\t\t '}).use(primevue.config.default).mount(r),r}primevue||console.error("PrimeVue not loaded!"),Tabulator.extendModule("filter","filters",{dates:(t,e)=>{if(!t)return!0;let n=new Date(e);if(Array.isArray(t)){let e=new Date(t[0]);if(t[1]){let r=new Date(t[1]);return r.setHours(23,59,59,999),n>=e&&n<=r}return n.toDateString()===e.toDateString()}let r=new Date(t);return n.toDateString()===r.toDateString()}});var h={components:{BsModal:i,CoreFetchCmpt:u,LvPopup:c},props:{selectedData:Array,columnData:Array,stgL:Array,stgA:Array,filter:String},emits:["update:columnData","update:selectedData","action:approve","action:reject","action:reopen","action:object","action:objectionDeny","action:objectionApprove","action:cancel","action:pause","action:unpause"],data:()=>({table:null,lastHistoryClickedId:null,historyData:[],lvsData:null}),methods:{reload(t){this.table.setData("/"+(t||""))},download(){this.table.download("csv","data.csv",{delimiter:";",bom:!0})},getHistory(){return null===this.lastHistoryClickedId?null:this.$api.call(l.getHistory(this.lastHistoryClickedId)).then(t=>{this.historyData=t.data.sort((t,e)=>t.insertamum>e.insertamum)}).catch(this.$fhcAlert.handleSystemError)},getHistoryStatus(t,e){if("Studienabbruch"==t.insertvon)return this.$p.t("studierendenantrag/status_stop");if(e>0&&"Pause"==this.historyData[e-1].studierendenantrag_statustyp_kurzbz){if(e>1&&"Pause"!=this.historyData[e-2].studierendenantrag_statustyp_kurzbz)return"Pause"==t.studierendenantrag_statustyp_kurzbz?t.typ:t.typ+" ("+this.$p.t("studierendenantrag/status_unpaused")+")";let n=2;for(;e-n>0&&"Pause"==this.historyData[e-n].studierendenantrag_statustyp_kurzbz;)n++;return"Pause"==t.studierendenantrag_statustyp_kurzbz&&n++,n%2?t.typ:t.typ+" ("+this.$p.t("studierendenantrag/status_unpaused")+")"}return t.typ},showHistoryGrund(t){this.$refs.modalGrund.$el.addEventListener("hidden.bs.modal",this.$refs.history.show,{once:!0}),this.$refs.modalGrundPre.innerHTML=t},showLVs(t){this.lvsData=t,this.$refs.lvList.show()}},async mounted(){function t(t){let e=t.getValue();return e?new Date(e).toLocaleDateString():" "}await this.$p.loadCategory(["lehre","studierendenantrag","person","global","ui"]),this.table=new Tabulator(this.$refs.table,{placeholder:"Keine zu bearbeitenden Datensätze",movableColumns:!0,height:"65vh",layout:"fitDataFill",ajaxURL:"/"+(this.filter||""),ajaxRequestFunc:t=>this.$api.call(l.getAntraege(t)),ajaxResponse:(t,e,n)=>n.data,persistence:{sort:!0,filter:!0,headerFilter:!0,group:!0,page:!0,columns:["width","visible"]},persistenceID:"studierendenantrag_leitung_2023-11-14",columns:[{formatter:"rowSelection",titleFormatter:"rowSelection",titleFormatterParams:{rowRange:"active"},hozAlign:"center",headerSort:!1},{field:"studierendenantrag_id",title:"#",sorter:"number"},{field:"bezeichnung",title:this.$p.t("lehre","studiengang"),headerFilter:"list",headerFilterParams:{valuesLookup:!0,clearable:!0,autocomplete:!0}},{field:"orgform",title:this.$p.t("lehre","organisationsform"),headerFilter:"list",headerFilterParams:{valuesLookup:!0,clearable:!0,autocomplete:!0}},{field:"typ",title:this.$p.t("studierendenantrag","antrag_typ"),headerFilter:"list",headerFilterParams:{valuesLookup:!0,clearable:!0,autocomplete:!0},formatter:(t,e,n)=>this.$p.t("studierendenantrag","antrag_typ_"+t.getValue())},{field:"statustyp",title:this.$p.t("studierendenantrag","antrag_status"),headerFilter:"list",headerFilterParams:{valuesLookup:!0,clearable:!0,autocomplete:!0},formatter:(t,e,n)=>{let r=t.getData(),s=t.getValue();"Studienabbruch"==r.status_insertvon&&"Pause"==r.status&&(s=this.$p.t("studierendenantrag/status_stop"));let a=document.createElement("a");return a.href="#",a.innerHTML=s,a.addEventListener("click",e=>{e.preventDefault(),this.lastHistoryClickedId=t.getData().studierendenantrag_id,this.$refs.historyLoader.fetchData(),this.$refs.history.show()}),a}},{field:"matrikelnr",title:this.$p.t("person","personenkennzeichen"),headerFilter:"input"},{field:"prestudent_id",title:this.$p.t("lehre","prestudent"),headerFilter:"input"},{field:"name",title:this.$p.t("global","name"),mutator:(t,e)=>(e.nachname+" "+e.vorname).replace(/^\s*(.*)\s*$/,"$1"),headerFilter:"input"},{field:"datum",title:this.$p.t("global","datum"),formatter:t,headerFilterFunc:"dates",headerFilter:g},{field:"datum_wiedereinstieg",title:this.$p.t("studierendenantrag","antrag_datum_wiedereinstieg"),formatter:t,headerFilterFunc:"dates",headerFilter:g},{field:"grund",title:this.$p.t("studierendenantrag","antrag_grund"),formatter:(t,e,n)=>{let r=document.createElement("a"),s=t.getValue();return r.href="#modal-grund",r.setAttribute("data-bs-toggle","modal"),r.innerHTML=this.$p.t("studierendenantrag","antrag_grund"),r.addEventListener("click",()=>{this.$refs.modalGrundPre.innerHTML=s}),s?r:" "}},{field:"dms_id",title:this.$p.t("studierendenantrag","antrag_dateianhaenge"),formatter:(t,e,n)=>{let r=t.getValue();if(!r)return" ";let s=document.createElement("a");return s.href=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/lehre/Antrag/Attachment/show/"+r,s.setAttribute("target","_blank"),s.innerHTML='',s.append(this.$p.t("studierendenantrag/antrag_anhang")),s}},{field:"actions",frozen:!0,title:this.$p.t("ui","aktion"),headerFilter:!1,headerSort:!1,formatter:(t,e,n)=>{let r=document.createElement("div"),s=t.getData();r.className="d-flex gap-2";let a=[];switch(s.typ){case"Abmeldung":a=["Genehmigt"];break;case"AbmeldungStgl":a=["EinspruchAbgelehnt","Abgemeldet"];break;case"Unterbrechung":a=["Genehmigt","EmailVersandt"];break;case"Wiederholung":a=["Abgemeldet"]}if(a.includes(s.status)){let t=document.createElement("a");t.innerHTML='',t.className="btn btn-outline-secondary",t.target="_blank",t.href=FHC_JS_DATA_STORAGE_OBJECT.app_root+"content/pdfExport.php?xml=Antrag"+s.typ+".xml.php&xsl=Antrag"+s.typ+"&id="+s.studierendenantrag_id+"&output=pdf",r.append(t)}if("Wiederholung"==s.typ&&("ErsteAufforderungVersandt"==s.status||"ZweiteAufforderungVersandt"==s.status)){let e=document.createElement("button"),n=document.createElement("i"),s=document.createElement("span");n.className="fa-solid fa-pause",n.setAttribute("aria-hidden",!0),n.setAttribute("title",this.$p.t("studierendenantrag","btn_pause")),s.className="fa-sr-only",s.append(this.$p.t("studierendenantrag","btn_pause")),e.append(n),e.append(s),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:pause",[t.getData()])),r.append(e)}let o="Pause"==s.status&&!["AbmeldungStgl","Studienabbruch"].includes(s.status_insertvon);if(o||"Pause"!=s.status||"AbmeldungStgl"!=s.status_insertvon||(o=t.getTable().getData().filter(t=>t.prestudent_id==s.prestudent_id&&"AbmeldungStgl"==t.typ&&"Zurueckgezogen"==t.status&&t.status_insertamum==s.status_insertamum).length),o){let e=document.createElement("button"),n=document.createElement("i"),s=document.createElement("span");n.className="fa-solid fa-play",n.setAttribute("aria-hidden",!0),n.setAttribute("title",this.$p.t("studierendenantrag","btn_unpause")),s.className="fa-sr-only",s.append(this.$p.t("studierendenantrag","btn_unpause")),e.append(n),e.append(s),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:unpause",[t.getData()])),r.append(e)}if("AbmeldungStgl"==s.typ&&"Genehmigt"==s.status){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_object")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:object",[t.getData()])),r.append(e)}if("AbmeldungStgl"==s.typ&&"Beeinsprucht"==s.status){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_objection_deny")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:objectionDeny",[t.getData()])),r.append(e),e=document.createElement("button"),e.append(this.$p.t("studierendenantrag","btn_objection_approve")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:objectionApprove",[t.getData()])),r.append(e)}if(this.stgA.includes(s.studiengang_kz)){if("Wiederholung"==s.typ&&"Verzichtet"==s.status){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_reopen")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:reopen",[t.getData()])),r.append(e)}if("Wiederholung"==s.typ&&("Erstellt"==s.status||"Lvszugewiesen"==s.status)){let e=document.createElement("a");e.append(this.$p.t("studierendenantrag","btn_lvzuweisen")),e.className="btn btn-outline-secondary",e.href=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/lehre/Antrag/Wiederholung/assistenz/"+t.getData().studierendenantrag_id+"/frame",e.onclick=n=>{n.preventDefault(),i.popup(Vue.h("iframe",{src:e.href,class:"position-absolute top-0 start-0 w-100 h-100"}),{dialogClass:"modal-fullscreen"},this.$p.t("studierendenantrag","title_lvzuweisen",t.getData())).then(()=>{this.$emit("reload")})},r.append(e)}if("AbmeldungStgl"==s.typ&&("Erstellt"==s.status||"Genehmigt"==s.status)){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_cancel")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:cancel",[t.getData()])),r.append(e)}}if(this.stgL.includes(s.studiengang_kz)){if("Wiederholung"==s.typ&&"Lvszugewiesen"==s.status||"Wiederholung"!=s.typ&&"Erstellt"==s.status){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_approve")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:approve",[t.getData()])),r.append(e)}if("Erstellt"==s.status&&"Unterbrechung"==s.typ){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_reject")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.$emit("action:reject",[t.getData()])),r.append(e)}}if("Wiederholung"==s.typ&&("Lvszugewiesen"==s.status||"Genehmigt"==s.status)){let e=document.createElement("button");e.append(this.$p.t("studierendenantrag","btn_show_lvs")),e.className="btn btn-outline-secondary",e.addEventListener("click",()=>this.showLVs(t.getData())),r.append(e)}return""==r.innerHTML&&(r.innerHTML=" "),r}}]}),this.table.on("tableBuilt",()=>{let t=this.table.getColumns(),e=[];for(let n of t){let t=n.getDefinition();t.title&&!t.frozen&&e.push({title:t.title,visible:n.isVisible(),original:n})}this.$emit("update:columnData",e)}),this.table.on("rowSelectionChanged",t=>{this.$emit("update:selectedData",t)})},template:'\n\t
    \n\t\t
    \n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    {{(new Date(status.insertamum)).toLocaleString()}}{{status.insertvon}}{{getHistoryStatus(status, index)}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{$p.t(\'studierendenantrag\', \'antrag_grund\')}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t\n\t\t\t{{$p.t(\'studierendenantrag\', \'title_show_lvs\', lvsData ? lvsData : {name: \'\'}) }}\n\t\t\n\t
    \n\t'},f={name:"StudierendenantragLeitungGrundPopup",mixins:[o],props:{placeholder:String,default:String,countRemaining:Number,optional:Boolean},data:()=>({value:"",result:!1,check:!1,isInvalid:!1}),methods:{submit(){this.value||this.optional?(this.result=[this.value,this.check],this.hide()):this.isInvalid=!0}},created(){this.default&&(this.value=this.default)},popup(t,e){return"string"==typeof e&&(e={default:e}),o.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t\t\n\t'},m={getDetails:(t,e)=>({method:"get",url:"/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e)}),create:(t,e,n)=>({method:"post",url:"/api/frontend/v1/studstatus/abmeldung/createAntrag",params:{studiensemester:t,prestudent_id:e,grund:n}}),cancel:t=>({method:"post",url:"/api/frontend/v1/studstatus/abmeldung/cancelAntrag",params:{antrag_id:t}})},v={components:{LeitungHeader:a,LeitungTable:h,LeitungActions:d,FhcLoader:{components:{BsModal:i},props:{timeout:{type:Number,default:300}},data:()=>({t:null,state:0}),methods:{show(){switch(this.state){case 0:return this.timeout?(this.state=1,void(this.t=window.setTimeout(()=>this.$refs.modal.show(),this.timeout))):this.$refs.modal.show();case 4:return window.setTimeout(()=>this.show(),1)}},hide(){switch(this.state){case 1:return window.clearTimeout(this.t);case 2:return window.setTimeout(()=>this.hide(),1);case 3:this.$refs.modal.hide()}}},mounted(){this.$refs.modal.$refs.modal.addEventListener("show.bs.modal",()=>{this.state=2}),this.$refs.modal.$refs.modal.addEventListener("shown.bs.modal",()=>{this.state=3}),this.$refs.modal.$refs.modal.addEventListener("hide.bs.modal",()=>{this.state=4}),this.$refs.modal.$refs.modal.addEventListener("hidden.bs.modal",()=>{this.state=0})},template:'\n\t\n\t\tLoading...\n\t'}},props:{stgL:Array,stgA:Array},data:()=>({filter:void 0,selectedData:[],columns:[],stgs:[]}),computed:{stgkzL(){return this.stgL?this.stgL.map(t=>parseInt(t)):[]},stgkzA(){return this.stgA?this.stgA.map(t=>parseInt(t)):[]}},methods:{loadFilter(){this.$api.call(l.getStgs()).then(t=>this.stgs=t.data).catch(this.$fhcAlert.handleSystemError)},changeFilter(t){this.filter=t||void 0,this.reload()},reload(){this.$refs.table&&this.$refs.table.reload(this.filter),this.loadFilter()},download(){this.$refs.table.download()},actionApprove(t,e){var n=t||[...this.selectedData];e||(e=[]);var r=n.shift();r?"Wiederholung"!=r.typ?(e.push(r),this.actionApprove(n,e)):c.popup(this.$p.t("studierendenantrag","title_show_lvs",r),{antragId:r.studierendenantrag_id,footer:!0,dialogClass:"modal-lg",countRemaining:n.filter(t=>"Wiederholung"==t.typ).length}).then(t=>{if(t[0]){if(e.push(r),t[1])for(;n.length;)e.push(n.pop())}else if(t[1])for(;n.length;)"Wiederholung"!=(r=n.pop()).typ&&e.push(r);this.actionApprove(n,e)}).catch(()=>{}):(this.$refs.loader.show(),this._singleOrMultiApiCall(e,l.approve).then(this.showResults))},actionReject(t,e){var n=t||this.selectedData;e||(e=[]);var r=n.pop();r?f.popup(this.$p.t("studierendenantrag","title_grund",{id:r.studierendenantrag_id}),{countRemaining:n.length}).then(t=>{if(r.grund=t[0],e.push(r),t[1])for(;n.length;)(r=n.pop()).grund=t[0],e.push(r);this.actionReject(n,e)}).catch(()=>{}):(this.$refs.loader.show(),this._singleOrMultiApiCall(e,l.reject).then(this.showResults))},actionReopen(t){var e=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(e,l.reopen).then(this.showResults)},actionPause(t){var e=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(e,l.pause).then(this.showResults)},actionUnpause(t){var e=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(e,l.unpause).then(this.showResults)},actionObject(t){var e=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(e,l.object).then(this.showResults)},actionoObjectionDeny(t,e){var n=t||this.selectedData;e||(e=[]);var r=n.pop();r?f.popup(this.$p.t("studierendenantrag","title_grund",{id:r.studierendenantrag_id}),{countRemaining:n.length,optional:!0}).then(t=>{if(r.grund=t[0],e.push(r),t[1])for(;n.length;)(r=n.pop()).grund=t[0],e.push(r);this.actionoObjectionDeny(n,e)}).catch(()=>{}):(this.$refs.loader.show(),this._singleOrMultiApiCall(e,l.denyObjection).then(this.showResults))},actionObjectionApprove(t,e){var n=t||this.selectedData;this.$refs.loader.show(),this._singleOrMultiApiCall(n,l.approveObjection).then(this.showResults)},actionCancel(t){var e=t||this.selectedData;this.$refs.loader.show(),Array.isArray(e)?Promise.allSettled(e.map(t=>this.$api.call(m.cancel(t.studierendenantrag_id),{errorHeader:"#"+t.studierendenantrag_id}))).then(this.showResults):this.$api.call(m.cancel(e)).then(this.showResults)},showResults(t){let e=t.filter(t=>"fulfilled"==t.status);this.$refs.loader.hide(),e.length&&this.reload()},_singleOrMultiApiCall(t,e){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$api.call(e(t),{errorHeader:"#"+t.studierendenantrag_id}))):this.$api.call(e(t))}},created(){this.loadFilter()},template:'\n\t
    \n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t
    \n\t'},A={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)}},b={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const n={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",n)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},_={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})}},y={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})}},$={abmeldung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n},{errorHandling:"strict"})},cancel(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t.studierendenantrag_id},{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t})}},unterbrechung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n,r,s){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:r,attachment:s},{errorHandling:"strict"})},cancel(t){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:t},{errorHandling:"strict"})}},wiederholung:{getDetails(t){const e="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t;return this.$fhcApi.get(e)},getLvs(t){const e="/api/frontend/v1/studstatus/wiederholung/getLvs/"+t;return this.$fhcApi.get(e)},create(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},cancel(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},saveLvs(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:t,mandatoryLvs:e})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(t,e,n){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+t).then(t=>t.data)},getHistory(t){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+t)},getPrestudents(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:t},{signal:e,timeout:3e4})},approve(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t)},reject(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t)},reopen(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t)},pause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t)},unpause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t)},object(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t)},approveObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t)},denyObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t)}}},S={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",{})}},E={ //! API calls for profil update requests -getStatus:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getStatus",{})},getTopic:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getTopic",{})},acceptProfilRequest:function({profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:s}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",{profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:s})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:n,status_message:r}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/denyProfilRequest",{profil_update_id:t,uid:e,topic:n,status_message:r})},insertFile:function(t,e=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,t)},getProfilRequestFiles:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`,{})},selectProfilRequest:function(t=null,e=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...t?{uid:t}:{},...e?{id:e}:{}})},insertProfilRequest:function(t,e,n=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/insertProfilRequest",{topic:t,payload:e,...n?{fileID:n}:{}})},updateProfilRequest:function(t,e,n,r=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/updateProfilRequest",{topic:t,payload:e,ID:n,...r?{fileID:r}:{}})},deleteProfilRequest:function(t){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",{requestID:t})}},C={getRoomInfo(t,e,n){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:n})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,n){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:n})},getLvPlanReservierungen(t,e){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:t,end_date:e})},getLehreinheitStudiensemester(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${t}`,{})},studiensemesterDateInterval(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${t}`,{})},LvPlanEvents(t,e,n){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:n})}},k={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(t){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:t})}}},students:{uid(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},prestudent(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},person(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},verband(t){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+t)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(t){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:t})}},konto:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/konto/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id),only_open:e.filter,studiengang_kz:e.studiengang_kz_intern?e.stg_kz:""}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},checkDoubles(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/checkDoubles",e,{confirmErrorHandler:t=>!0})},insert(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/insert",e)},counter(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",t)},edit(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/update",e)},delete(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:t})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+n.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+n.id)},addNewAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,n)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,n)},deleteAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:t})},getPlaces(t){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+t)},getFirmen(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+t)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+n.id)},addNewBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,n)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,n)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+n.id)},addNewContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,n)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,n)},deleteContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:t})},getStandorteByFirma(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+t)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(t,e){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e))},updatePrestudent(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,n)},getBezeichnungZGV(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungZGV/")},getBezeichnungMZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungMZgv/")},getBezeichnungDZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungDZgv/")},getStgs(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStgs/")},getAusbildung(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAusbildung/")},getAufmerksamdurch(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAufmerksamdurch/")},getBerufstaetigkeit(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBerufstaetigkeit/")},getTypenStg(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getTypenStg/")},getBisstandort(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBisstandort/")},getHistoryPrestudent(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+n.id)},getMaxSem(t){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:t})},advanceStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+n+"/"+r)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+n+"/"+r)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+n+"/"+r)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+n.id)}},status:{insertStatus(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,n)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+n+"/"+r)},updateStatus(t,{prestudent_id:e,status_kurzbz:n,studiensemester_kurzbz:r,ausbildungssemester:s},a){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+n+"/"+r+"/"+s,a)},getStudienplaene(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+t)},getStudiengang(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+t)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+t,e,{errorHeader:t})},changeStatus(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+t,e,{errorHeader:t})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(t,e){let n="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(n)},save(t,e,n,r){let s="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(n);return this.$fhcApi.post(t,s,r)}},exam:{getPruefungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+n.id)},loadPruefung(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+t)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",t)},getLvsByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+t)},getLvsandLesByStudent(t,e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+t+"/"+e)},getLvsAndMas(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+t)},getMitarbeiterLv(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",t)},addPruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/insertPruefung/",e)},updatePruefung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,n)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+n.id)},addNewAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",e)},loadAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:t})},updateAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",e)},deleteAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:t})},getTypenAbschlusspruefung(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/")},getTypenAntritte(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/")},getBeurteilungen(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/")},getAkadGrade(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:t})},getTypStudiengang(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:t})},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+t)},getPruefer(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:t})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(t,e){let n="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getTeacherProposal(t,e){let n="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getRepeaterGrades(t,e){let n="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r,lehrveranstaltung_bezeichnung:s}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r},{errorHeader:s})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:t,lv_bezeichnung:e}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:t},{errorHeader:e})},getGradeFromPoints(t,e,n,r){const s=r?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:n},s)}},mobility:{getMobilitaeten(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+n.id)},getProgramsMobility(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getProgramsMobility/")},addNewMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/insertMobility/",e)},loadMobility(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+t)},updateMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/updateMobility/",e)},deleteMobility(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+t)},getLVList(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+t)},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",t)},getLvsandLesByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+t)},getPurposes(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+n.id)},getSupports(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+n.id)},getListPurposes(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListPurposes/")},getListSupports(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListSupports/")},deleteMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+t.bisio_id,t)},addMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+t.bisio_id,t)},deleteMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+t.bisio_id,t)},addMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+t.bisio_id,t)}},archiv:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/archiv/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id)}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(t){return this.$fhcApi.post("api/frontend/v1/documents/archive",t)},archiveSigned(t){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",t)},update(t){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",t)},delete({akte_id:t,studiengang_kz:e}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:t,studiengang_kz:e})}},documents:{getDocumentsUnaccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+n.id+"/"+n.studiengang_kz)},getDocumentsAccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+n.id+"/"+n.studiengang_kz)},deleteZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},createZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},loadAkte(t){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+t)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+t,e)},deleteFile(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+t)},uploadFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+t,e)}},exemptions:{getAnrechnungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+n.id)},getLehrveranstaltungen(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+t)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+t)},getLektoren(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+t)},addNewAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",e)},loadAnrechnung(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+t)},editAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",e)},deleteAnrechnung(t){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+t)}},jointstudies:{getStudies(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+n.id)},getTypenMobility(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/")},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/")},getStudyprograms(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/")},getListPartner(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/")},getStatiPrestudent(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/")},loadStudy(t){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+t)},insertStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",e)},updateStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",e)},deleteStudy(t){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+t)}},courselist:{getCourselist(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+n.student_uid+"/"+n.start_date+"/"+n.end_date+"/"+n.group_consecutiveHours+"/"+n.dbStundenplanTable)},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStudiensemester/")}},configStudent(){return this.$fhcApi.get("api/frontend/v1/stv/config/student")},configStudents(){return this.$fhcApi.get("api/frontend/v1/stv/config/students")}},P={person:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,n)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,n)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+t)},isBerechtigt(t,e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}}},T={person:{getAllBetriebsmittel(t,e,n){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+n.type+"/"+n.id)},addNewBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,n)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,n)},deleteBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+t)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(t){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+t)}}},D={updatePersonUnrulyStatus(t,e){try{const n={person_id:t,unruly:e},r="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(r,n,null)}catch(t){throw t}},filterPerson(t,e=""){try{const n=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(n,t)}catch(t){throw t}}},w={getContentID(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/ContentID",{ort_kurzbz:t})},getRooms(t,e,n,r,s=0){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getRooms",{datum:t,von:e,bis:n,typ:r,personenanzahl:s})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},F={content(t,e=null,n=null,r=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...n?{sprache:n}:{},...r?{sichtbar:r}:{}})},getNews(t=1,e=10,n){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:n})},news(t){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:t})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},O={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}`,{})},getStudentProjektarbeiten(t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${t}`,{})},getStudentProjektabgaben(t){return this.$fhcApi.get("/api/frontend/v1/Lehre/getStudentProjektabgaben",{projektarbeit_id:t.projektarbeit_id,student_uid:t.student_uid})},postStudentProjektarbeitEndupload(t){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload",t,{Headers:{"Content-Type":"multipart/form-data"}})},postStudentProjektarbeitZwischenabgabe(t){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe",t,{Headers:{"Content-Type":"multipart/form-data"}})},getStudentProjektarbeitAbgabeFile(t,e){const n=`/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${t}&student_uid=${e}`;window.location=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+n},getMitarbeiterProjektarbeiten(t,e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${e}`,{})},postProjektarbeitAbgabe(t){const e={paabgabe_id:t.paabgabe_id,paabgabetyp_kurzbz:t.bezeichnung.paabgabetyp_kurzbz,datum:t.datum,fixtermin:t.fixtermin,insertvon:t.insertvon,kurzbz:t.kurzbz,projektarbeit_id:t.projektarbeit_id};return this.$fhcApi.post("/api/frontend/v1/Lehre/postProjektarbeitAbgabe",e,null)},deleteProjektarbeitAbgabe(t){const e={paabgabe_id:t};return this.$fhcApi.post("/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe",e,null)},postSerientermin(t,e,n,r,s){const a={datum:t,paabgabetyp_kurzbz:e,bezeichnung:n,kurzbz:r,projektarbeit_ids:s};return this.$fhcApi.post("/api/frontend/v1/Lehre/postSerientermin",a,null)},fetchDeadlines(t){const e={person_id:t};return this.$fhcApi.post("/api/frontend/v1/Lehre/fetchDeadlines",e,null)}},L={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}`,{})}},R={person:{getMessages(t,e,n){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+n.id+"/"+n.type+"/"+n.size+"/"+n.page)},getVorlagen(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getVorlagen/")},getMsgVarsLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/")},getMessageVarsPerson(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+t.id+"/"+t.type_id)},getMsgVarsPrestudent(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+t.id+"/"+t.type_id)},getPersonId(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id)},getUid(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+t.id+"/"+t.type_id)},getDataVorlage(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+t)},getNameOfDefaultRecipient(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+t.id+"/"+t.type_id)},getPreviewText(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+t.id+"/"+t.type_id,e)},getReplyData(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+t)},sendMessageFromModalContext(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,n)},sendMessage(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+t,e)},deleteMessage(t){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+t)}}},H={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},B={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,n=void 0,r=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:n,studienplan:r})},getStudiengaengeForStudienSemester:function(t){return this.$fhcApi.get(`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${t}`,{})},getStudienplaeneBySemester:function(t,e){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienplaeneBySemester",{studiengang:t,studiensemester:e})},getLvPlanForStudiensemester:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${t}/${e}`,{})},getLvEvaluierungInfo:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/Studium/getLvEvaluierungInfo/${t}/${e}`,{})}},j={search:A,phrasen:b,navigation:_,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:y,studstatus:$,profil:S,profilUpdate:E,lvPlan:C,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(t){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${t}`,{})},update:function({bookmark_id:t,url:e,title:n,tag:r=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:n})},insert:function({url:t,title:e,tag:n}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:n})}},stv:k,notiz:P,betriebsmittel:T,checkperson:D,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:w,cms:F,lehre:O,addons:L,messages:R,vorlagen:H,addons:L,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",{})}},studium:B,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},z={install:(t,e)=>{if(t.config.globalProperties.$fhcApi)return void(e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory.addEndpoints(e.factory)));function n(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function r(t){const e=t.data;return delete t.data,e.meta?e.meta.response=t:e.meta={response:t},e}FHC_JS_DATA_STORAGE_OBJECT.app_root,FHC_JS_DATA_STORAGE_OBJECT.ci_router;const s=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});s.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),s.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),r(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),s.getUri({url:t})),get:(t,e,r,a)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,r,a]=n(t,e,r,a),r&&(a?a.params=r:a={params:r}),s.get(e,a)),post:(t,e,r,a)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,r,a]=n(t,e,r,a),s.post(e,r,a)),_defaultErrorHandlers:{validation(e,n){const r=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(r.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>r.alertDefault("error",t,e,!0)),!1)},general(e,n){const r=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n.alertSystemError(r)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var r="";r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),n.alertSystemError(r)},db(e){const n=t.config.globalProperties.$fhcAlert;var r="";void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),n.alertSystemError(r)},auth(e,n){const r=t.config.globalProperties.$fhcAlert;var s="";s+="Controller name: "+e.controller+"\n",s+="Method name: "+e.method+"\n",s+="Required permissions: "+e.required_permissions,n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertDefault("error",e.message,s)}}};class a{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,r,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,r,s)),post:(e,n,r,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,r,s))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e,!0)}addEndpoints(t,e){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new a(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const i=new a(j);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),i.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=i,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};const J="error",M="retval",G={get:function(t,e,n=null){return G._axiosCall(t,e,"get",n)},post:function(t,e,n=null){return G._axiosCall(t,e,"post",n)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(J)||!t.hasOwnProperty(M)||0!=t.error)},isError:function(t){return!G.isSuccess(t)},hasData:function(t){return!(!G.isSuccess(t)||!("object"==typeof t[M]&&Object.keys(t[M]).length>0||"array"==typeof t[M]&&t[M].length>0||"string"==typeof t[M]&&""!=t[M].trim()||"number"==typeof t[M]))},getData:function(t){return G.hasData(t)?t[M]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(M)?t[M]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(J)?t[J]:1},_generateRouterURI:function(t){var e=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(e=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+t),e},_printDebug:function(t,e,n){},_axiosCall:function(t,e,n,r){let s={method:n,url:G._generateRouterURI(t),timeout:5e3};if("get"==n?s.params=e:s.data=e,"object"==typeof r)for(var a in r)s[a]=r[a];return axios(s)}},U=document.createElement("div"),I=Vue.createApp({name:"FhcAlertApp",components:{PvToast:e,PvConfirm:n},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(){U.parentElement.removeChild(U)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});I.use(t),I.use(r);const x=I.mount(U);document.body.appendChild(U);var N={install:(t,e)=>{t.config.globalProperties.$p||t.use(Y);const n={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);x.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);x.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);x.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);x.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);x.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,n)=>{x.$confirm.require({group:"fhcAlertConfirm",header:Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:Vue.computed(()=>t.config.globalProperties.$p.t("alert/confirm_delete")),acceptLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/loeschen")),acceptClass:"p-button-danger",rejectLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:"p-button-secondary",accept(){e(!0)},reject(){e(!1)}})}),confirm:e=>new Promise((n,r)=>{x.$confirm.require({group:e?.group??"fhcAlertConfirm",header:e?.header??Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:e?.message??"",acceptLabel:e?.acceptLabel??"Ok",acceptClass:e?.acceptClass??"btn btn-primary",rejectLabel:e?.rejectLabel??Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:e?.rejectClass??"btn btn-outline-secondary",accept(){n(!0)},reject(){n(!1)}})}),alertDefault(t,e,n,r=!1,s=!1){let a={severity:t,summary:e,detail:n,html:s};r||(a.life=3e3),x.$refs.toast.add(a)},alertMultiple(t,e="info",n="Info",r=!1,s=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,n,t,r,s)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return n.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(n.alertSystemError);if(!t.hasOwnProperty("handled")||!t.handled){if("object"==typeof t&&null!==t){let e="";return t.hasOwnProperty("response")&&t.response?.data?.retval?e+="Error Message: "+(t.response.data.retval.message||t.response.data.retval)+"\r\n":t.hasOwnProperty("message")&&(e+="Error Message: "+t.message.toUpperCase()+"\r\n"),t.hasOwnProperty("config")&&t.config.hasOwnProperty("url")&&(e+="Error ConfigURL: "+t.config.url+"\r\n"),t.hasOwnProperty("stack")&&(e+="Error Stack: "+t.stack+"\r\n"),""==e&&(e="Error Message: "+JSON.stringify(t)+"\r\n"),e+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,n.alertSystemError(e)}n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method)}}},handleSystemMessage(t){if("string"==typeof t)return n.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(n.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method):t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))},resetFormValidation(t){const e=new Event("fhc-form-reset");t.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(t=>t.dispatchEvent(e))},handleFormValidation(t,e){if(void 0===e){if(t&&t.nodeType===Node.ELEMENT_NODE)return e=>n.handleFormValidation(e,t)}else if(400==t?.response?.status){let r=G.getError(t.response.data);"object"!=typeof r&&(r=t.response.data),n.resetFormValidation(e);const s=Object.entries(r).filter(([t,n])=>{const r=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!r||(r.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:n})),!1)}).map(t=>t[1]),a=e.querySelector("[data-fhc-form-error]");return void(a&&s.length?a.dispatchEvent(new CustomEvent("fhc-form-error",{detail:s})):s.forEach(n.alertError))}if(400==t?.response?.status){let e=G.getError(t.response.data);n.alertError("object"==typeof e?Object.values(e):e)}else n.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=n,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}},V={install:(t,e)=>{if(t.config.globalProperties.$api)return;function n(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,n])=>n.forEach(n=>e(n,t)))}t.config.globalProperties.$fhcAlert||t.use(N);let r={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(t,e){t.clearValidation(),e.forEach(e=>t.setFeedback(!1,e.messages||e.message))},async toast(e){const n=t.config.globalProperties.$p;if(!n)return Promise.reject("Phrasen plugin not loaded!");async function r(t){t=t.reduce((t,e)=>{switch(e.type){case"not_found":case"site_failed":e.message?t[e.message]=[e.url]:t._default=[e.url];break;case"general":t._default||(t._default=[]),t._default.push(e.message);break;case"validation":Object.entries(e.messages).forEach(([e,n])=>{t[e]||(t[e]=[]),Array.isArray(n)?t[e].push(...n):t[e].push(n)})}return t},{});let e=0;const r=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,r])=>{if("_default"==t){await n.loadCategory("dashboard");t='
    '+n.t("dashboard/general")+"
    "}else t="
    "+t+"
    ";return e+=r.length,t+"
    "+r.join("
    ")+"
    "}));return{counter:e,msgs:r}}let s,a;Array.isArray(e)?({counter:s,msgs:a}=await r(e)):({counter:s,msgs:a}=await Object.entries(e).reduce(async(t,[e,n])=>{const s=await t,{counter:a,msgs:i}=await r(n);return s.counter+=a,s.msgs.push("
    "+e+"
    "+i.join("")+"
    "),s},Promise.resolve({counter:0,msgs:[]}))),await n.loadCategory("ui");const i=n.t("ui/n_errors",{n:s});t.config.globalProperties.$fhcAlert.alertDefault("error",i,"
    "+a.join("")+"
    ",!0,!0)},php(e){n(e,(e,n)=>{var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",n,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",n,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n&&(r=n+"\n\n"+r),t.config.globalProperties.$fhcAlert.alertSystemError(r)}})},exception(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},db(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},auth(e){n(e,(e,n)=>{n?n+=": "+e.message:n=e.message;var r="";r+="Controller name: "+e.controller+"\n",r+="Method name: "+e.method+"\n",r+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",n,r,!0)})}}};function s(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function a(t){if("string"==typeof t.data||t.data instanceof String)return a({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 i(t){if(!1===t||"off"===t)return{...r,success:!1,fail:!1};if(!t||!0===t)return{...r};if("success"===t)return{...r,fail:!1};if("fail"===t)return{...r,success:!1};const{success:e,fail:n,handler:s,combine:a}=t;return t={...r},Object.entries({fail:n,success:e}).forEach(([e,n])=>{void 0!==n&&(t[e]=n)}),Object.entries({handler:s,combine:a}).forEach(([e,n])=>{void 0!==n&&(t[e]={...t[e],...n})}),t}function o(t){const e=i(t?.errorHandling);if(t?.form){const n=e.handler.form;e.handler={...e.handler,form:e=>n(t.form,e)}}else e.combine={...e.combine,form:[]};return e}function d(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 l(t,e){const n={},r=[];if(null==e)return{};for(;e.length;)r.push(e.pop());for(var s of r){let r=s.type,i=null;for(var a in t.combine){let e=t.combine[a].includes(r),n=t.handler[a];if(e&&n&&(i=a,"form"==i))break}i&&(r=i);t.handler[r]?(n[r]||(n[r]=[]),Array.isArray(s)?n[r].push(...s):n[r].push(s)):e.push(s)}return n}void 0!==e?.errorHandling&&(r=i(e.errorHandling));const u=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});u.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),u.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[n.type])(n,e.config))),a(e)),t=>{if("ERR_CANCELED"==t.code)return Promise.reject({handled:!0,...t});const e=o(t.config);if(!e.fail)return Promise.reject(t);const n=d(t),r=l(e,n);for(var s in r)e.handler[s](r[s]);return n.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>u.getUri({url:t}),get:(t,e,n,r)=>([e,n,r]=s(t,e,n,r),n&&(r?r.params=n:r={params:n}),u.get(e,r)),post:(t,e,n,r)=>([e,n,r]=s(t,e,n,r),u.post(e,n,r)),call(e,n,r){if(Array.isArray(e)){const a=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),a.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=s(r,void 0,void 0,n||{}),a=o(e);if(!a.success&&!a.fail)return t;const i={};for(var u of t){const[t,e]="fulfilled"===u.status?[a.success,u.value]:[a.fail,u.reason];if(!t)return;const n=l(a,d(e));for(var p in n)i[p]?i[p][e.config.errorHeader]=n[p]:i[p]={[e.config.errorHeader]:n[p]}}for(var c in i)a.handler[c](i[c]);return t})}let{method:a,url:i,params:u,config:p}=e;return void 0!==n&&(p=n),a||(a="get"),a.toLowerCase&&(a=a.toLowerCase()),"get"==a?this.get(r,i,u,p):"post"==a?this.post(r,i,u,p):void console.error("FhcApi: method not allowed:",a)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},q={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 W=Vue.reactive({}),Z={};let K=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),Q=Vue.computed(()=>K.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==K.value).LC_Time:null);const X={user_language:K,user_locale:Q,setLanguage(t){const e=Object.keys(W);return this.config.globalProperties.$api.call(q.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{W[t.category][t.phrase]=t.text}),K.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(Z[t]||(Z[t]=this.config.globalProperties.$api.call(q.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=>{W[t]=e})),Z[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let r=Vue.computed(()=>W[t]?function(t,e,n){let r=W[t][e];return r?(n&&(r=r.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),r):"<< PHRASE "+e+">>"}(t,e,n):"");return W[t]||this.loadCategory(t),r.value}};var Y={install(t,e){t.config.globalProperties.$fhcApi||t.use(z),t.config.globalProperties.$api||t.use(V),t.config.globalProperties.$p={t:X.t,loadCategory:e=>X.loadCategory.call(t,e),setLanguage:e=>X.setLanguage.call(t,e),user_language:K,user_locale:Q,t_ref:X.t_ref},t.provide("$p",t.config.globalProperties.$p)}},tt=Object.freeze({__proto__:null,default:Y,user_locale:Q});Vue.createApp({name:"LeitungApp",components:{StudierendenantragLeitung:v}}).use(Y).use(primevue.config.default,{zIndex:{overlay:9999}}).mount("#wrapper"); +getStatus:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getStatus",{})},getTopic:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getTopic",{})},acceptProfilRequest:function({profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:s}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",{profil_update_id:t,uid:e,status_message:n,topic:r,requested_change:s})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:n,status_message:r}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/denyProfilRequest",{profil_update_id:t,uid:e,topic:n,status_message:r})},insertFile:function(t,e=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,t)},getProfilRequestFiles:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`,{})},selectProfilRequest:function(t=null,e=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...t?{uid:t}:{},...e?{id:e}:{}})},insertProfilRequest:function(t,e,n=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/insertProfilRequest",{topic:t,payload:e,...n?{fileID:n}:{}})},updateProfilRequest:function(t,e,n,r=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/updateProfilRequest",{topic:t,payload:e,ID:n,...r?{fileID:r}:{}})},deleteProfilRequest:function(t){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",{requestID:t})}},C={getRoomInfo(t,e,n){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:n})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,n){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:n})},getLvPlanReservierungen(t,e){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:t,end_date:e})},getLehreinheitStudiensemester(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${t}`,{})},studiensemesterDateInterval(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${t}`,{})},LvPlanEvents(t,e,n){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:n})}},T={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(t){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:t})}}},students:{uid(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},prestudent(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},person(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},verband(t){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+t)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(t){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:t})}},konto:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/konto/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id),only_open:e.filter,studiengang_kz:e.studiengang_kz_intern?e.stg_kz:""}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},checkDoubles(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/checkDoubles",e,{confirmErrorHandler:t=>!0})},insert(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/insert",e)},counter(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",t)},edit(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/update",e)},delete(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:t})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+n.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+n.id)},addNewAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,n)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,n)},deleteAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:t})},getPlaces(t){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+t)},getFirmen(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+t)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+n.id)},addNewBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,n)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,n)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+n.id)},addNewContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,n)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,n)},deleteContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:t})},getStandorteByFirma(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+t)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(t,e){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e))},updatePrestudent(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,n)},getBezeichnungZGV(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungZGV/")},getBezeichnungMZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungMZgv/")},getBezeichnungDZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungDZgv/")},getStgs(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStgs/")},getAusbildung(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAusbildung/")},getAufmerksamdurch(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAufmerksamdurch/")},getBerufstaetigkeit(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBerufstaetigkeit/")},getTypenStg(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getTypenStg/")},getBisstandort(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBisstandort/")},getHistoryPrestudent(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+n.id)},getMaxSem(t){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:t})},advanceStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+n+"/"+r)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+n+"/"+r)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+n+"/"+r)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+n.id)}},status:{insertStatus(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,n)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:r}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+n+"/"+r)},updateStatus(t,{prestudent_id:e,status_kurzbz:n,studiensemester_kurzbz:r,ausbildungssemester:s},a){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+n+"/"+r+"/"+s,a)},getStudienplaene(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+t)},getStudiengang(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+t)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+t,e,{errorHeader:t})},changeStatus(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+t,e,{errorHeader:t})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(t,e){let n="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(n)},save(t,e,n,r){let s="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(n);return this.$fhcApi.post(t,s,r)}},exam:{getPruefungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+n.id)},loadPruefung(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+t)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",t)},getLvsByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+t)},getLvsandLesByStudent(t,e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+t+"/"+e)},getLvsAndMas(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+t)},getMitarbeiterLv(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",t)},addPruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/insertPruefung/",e)},updatePruefung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,n)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+n.id)},addNewAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",e)},loadAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:t})},updateAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",e)},deleteAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:t})},getTypenAbschlusspruefung(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/")},getTypenAntritte(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/")},getBeurteilungen(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/")},getAkadGrade(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:t})},getTypStudiengang(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:t})},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+t)},getPruefer(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:t})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(t,e){let n="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getTeacherProposal(t,e){let n="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getRepeaterGrades(t,e){let n="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r,lehrveranstaltung_bezeichnung:s}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:r},{errorHeader:s})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:r})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:t,lv_bezeichnung:e}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:t},{errorHeader:e})},getGradeFromPoints(t,e,n,r){const s=r?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:n},s)}},mobility:{getMobilitaeten(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+n.id)},getProgramsMobility(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getProgramsMobility/")},addNewMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/insertMobility/",e)},loadMobility(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+t)},updateMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/updateMobility/",e)},deleteMobility(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+t)},getLVList(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+t)},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",t)},getLvsandLesByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+t)},getPurposes(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+n.id)},getSupports(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+n.id)},getListPurposes(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListPurposes/")},getListSupports(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListSupports/")},deleteMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+t.bisio_id,t)},addMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+t.bisio_id,t)},deleteMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+t.bisio_id,t)},addMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+t.bisio_id,t)}},archiv:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/archiv/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id)}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(t){return this.$fhcApi.post("api/frontend/v1/documents/archive",t)},archiveSigned(t){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",t)},update(t){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",t)},delete({akte_id:t,studiengang_kz:e}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:t,studiengang_kz:e})}},documents:{getDocumentsUnaccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+n.id+"/"+n.studiengang_kz)},getDocumentsAccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+n.id+"/"+n.studiengang_kz)},deleteZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},createZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},loadAkte(t){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+t)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+t,e)},deleteFile(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+t)},uploadFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+t,e)}},exemptions:{getAnrechnungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+n.id)},getLehrveranstaltungen(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+t)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+t)},getLektoren(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+t)},addNewAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",e)},loadAnrechnung(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+t)},editAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",e)},deleteAnrechnung(t){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+t)}},jointstudies:{getStudies(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+n.id)},getTypenMobility(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/")},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/")},getStudyprograms(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/")},getListPartner(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/")},getStatiPrestudent(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/")},loadStudy(t){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+t)},insertStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",e)},updateStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",e)},deleteStudy(t){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+t)}},courselist:{getCourselist(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+n.student_uid+"/"+n.start_date+"/"+n.end_date+"/"+n.group_consecutiveHours+"/"+n.dbStundenplanTable)},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStudiensemester/")}},configStudent(){return this.$fhcApi.get("api/frontend/v1/stv/config/student")},configStudents(){return this.$fhcApi.get("api/frontend/v1/stv/config/students")}},P={person:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,n)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,n)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+t)},isBerechtigt(t,e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}}},k={person:{getAllBetriebsmittel(t,e,n){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+n.type+"/"+n.id)},addNewBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,n)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,n)},deleteBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+t)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(t){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+t)}}},D={updatePersonUnrulyStatus(t,e){try{const n={person_id:t,unruly:e},r="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(r,n,null)}catch(t){throw t}},filterPerson(t,e=""){try{const n=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(n,t)}catch(t){throw t}}},w={getContentID(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/ContentID",{ort_kurzbz:t})},getRooms(t,e,n,r,s=0){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getRooms",{datum:t,von:e,bis:n,typ:r,personenanzahl:s})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},F={content(t,e=null,n=null,r=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...n?{sprache:n}:{},...r?{sichtbar:r}:{}})},getNews(t=1,e=10,n){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:n})},news(t){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:t})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},O={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}`,{})}},L={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}`,{})}},R={person:{getMessages(t,e,n){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+n.id+"/"+n.type+"/"+n.size+"/"+n.page)},getVorlagen(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getVorlagen/")},getMsgVarsLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/")},getMessageVarsPerson(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+t.id+"/"+t.type_id)},getMsgVarsPrestudent(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+t.id+"/"+t.type_id)},getPersonId(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id)},getUid(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+t.id+"/"+t.type_id)},getDataVorlage(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+t)},getNameOfDefaultRecipient(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+t.id+"/"+t.type_id)},getPreviewText(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+t.id+"/"+t.type_id,e)},getReplyData(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+t)},sendMessageFromModalContext(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,n)},sendMessage(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+t,e)},deleteMessage(t){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+t)}}},B={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},H={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,n=void 0,r=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:n,studienplan:r})},getStudiengaengeForStudienSemester:function(t){return this.$fhcApi.get(`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${t}`,{})},getStudienplaeneBySemester:function(t,e){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienplaeneBySemester",{studiengang:t,studiensemester:e})},getLvPlanForStudiensemester:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${t}/${e}`,{})},getLvEvaluierungInfo:function(t,e){return this.$fhcApi.get(`/api/frontend/v1/Studium/getLvEvaluierungInfo/${t}/${e}`,{})}},j={search:A,phrasen:b,navigation:_,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:y,studstatus:$,profil:S,profilUpdate:E,lvPlan:C,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(t){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${t}`,{})},update:function({bookmark_id:t,url:e,title:n,tag:r=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:n})},insert:function({url:t,title:e,tag:n}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:n})}},stv:T,notiz:P,betriebsmittel:k,checkperson:D,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:w,cms:F,lehre:O,addons:L,messages:R,vorlagen:B,addons:L,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",{})}},studium:H,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},z={install:(t,e)=>{if(t.config.globalProperties.$fhcApi)return void(e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory.addEndpoints(e.factory)));function n(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function r(t){const e=t.data;return delete t.data,e.meta?e.meta.response=t:e.meta={response:t},e}FHC_JS_DATA_STORAGE_OBJECT.app_root,FHC_JS_DATA_STORAGE_OBJECT.ci_router;const s=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});s.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),s.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),r(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),s.getUri({url:t})),get:(t,e,r,a)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,r,a]=n(t,e,r,a),r&&(a?a.params=r:a={params:r}),s.get(e,a)),post:(t,e,r,a)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,r,a]=n(t,e,r,a),s.post(e,r,a)),_defaultErrorHandlers:{validation(e,n){const r=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(r.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>r.alertDefault("error",t,e,!0)),!1)},general(e,n){const r=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n.alertSystemError(r)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var r="";r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),n.alertSystemError(r)},db(e){const n=t.config.globalProperties.$fhcAlert;var r="";void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),n.alertSystemError(r)},auth(e,n){const r=t.config.globalProperties.$fhcAlert;var s="";s+="Controller name: "+e.controller+"\n",s+="Method name: "+e.method+"\n",s+="Required permissions: "+e.required_permissions,n?.errorHeader?r.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):r.alertDefault("error",e.message,s)}}};class a{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,r,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,r,s)),post:(e,n,r,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,r,s))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e,!0)}addEndpoints(t,e){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new a(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const i=new a(j);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),i.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=i,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};const J="error",M="retval",G={get:function(t,e,n=null){return G._axiosCall(t,e,"get",n)},post:function(t,e,n=null){return G._axiosCall(t,e,"post",n)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(J)||!t.hasOwnProperty(M)||0!=t.error)},isError:function(t){return!G.isSuccess(t)},hasData:function(t){return!(!G.isSuccess(t)||!("object"==typeof t[M]&&Object.keys(t[M]).length>0||"array"==typeof t[M]&&t[M].length>0||"string"==typeof t[M]&&""!=t[M].trim()||"number"==typeof t[M]))},getData:function(t){return G.hasData(t)?t[M]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(M)?t[M]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(J)?t[J]:1},_generateRouterURI:function(t){var e=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(e=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+t),e},_printDebug:function(t,e,n){},_axiosCall:function(t,e,n,r){let s={method:n,url:G._generateRouterURI(t),timeout:5e3};if("get"==n?s.params=e:s.data=e,"object"==typeof r)for(var a in r)s[a]=r[a];return axios(s)}},U=document.createElement("div"),I=Vue.createApp({name:"FhcAlertApp",components:{PvToast:e,PvConfirm:n},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(){U.parentElement.removeChild(U)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});I.use(t),I.use(r);const x=I.mount(U);document.body.appendChild(U);var N={install:(t,e)=>{t.config.globalProperties.$p||t.use(Y);const n={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);x.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);x.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);x.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);x.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);x.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,n)=>{x.$confirm.require({group:"fhcAlertConfirm",header:Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:Vue.computed(()=>t.config.globalProperties.$p.t("alert/confirm_delete")),acceptLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/loeschen")),acceptClass:"p-button-danger",rejectLabel:Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:"p-button-secondary",accept(){e(!0)},reject(){e(!1)}})}),confirm:e=>new Promise((n,r)=>{x.$confirm.require({group:e?.group??"fhcAlertConfirm",header:e?.header??Vue.computed(()=>t.config.globalProperties.$p.t("alert/attention")),message:e?.message??"",acceptLabel:e?.acceptLabel??"Ok",acceptClass:e?.acceptClass??"btn btn-primary",rejectLabel:e?.rejectLabel??Vue.computed(()=>t.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:e?.rejectClass??"btn btn-outline-secondary",accept(){n(!0)},reject(){n(!1)}})}),alertDefault(t,e,n,r=!1,s=!1){let a={severity:t,summary:e,detail:n,html:s};r||(a.life=3e3),x.$refs.toast.add(a)},alertMultiple(t,e="info",n="Info",r=!1,s=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,n,t,r,s)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return n.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(n.alertSystemError);if(!t.hasOwnProperty("handled")||!t.handled){if("object"==typeof t&&null!==t){let e="";return t.hasOwnProperty("response")&&t.response?.data?.retval?e+="Error Message: "+(t.response.data.retval.message||t.response.data.retval)+"\r\n":t.hasOwnProperty("message")&&(e+="Error Message: "+t.message.toUpperCase()+"\r\n"),t.hasOwnProperty("config")&&t.config.hasOwnProperty("url")&&(e+="Error ConfigURL: "+t.config.url+"\r\n"),t.hasOwnProperty("stack")&&(e+="Error Stack: "+t.stack+"\r\n"),""==e&&(e="Error Message: "+JSON.stringify(t)+"\r\n"),e+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,n.alertSystemError(e)}n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method)}}},handleSystemMessage(t){if("string"==typeof t)return n.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(n.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method):t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))},resetFormValidation(t){const e=new Event("fhc-form-reset");t.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(t=>t.dispatchEvent(e))},handleFormValidation(t,e){if(void 0===e){if(t&&t.nodeType===Node.ELEMENT_NODE)return e=>n.handleFormValidation(e,t)}else if(400==t?.response?.status){let r=G.getError(t.response.data);"object"!=typeof r&&(r=t.response.data),n.resetFormValidation(e);const s=Object.entries(r).filter(([t,n])=>{const r=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!r||(r.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:n})),!1)}).map(t=>t[1]),a=e.querySelector("[data-fhc-form-error]");return void(a&&s.length?a.dispatchEvent(new CustomEvent("fhc-form-error",{detail:s})):s.forEach(n.alertError))}if(400==t?.response?.status){let e=G.getError(t.response.data);n.alertError("object"==typeof e?Object.values(e):e)}else n.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=n,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}},V={install:(t,e)=>{if(t.config.globalProperties.$api)return;function n(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,n])=>n.forEach(n=>e(n,t)))}t.config.globalProperties.$fhcAlert||t.use(N);let r={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(t,e){t.clearValidation(),e.forEach(e=>t.setFeedback(!1,e.messages||e.message))},async toast(e){const n=t.config.globalProperties.$p;if(!n)return Promise.reject("Phrasen plugin not loaded!");async function r(t){t=t.reduce((t,e)=>{switch(e.type){case"not_found":case"site_failed":e.message?t[e.message]=[e.url]:t._default=[e.url];break;case"general":t._default||(t._default=[]),t._default.push(e.message);break;case"validation":Object.entries(e.messages).forEach(([e,n])=>{t[e]||(t[e]=[]),Array.isArray(n)?t[e].push(...n):t[e].push(n)})}return t},{});let e=0;const r=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,r])=>{if("_default"==t){await n.loadCategory("dashboard");t='
    '+n.t("dashboard/general")+"
    "}else t="
    "+t+"
    ";return e+=r.length,t+"
    "+r.join("
    ")+"
    "}));return{counter:e,msgs:r}}let s,a;Array.isArray(e)?({counter:s,msgs:a}=await r(e)):({counter:s,msgs:a}=await Object.entries(e).reduce(async(t,[e,n])=>{const s=await t,{counter:a,msgs:i}=await r(n);return s.counter+=a,s.msgs.push("
    "+e+"
    "+i.join("")+"
    "),s},Promise.resolve({counter:0,msgs:[]}))),await n.loadCategory("ui");const i=n.t("ui/n_errors",{n:s});t.config.globalProperties.$fhcAlert.alertDefault("error",i,"
    "+a.join("")+"
    ",!0,!0)},php(e){n(e,(e,n)=>{var r="";switch(r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",n,r,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",n,r,!0);break;default:r="Type: PHP "+e.severity+"\n\n"+r,n&&(r=n+"\n\n"+r),t.config.globalProperties.$fhcAlert.alertSystemError(r)}})},exception(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),r+="Type: "+e.class+"\n\n",r+="Message: "+e.message+"\n\n",r+="Filename: "+e.filename+"\n",r+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(r+="\nBacktrace: ",e.backtrace.forEach(t=>{r+="\n\tFile: "+t.file+"\n",r+="\tLine: "+t.line+"\n",r+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},db(e){n(e,(e,n)=>{var r="";n&&(r+=n+"\n\n"),void 0!==e.heading&&(r+=e.heading+"\n\n"),void 0!==e.code&&(r+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(r+="SQL: "+e.sql+"\n\n"),void 0!==e.message?r+="Message: "+e.message+"\n\n":void 0!==e.messages&&(r+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(r+="Filename: "+e.filename+"\n"),void 0!==e.line&&(r+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(r)})},auth(e){n(e,(e,n)=>{n?n+=": "+e.message:n=e.message;var r="";r+="Controller name: "+e.controller+"\n",r+="Method name: "+e.method+"\n",r+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",n,r,!0)})}}};function s(t,e,n,r){if("string"==typeof t&&void 0===r)[e,n,r]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===r&&(r=t,t=void 0)}if(t){if(!t.clearValidation||!t.setFeedback)throw new TypeError("'form' is not a Form Component");t={clearValidation:t.clearValidation,setFeedback:t.setFeedback},r?r.form=t:r={form:t}}return[e,n,r]}function a(t){if("string"==typeof t.data||t.data instanceof String)return a({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 i(t){if(!1===t||"off"===t)return{...r,success:!1,fail:!1};if(!t||!0===t)return{...r};if("success"===t)return{...r,fail:!1};if("fail"===t)return{...r,success:!1};const{success:e,fail:n,handler:s,combine:a}=t;return t={...r},Object.entries({fail:n,success:e}).forEach(([e,n])=>{void 0!==n&&(t[e]=n)}),Object.entries({handler:s,combine:a}).forEach(([e,n])=>{void 0!==n&&(t[e]={...t[e],...n})}),t}function o(t){const e=i(t?.errorHandling);if(t?.form){const n=e.handler.form;e.handler={...e.handler,form:e=>n(t.form,e)}}else e.combine={...e.combine,form:[]};return e}function l(t){return t.response?404==t.response.status?[{type:"not_found",message:t.message,url:t.request.responseURL}]:null==t.response.data.errors?[]:t.response.data.errors:t.request?[{type:"site_failed",message:t.message,url:t.request.responseURL}]:[{type:"script",message:t.message}]}function d(t,e){const n={},r=[];if(null==e)return{};for(;e.length;)r.push(e.pop());for(var s of r){let r=s.type,i=null;for(var a in t.combine){let e=t.combine[a].includes(r),n=t.handler[a];if(e&&n&&(i=a,"form"==i))break}i&&(r=i);t.handler[r]?(n[r]||(n[r]=[]),Array.isArray(s)?n[r].push(...s):n[r].push(s)):e.push(s)}return n}void 0!==e?.errorHandling&&(r=i(e.errorHandling));const u=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});u.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const r of n)t.FormData.append(e+(n.length>1?"[]":""),r);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(r=>t.FormData.append(e+(n.length>1?"[]":""),r)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),u.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[n.type])(n,e.config))),a(e)),t=>{if("ERR_CANCELED"==t.code)return Promise.reject({handled:!0,...t});const e=o(t.config);if(!e.fail)return Promise.reject(t);const n=l(t),r=d(e,n);for(var s in r)e.handler[s](r[s]);return n.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>u.getUri({url:t}),get:(t,e,n,r)=>([e,n,r]=s(t,e,n,r),n&&(r?r.params=n:r={params:n}),u.get(e,r)),post:(t,e,n,r)=>([e,n,r]=s(t,e,n,r),u.post(e,n,r)),call(e,n,r){if(Array.isArray(e)){const a=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),a.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=s(r,void 0,void 0,n||{}),a=o(e);if(!a.success&&!a.fail)return t;const i={};for(var u of t){const[t,e]="fulfilled"===u.status?[a.success,u.value]:[a.fail,u.reason];if(!t)return;const n=d(a,l(e));for(var p in n)i[p]?i[p][e.config.errorHeader]=n[p]:i[p]={[e.config.errorHeader]:n[p]}}for(var c in i)a.handler[c](i[c]);return t})}let{method:a,url:i,params:u,config:p}=e;return void 0!==n&&(p=n),a||(a="get"),a.toLowerCase&&(a=a.toLowerCase()),"get"==a?this.get(r,i,u,p):"post"==a?this.post(r,i,u,p):void console.error("FhcApi: method not allowed:",a)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},q={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 W=Vue.reactive({}),Z={};let K=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),Q=Vue.computed(()=>K.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==K.value).LC_Time:null);const X={user_language:K,user_locale:Q,setLanguage(t){const e=Object.keys(W);return this.config.globalProperties.$api.call(q.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{W[t.category][t.phrase]=t.text}),K.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(Z[t]||(Z[t]=this.config.globalProperties.$api.call(q.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=>{W[t]=e})),Z[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let r=Vue.computed(()=>W[t]?function(t,e,n){let r=W[t][e];return r?(n&&(r=r.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),r):"<< PHRASE "+e+">>"}(t,e,n):"");return W[t]||this.loadCategory(t),r.value}};var Y={install(t,e){t.config.globalProperties.$fhcApi||t.use(z),t.config.globalProperties.$api||t.use(V),t.config.globalProperties.$p={t:X.t,loadCategory:e=>X.loadCategory.call(t,e),setLanguage:e=>X.setLanguage.call(t,e),user_language:K,user_locale:Q,t_ref:X.t_ref},t.provide("$p",t.config.globalProperties.$p)}},tt=Object.freeze({__proto__:null,default:Y,user_locale:Q});Vue.createApp({name:"LeitungApp",components:{StudierendenantragLeitung:v}}).use(Y).use(primevue.config.default,{zIndex:{overlay:9999}}).mount("#wrapper"); //# sourceMappingURL=Leitung.js.map diff --git a/public/dist/js/apps/lehre/Antrag/Leitung.js.map b/public/dist/js/apps/lehre/Antrag/Leitung.js.map index 1e85433bc..25e51aacf 100644 --- a/public/dist/js/apps/lehre/Antrag/Leitung.js.map +++ b/public/dist/js/apps/lehre/Antrag/Leitung.js.map @@ -1 +1 @@ -{"version":3,"file":"Leitung.js","sources":["../../../../../js/components/Studierendenantrag/Leitung/Header.js","../../../../../js/components/Bootstrap/Modal.js","../../../../../js/components/Bootstrap/Alert.js","../../../../../js/api/factory/studstatus/leitung.js","../../../../../js/components/Studierendenantrag/Leitung/Actions.js","../../../../../js/components/Studierendenantrag/Leitung/Actions/New.js","../../../../../js/components/Studierendenantrag/Leitung/Actions/Columns.js","../../../../../js/components/Fetch.js","../../../../../js/api/factory/studstatus/wiederholung.js","../../../../../js/components/Studierendenantrag/Leitung/LvPopup.js","../../../../../js/tabulator/filters/Dates.js","../../../../../js/components/Studierendenantrag/Leitung/Table.js","../../../../../js/components/Studierendenantrag/Leitung/GrundPopup.js","../../../../../js/api/factory/studstatus/abmeldung.js","../../../../../js/components/Studierendenantrag/Leitung.js","../../../../../js/components/Loader.js","../../../../../js/api/search.js","../../../../../js/api/phrasen.js","../../../../../js/api/navigation.js","../../../../../js/api/filter.js","../../../../../js/api/studstatus.js","../../../../../js/api/profil.js","../../../../../js/api/profilUpdate.js","../../../../../js/api/lvPlan.js","../../../../../js/api/stv.js","../../../../../js/api/stv/verband.js","../../../../../js/api/stv/students.js","../../../../../js/api/stv/filter.js","../../../../../js/api/stv/konto.js","../../../../../js/api/stv/group.js","../../../../../js/api/stv/kontakt.js","../../../../../js/api/stv/prestudent.js","../../../../../js/api/stv/status.js","../../../../../js/api/stv/details.js","../../../../../js/api/stv/exam.js","../../../../../js/api/stv/abschlusspruefung.js","../../../../../js/api/stv/grades.js","../../../../../js/api/stv/mobility.js","../../../../../js/api/stv/archiv.js","../../../../../js/api/stv/documents.js","../../../../../js/api/stv/exemptions.js","../../../../../js/api/stv/jointstudies.js","../../../../../js/api/stv/courselist.js","../../../../../js/api/notiz.js","../../../../../js/api/notiz/person.js","../../../../../js/api/betriebsmittel.js","../../../../../js/api/betriebsmittel/person.js","../../../../../js/api/checkperson.js","../../../../../js/api/ort.js","../../../../../js/api/cms.js","../../../../../js/api/lehre.js","../../../../../js/api/addons.js","../../../../../js/api/messages.js","../../../../../js/api/messages/person.js","../../../../../js/api/vorlagen.js","../../../../../js/api/studium.js","../../../../../js/api/fhcapifactory.js","../../../../../js/api/dashboard.js","../../../../../js/api/bookmark.js","../../../../../js/api/ampeln.js","../../../../../js/api/studiengang.js","../../../../../js/api/menu.js","../../../../../js/api/authinfo.js","../../../../../js/api/language.js","../../../../../js/plugin/OldFhcApi.js","../../../../../js/RESTClient.js","../../../../../js/plugins/FhcAlert.js","../../../../../js/plugins/Api.js","../../../../../js/api/factory/phrasen.js","../../../../../js/plugins/Phrasen.js","../../../../../js/apps/lehre/Antrag/Leitung.js"],"sourcesContent":["const LOCAL_STORAGE_ID = 'studierendenantrag_leitung_2023-11-14_header_filter';\n\nexport default {\n\tprops: {\n\t\tstgs: Array\n\t},\n\temits: [\n\t\t'input'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\ttodo_value: '',\n\t\t\tstg_value: ''\n\t\t}\n\t},\n\tcomputed: {\n\t\tvalue() {\n\t\t\tconst a = [];\n\t\t\tif (this.todo_value)\n\t\t\t\ta.push(this.todo_value);\n\t\t\tif (this.stg_value)\n\t\t\t\ta.push(this.stg_value);\n\n\t\t\treturn a.join('/');\n\t\t}\n\t},\n\twatch: {\n\t\tvalue(n) {\n\t\t\twindow.localStorage.setItem(LOCAL_STORAGE_ID, n);\n\t\t\tthis.$emit('input', n);\n\t\t}\n\t},\n\tcreated() {\n\t\tvar values = 'todo';\n\t\tconst savedPath = window.localStorage.getItem(LOCAL_STORAGE_ID);\n\t\tif (savedPath !== null) {\n\t\t\tvalues = savedPath;\n\t\t}\n\n\t\tvalues = values.split('/');\n\n\t\tif (values.length) {\n\t\t\tif (values.length == 1) {\n\t\t\t\tif (values[0] == 'todo')\n\t\t\t\t\tvalues.push('');\n\t\t\t\telse\n\t\t\t\t\tvalues.unshift('');\n\t\t\t}\n\t\t\tthis.stg_value = values.pop();\n\t\t\tthis.todo_value = values.pop();\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t

    {{$p.t('studierendenantrag', 'studierendenantraege')}}

    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n}\n","//import Phrasen from '../../plugin/Phrasen.js';\n\nexport default {\n\tname: 'BootstrapModal',\n\tdata: () => ({\n\t\tmodal: null,\n\t\tfullscreen: false\n\t}),\n\tprops: {\n\t\tbackdrop: {\n\t\t\ttype: [Boolean,String],\n\t\t\tdefault: true,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['static', true, false].includes(value);\n\t\t\t}\n\t\t},\n\t\tfocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tkeyboard: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tnoCloseBtn: Boolean,\n\t\tdialogClass: [String,Array,Object],\n\t\theaderClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tbodyClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'px-4 py-5'\n\t\t},\n\t\tfooterClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tallowFullscreenExpand: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\temits: [\n\t\t\"hideBsModal\",\n\t\t\"hiddenBsModal\",\n\t\t\"hidePreventedBsModal\",\n\t\t\"showBsModal\",\n\t\t\"shownBsModal\"\n\t],\n\tmethods: {\n\t\tdispose() {\n\t\t\treturn this.modal.dispose();\n\t\t},\n\t\thandleUpdate() {\n\t\t\treturn this.modal.handleUpdate();\n\t\t},\n\t\thide() {\n\t\t\treturn this.modal.hide();\n\t\t},\n\t\tshow(relatedTarget) {\n\t\t\treturn this.modal.show(relatedTarget);\n\t\t},\n\t\ttoggle() {\n\t\t\treturn this.modal.toggle();\n\t\t},\n\t\ttoggleFullscreen() {\n\t\t\tthis.fullscreen = !this.fullscreen\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$refs.modal)\n\t\t\tthis.modal = new bootstrap.Modal(this.$refs.modal, {\n\t\t\t\tbackdrop: this.backdrop,\n\t\t\t\tfocus: this.focus,\n\t\t\t\tkeyboard: this.keyboard\n\t\t\t});\n\t},\n\tpopup(body, options, title, footer) {\n\t\tconst BsModal = this,\n\t\t\tslots = {};\n\t\tif (body !== undefined)\n\t\t\tslots.default = () => body;\n\t\tif (title !== undefined)\n\t\t\tslots.title = () => title;\n\t\tif (footer !== undefined)\n\t\t\tslots.footer = () => footer;\n\n\t\t// little hack to check whether primevue is included in the app or not\n\t\tlet includedPrimevue = false;\n\t\tif(typeof primevue !== 'undefined'){\n\t\t\tincludedPrimevue = true;\n\t\t}\n\n\t\treturn new Promise((resolve,reject) => {\n\t\t\tconst instance = Vue.createApp({\n\t\t\t\tname: 'ModalTmpApp',\n\t\t\t\tsetup() {\n\t\t\t\t\treturn () => Vue.h(BsModal, {...{\n\t\t\t\t\t\tclass: 'fade'\n\t\t\t\t\t},...options, ...{\n\t\t\t\t\t\tref: 'modal',\n\t\t\t\t\t\t'onHidden.bs.modal': instance.unmount\n\t\t\t\t\t}}, slots);\n\t\t\t\t},\n\t\t\t\tmounted() {\n\t\t\t\t\tthis.$refs.modal.show();\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tbeforeUnmount() {\n\t\t\t\t\tif (this.$refs.modal)\n\t\t\t\t\t\tthis.$refs.modal.result !== false ? resolve(this.$refs.modal.result) : reject();\n\t\t\t\t},\n\t\t\t\tunmounted() {\n\t\t\t\t\twrapper.parentElement.removeChild(wrapper);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst wrapper = document.createElement(\"div\");\n\t\t\t\n\t\t\t// if(primevue) --> won't work because primevue is not defined in this scope and promise would be rejected\n\t\t\tif (includedPrimevue){\n\t\t\t\tinstance.use(primevue.config.default, {zIndex: {overlay: 9999}})\n\t\t\t}\n\t\t\t\t \n\t\t\t//instance.use(Phrasen); // TODO(chris): find a more dynamic way\n\t\t\timport('../../plugins/Phrasen.js').then((Phrasen) => {\n\t\t\t\tinstance.use(Phrasen.default);\n\t\t\t\tinstance.mount(wrapper);\n\t\t\t\tdocument.body.appendChild(wrapper);\n\t\t\t});\n\t\t});\n\t},\n\ttemplate: `
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    `\n}\n","import BsModal from './Modal.js';\n\nexport default {\n\tname: 'BootstrapAlert',\n\tcomponents: {\n\t\tBsModal\n\t},\n\tmixins: [\n\t\tBsModal\n\t],\n\tprops: {\n\t\tdialogClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'modal-dialog-centered'\n\t\t},\n\t\t/*\n\t\t * NOTE(chris):\n\t\t * Hack to expose in \"emits\" declared events to $props which we use\n\t\t * in the v-bind directive to forward all events.\n\t\t * @see: https://github.com/vuejs/core/issues/3432\n\t\t*/\n\t\tonHideBsModal: Function,\n\t\tonHiddenBsModal: Function,\n\t\tonHidePreventedBsModal: Function,\n\t\tonShowBsModal: Function,\n\t\tonShownBsModal: Function\n\t},\n\tdata: () => ({\n\t\tresult: true\n\t}),\n\tmounted() {\n\t\tthis.modal = this.$refs.modalContainer.modal;\n\t},\n\tpopup(msg, options) {\n\t\treturn BsModal.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetStgs() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/getActiveStgs'\n\t\t};\n\t},\n\tgetAntraege(url, config, params) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/getAntraege/' + url\n\t\t};\n\t},\n\tgetHistory(antrag_id) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id\n\t\t};\n\t},\n\tgetPrestudents(query) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\tparams: { query }\n\t\t};\n\t},\n\tapprove(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\treject(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\treopen(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tpause(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tunpause(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tobject(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tapproveObjection(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tdenyObjection(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\tparams: antrag\n\t\t};\n\t}\n};","import ActionsNew from './Actions/New.js';\nimport ActionsColumns from './Actions/Columns.js';\n\nexport default {\n\tcomponents: {\n\t\tActionsNew,\n\t\tActionsColumns\n\t},\n\tprops: {\n\t\tselectedData: Array,\n\t\tcolumns: Array,\n\t\tstgL: Array,\n\t\tstgA: Array\n\t},\n\temits: [\n\t\t'reload',\n\t\t'download',\n\t\t'action:approve',\n\t\t'action:reject',\n\t\t'action:reopen'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tcurrentStudent: ''\n\t\t}\n\t},\n\tcomputed: {\n\t\tselectedCanBeApproved() {\n\t\t\tif (!this.selectedData.length)\n\t\t\t\treturn false;\n\t\t\tif (!this.selectedData.every(val => this.stgL.includes(val.studiengang_kz)))\n\t\t\t\treturn false;\n\t\t\treturn this.selectedData.filter(row => {\n\t\t\t\treturn (row.typ == 'Wiederholung' && row.status == 'Lvszugewiesen') || (row.typ != 'Wiederholung' && (row.status == 'Erstellt' || row.status == 'ErstelltStgl'));\n\t\t\t}).length == this.selectedData.length;\n\t\t},\n\t\tselectedCanBeRejected() {\n\t\t\tif (!this.selectedData.length)\n\t\t\t\treturn false;\n\t\t\tif (!this.selectedData.every(val => this.stgL.includes(val.studiengang_kz)))\n\t\t\t\treturn false;\n\t\t\treturn this.selectedData.filter(row => {\n\t\t\t\treturn (row.typ == 'Unterbrechung' && row.status == 'Erstellt');\n\t\t\t}).length == this.selectedData.length;\n\t\t},\n\t\tselectedCanBeReopened() {\n\t\t\tif (!this.selectedData.length)\n\t\t\t\treturn false;\n\t\t\tif (!this.selectedData.every(val => this.stgA.includes(val.studiengang_kz)))\n\t\t\t\treturn false;\n\t\t\treturn this.selectedData.filter(row => {\n\t\t\t\treturn (row.typ == 'Wiederholung' && row.status == 'Verzichtet');\n\t\t\t}).length == this.selectedData.length;\n\t\t},\n\t\tnewUrl() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + this.currentStudent;\n\t\t}\n\t},\n\tmethods: {\n\t\thideModal() {\n\t\t\tbootstrap.Modal.getInstance(this.$refs.modal).hide();\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t{{$p.t('table', 'with_selected', {count: selectedData.length})}}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t`\n}\n","import BsAlert from '../../../Bootstrap/Alert.js';\nimport BsModal from '../../../Bootstrap/Modal.js';\n\nimport ApiStudstatusLeitung from '../../../../api/factory/studstatus/leitung.js';\n\nexport default {\n\tcomponents: {\n\t\tBsModal,\n\t\tAutoComplete: primevue.autocomplete\n\t},\n\temits: [\n\t\t'reload'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tdata: [],\n\t\t\tstudent: '',\n\t\t\tabortController: null\n\t\t}\n\t},\n\tcomputed: {\n\t\tnewUrl() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/lehre/Studierendenantrag/abmeldungStgl/' + this.student.prestudent_id;\n\t\t}\n\t},\n\tmethods: {\n\t\topenForm() {\n\t\t\tbootstrap.Modal.getInstance(this.$refs.modal).hide();\n\t\t\tBsModal.popup(Vue.h('iframe', {\n\t\t\t\tsrc: this.newUrl,\n\t\t\t\tclass: 'position-absolute top-0 start-0 w-100 h-100'\n\t\t\t}), {\n\t\t\t\tdialogClass: 'modal-fullscreen'\n\t\t\t}, this.$p.t('studierendenantrag', 'antrag_header')).then(() => {\n\t\t\t\tthis.$emit('reload');\n\t\t\t\tthis.student = '';\n\t\t\t});\n\t\t},\n\t\tloadData(evt) {\n\t\t\tif (evt.query.length < 2)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.abortController)\n\t\t\t{\n\t\t\t\tthis.abortController.abort();\n\t\t\t}\n\n\t\t\tthis.abortController = new AbortController();\n\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStudstatusLeitung.getPrestudents(evt.query), {\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t\ttimeout: 30000\n\t\t\t\t})\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    {{$p.t('studierendenantrag','title_new_Abmeldung')}}
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{$p.t('studierendenantrag','btn_create')}}\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n}\n","export default {\n\tprops: {\n\t\tcolumns: Array\n\t},\n\tmethods: {\n\t\ttoggleColumn(col) {\n\t\t\tcol.visible = !col.visible;\n\t\t\tcol.original.toggle()\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t`\n}\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tgetLvs(antrag_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tcancel(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/saveLvs',\n\t\t\tparams: {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t}\n\t\t};\n\t}\n};","import BsAlert from '../../Bootstrap/Alert.js';\nimport {CoreFetchCmpt} from \"../../Fetch.js\";\n\nimport ApiStudstatusWiederholung from '../../../api/factory/studstatus/wiederholung.js';\n\nexport default {\n\tname: 'StudierendenantragLeitungLvPopup',\n\tcomponents: {\n\t\tCoreFetchCmpt\n\t},\n\tmixins: [\n\t\tBsAlert\n\t],\n\tprops: {\n\t\tfooter: Boolean,\n\t\tantragId: Number,\n\t\tcountRemaining: Number\n\t},\n\tdata(){\n\t\treturn {\n\t\t\tlvs: null,\n\t\t\trepeat_last: false,\n\t\t\trefresh: true,\n\t\t\tresult: false,\n\t\t\tcheck: false\n\t\t};\n\t},\n\tcomputed: {\n\t\tlvzugelassen() {\n\t\t\tlet zwischen = {};\n\t\t\tfor (let k in this.lvs){\n\t\t\t\tzwischen[k] = this.lvs[k] ? this.lvs[k].filter(lv=>lv.antrag_zugelassen) : null;\n\t\t\t}\n\t\t\treturn zwischen;\n\t\t},\n\t\tlvzugelassenLength() {\n\t\t\treturn Object.values(this.lvzugelassen).reduce((result, current) => result + (current ? current.length : 0), 0);\n\t\t}\n\t},\n\tmethods: {\n\t\tsetlvs(param) {\n\t\t\tthis.repeat_last = !!param.repeat_last;\n\t\t\tif (this.repeat_last) {\n\t\t\t\tdelete param.repeat_last;\n\t\t\t}\n\t\t\tthis.lvs = param;\n\t\t},\n\t\tloadlvs() {\n\t\t\tif (!this.antragId)\n\t\t\t\treturn new Promise(() => {});\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusWiederholung.getLvs(this.antragId));\n\t\t},\n\t\tsubmit(result) {\n\t\t\tthis.result = [result, this.check];\n\t\t\tthis.hide();\n\t\t}\n\t},\n\twatch: {\n\t\tantragId() {\n\t\t\tVue.nextTick(() => {\n\t\t\t\tthis.refresh = !this.refresh;\n\t\t\t});\n\t\t}\n\t},\n\tpopup(msg, options) {\n\t\tif (typeof options === 'string')\n\t\t\toptions = { default: options };\n\t\treturn BsAlert.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t`\n}\n","if (!primevue) {\n\tconsole.error('PrimeVue not loaded!');\n}\n\n// NOTE(chris): Click on clear button gives an error. This is a bug in primevue => fixed in current version\nTabulator.extendModule('filter', 'filters', {\n\t\"dates\": (headerValue, rowValue) => {\n\t\tif (!headerValue)\n\t\t\treturn true;\n\n\t\tlet rowDate = new Date(rowValue);\n\n\t\tif (Array.isArray(headerValue))\n\t\t{\n\t\t\tlet startDate = new Date(headerValue[0]);\n\t\t\tif (headerValue[1])\n\t\t\t{\n\t\t\t\tlet endDate = new Date(headerValue[1]);\n\n\t\t\t\tendDate.setHours(23, 59, 59, 999);\n\n\t\t\t\treturn rowDate >= startDate && rowDate <= endDate;\n\t\t\t}\n\n\t\t\treturn rowDate.toDateString() === startDate.toDateString();\n\t\t}\n\t\tlet singleDate = new Date(headerValue);\n\t\treturn rowDate.toDateString() === singleDate.toDateString();\n\t}\n});\n\nfunction dateFilter(cell, onRendered, success) {\n\tlet div = document.createElement('div');\n\n\tlet initialValue = null;\n\n\tlet val = cell.getValue();\n\n\tif (Array.isArray(val))\n\t{\n\t\tconst start = val[0] ? new Date(val[0]) : null;\n\t\tconst end = val[1] ? new Date(val[1]) : null;\n\t\tinitialValue = [start, end];\n\t}\n\n\tVue.createApp({\n\t\tcomponents: {\n\t\t\tPrimevueCalendar: primevue.calendar\n\t\t},\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tval: initialValue\n\t\t\t}\n\t\t},\n\t\twatch: {\n\t\t\tval(n) {\n\t\t\t\tsuccess(n);\n\t\t\t}\n\t\t},\n\t\ttemplate: `\n\t\t\t\t `\n\t}).use(primevue.config.default).mount(div);\n\n\treturn div;\n}\nexport { dateFilter };","import BsModal from '../../Bootstrap/Modal.js';\nimport {CoreFetchCmpt} from '../../Fetch.js';\nimport LvPopup from './LvPopup.js';\nimport { dateFilter } from '../../../tabulator/filters/Dates.js';\n\nimport ApiStudstatusLeitung from '../../../api/factory/studstatus/leitung.js';\n\nexport default {\n\tcomponents: {\n\t\tBsModal,\n\t\tCoreFetchCmpt,\n\t\tLvPopup\n\t},\n\tprops: {\n\t\tselectedData: Array,\n\t\tcolumnData: Array,\n\t\tstgL: Array,\n\t\tstgA: Array,\n\t\tfilter: String\n\t},\n\temits: [\n\t\t'update:columnData',\n\t\t'update:selectedData',\n\t\t'action:approve',\n\t\t'action:reject',\n\t\t'action:reopen',\n\t\t'action:object',\n\t\t'action:objectionDeny',\n\t\t'action:objectionApprove',\n\t\t'action:cancel',\n\t\t'action:pause',\n\t\t'action:unpause'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\ttable: null,\n\t\t\tlastHistoryClickedId: null,\n\t\t\thistoryData: [],\n\t\t\tlvsData: null\n\t\t}\n\t},\n\tmethods: {\n\t\treload(stg) {\n\t\t\tthis.table.setData('/' + (stg || ''));\n\t\t},\n\t\tdownload() {\n\t\t\tthis.table.download(\"csv\", \"data.csv\", {\n\t\t\t\tdelimiter: ';',\n\t\t\t\tbom: true\n\t\t\t});\n\t\t},\n\t\tgetHistory() {\n\t\t\tif (this.lastHistoryClickedId === null)\n\t\t\t\treturn null;\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusLeitung.getHistory(this.lastHistoryClickedId))\n\t\t\t\t.then(res => {\n\t\t\t\t\tthis.historyData = res.data.sort((a, b) => a.insertamum > b.insertamum);\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tgetHistoryStatus(data, index) {\n\t\t\tif (data.insertvon == 'Studienabbruch')\n\t\t\t\treturn this.$p.t('studierendenantrag/status_stop');\n\t\t\tif (index > 0 && this.historyData[index-1].studierendenantrag_statustyp_kurzbz == 'Pause') {\n\t\t\t\tif (index > 1 && this.historyData[index-2].studierendenantrag_statustyp_kurzbz != 'Pause') {\n\t\t\t\t\t// NOTE(chris): this is a AbmeldungStgl Pause right after a manual Pause\n\t\t\t\t\tif (data.studierendenantrag_statustyp_kurzbz == 'Pause')\n\t\t\t\t\t\treturn data.typ;\n\t\t\t\t\t// NOTE(chris): this is a manual Pause resumed\n\t\t\t\t\telse\n\t\t\t\t\t\treturn data.typ + ' (' + this.$p.t('studierendenantrag/status_unpaused') + ')';\n\t\t\t\t}\n\t\t\t\t// NOTE(chris): a series of pause stati always starts with a manual and alternate afterwards\n\t\t\t\tlet i = 2;\n\t\t\t\twhile (index-i > 0 && this.historyData[index-i].studierendenantrag_statustyp_kurzbz == 'Pause') i++;\n\t\t\t\tif (data.studierendenantrag_statustyp_kurzbz == 'Pause')\n\t\t\t\t\ti++;\n\t\t\t\treturn i%2\n\t\t\t\t\t? data.typ\n\t\t\t\t\t: data.typ + ' (' + this.$p.t('studierendenantrag/status_unpaused') + ')';\n\t\t\t}\n\t\t\treturn data.typ;\n\t\t},\n\t\tshowHistoryGrund(grund) {\n\t\t\tthis.$refs.modalGrund.$el.addEventListener(\n\t\t\t\t'hidden.bs.modal',\n\t\t\t\tthis.$refs.history.show,\n\t\t\t\t{\n\t\t\t\t\tonce: true\n\t\t\t\t}\n\t\t\t);\n\t\t\tthis.$refs.modalGrundPre.innerHTML = grund;\n\t\t},\n\t\tshowLVs(data) {\n\t\t\tthis.lvsData = data;\n\t\t\tthis.$refs.lvList.show();\n\t\t}\n\t},\n\tasync mounted() {\n\t\tawait this.$p.loadCategory(['lehre', 'studierendenantrag', 'person', 'global', 'ui']);\n\t\tfunction dateFormatter(cell)\n\t\t{\n\t\t\tlet val = cell.getValue();\n\t\t\tif (!val)\n\t\t\t\treturn ' ';\n\t\t\tlet date = new Date(val);\n\t\t\treturn date.toLocaleDateString();\n\t\t}\n\n\t\tthis.table = new Tabulator(this.$refs.table, {\n\t\t\tplaceholder:\"Keine zu bearbeitenden Datensätze\",\n\t\t\tmovableColumns: true,\n\t\t\theight: '65vh',\n\t\t\tlayout: \"fitDataFill\",\n\t\t\tajaxURL: '/' + (this.filter || ''),\n\t\t\tajaxRequestFunc: url => this.$api.call(ApiStudstatusLeitung.getAntraege(url)),\n\t\t\tajaxResponse: (url, params, response) => response.data,\n\t\t\tpersistence: { // NOTE(chris): do not store column titles\n\t\t\t\tsort: true, //persist column sorting\n\t\t\t\tfilter: true, //persist filters\n\t\t\t\theaderFilter: true, //persist header filters\n\t\t\t\tgroup: true, //persist row grouping\n\t\t\t\tpage: true, //persist page\n\t\t\t\tcolumns: [\"width\", \"visible\"], //persist columns\n\t\t\t},\n\t\t\tpersistenceID: 'studierendenantrag_leitung_2023-11-14',\n\t\t\tcolumns: [{\n\t\t\t\tformatter: 'rowSelection',\n\t\t\t\ttitleFormatter: 'rowSelection',\n\t\t\t\ttitleFormatterParams: {\n\t\t\t\t\trowRange: 'active'\n\t\t\t\t},\n\t\t\t\thozAlign: 'center',\n\t\t\t\theaderSort: false\n\t\t\t}, {\n\t\t\t\tfield: 'studierendenantrag_id',\n\t\t\t\ttitle: '#',\n\t\t\t\tsorter: 'number'\n\t\t\t}, {\n\t\t\t\tfield: 'bezeichnung',\n\t\t\t\ttitle: this.$p.t('lehre', 'studiengang'),\n\t\t\t\theaderFilter: 'list',\n\t\t\t\theaderFilterParams: {\n\t\t\t\t\tvaluesLookup: true,\n\t\t\t\t\tclearable: true,\n\t\t\t\t\tautocomplete: true,\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'orgform',\n\t\t\t\ttitle: this.$p.t('lehre', 'organisationsform'),\n\t\t\t\theaderFilter: 'list',\n\t\t\t\theaderFilterParams: {\n\t\t\t\t\tvaluesLookup: true,\n\t\t\t\t\tclearable: true,\n\t\t\t\t\tautocomplete: true,\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'typ',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_typ'),\n\t\t\t\theaderFilter: 'list',\n\t\t\t\theaderFilterParams: {\n\t\t\t\t\tvaluesLookup: true,\n\t\t\t\t\tclearable: true,\n\t\t\t\t\tautocomplete: true,\n\t\t\t\t},\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\treturn this.$p.t('studierendenantrag','antrag_typ_' + cell.getValue());\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'statustyp',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_status'),\n\t\t\t\theaderFilter: 'list',\n\t\t\t\theaderFilterParams: {\n\t\t\t\t\tvaluesLookup: true,\n\t\t\t\t\tclearable: true,\n\t\t\t\t\tautocomplete: true,\n\t\t\t\t},\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\tlet data = cell.getData();\n\t\t\t\t\tlet status = cell.getValue();\n\t\t\t\t\tif (data.status_insertvon == 'Studienabbruch' && data.status == 'Pause')\n\t\t\t\t\t\tstatus = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\tlet link = document.createElement('a');\n\t\t\t\t\tlink.href = \"#\";\n\t\t\t\t\tlink.innerHTML = status;\n\t\t\t\t\tlink.addEventListener('click', e => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tthis.lastHistoryClickedId = cell.getData().studierendenantrag_id;\n\t\t\t\t\t\tthis.$refs.historyLoader.fetchData();\n\t\t\t\t\t\tthis.$refs.history.show();\n\t\t\t\t\t});\n\n\t\t\t\t\treturn link;\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'matrikelnr',\n\t\t\t\ttitle: this.$p.t('person', 'personenkennzeichen'),\n\t\t\t\theaderFilter: 'input'\n\t\t\t}, {\n\t\t\t\tfield: 'prestudent_id',\n\t\t\t\ttitle: this.$p.t('lehre', 'prestudent'),\n\t\t\t\theaderFilter: 'input'\n\t\t\t}, {\n\t\t\t\tfield: 'name',\n\t\t\t\ttitle: this.$p.t('global', 'name'),\n\t\t\t\tmutator: (value, data) => (data.nachname + ' ' + data.vorname).replace(/^\\s*(.*)\\s*$/, '$1'),\n\t\t\t\theaderFilter: 'input'\n\t\t\t}, {\n\t\t\t\tfield: 'datum',\n\t\t\t\ttitle: this.$p.t('global', 'datum'),\n\t\t\t\tformatter: dateFormatter,\n\t\t\t\theaderFilterFunc: 'dates',\n\t\t\t\theaderFilter: dateFilter\n\t\t\t}, {\n\t\t\t\tfield: 'datum_wiedereinstieg',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_datum_wiedereinstieg'),\n\t\t\t\tformatter: dateFormatter,\n\t\t\t\theaderFilterFunc: 'dates',\n\t\t\t\theaderFilter: dateFilter\n\t\t\t}, {\n\t\t\t\tfield: 'grund',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_grund'),\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\tlet link = document.createElement('a'),\n\t\t\t\t\t\tval = cell.getValue();\n\t\t\t\t\tlink.href = \"#modal-grund\";\n\t\t\t\t\tlink.setAttribute('data-bs-toggle', 'modal');\n\t\t\t\t\tlink.innerHTML = this.$p.t('studierendenantrag', 'antrag_grund');\n\t\t\t\t\tlink.addEventListener('click', () => {\n\t\t\t\t\t\tthis.$refs.modalGrundPre.innerHTML = val;\n\t\t\t\t\t});\n\n\t\t\t\t\treturn val ? link : ' ';\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'dms_id',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_dateianhaenge'),\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\tlet val = cell.getValue();\n\t\t\t\t\tif (!val)\n\t\t\t\t\t\treturn ' ';\n\t\t\t\t\tlet link = document.createElement('a');\n\t\t\t\t\tlink.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\t\t\t'/lehre/Antrag/Attachment/show/' +\n\t\t\t\t\t\tval;\n\t\t\t\t\tlink.setAttribute('target', '_blank');\n\t\t\t\t\tlink.innerHTML = '';\n\t\t\t\t\tlink.append(this.$p.t('studierendenantrag/antrag_anhang'));\n\t\t\t\t\treturn link;\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'actions',\n\t\t\t\tfrozen: true,\n\t\t\t\ttitle: this.$p.t('ui', 'aktion'),\n\t\t\t\theaderFilter: false,\n\t\t\t\theaderSort: false,\t\t\t\t\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\tlet container = document.createElement('div'),\n\t\t\t\t\t\tdata = cell.getData();\n\n\t\t\t\t\tcontainer.className = \"d-flex gap-2\";\n\n\t\t\t\t\tlet allowed_status_for_download = [];\n\t\t\t\t\tswitch (data.typ) {\n\t\t\t\t\t\tcase 'Abmeldung':\n\t\t\t\t\t\t\tallowed_status_for_download = ['Genehmigt'];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'AbmeldungStgl':\n\t\t\t\t\t\t\tallowed_status_for_download = ['EinspruchAbgelehnt', 'Abgemeldet'];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Unterbrechung':\n\t\t\t\t\t\t\tallowed_status_for_download = ['Genehmigt', 'EmailVersandt'];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Wiederholung':\n\t\t\t\t\t\t\tallowed_status_for_download = ['Abgemeldet'];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (allowed_status_for_download.includes(data.status)) {\n\t\t\t\t\t\t// NOTE(chris): Download PDF\n\t\t\t\t\t\tlet button = document.createElement('a');\n\t\t\t\t\t\t// NOTE(chris): phrasen in attribues don't work if they are not preloaded\n\t\t\t\t\t\t// it work in this case because the category has already been loaded before\n\t\t\t\t\t\tbutton.innerHTML = '';\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.target = \"_blank\";\n\t\t\t\t\t\tbutton.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t\t\t\t'content/pdfExport.php?xml=Antrag' + data.typ + '.xml.php&xsl=Antrag' + data.typ + '&id=' + data.studierendenantrag_id + '&output=pdf';\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (data.typ == 'Wiederholung' && (data.status == 'ErsteAufforderungVersandt' || data.status == 'ZweiteAufforderungVersandt')) {\n\t\t\t\t\t\t// NOTE(chris): Pause\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tlet icon = document.createElement('i');\n\t\t\t\t\t\tlet span = document.createElement('span');\n\n\t\t\t\t\t\ticon.className = \"fa-solid fa-pause\";\n\t\t\t\t\t\ticon.setAttribute('aria-hidden', true);\n\t\t\t\t\t\ticon.setAttribute('title', this.$p.t('studierendenantrag', 'btn_pause'));\n\n\t\t\t\t\t\tspan.className = \"fa-sr-only\";\n\t\t\t\t\t\tspan.append(this.$p.t('studierendenantrag', 'btn_pause'));\n\n\t\t\t\t\t\tbutton.append(icon);\n\t\t\t\t\t\tbutton.append(span);\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:pause', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet canUnpause = data.status == 'Pause' && !['AbmeldungStgl', 'Studienabbruch'].includes(data.status_insertvon);\n\t\t\t\t\tif (!canUnpause && data.status == 'Pause' && data.status_insertvon == 'AbmeldungStgl') {\n\t\t\t\t\t\tcanUnpause = cell.getTable().getData().filter(row => \n\t\t\t\t\t\t\trow.prestudent_id == data.prestudent_id \n\t\t\t\t\t\t\t&& row.typ == 'AbmeldungStgl' \n\t\t\t\t\t\t\t&& row.status == 'Zurueckgezogen' \n\t\t\t\t\t\t\t&& row.status_insertamum == data.status_insertamum\n\t\t\t\t\t\t).length;\n\t\t\t\t\t}\n\t\t\t\t\tif (canUnpause) {\n\t\t\t\t\t\t// NOTE(chris): Unpause\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tlet icon = document.createElement('i');\n\t\t\t\t\t\tlet span = document.createElement('span');\n\n\t\t\t\t\t\ticon.className = \"fa-solid fa-play\";\n\t\t\t\t\t\ticon.setAttribute('aria-hidden', true);\n\t\t\t\t\t\ticon.setAttribute('title', this.$p.t('studierendenantrag', 'btn_unpause'));\n\n\t\t\t\t\t\tspan.className = \"fa-sr-only\";\n\t\t\t\t\t\tspan.append(this.$p.t('studierendenantrag', 'btn_unpause'));\n\n\t\t\t\t\t\tbutton.append(icon);\n\t\t\t\t\t\tbutton.append(span);\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:unpause', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.typ == 'AbmeldungStgl' && data.status == 'Genehmigt') {\n\t\t\t\t\t\t// NOTE(chris): Object\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_object'));\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:object', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.typ == 'AbmeldungStgl' && data.status == 'Beeinsprucht') {\n\t\t\t\t\t\t// NOTE(chris): Deny Objection\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_objection_deny'));\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:objectionDeny', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\n\t\t\t\t\t\t// NOTE(chris): Approve Objection\n\t\t\t\t\t\tbutton = document.createElement('button');\n\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_objection_approve'));\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:objectionApprove', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.stgA.includes(data.studiengang_kz)) {\n\t\t\t\t\t\t// NOTE(chris): Reopen\n\t\t\t\t\t\tif (data.typ == 'Wiederholung' && data.status == 'Verzichtet') {\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_reopen'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:reopen', [cell.getData()]));\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// NOTE(chris): Lv Zuweisen\n\t\t\t\t\t\tif (data.typ == 'Wiederholung' && (data.status == 'Erstellt' || data.status == 'Lvszugewiesen')) {\n\t\t\t\t\t\t\tlet button = document.createElement('a');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_lvzuweisen'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t\t\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\t\t\t\t\t'/lehre/Antrag/Wiederholung/assistenz/' +\n\t\t\t\t\t\t\t\tcell.getData().studierendenantrag_id + '/frame';\n\t\t\t\t\t\t\tbutton.onclick = e => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tBsModal.popup(Vue.h('iframe', {\n\t\t\t\t\t\t\t\t\tsrc: button.href,\n\t\t\t\t\t\t\t\t\tclass: 'position-absolute top-0 start-0 w-100 h-100'\n\t\t\t\t\t\t\t\t}), {\n\t\t\t\t\t\t\t\t\tdialogClass: 'modal-fullscreen'\n\t\t\t\t\t\t\t\t}, this.$p.t('studierendenantrag', 'title_lvzuweisen', cell.getData())).then(() => {\n\t\t\t\t\t\t\t\t\tthis.$emit('reload');\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// NOTE(chris): Cancel\n\t\t\t\t\t\tif (data.typ == 'AbmeldungStgl' && (data.status == 'Erstellt' || data.status == 'Genehmigt' )) {\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_cancel'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.addEventListener('click',() => this.$emit('action:cancel', [cell.getData()]));\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.stgL.includes(data.studiengang_kz)) {\n\t\t\t\t\t\t// NOTE(chris): Approve\n\t\t\t\t\t\tif ((data.typ == 'Wiederholung' && data.status == 'Lvszugewiesen') || (data.typ != 'Wiederholung' && data.status == 'Erstellt')) {\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_approve'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:approve', [cell.getData()]));\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// NOTE(chris): Reject (Unterbrechung braucht grund)\n\t\t\t\t\t\tif (data.status == 'Erstellt' && data.typ == 'Unterbrechung') {\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_reject'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:reject', [cell.getData()]));\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// NOTE(chris): Show LVs\n\t\t\t\t\tif (data.typ == 'Wiederholung' && (data.status == 'Lvszugewiesen' || data.status == 'Genehmigt')) {\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_show_lvs'));\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.showLVs(cell.getData()));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (container.innerHTML == '')\n\t\t\t\t\t\tcontainer.innerHTML = ' ';\n\n\t\t\t\t\treturn container;\n\t\t\t\t}\n\t\t\t}]\n\t\t});\n\t\tthis.table.on(\"tableBuilt\", () => {\n\t\t\tlet columns = this.table.getColumns();\n\t\t\tlet columnData = [];\n\t\t\tfor (let col of columns) {\n\t\t\t\tlet def = col.getDefinition();\n\t\t\t\tif (def.title && !def.frozen) {\n\t\t\t\t\tcolumnData.push({\n\t\t\t\t\t\ttitle: def.title,\n\t\t\t\t\t\tvisible: col.isVisible(),\n\t\t\t\t\t\toriginal: col\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:columnData', columnData);\n\t\t});\n\t\tthis.table.on(\"rowSelectionChanged\", data => {\n\t\t\tthis.$emit('update:selectedData', data);\n\t\t});\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    {{(new Date(status.insertamum)).toLocaleString()}}{{status.insertvon}}{{getHistoryStatus(status, index)}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'antrag_grund')}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t\n\t\t\t{{$p.t('studierendenantrag', 'title_show_lvs', lvsData ? lvsData : {name: ''}) }}\n\t\t\n\t
    \n\t`\n}","import BsAlert from '../../Bootstrap/Alert.js';\n\nexport default {\n\tname: 'StudierendenantragLeitungGrundPopup',\n\tmixins: [\n\t\tBsAlert,\n\t],\n\tprops: {\n\t\tplaceholder: String,\n\t\tdefault: String,\n\t\tcountRemaining: Number,\n\t\toptional: Boolean\n\t},\n\tdata: () => ({\n\t\tvalue: '',\n\t\tresult: false,\n\t\tcheck: false,\n\t\tisInvalid: false\n\t}),\n\tmethods: {\n\t\tsubmit() {\n\t\t\tif (!this.value && !this.optional) {\n\t\t\t\tthis.isInvalid = true;\n\t\t\t} else {\n\t\t\t\tthis.result = [this.value, this.check];\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t}\n\t},\n\tcreated() {\n\t\tif (this.default)\n\t\t\tthis.value = this.default;\n\t},\n\tpopup(msg, options) {\n\t\tif (typeof options === 'string')\n\t\t\toptions = { default: options };\n\t\treturn BsAlert.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(antrag_id, prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(studiensemester, prestudent_id, grund) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/abmeldung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}\n\t\t};\n\t},\n\tcancel(antrag_id) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\tparams: { antrag_id }\n\t\t};\n\t}\n};","import LeitungHeader from './Leitung/Header.js';\nimport LeitungActions from './Leitung/Actions.js';\nimport LeitungTable from './Leitung/Table.js';\nimport GrundPopup from './Leitung/GrundPopup.js';\nimport LvPopup from './Leitung/LvPopup.js';\nimport BsAlert from '../Bootstrap/Alert.js';\nimport FhcLoader from '../Loader.js';\n\nimport ApiStudstatusLeitung from '../../api/factory/studstatus/leitung.js';\nimport ApiStudstatusAbmeldung from '../../api/factory/studstatus/abmeldung.js';\n\nexport default {\n\tcomponents: {\n\t\tLeitungHeader,\n\t\tLeitungTable,\n\t\tLeitungActions,\n\t\tFhcLoader\n\t},\n\tprops: {\n\t\tstgL: Array,\n\t\tstgA: Array\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tfilter: undefined,\n\t\t\tselectedData: [],\n\t\t\tcolumns: [],\n\t\t\tstgs: []\n\t\t}\n\t},\n\tcomputed: {\n\t\tstgkzL() {\n\t\t\tif (!this.stgL)\n\t\t\t\treturn [];\n\t\t\treturn this.stgL.map(stg => parseInt(stg));\n\t\t},\n\t\tstgkzA() {\n\t\t\tif (!this.stgA)\n\t\t\t\treturn [];\n\t\t\treturn this.stgA.map(stg => parseInt(stg));\n\t\t}\n\t},\n\tmethods: {\n\t\tloadFilter() {\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStudstatusLeitung.getStgs())\n\t\t\t\t.then(result => this.stgs = result.data)\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tchangeFilter(filter) {\n\t\t\tthis.filter = filter || undefined;\n\t\t\tthis.reload();\n\t\t},\n\t\treload() {\n\t\t\tif (this.$refs.table)\n\t\t\t\tthis.$refs.table.reload(this.filter);\n\t\t\tthis.loadFilter();\n\t\t},\n\t\tdownload() {\n\t\t\tthis.$refs.table.download();\n\t\t},\n\t\tactionApprove(evt, oks) {\n\t\t\tvar antraege = evt || [...this.selectedData];\n\n\t\t\tif (!oks) {\n\t\t\t\toks = [];\n\t\t\t}\n\t\t\tvar currentAntrag = antraege.shift();\n\t\t\tif (currentAntrag) {\n\t\t\t\tif (currentAntrag.typ != 'Wiederholung')\n\t\t\t\t{\n\t\t\t\t\toks.push(currentAntrag);\n\t\t\t\t\tthis.actionApprove(antraege, oks);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet countAntrage = 0;\n\t\t\t\t\tLvPopup\n\t\t\t\t\t\t.popup(this.$p.t('studierendenantrag','title_show_lvs', currentAntrag), {\n\t\t\t\t\t\t\tantragId: currentAntrag.studierendenantrag_id,\n\t\t\t\t\t\t\tfooter: true,\n\t\t\t\t\t\t\tdialogClass: 'modal-lg',\n\t\t\t\t\t\t\tcountRemaining : antraege.filter(antrag => antrag.typ == 'Wiederholung').length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tif (result[0]) {\n\t\t\t\t\t\t\t\toks.push(currentAntrag);\n\t\t\t\t\t\t\t\tif (result[1])\n\t\t\t\t\t\t\t\t\twhile (antraege.length)\n\t\t\t\t\t\t\t\t\t\toks.push(antraege.pop());\n\t\t\t\t\t\t\t} else if (result[1]) {\n\t\t\t\t\t\t\t\twhile (antraege.length) {\n\t\t\t\t\t\t\t\t\tcurrentAntrag = antraege.pop();\n\t\t\t\t\t\t\t\t\tif (currentAntrag.typ != 'Wiederholung')\n\t\t\t\t\t\t\t\t\t\toks.push(currentAntrag);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.actionApprove(antraege, oks);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.$refs.loader.show();\n\t\t\t\tthis\n\t\t\t\t\t._singleOrMultiApiCall(oks, ApiStudstatusLeitung.approve)\n\t\t\t\t\t.then(this.showResults);\n\t\t\t}\n\t\t},\n\t\tactionReject(evt, gruende) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tif (!gruende)\n\t\t\t\tgruende = [];\n\t\t\tvar currentAntrag = antraege.pop();\n\t\t\tif (currentAntrag) {\n\t\t\t\tGrundPopup\n\t\t\t\t\t.popup(this.$p.t('studierendenantrag', 'title_grund', {id: currentAntrag.studierendenantrag_id}), {\n\t\t\t\t\t\tcountRemaining: antraege.length\n\t\t\t\t\t})\n\t\t\t\t\t.then(result => {\n\t\t\t\t\t\tcurrentAntrag.grund = result[0];\n\t\t\t\t\t\tgruende.push(currentAntrag);\n\t\t\t\t\t\tif (result[1])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twhile (antraege.length)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcurrentAntrag = antraege.pop();\n\t\t\t\t\t\t\t\tcurrentAntrag.grund = result[0];\n\t\t\t\t\t\t\t\tgruende.push(currentAntrag);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.actionReject(antraege, gruende);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {});\n\t\t\t} else {\n\t\t\t\tthis.$refs.loader.show();\n\n\t\t\t\tthis\n\t\t\t\t\t._singleOrMultiApiCall(gruende, ApiStudstatusLeitung.reject)\n\t\t\t\t\t.then(this.showResults);\n\t\t\t}\n\t\t},\n\t\tactionReopen(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.reopen)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionPause(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.pause)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionUnpause(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.unpause)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionObject(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.object)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionoObjectionDeny(evt, gruende) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tif (!gruende)\n\t\t\t\tgruende = [];\n\t\t\tvar currentAntrag = antraege.pop();\n\t\t\tif (currentAntrag) {\n\t\t\t\tGrundPopup\n\t\t\t\t\t.popup(this.$p.t('studierendenantrag', 'title_grund', {id: currentAntrag.studierendenantrag_id}), {\n\t\t\t\t\t\tcountRemaining : antraege.length,\n\t\t\t\t\t\toptional: true\n\t\t\t\t\t})\n\t\t\t\t\t.then(result => {\n\t\t\t\t\t\tcurrentAntrag.grund = result[0];\n\t\t\t\t\t\tgruende.push(currentAntrag);\n\t\t\t\t\t\tif (result[1]) {\n\t\t\t\t\t\t\twhile (antraege.length) {\n\t\t\t\t\t\t\t\tcurrentAntrag = antraege.pop();\n\t\t\t\t\t\t\t\tcurrentAntrag.grund = result[0];\n\t\t\t\t\t\t\t\tgruende.push(currentAntrag);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.actionoObjectionDeny(antraege, gruende);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {});\n\t\t\t} else {\n\t\t\t\tthis.$refs.loader.show();\n\t\t\t\tthis\n\t\t\t\t\t._singleOrMultiApiCall(gruende, ApiStudstatusLeitung.denyObjection)\n\t\t\t\t\t.then(this.showResults);\n\t\t\t}\n\t\t},\n\t\tactionObjectionApprove(evt, gruende) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.approveObjection)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionCancel(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tif (Array.isArray(antraege)) {\n\t\t\t\tPromise\n\t\t\t\t\t.allSettled(\n\t\t\t\t\t\tantraege.map(antrag => this.$api.call(\n\t\t\t\t\t\t\tApiStudstatusAbmeldung.cancel(antrag.studierendenantrag_id),\n\t\t\t\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t\t\t\t))\n\t\t\t\t\t)\n\t\t\t\t\t.then(this.showResults);\n\t\t\t} else {\n\t\t\t\tthis.$api\n\t\t\t\t\t.call(ApiStudstatusAbmeldung.cancel(antraege))\n\t\t\t\t\t.then(this.showResults);\n\t\t\t}\n\t\t},\n\t\tshowResults(results) {\n\t\t\tlet fulfilled = results.filter(res => res.status == 'fulfilled');\n\t\t\tthis.$refs.loader.hide();\n\t\t\t//fulfilled.forEach(a => this.$fhcAlert.alertDefault('success', '#' + a.value.data, 'Approved, ...'));\n\t\t\tif (fulfilled.length)\n\t\t\t\tthis.reload();\n\t\t},\n\t\t_singleOrMultiApiCall(antraege, endpoint) {\n\t\t\tif (Array.isArray(antraege)) {\n\t\t\t\treturn Promise\n\t\t\t\t\t.allSettled(antraege.map(antrag => this.$api.call(\n\t\t\t\t\t\tendpoint(antrag),\n\t\t\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t\t\t)));\n\t\t\t}\n\t\t\treturn this.$api.call(endpoint(antraege));\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.loadFilter();\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t
    \n\t`\n}\n","import BsModal from './Bootstrap/Modal.js';\n\nexport default {\n\tcomponents: {\n\t\tBsModal\n\t},\n\tprops: {\n\t\ttimeout: {\n\t\t\ttype: Number,\n\t\t\tdefault: 300\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tt: null,\n\t\t\tstate: 0\n\t\t}\n\t},\n\tmethods: {\n\t\tshow() {\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.timeout) {\n\t\t\t\t\t\tthis.state = 1;\n\t\t\t\t\t\tthis.t = window.setTimeout(() => this.$refs.modal.show(), this.timeout);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else\n\t\t\t\t\t\treturn this.$refs.modal.show();\n\t\t\t\tcase 4:\n\t\t\t\t\treturn window.setTimeout(() => this.show(), 1);\n\t\t\t}\n\t\t},\n\t\thide() {\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn window.clearTimeout(this.t);\n\t\t\t\tcase 2:\n\t\t\t\t\treturn window.setTimeout(() => this.hide(), 1);\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$refs.modal.hide();\n\t\t\t}\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.$refs.modal.$refs.modal.addEventListener('show.bs.modal', () => {\n\t\t\tthis.state = 2;\n\t\t});\n\t\tthis.$refs.modal.$refs.modal.addEventListener('shown.bs.modal', () => {\n\t\t\tthis.state = 3;\n\t\t});\n\t\tthis.$refs.modal.$refs.modal.addEventListener('hide.bs.modal', () => {\n\t\t\tthis.state = 4;\n\t\t});\n\t\tthis.$refs.modal.$refs.modal.addEventListener('hidden.bs.modal', () => {\n\t\t\tthis.state = 0;\n\t\t});\n\t},\n\ttemplate: `\n\t\n\t\tLoading...\n\t`\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektarbeiten(uid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${uid}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektabgaben(detail) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektabgaben`\n\t\t\t, {\n\t\t\t\tprojektarbeit_id: detail.projektarbeit_id,\n\t\t\t\tstudent_uid: detail.student_uid\n\t\t\t}\n\t\t);\n\t},\n\tpostStudentProjektarbeitEndupload(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tpostStudentProjektarbeitZwischenabgabe(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tgetStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) {\n\t\tconst url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`;\n\n\t\twindow.location = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url\n\t},\n\tgetMitarbeiterProjektarbeiten(uid, all) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${all}`\n\t\t\t, {}\n\t\t);\n\t},\n\tpostProjektarbeitAbgabe(termin) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id: termin.paabgabe_id,\n\t\t\tpaabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz,\n\t\t\tdatum: termin.datum,\n\t\t\tfixtermin: termin.fixtermin,\n\t\t\tinsertvon: termin.insertvon,\n\t\t\tkurzbz: termin.kurzbz,\n\t\t\tprojektarbeit_id: termin.projektarbeit_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t\t\n\t},\n\tdeleteProjektarbeitAbgabe(paabgabe_id) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tpostSerientermin(datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids) {\n\t\tconst payload = {\n\t\t\tdatum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postSerientermin';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tfetchDeadlines(person_id) {\n\t\tconst payload = {\n\t\t\tperson_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/fetchDeadlines';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","import StudierendenantragLeitung from '../../../components/Studierendenantrag/Leitung.js';\nimport PluginsPhrasen from '../../../plugins/Phrasen.js';\n\nconst app = Vue.createApp({\n\tname: 'LeitungApp',\n\tcomponents: {\n\t\tStudierendenantragLeitung\n\t}\n});\napp\n\t.use(PluginsPhrasen)\n\t.use(primevue.config.default,{zIndex: {overlay: 9999}})\n\t.mount('#wrapper');"],"names":["LOCAL_STORAGE_ID","LeitungHeader","props","stgs","Array","emits","data","todo_value","stg_value","computed","value","a","this","push","join","watch","n","window","localStorage","setItem","$emit","created","values","savedPath","getItem","split","length","unshift","pop","template","BsModal","name","modal","fullscreen","backdrop","type","Boolean","String","default","validator","includes","focus","keyboard","noCloseBtn","dialogClass","Object","headerClass","bodyClass","footerClass","allowFullscreenExpand","methods","dispose","handleUpdate","hide","show","relatedTarget","toggle","toggleFullscreen","mounted","$refs","bootstrap","Modal","popup","body","options","title","footer","slots","undefined","includedPrimevue","primevue","Promise","resolve","reject","instance","Vue","createApp","setup","h","class","ref","unmount","beforeUnmount","result","unmounted","wrapper","parentElement","removeChild","document","createElement","use","config","zIndex","overlay","then","Phrasen","mount","appendChild","BsAlert","components","mixins","onHideBsModal","Function","onHiddenBsModal","onHidePreventedBsModal","onShowBsModal","onShownBsModal","modalContainer","msg","bind","ApiStudstatusLeitung","getStgs","method","url","getAntraege","params","getHistory","antrag_id","getPrestudents","query","approve","antrag","reopen","pause","unpause","object","approveObjection","denyObjection","LeitungActions","ActionsNew","AutoComplete","autocomplete","student","abortController","newUrl","FHC_JS_DATA_STORAGE_OBJECT","app_root","ci_router","prestudent_id","openForm","getInstance","src","$p","t","loadData","evt","abort","AbortController","$api","call","signal","timeout","catch","$fhcAlert","handleSystemError","ActionsColumns","columns","toggleColumn","col","visible","original","selectedData","stgL","stgA","currentStudent","selectedCanBeApproved","every","val","studiengang_kz","filter","row","typ","status","selectedCanBeRejected","selectedCanBeReopened","hideModal","CoreFetchCmpt","refresh","apiFunction","required","apiFunctionParameters","newValue","oldValue","fetchData","loading","error","errorMessage","apiFunctionResult","successHandler","errorHandler","finally","finallyHandler","setError","response","retval","message","ApiStudstatusWiederholung","getDetails","getLvs","create","studiensemester","cancel","saveLvs","forbiddenLvs","mandatoryLvs","LvPopup","antragId","Number","countRemaining","lvs","repeat_last","check","lvzugelassen","zwischen","k","lv","antrag_zugelassen","lvzugelassenLength","reduce","current","setlvs","param","loadlvs","submit","nextTick","dateFilter","cell","onRendered","success","div","initialValue","getValue","isArray","start","Date","end","PrimevueCalendar","calendar","console","Tabulator","extendModule","dates","headerValue","rowValue","rowDate","startDate","endDate","setHours","toDateString","singleDate","LeitungTable","columnData","table","lastHistoryClickedId","historyData","lvsData","reload","stg","setData","download","delimiter","bom","res","sort","b","insertamum","getHistoryStatus","index","insertvon","studierendenantrag_statustyp_kurzbz","i","showHistoryGrund","grund","modalGrund","$el","addEventListener","history","once","modalGrundPre","innerHTML","showLVs","lvList","dateFormatter","toLocaleDateString","loadCategory","placeholder","movableColumns","height","layout","ajaxURL","ajaxRequestFunc","ajaxResponse","persistence","headerFilter","group","page","persistenceID","formatter","titleFormatter","titleFormatterParams","rowRange","hozAlign","headerSort","field","sorter","headerFilterParams","valuesLookup","clearable","formatterParams","getData","status_insertvon","link","href","e","preventDefault","studierendenantrag_id","historyLoader","mutator","nachname","vorname","replace","headerFilterFunc","setAttribute","append","frozen","container","className","allowed_status_for_download","button","target","icon","span","canUnpause","getTable","status_insertamum","onclick","on","getColumns","def","getDefinition","isVisible","GrundPopup","optional","isInvalid","ApiStudstatusAbmeldung","StudierendenantragLeitung","FhcLoader","state","setTimeout","clearTimeout","stgkzL","map","parseInt","stgkzA","loadFilter","changeFilter","actionApprove","oks","antraege","currentAntrag","shift","loader","_singleOrMultiApiCall","showResults","actionReject","gruende","id","actionReopen","actionPause","actionUnpause","actionObject","actionoObjectionDeny","actionObjectionApprove","actionCancel","allSettled","errorHeader","results","fulfilled","endpoint","search","searchsettings","$fhcApi","post","searchAdvanced","searchdummy","phrasen$1","category","get","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","getHeader","navigation_page","getMenu","filter$1","saveCustomFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","studstatus","abmeldung","stdsem","errorHandling","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","leitung","profil","getView","uid","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","getProfilRequestFiles","requestID","selectProfilRequest","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","set","students","studiensemester_kurzbz","encodeURIComponent","getUri","prestudent","person","person_id","relative_path","getStg","setStg","konto","tabulatorConfig","self","ajaxParams","modelValue","only_open","studiengang_kz_intern","stg_kz","checkDoubles","form","confirmErrorHandler","insert","counter","edit","delete","buchungsnr","getBuchungstypen","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","save","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","semester","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","lehrveranstaltung_id","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","update","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","formData","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","event","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","getStudentProjektarbeiten","getStudentProjektabgaben","detail","projektarbeit_id","postStudentProjektarbeitEndupload","Headers","postStudentProjektarbeitZwischenabgabe","getStudentProjektarbeitAbgabeFile","paabgabe_id","location","getMitarbeiterProjektarbeiten","all","postProjektarbeitAbgabe","termin","paabgabetyp_kurzbz","bezeichnung","fixtermin","kurzbz","deleteProjektarbeitAbgabe","postSerientermin","projektarbeit_ids","fetchDeadlines","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","tag","ampeln","open","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","globalProperties","factory","warn","addEndpoints","_get_config","uri","TypeError","clearValidation","setFeedback","_clean_return_value","meta","fhcApiAxios","baseURL","interceptors","request","FormData","item","FileList","File","newData","entries","nd","key","file","jsondata","forEach","JSON","stringify","errors","err","_defaultErrorHandlers","code","handled","alertDefault","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","severity","alertSystemError","exception","db","heading","sql","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","keys","provide","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","hasOwnProperty","isError","hasData","trim","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","prop","helperAppContainer","helperApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","called_path","called_method","openMessagecard","Collapse","getOrCreateInstance","getAttribute","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","FhcAlert","FhcPhrasen","alertSuccess","toast","add","summary","life","alertInfo","alertWarning","alert","confirmDelete","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","html","alertMultiple","messageArray","toLowerCase","errMsg","toUpperCase","stack","handleSystemMessage","resetFormValidation","Event","querySelectorAll","el","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","input","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","fail","combine","handler","async","_format_toast","_default","msgs","indexOf","n_errors","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","remaining","configoverwrite","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","user_locale","server_languages","find","LC_Time","catArray","phrase","text","obj","elem","extractCategory","t_ref","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Leitung.js","sources":["../../../../../js/components/Studierendenantrag/Leitung/Header.js","../../../../../js/components/Bootstrap/Modal.js","../../../../../js/components/Bootstrap/Alert.js","../../../../../js/api/factory/studstatus/leitung.js","../../../../../js/components/Studierendenantrag/Leitung/Actions.js","../../../../../js/components/Studierendenantrag/Leitung/Actions/New.js","../../../../../js/components/Studierendenantrag/Leitung/Actions/Columns.js","../../../../../js/components/Fetch.js","../../../../../js/api/factory/studstatus/wiederholung.js","../../../../../js/components/Studierendenantrag/Leitung/LvPopup.js","../../../../../js/tabulator/filters/Dates.js","../../../../../js/components/Studierendenantrag/Leitung/Table.js","../../../../../js/components/Studierendenantrag/Leitung/GrundPopup.js","../../../../../js/api/factory/studstatus/abmeldung.js","../../../../../js/components/Studierendenantrag/Leitung.js","../../../../../js/components/Loader.js","../../../../../js/api/search.js","../../../../../js/api/phrasen.js","../../../../../js/api/navigation.js","../../../../../js/api/filter.js","../../../../../js/api/studstatus.js","../../../../../js/api/profil.js","../../../../../js/api/profilUpdate.js","../../../../../js/api/lvPlan.js","../../../../../js/api/stv.js","../../../../../js/api/stv/verband.js","../../../../../js/api/stv/students.js","../../../../../js/api/stv/filter.js","../../../../../js/api/stv/konto.js","../../../../../js/api/stv/group.js","../../../../../js/api/stv/kontakt.js","../../../../../js/api/stv/prestudent.js","../../../../../js/api/stv/status.js","../../../../../js/api/stv/details.js","../../../../../js/api/stv/exam.js","../../../../../js/api/stv/abschlusspruefung.js","../../../../../js/api/stv/grades.js","../../../../../js/api/stv/mobility.js","../../../../../js/api/stv/archiv.js","../../../../../js/api/stv/documents.js","../../../../../js/api/stv/exemptions.js","../../../../../js/api/stv/jointstudies.js","../../../../../js/api/stv/courselist.js","../../../../../js/api/notiz.js","../../../../../js/api/notiz/person.js","../../../../../js/api/betriebsmittel.js","../../../../../js/api/betriebsmittel/person.js","../../../../../js/api/checkperson.js","../../../../../js/api/ort.js","../../../../../js/api/cms.js","../../../../../js/api/lehre.js","../../../../../js/api/addons.js","../../../../../js/api/messages.js","../../../../../js/api/messages/person.js","../../../../../js/api/vorlagen.js","../../../../../js/api/studium.js","../../../../../js/api/fhcapifactory.js","../../../../../js/api/dashboard.js","../../../../../js/api/bookmark.js","../../../../../js/api/ampeln.js","../../../../../js/api/studiengang.js","../../../../../js/api/menu.js","../../../../../js/api/authinfo.js","../../../../../js/api/language.js","../../../../../js/plugin/OldFhcApi.js","../../../../../js/RESTClient.js","../../../../../js/plugins/FhcAlert.js","../../../../../js/plugins/Api.js","../../../../../js/api/factory/phrasen.js","../../../../../js/plugins/Phrasen.js","../../../../../js/apps/lehre/Antrag/Leitung.js"],"sourcesContent":["const LOCAL_STORAGE_ID = 'studierendenantrag_leitung_2023-11-14_header_filter';\n\nexport default {\n\tprops: {\n\t\tstgs: Array\n\t},\n\temits: [\n\t\t'input'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\ttodo_value: '',\n\t\t\tstg_value: ''\n\t\t}\n\t},\n\tcomputed: {\n\t\tvalue() {\n\t\t\tconst a = [];\n\t\t\tif (this.todo_value)\n\t\t\t\ta.push(this.todo_value);\n\t\t\tif (this.stg_value)\n\t\t\t\ta.push(this.stg_value);\n\n\t\t\treturn a.join('/');\n\t\t}\n\t},\n\twatch: {\n\t\tvalue(n) {\n\t\t\twindow.localStorage.setItem(LOCAL_STORAGE_ID, n);\n\t\t\tthis.$emit('input', n);\n\t\t}\n\t},\n\tcreated() {\n\t\tvar values = 'todo';\n\t\tconst savedPath = window.localStorage.getItem(LOCAL_STORAGE_ID);\n\t\tif (savedPath !== null) {\n\t\t\tvalues = savedPath;\n\t\t}\n\n\t\tvalues = values.split('/');\n\n\t\tif (values.length) {\n\t\t\tif (values.length == 1) {\n\t\t\t\tif (values[0] == 'todo')\n\t\t\t\t\tvalues.push('');\n\t\t\t\telse\n\t\t\t\t\tvalues.unshift('');\n\t\t\t}\n\t\t\tthis.stg_value = values.pop();\n\t\t\tthis.todo_value = values.pop();\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t

    {{$p.t('studierendenantrag', 'studierendenantraege')}}

    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n}\n","//import Phrasen from '../../plugin/Phrasen.js';\n\nexport default {\n\tname: 'BootstrapModal',\n\tdata: () => ({\n\t\tmodal: null,\n\t\tfullscreen: false\n\t}),\n\tprops: {\n\t\tbackdrop: {\n\t\t\ttype: [Boolean,String],\n\t\t\tdefault: true,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['static', true, false].includes(value);\n\t\t\t}\n\t\t},\n\t\tfocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tkeyboard: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tnoCloseBtn: Boolean,\n\t\tdialogClass: [String,Array,Object],\n\t\theaderClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tbodyClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'px-4 py-5'\n\t\t},\n\t\tfooterClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tallowFullscreenExpand: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\temits: [\n\t\t\"hideBsModal\",\n\t\t\"hiddenBsModal\",\n\t\t\"hidePreventedBsModal\",\n\t\t\"showBsModal\",\n\t\t\"shownBsModal\",\n\t\t\"toggleFullscreen\"\n\t],\n\tmethods: {\n\t\tdispose() {\n\t\t\treturn this.modal.dispose();\n\t\t},\n\t\thandleUpdate() {\n\t\t\treturn this.modal.handleUpdate();\n\t\t},\n\t\thide() {\n\t\t\treturn this.modal.hide();\n\t\t},\n\t\tshow(relatedTarget) {\n\t\t\treturn this.modal.show(relatedTarget);\n\t\t},\n\t\ttoggle() {\n\t\t\treturn this.modal.toggle();\n\t\t},\n\t\ttoggleFullscreen() {\n\t\t\tthis.fullscreen = !this.fullscreen\n\t\t\tthis.$emit('toggleFullscreen')\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$refs.modal)\n\t\t\tthis.modal = new bootstrap.Modal(this.$refs.modal, {\n\t\t\t\tbackdrop: this.backdrop,\n\t\t\t\tfocus: this.focus,\n\t\t\t\tkeyboard: this.keyboard\n\t\t\t});\n\t},\n\tpopup(body, options, title, footer) {\n\t\tconst BsModal = this,\n\t\t\tslots = {};\n\t\tif (body !== undefined)\n\t\t\tslots.default = () => body;\n\t\tif (title !== undefined)\n\t\t\tslots.title = () => title;\n\t\tif (footer !== undefined)\n\t\t\tslots.footer = () => footer;\n\n\t\t// little hack to check whether primevue is included in the app or not\n\t\tlet includedPrimevue = false;\n\t\tif(typeof primevue !== 'undefined'){\n\t\t\tincludedPrimevue = true;\n\t\t}\n\n\t\treturn new Promise((resolve,reject) => {\n\t\t\tconst instance = Vue.createApp({\n\t\t\t\tname: 'ModalTmpApp',\n\t\t\t\tsetup() {\n\t\t\t\t\treturn () => Vue.h(BsModal, {...{\n\t\t\t\t\t\tclass: 'fade'\n\t\t\t\t\t},...options, ...{\n\t\t\t\t\t\tref: 'modal',\n\t\t\t\t\t\t'onHidden.bs.modal': instance.unmount\n\t\t\t\t\t}}, slots);\n\t\t\t\t},\n\t\t\t\tmounted() {\n\t\t\t\t\tthis.$refs.modal.show();\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tbeforeUnmount() {\n\t\t\t\t\tif (this.$refs.modal)\n\t\t\t\t\t\tthis.$refs.modal.result !== false ? resolve(this.$refs.modal.result) : reject();\n\t\t\t\t},\n\t\t\t\tunmounted() {\n\t\t\t\t\twrapper.parentElement.removeChild(wrapper);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst wrapper = document.createElement(\"div\");\n\t\t\t\n\t\t\t// if(primevue) --> won't work because primevue is not defined in this scope and promise would be rejected\n\t\t\tif (includedPrimevue){\n\t\t\t\tinstance.use(primevue.config.default, {zIndex: {overlay: 9999}})\n\t\t\t}\n\t\t\t\t \n\t\t\t//instance.use(Phrasen); // TODO(chris): find a more dynamic way\n\t\t\timport('../../plugins/Phrasen.js').then((Phrasen) => {\n\t\t\t\tinstance.use(Phrasen.default);\n\t\t\t\tinstance.mount(wrapper);\n\t\t\t\tdocument.body.appendChild(wrapper);\n\t\t\t});\n\t\t});\n\t},\n\ttemplate: `
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    `\n}\n","import BsModal from './Modal.js';\n\nexport default {\n\tname: 'BootstrapAlert',\n\tcomponents: {\n\t\tBsModal\n\t},\n\tmixins: [\n\t\tBsModal\n\t],\n\tprops: {\n\t\tdialogClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'modal-dialog-centered'\n\t\t},\n\t\t/*\n\t\t * NOTE(chris):\n\t\t * Hack to expose in \"emits\" declared events to $props which we use\n\t\t * in the v-bind directive to forward all events.\n\t\t * @see: https://github.com/vuejs/core/issues/3432\n\t\t*/\n\t\tonHideBsModal: Function,\n\t\tonHiddenBsModal: Function,\n\t\tonHidePreventedBsModal: Function,\n\t\tonShowBsModal: Function,\n\t\tonShownBsModal: Function\n\t},\n\tdata: () => ({\n\t\tresult: true\n\t}),\n\tmounted() {\n\t\tthis.modal = this.$refs.modalContainer.modal;\n\t},\n\tpopup(msg, options) {\n\t\treturn BsModal.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetStgs() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/getActiveStgs'\n\t\t};\n\t},\n\tgetAntraege(url, config, params) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/getAntraege/' + url\n\t\t};\n\t},\n\tgetHistory(antrag_id) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id\n\t\t};\n\t},\n\tgetPrestudents(query) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\tparams: { query }\n\t\t};\n\t},\n\tapprove(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\treject(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\treopen(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tpause(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tunpause(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tobject(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tapproveObjection(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\tparams: antrag\n\t\t};\n\t},\n\tdenyObjection(antrag) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\tparams: antrag\n\t\t};\n\t}\n};","import ActionsNew from './Actions/New.js';\nimport ActionsColumns from './Actions/Columns.js';\n\nexport default {\n\tcomponents: {\n\t\tActionsNew,\n\t\tActionsColumns\n\t},\n\tprops: {\n\t\tselectedData: Array,\n\t\tcolumns: Array,\n\t\tstgL: Array,\n\t\tstgA: Array\n\t},\n\temits: [\n\t\t'reload',\n\t\t'download',\n\t\t'action:approve',\n\t\t'action:reject',\n\t\t'action:reopen'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tcurrentStudent: ''\n\t\t}\n\t},\n\tcomputed: {\n\t\tselectedCanBeApproved() {\n\t\t\tif (!this.selectedData.length)\n\t\t\t\treturn false;\n\t\t\tif (!this.selectedData.every(val => this.stgL.includes(val.studiengang_kz)))\n\t\t\t\treturn false;\n\t\t\treturn this.selectedData.filter(row => {\n\t\t\t\treturn (row.typ == 'Wiederholung' && row.status == 'Lvszugewiesen') || (row.typ != 'Wiederholung' && (row.status == 'Erstellt' || row.status == 'ErstelltStgl'));\n\t\t\t}).length == this.selectedData.length;\n\t\t},\n\t\tselectedCanBeRejected() {\n\t\t\tif (!this.selectedData.length)\n\t\t\t\treturn false;\n\t\t\tif (!this.selectedData.every(val => this.stgL.includes(val.studiengang_kz)))\n\t\t\t\treturn false;\n\t\t\treturn this.selectedData.filter(row => {\n\t\t\t\treturn (row.typ == 'Unterbrechung' && row.status == 'Erstellt');\n\t\t\t}).length == this.selectedData.length;\n\t\t},\n\t\tselectedCanBeReopened() {\n\t\t\tif (!this.selectedData.length)\n\t\t\t\treturn false;\n\t\t\tif (!this.selectedData.every(val => this.stgA.includes(val.studiengang_kz)))\n\t\t\t\treturn false;\n\t\t\treturn this.selectedData.filter(row => {\n\t\t\t\treturn (row.typ == 'Wiederholung' && row.status == 'Verzichtet');\n\t\t\t}).length == this.selectedData.length;\n\t\t},\n\t\tnewUrl() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + this.currentStudent;\n\t\t}\n\t},\n\tmethods: {\n\t\thideModal() {\n\t\t\tbootstrap.Modal.getInstance(this.$refs.modal).hide();\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t{{$p.t('table', 'with_selected', {count: selectedData.length})}}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t`\n}\n","import BsAlert from '../../../Bootstrap/Alert.js';\nimport BsModal from '../../../Bootstrap/Modal.js';\n\nimport ApiStudstatusLeitung from '../../../../api/factory/studstatus/leitung.js';\n\nexport default {\n\tcomponents: {\n\t\tBsModal,\n\t\tAutoComplete: primevue.autocomplete\n\t},\n\temits: [\n\t\t'reload'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tdata: [],\n\t\t\tstudent: '',\n\t\t\tabortController: null\n\t\t}\n\t},\n\tcomputed: {\n\t\tnewUrl() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + '/lehre/Studierendenantrag/abmeldungStgl/' + this.student.prestudent_id;\n\t\t}\n\t},\n\tmethods: {\n\t\topenForm() {\n\t\t\tbootstrap.Modal.getInstance(this.$refs.modal).hide();\n\t\t\tBsModal.popup(Vue.h('iframe', {\n\t\t\t\tsrc: this.newUrl,\n\t\t\t\tclass: 'position-absolute top-0 start-0 w-100 h-100'\n\t\t\t}), {\n\t\t\t\tdialogClass: 'modal-fullscreen'\n\t\t\t}, this.$p.t('studierendenantrag', 'antrag_header')).then(() => {\n\t\t\t\tthis.$emit('reload');\n\t\t\t\tthis.student = '';\n\t\t\t});\n\t\t},\n\t\tloadData(evt) {\n\t\t\tif (evt.query.length < 2)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.abortController)\n\t\t\t{\n\t\t\t\tthis.abortController.abort();\n\t\t\t}\n\n\t\t\tthis.abortController = new AbortController();\n\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStudstatusLeitung.getPrestudents(evt.query), {\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t\ttimeout: 30000\n\t\t\t\t})\n\t\t\t\t.then(result => {\n\t\t\t\t\tthis.data = result.data;\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    {{$p.t('studierendenantrag','title_new_Abmeldung')}}
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{$p.t('studierendenantrag','btn_create')}}\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n}\n","export default {\n\tprops: {\n\t\tcolumns: Array\n\t},\n\tmethods: {\n\t\ttoggleColumn(col) {\n\t\t\tcol.visible = !col.visible;\n\t\t\tcol.original.toggle()\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t\n\t\t
    \n\t
    \n\t`\n}\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tgetLvs(antrag_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tcancel(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/saveLvs',\n\t\t\tparams: {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t}\n\t\t};\n\t}\n};","import BsAlert from '../../Bootstrap/Alert.js';\nimport {CoreFetchCmpt} from \"../../Fetch.js\";\n\nimport ApiStudstatusWiederholung from '../../../api/factory/studstatus/wiederholung.js';\n\nexport default {\n\tname: 'StudierendenantragLeitungLvPopup',\n\tcomponents: {\n\t\tCoreFetchCmpt\n\t},\n\tmixins: [\n\t\tBsAlert\n\t],\n\tprops: {\n\t\tfooter: Boolean,\n\t\tantragId: Number,\n\t\tcountRemaining: Number\n\t},\n\tdata(){\n\t\treturn {\n\t\t\tlvs: null,\n\t\t\trepeat_last: false,\n\t\t\trefresh: true,\n\t\t\tresult: false,\n\t\t\tcheck: false\n\t\t};\n\t},\n\tcomputed: {\n\t\tlvzugelassen() {\n\t\t\tlet zwischen = {};\n\t\t\tfor (let k in this.lvs){\n\t\t\t\tzwischen[k] = this.lvs[k] ? this.lvs[k].filter(lv=>lv.antrag_zugelassen) : null;\n\t\t\t}\n\t\t\treturn zwischen;\n\t\t},\n\t\tlvzugelassenLength() {\n\t\t\treturn Object.values(this.lvzugelassen).reduce((result, current) => result + (current ? current.length : 0), 0);\n\t\t}\n\t},\n\tmethods: {\n\t\tsetlvs(param) {\n\t\t\tthis.repeat_last = !!param.repeat_last;\n\t\t\tif (this.repeat_last) {\n\t\t\t\tdelete param.repeat_last;\n\t\t\t}\n\t\t\tthis.lvs = param;\n\t\t},\n\t\tloadlvs() {\n\t\t\tif (!this.antragId)\n\t\t\t\treturn new Promise(() => {});\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusWiederholung.getLvs(this.antragId));\n\t\t},\n\t\tsubmit(result) {\n\t\t\tthis.result = [result, this.check];\n\t\t\tthis.hide();\n\t\t}\n\t},\n\twatch: {\n\t\tantragId() {\n\t\t\tVue.nextTick(() => {\n\t\t\t\tthis.refresh = !this.refresh;\n\t\t\t});\n\t\t}\n\t},\n\tpopup(msg, options) {\n\t\tif (typeof options === 'string')\n\t\t\toptions = { default: options };\n\t\treturn BsAlert.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t`\n}\n","if (!primevue) {\n\tconsole.error('PrimeVue not loaded!');\n}\n\n// NOTE(chris): Click on clear button gives an error. This is a bug in primevue => fixed in current version\nTabulator.extendModule('filter', 'filters', {\n\t\"dates\": (headerValue, rowValue) => {\n\t\tif (!headerValue)\n\t\t\treturn true;\n\n\t\tlet rowDate = new Date(rowValue);\n\n\t\tif (Array.isArray(headerValue))\n\t\t{\n\t\t\tlet startDate = new Date(headerValue[0]);\n\t\t\tif (headerValue[1])\n\t\t\t{\n\t\t\t\tlet endDate = new Date(headerValue[1]);\n\n\t\t\t\tendDate.setHours(23, 59, 59, 999);\n\n\t\t\t\treturn rowDate >= startDate && rowDate <= endDate;\n\t\t\t}\n\n\t\t\treturn rowDate.toDateString() === startDate.toDateString();\n\t\t}\n\t\tlet singleDate = new Date(headerValue);\n\t\treturn rowDate.toDateString() === singleDate.toDateString();\n\t}\n});\n\nfunction dateFilter(cell, onRendered, success) {\n\tlet div = document.createElement('div');\n\n\tlet initialValue = null;\n\n\tlet val = cell.getValue();\n\n\tif (Array.isArray(val))\n\t{\n\t\tconst start = val[0] ? new Date(val[0]) : null;\n\t\tconst end = val[1] ? new Date(val[1]) : null;\n\t\tinitialValue = [start, end];\n\t}\n\n\tVue.createApp({\n\t\tcomponents: {\n\t\t\tPrimevueCalendar: primevue.calendar\n\t\t},\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tval: initialValue\n\t\t\t}\n\t\t},\n\t\twatch: {\n\t\t\tval(n) {\n\t\t\t\tsuccess(n);\n\t\t\t}\n\t\t},\n\t\ttemplate: `\n\t\t\t\t `\n\t}).use(primevue.config.default).mount(div);\n\n\treturn div;\n}\nexport { dateFilter };","import BsModal from '../../Bootstrap/Modal.js';\nimport {CoreFetchCmpt} from '../../Fetch.js';\nimport LvPopup from './LvPopup.js';\nimport { dateFilter } from '../../../tabulator/filters/Dates.js';\n\nimport ApiStudstatusLeitung from '../../../api/factory/studstatus/leitung.js';\n\nexport default {\n\tcomponents: {\n\t\tBsModal,\n\t\tCoreFetchCmpt,\n\t\tLvPopup\n\t},\n\tprops: {\n\t\tselectedData: Array,\n\t\tcolumnData: Array,\n\t\tstgL: Array,\n\t\tstgA: Array,\n\t\tfilter: String\n\t},\n\temits: [\n\t\t'update:columnData',\n\t\t'update:selectedData',\n\t\t'action:approve',\n\t\t'action:reject',\n\t\t'action:reopen',\n\t\t'action:object',\n\t\t'action:objectionDeny',\n\t\t'action:objectionApprove',\n\t\t'action:cancel',\n\t\t'action:pause',\n\t\t'action:unpause'\n\t],\n\tdata() {\n\t\treturn {\n\t\t\ttable: null,\n\t\t\tlastHistoryClickedId: null,\n\t\t\thistoryData: [],\n\t\t\tlvsData: null\n\t\t}\n\t},\n\tmethods: {\n\t\treload(stg) {\n\t\t\tthis.table.setData('/' + (stg || ''));\n\t\t},\n\t\tdownload() {\n\t\t\tthis.table.download(\"csv\", \"data.csv\", {\n\t\t\t\tdelimiter: ';',\n\t\t\t\tbom: true\n\t\t\t});\n\t\t},\n\t\tgetHistory() {\n\t\t\tif (this.lastHistoryClickedId === null)\n\t\t\t\treturn null;\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusLeitung.getHistory(this.lastHistoryClickedId))\n\t\t\t\t.then(res => {\n\t\t\t\t\tthis.historyData = res.data.sort((a, b) => a.insertamum > b.insertamum);\n\t\t\t\t})\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tgetHistoryStatus(data, index) {\n\t\t\tif (data.insertvon == 'Studienabbruch')\n\t\t\t\treturn this.$p.t('studierendenantrag/status_stop');\n\t\t\tif (index > 0 && this.historyData[index-1].studierendenantrag_statustyp_kurzbz == 'Pause') {\n\t\t\t\tif (index > 1 && this.historyData[index-2].studierendenantrag_statustyp_kurzbz != 'Pause') {\n\t\t\t\t\t// NOTE(chris): this is a AbmeldungStgl Pause right after a manual Pause\n\t\t\t\t\tif (data.studierendenantrag_statustyp_kurzbz == 'Pause')\n\t\t\t\t\t\treturn data.typ;\n\t\t\t\t\t// NOTE(chris): this is a manual Pause resumed\n\t\t\t\t\telse\n\t\t\t\t\t\treturn data.typ + ' (' + this.$p.t('studierendenantrag/status_unpaused') + ')';\n\t\t\t\t}\n\t\t\t\t// NOTE(chris): a series of pause stati always starts with a manual and alternate afterwards\n\t\t\t\tlet i = 2;\n\t\t\t\twhile (index-i > 0 && this.historyData[index-i].studierendenantrag_statustyp_kurzbz == 'Pause') i++;\n\t\t\t\tif (data.studierendenantrag_statustyp_kurzbz == 'Pause')\n\t\t\t\t\ti++;\n\t\t\t\treturn i%2\n\t\t\t\t\t? data.typ\n\t\t\t\t\t: data.typ + ' (' + this.$p.t('studierendenantrag/status_unpaused') + ')';\n\t\t\t}\n\t\t\treturn data.typ;\n\t\t},\n\t\tshowHistoryGrund(grund) {\n\t\t\tthis.$refs.modalGrund.$el.addEventListener(\n\t\t\t\t'hidden.bs.modal',\n\t\t\t\tthis.$refs.history.show,\n\t\t\t\t{\n\t\t\t\t\tonce: true\n\t\t\t\t}\n\t\t\t);\n\t\t\tthis.$refs.modalGrundPre.innerHTML = grund;\n\t\t},\n\t\tshowLVs(data) {\n\t\t\tthis.lvsData = data;\n\t\t\tthis.$refs.lvList.show();\n\t\t}\n\t},\n\tasync mounted() {\n\t\tawait this.$p.loadCategory(['lehre', 'studierendenantrag', 'person', 'global', 'ui']);\n\t\tfunction dateFormatter(cell)\n\t\t{\n\t\t\tlet val = cell.getValue();\n\t\t\tif (!val)\n\t\t\t\treturn ' ';\n\t\t\tlet date = new Date(val);\n\t\t\treturn date.toLocaleDateString();\n\t\t}\n\n\t\tthis.table = new Tabulator(this.$refs.table, {\n\t\t\tplaceholder:\"Keine zu bearbeitenden Datensätze\",\n\t\t\tmovableColumns: true,\n\t\t\theight: '65vh',\n\t\t\tlayout: \"fitDataFill\",\n\t\t\tajaxURL: '/' + (this.filter || ''),\n\t\t\tajaxRequestFunc: url => this.$api.call(ApiStudstatusLeitung.getAntraege(url)),\n\t\t\tajaxResponse: (url, params, response) => response.data,\n\t\t\tpersistence: { // NOTE(chris): do not store column titles\n\t\t\t\tsort: true, //persist column sorting\n\t\t\t\tfilter: true, //persist filters\n\t\t\t\theaderFilter: true, //persist header filters\n\t\t\t\tgroup: true, //persist row grouping\n\t\t\t\tpage: true, //persist page\n\t\t\t\tcolumns: [\"width\", \"visible\"], //persist columns\n\t\t\t},\n\t\t\tpersistenceID: 'studierendenantrag_leitung_2023-11-14',\n\t\t\tcolumns: [{\n\t\t\t\tformatter: 'rowSelection',\n\t\t\t\ttitleFormatter: 'rowSelection',\n\t\t\t\ttitleFormatterParams: {\n\t\t\t\t\trowRange: 'active'\n\t\t\t\t},\n\t\t\t\thozAlign: 'center',\n\t\t\t\theaderSort: false\n\t\t\t}, {\n\t\t\t\tfield: 'studierendenantrag_id',\n\t\t\t\ttitle: '#',\n\t\t\t\tsorter: 'number'\n\t\t\t}, {\n\t\t\t\tfield: 'bezeichnung',\n\t\t\t\ttitle: this.$p.t('lehre', 'studiengang'),\n\t\t\t\theaderFilter: 'list',\n\t\t\t\theaderFilterParams: {\n\t\t\t\t\tvaluesLookup: true,\n\t\t\t\t\tclearable: true,\n\t\t\t\t\tautocomplete: true,\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'orgform',\n\t\t\t\ttitle: this.$p.t('lehre', 'organisationsform'),\n\t\t\t\theaderFilter: 'list',\n\t\t\t\theaderFilterParams: {\n\t\t\t\t\tvaluesLookup: true,\n\t\t\t\t\tclearable: true,\n\t\t\t\t\tautocomplete: true,\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'typ',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_typ'),\n\t\t\t\theaderFilter: 'list',\n\t\t\t\theaderFilterParams: {\n\t\t\t\t\tvaluesLookup: true,\n\t\t\t\t\tclearable: true,\n\t\t\t\t\tautocomplete: true,\n\t\t\t\t},\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\treturn this.$p.t('studierendenantrag','antrag_typ_' + cell.getValue());\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'statustyp',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_status'),\n\t\t\t\theaderFilter: 'list',\n\t\t\t\theaderFilterParams: {\n\t\t\t\t\tvaluesLookup: true,\n\t\t\t\t\tclearable: true,\n\t\t\t\t\tautocomplete: true,\n\t\t\t\t},\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\tlet data = cell.getData();\n\t\t\t\t\tlet status = cell.getValue();\n\t\t\t\t\tif (data.status_insertvon == 'Studienabbruch' && data.status == 'Pause')\n\t\t\t\t\t\tstatus = this.$p.t('studierendenantrag/status_stop');\n\t\t\t\t\tlet link = document.createElement('a');\n\t\t\t\t\tlink.href = \"#\";\n\t\t\t\t\tlink.innerHTML = status;\n\t\t\t\t\tlink.addEventListener('click', e => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tthis.lastHistoryClickedId = cell.getData().studierendenantrag_id;\n\t\t\t\t\t\tthis.$refs.historyLoader.fetchData();\n\t\t\t\t\t\tthis.$refs.history.show();\n\t\t\t\t\t});\n\n\t\t\t\t\treturn link;\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'matrikelnr',\n\t\t\t\ttitle: this.$p.t('person', 'personenkennzeichen'),\n\t\t\t\theaderFilter: 'input'\n\t\t\t}, {\n\t\t\t\tfield: 'prestudent_id',\n\t\t\t\ttitle: this.$p.t('lehre', 'prestudent'),\n\t\t\t\theaderFilter: 'input'\n\t\t\t}, {\n\t\t\t\tfield: 'name',\n\t\t\t\ttitle: this.$p.t('global', 'name'),\n\t\t\t\tmutator: (value, data) => (data.nachname + ' ' + data.vorname).replace(/^\\s*(.*)\\s*$/, '$1'),\n\t\t\t\theaderFilter: 'input'\n\t\t\t}, {\n\t\t\t\tfield: 'datum',\n\t\t\t\ttitle: this.$p.t('global', 'datum'),\n\t\t\t\tformatter: dateFormatter,\n\t\t\t\theaderFilterFunc: 'dates',\n\t\t\t\theaderFilter: dateFilter\n\t\t\t}, {\n\t\t\t\tfield: 'datum_wiedereinstieg',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_datum_wiedereinstieg'),\n\t\t\t\tformatter: dateFormatter,\n\t\t\t\theaderFilterFunc: 'dates',\n\t\t\t\theaderFilter: dateFilter\n\t\t\t}, {\n\t\t\t\tfield: 'grund',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_grund'),\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\tlet link = document.createElement('a'),\n\t\t\t\t\t\tval = cell.getValue();\n\t\t\t\t\tlink.href = \"#modal-grund\";\n\t\t\t\t\tlink.setAttribute('data-bs-toggle', 'modal');\n\t\t\t\t\tlink.innerHTML = this.$p.t('studierendenantrag', 'antrag_grund');\n\t\t\t\t\tlink.addEventListener('click', () => {\n\t\t\t\t\t\tthis.$refs.modalGrundPre.innerHTML = val;\n\t\t\t\t\t});\n\n\t\t\t\t\treturn val ? link : ' ';\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'dms_id',\n\t\t\t\ttitle: this.$p.t('studierendenantrag', 'antrag_dateianhaenge'),\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\tlet val = cell.getValue();\n\t\t\t\t\tif (!val)\n\t\t\t\t\t\treturn ' ';\n\t\t\t\t\tlet link = document.createElement('a');\n\t\t\t\t\tlink.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\t\t\t'/lehre/Antrag/Attachment/show/' +\n\t\t\t\t\t\tval;\n\t\t\t\t\tlink.setAttribute('target', '_blank');\n\t\t\t\t\tlink.innerHTML = '';\n\t\t\t\t\tlink.append(this.$p.t('studierendenantrag/antrag_anhang'));\n\t\t\t\t\treturn link;\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\tfield: 'actions',\n\t\t\t\tfrozen: true,\n\t\t\t\ttitle: this.$p.t('ui', 'aktion'),\n\t\t\t\theaderFilter: false,\n\t\t\t\theaderSort: false,\t\t\t\t\n\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\tlet container = document.createElement('div'),\n\t\t\t\t\t\tdata = cell.getData();\n\n\t\t\t\t\tcontainer.className = \"d-flex gap-2\";\n\n\t\t\t\t\tlet allowed_status_for_download = [];\n\t\t\t\t\tswitch (data.typ) {\n\t\t\t\t\t\tcase 'Abmeldung':\n\t\t\t\t\t\t\tallowed_status_for_download = ['Genehmigt'];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'AbmeldungStgl':\n\t\t\t\t\t\t\tallowed_status_for_download = ['EinspruchAbgelehnt', 'Abgemeldet'];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Unterbrechung':\n\t\t\t\t\t\t\tallowed_status_for_download = ['Genehmigt', 'EmailVersandt'];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Wiederholung':\n\t\t\t\t\t\t\tallowed_status_for_download = ['Abgemeldet'];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (allowed_status_for_download.includes(data.status)) {\n\t\t\t\t\t\t// NOTE(chris): Download PDF\n\t\t\t\t\t\tlet button = document.createElement('a');\n\t\t\t\t\t\t// NOTE(chris): phrasen in attribues don't work if they are not preloaded\n\t\t\t\t\t\t// it work in this case because the category has already been loaded before\n\t\t\t\t\t\tbutton.innerHTML = '';\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.target = \"_blank\";\n\t\t\t\t\t\tbutton.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t\t\t\t'content/pdfExport.php?xml=Antrag' + data.typ + '.xml.php&xsl=Antrag' + data.typ + '&id=' + data.studierendenantrag_id + '&output=pdf';\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (data.typ == 'Wiederholung' && (data.status == 'ErsteAufforderungVersandt' || data.status == 'ZweiteAufforderungVersandt')) {\n\t\t\t\t\t\t// NOTE(chris): Pause\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tlet icon = document.createElement('i');\n\t\t\t\t\t\tlet span = document.createElement('span');\n\n\t\t\t\t\t\ticon.className = \"fa-solid fa-pause\";\n\t\t\t\t\t\ticon.setAttribute('aria-hidden', true);\n\t\t\t\t\t\ticon.setAttribute('title', this.$p.t('studierendenantrag', 'btn_pause'));\n\n\t\t\t\t\t\tspan.className = \"fa-sr-only\";\n\t\t\t\t\t\tspan.append(this.$p.t('studierendenantrag', 'btn_pause'));\n\n\t\t\t\t\t\tbutton.append(icon);\n\t\t\t\t\t\tbutton.append(span);\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:pause', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet canUnpause = data.status == 'Pause' && !['AbmeldungStgl', 'Studienabbruch'].includes(data.status_insertvon);\n\t\t\t\t\tif (!canUnpause && data.status == 'Pause' && data.status_insertvon == 'AbmeldungStgl') {\n\t\t\t\t\t\tcanUnpause = cell.getTable().getData().filter(row => \n\t\t\t\t\t\t\trow.prestudent_id == data.prestudent_id \n\t\t\t\t\t\t\t&& row.typ == 'AbmeldungStgl' \n\t\t\t\t\t\t\t&& row.status == 'Zurueckgezogen' \n\t\t\t\t\t\t\t&& row.status_insertamum == data.status_insertamum\n\t\t\t\t\t\t).length;\n\t\t\t\t\t}\n\t\t\t\t\tif (canUnpause) {\n\t\t\t\t\t\t// NOTE(chris): Unpause\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tlet icon = document.createElement('i');\n\t\t\t\t\t\tlet span = document.createElement('span');\n\n\t\t\t\t\t\ticon.className = \"fa-solid fa-play\";\n\t\t\t\t\t\ticon.setAttribute('aria-hidden', true);\n\t\t\t\t\t\ticon.setAttribute('title', this.$p.t('studierendenantrag', 'btn_unpause'));\n\n\t\t\t\t\t\tspan.className = \"fa-sr-only\";\n\t\t\t\t\t\tspan.append(this.$p.t('studierendenantrag', 'btn_unpause'));\n\n\t\t\t\t\t\tbutton.append(icon);\n\t\t\t\t\t\tbutton.append(span);\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:unpause', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.typ == 'AbmeldungStgl' && data.status == 'Genehmigt') {\n\t\t\t\t\t\t// NOTE(chris): Object\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_object'));\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:object', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.typ == 'AbmeldungStgl' && data.status == 'Beeinsprucht') {\n\t\t\t\t\t\t// NOTE(chris): Deny Objection\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_objection_deny'));\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:objectionDeny', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\n\t\t\t\t\t\t// NOTE(chris): Approve Objection\n\t\t\t\t\t\tbutton = document.createElement('button');\n\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_objection_approve'));\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:objectionApprove', [cell.getData()]));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.stgA.includes(data.studiengang_kz)) {\n\t\t\t\t\t\t// NOTE(chris): Reopen\n\t\t\t\t\t\tif (data.typ == 'Wiederholung' && data.status == 'Verzichtet') {\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_reopen'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:reopen', [cell.getData()]));\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// NOTE(chris): Lv Zuweisen\n\t\t\t\t\t\tif (data.typ == 'Wiederholung' && (data.status == 'Erstellt' || data.status == 'Lvszugewiesen')) {\n\t\t\t\t\t\t\tlet button = document.createElement('a');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_lvzuweisen'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.href = FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t\t\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\t\t\t\t\t'/lehre/Antrag/Wiederholung/assistenz/' +\n\t\t\t\t\t\t\t\tcell.getData().studierendenantrag_id + '/frame';\n\t\t\t\t\t\t\tbutton.onclick = e => {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\tBsModal.popup(Vue.h('iframe', {\n\t\t\t\t\t\t\t\t\tsrc: button.href,\n\t\t\t\t\t\t\t\t\tclass: 'position-absolute top-0 start-0 w-100 h-100'\n\t\t\t\t\t\t\t\t}), {\n\t\t\t\t\t\t\t\t\tdialogClass: 'modal-fullscreen'\n\t\t\t\t\t\t\t\t}, this.$p.t('studierendenantrag', 'title_lvzuweisen', cell.getData())).then(() => {\n\t\t\t\t\t\t\t\t\tthis.$emit('reload');\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// NOTE(chris): Cancel\n\t\t\t\t\t\tif (data.typ == 'AbmeldungStgl' && (data.status == 'Erstellt' || data.status == 'Genehmigt' )) {\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_cancel'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.addEventListener('click',() => this.$emit('action:cancel', [cell.getData()]));\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.stgL.includes(data.studiengang_kz)) {\n\t\t\t\t\t\t// NOTE(chris): Approve\n\t\t\t\t\t\tif ((data.typ == 'Wiederholung' && data.status == 'Lvszugewiesen') || (data.typ != 'Wiederholung' && data.status == 'Erstellt')) {\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_approve'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:approve', [cell.getData()]));\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// NOTE(chris): Reject (Unterbrechung braucht grund)\n\t\t\t\t\t\tif (data.status == 'Erstellt' && data.typ == 'Unterbrechung') {\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_reject'));\n\t\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\t\tbutton.addEventListener('click', () => this.$emit('action:reject', [cell.getData()]));\n\t\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// NOTE(chris): Show LVs\n\t\t\t\t\tif (data.typ == 'Wiederholung' && (data.status == 'Lvszugewiesen' || data.status == 'Genehmigt')) {\n\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\tbutton.append(this.$p.t('studierendenantrag', 'btn_show_lvs'));\n\t\t\t\t\t\tbutton.className = \"btn btn-outline-secondary\";\n\t\t\t\t\t\tbutton.addEventListener('click', () => this.showLVs(cell.getData()));\n\t\t\t\t\t\tcontainer.append(button);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (container.innerHTML == '')\n\t\t\t\t\t\tcontainer.innerHTML = ' ';\n\n\t\t\t\t\treturn container;\n\t\t\t\t}\n\t\t\t}]\n\t\t});\n\t\tthis.table.on(\"tableBuilt\", () => {\n\t\t\tlet columns = this.table.getColumns();\n\t\t\tlet columnData = [];\n\t\t\tfor (let col of columns) {\n\t\t\t\tlet def = col.getDefinition();\n\t\t\t\tif (def.title && !def.frozen) {\n\t\t\t\t\tcolumnData.push({\n\t\t\t\t\t\ttitle: def.title,\n\t\t\t\t\t\tvisible: col.isVisible(),\n\t\t\t\t\t\toriginal: col\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:columnData', columnData);\n\t\t});\n\t\tthis.table.on(\"rowSelectionChanged\", data => {\n\t\t\tthis.$emit('update:selectedData', data);\n\t\t});\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    {{(new Date(status.insertamum)).toLocaleString()}}{{status.insertvon}}{{getHistoryStatus(status, index)}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{{$p.t('studierendenantrag', 'antrag_grund')}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\t\n\t\t\t{{$p.t('studierendenantrag', 'title_show_lvs', lvsData ? lvsData : {name: ''}) }}\n\t\t\n\t
    \n\t`\n}","import BsAlert from '../../Bootstrap/Alert.js';\n\nexport default {\n\tname: 'StudierendenantragLeitungGrundPopup',\n\tmixins: [\n\t\tBsAlert,\n\t],\n\tprops: {\n\t\tplaceholder: String,\n\t\tdefault: String,\n\t\tcountRemaining: Number,\n\t\toptional: Boolean\n\t},\n\tdata: () => ({\n\t\tvalue: '',\n\t\tresult: false,\n\t\tcheck: false,\n\t\tisInvalid: false\n\t}),\n\tmethods: {\n\t\tsubmit() {\n\t\t\tif (!this.value && !this.optional) {\n\t\t\t\tthis.isInvalid = true;\n\t\t\t} else {\n\t\t\t\tthis.result = [this.value, this.check];\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t}\n\t},\n\tcreated() {\n\t\tif (this.default)\n\t\t\tthis.value = this.default;\n\t},\n\tpopup(msg, options) {\n\t\tif (typeof options === 'string')\n\t\t\toptions = { default: options };\n\t\treturn BsAlert.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(antrag_id, prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(studiensemester, prestudent_id, grund) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/abmeldung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}\n\t\t};\n\t},\n\tcancel(antrag_id) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\tparams: { antrag_id }\n\t\t};\n\t}\n};","import LeitungHeader from './Leitung/Header.js';\nimport LeitungActions from './Leitung/Actions.js';\nimport LeitungTable from './Leitung/Table.js';\nimport GrundPopup from './Leitung/GrundPopup.js';\nimport LvPopup from './Leitung/LvPopup.js';\nimport BsAlert from '../Bootstrap/Alert.js';\nimport FhcLoader from '../Loader.js';\n\nimport ApiStudstatusLeitung from '../../api/factory/studstatus/leitung.js';\nimport ApiStudstatusAbmeldung from '../../api/factory/studstatus/abmeldung.js';\n\nexport default {\n\tcomponents: {\n\t\tLeitungHeader,\n\t\tLeitungTable,\n\t\tLeitungActions,\n\t\tFhcLoader\n\t},\n\tprops: {\n\t\tstgL: Array,\n\t\tstgA: Array\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tfilter: undefined,\n\t\t\tselectedData: [],\n\t\t\tcolumns: [],\n\t\t\tstgs: []\n\t\t}\n\t},\n\tcomputed: {\n\t\tstgkzL() {\n\t\t\tif (!this.stgL)\n\t\t\t\treturn [];\n\t\t\treturn this.stgL.map(stg => parseInt(stg));\n\t\t},\n\t\tstgkzA() {\n\t\t\tif (!this.stgA)\n\t\t\t\treturn [];\n\t\t\treturn this.stgA.map(stg => parseInt(stg));\n\t\t}\n\t},\n\tmethods: {\n\t\tloadFilter() {\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStudstatusLeitung.getStgs())\n\t\t\t\t.then(result => this.stgs = result.data)\n\t\t\t\t.catch(this.$fhcAlert.handleSystemError);\n\t\t},\n\t\tchangeFilter(filter) {\n\t\t\tthis.filter = filter || undefined;\n\t\t\tthis.reload();\n\t\t},\n\t\treload() {\n\t\t\tif (this.$refs.table)\n\t\t\t\tthis.$refs.table.reload(this.filter);\n\t\t\tthis.loadFilter();\n\t\t},\n\t\tdownload() {\n\t\t\tthis.$refs.table.download();\n\t\t},\n\t\tactionApprove(evt, oks) {\n\t\t\tvar antraege = evt || [...this.selectedData];\n\n\t\t\tif (!oks) {\n\t\t\t\toks = [];\n\t\t\t}\n\t\t\tvar currentAntrag = antraege.shift();\n\t\t\tif (currentAntrag) {\n\t\t\t\tif (currentAntrag.typ != 'Wiederholung')\n\t\t\t\t{\n\t\t\t\t\toks.push(currentAntrag);\n\t\t\t\t\tthis.actionApprove(antraege, oks);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tlet countAntrage = 0;\n\t\t\t\t\tLvPopup\n\t\t\t\t\t\t.popup(this.$p.t('studierendenantrag','title_show_lvs', currentAntrag), {\n\t\t\t\t\t\t\tantragId: currentAntrag.studierendenantrag_id,\n\t\t\t\t\t\t\tfooter: true,\n\t\t\t\t\t\t\tdialogClass: 'modal-lg',\n\t\t\t\t\t\t\tcountRemaining : antraege.filter(antrag => antrag.typ == 'Wiederholung').length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tif (result[0]) {\n\t\t\t\t\t\t\t\toks.push(currentAntrag);\n\t\t\t\t\t\t\t\tif (result[1])\n\t\t\t\t\t\t\t\t\twhile (antraege.length)\n\t\t\t\t\t\t\t\t\t\toks.push(antraege.pop());\n\t\t\t\t\t\t\t} else if (result[1]) {\n\t\t\t\t\t\t\t\twhile (antraege.length) {\n\t\t\t\t\t\t\t\t\tcurrentAntrag = antraege.pop();\n\t\t\t\t\t\t\t\t\tif (currentAntrag.typ != 'Wiederholung')\n\t\t\t\t\t\t\t\t\t\toks.push(currentAntrag);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.actionApprove(antraege, oks);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.$refs.loader.show();\n\t\t\t\tthis\n\t\t\t\t\t._singleOrMultiApiCall(oks, ApiStudstatusLeitung.approve)\n\t\t\t\t\t.then(this.showResults);\n\t\t\t}\n\t\t},\n\t\tactionReject(evt, gruende) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tif (!gruende)\n\t\t\t\tgruende = [];\n\t\t\tvar currentAntrag = antraege.pop();\n\t\t\tif (currentAntrag) {\n\t\t\t\tGrundPopup\n\t\t\t\t\t.popup(this.$p.t('studierendenantrag', 'title_grund', {id: currentAntrag.studierendenantrag_id}), {\n\t\t\t\t\t\tcountRemaining: antraege.length\n\t\t\t\t\t})\n\t\t\t\t\t.then(result => {\n\t\t\t\t\t\tcurrentAntrag.grund = result[0];\n\t\t\t\t\t\tgruende.push(currentAntrag);\n\t\t\t\t\t\tif (result[1])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twhile (antraege.length)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tcurrentAntrag = antraege.pop();\n\t\t\t\t\t\t\t\tcurrentAntrag.grund = result[0];\n\t\t\t\t\t\t\t\tgruende.push(currentAntrag);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.actionReject(antraege, gruende);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {});\n\t\t\t} else {\n\t\t\t\tthis.$refs.loader.show();\n\n\t\t\t\tthis\n\t\t\t\t\t._singleOrMultiApiCall(gruende, ApiStudstatusLeitung.reject)\n\t\t\t\t\t.then(this.showResults);\n\t\t\t}\n\t\t},\n\t\tactionReopen(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.reopen)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionPause(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.pause)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionUnpause(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.unpause)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionObject(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.object)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionoObjectionDeny(evt, gruende) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tif (!gruende)\n\t\t\t\tgruende = [];\n\t\t\tvar currentAntrag = antraege.pop();\n\t\t\tif (currentAntrag) {\n\t\t\t\tGrundPopup\n\t\t\t\t\t.popup(this.$p.t('studierendenantrag', 'title_grund', {id: currentAntrag.studierendenantrag_id}), {\n\t\t\t\t\t\tcountRemaining : antraege.length,\n\t\t\t\t\t\toptional: true\n\t\t\t\t\t})\n\t\t\t\t\t.then(result => {\n\t\t\t\t\t\tcurrentAntrag.grund = result[0];\n\t\t\t\t\t\tgruende.push(currentAntrag);\n\t\t\t\t\t\tif (result[1]) {\n\t\t\t\t\t\t\twhile (antraege.length) {\n\t\t\t\t\t\t\t\tcurrentAntrag = antraege.pop();\n\t\t\t\t\t\t\t\tcurrentAntrag.grund = result[0];\n\t\t\t\t\t\t\t\tgruende.push(currentAntrag);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.actionoObjectionDeny(antraege, gruende);\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => {});\n\t\t\t} else {\n\t\t\t\tthis.$refs.loader.show();\n\t\t\t\tthis\n\t\t\t\t\t._singleOrMultiApiCall(gruende, ApiStudstatusLeitung.denyObjection)\n\t\t\t\t\t.then(this.showResults);\n\t\t\t}\n\t\t},\n\t\tactionObjectionApprove(evt, gruende) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tthis\n\t\t\t\t._singleOrMultiApiCall(antraege, ApiStudstatusLeitung.approveObjection)\n\t\t\t\t.then(this.showResults);\n\t\t},\n\t\tactionCancel(evt) {\n\t\t\tvar antraege = evt || this.selectedData;\n\t\t\tthis.$refs.loader.show();\n\t\t\tif (Array.isArray(antraege)) {\n\t\t\t\tPromise\n\t\t\t\t\t.allSettled(\n\t\t\t\t\t\tantraege.map(antrag => this.$api.call(\n\t\t\t\t\t\t\tApiStudstatusAbmeldung.cancel(antrag.studierendenantrag_id),\n\t\t\t\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t\t\t\t))\n\t\t\t\t\t)\n\t\t\t\t\t.then(this.showResults);\n\t\t\t} else {\n\t\t\t\tthis.$api\n\t\t\t\t\t.call(ApiStudstatusAbmeldung.cancel(antraege))\n\t\t\t\t\t.then(this.showResults);\n\t\t\t}\n\t\t},\n\t\tshowResults(results) {\n\t\t\tlet fulfilled = results.filter(res => res.status == 'fulfilled');\n\t\t\tthis.$refs.loader.hide();\n\t\t\t//fulfilled.forEach(a => this.$fhcAlert.alertDefault('success', '#' + a.value.data, 'Approved, ...'));\n\t\t\tif (fulfilled.length)\n\t\t\t\tthis.reload();\n\t\t},\n\t\t_singleOrMultiApiCall(antraege, endpoint) {\n\t\t\tif (Array.isArray(antraege)) {\n\t\t\t\treturn Promise\n\t\t\t\t\t.allSettled(antraege.map(antrag => this.$api.call(\n\t\t\t\t\t\tendpoint(antrag),\n\t\t\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t\t\t)));\n\t\t\t}\n\t\t\treturn this.$api.call(endpoint(antraege));\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.loadFilter();\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t
    \n\t`\n}\n","import BsModal from './Bootstrap/Modal.js';\n\nexport default {\n\tcomponents: {\n\t\tBsModal\n\t},\n\tprops: {\n\t\ttimeout: {\n\t\t\ttype: Number,\n\t\t\tdefault: 300\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tt: null,\n\t\t\tstate: 0\n\t\t}\n\t},\n\tmethods: {\n\t\tshow() {\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (this.timeout) {\n\t\t\t\t\t\tthis.state = 1;\n\t\t\t\t\t\tthis.t = window.setTimeout(() => this.$refs.modal.show(), this.timeout);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else\n\t\t\t\t\t\treturn this.$refs.modal.show();\n\t\t\t\tcase 4:\n\t\t\t\t\treturn window.setTimeout(() => this.show(), 1);\n\t\t\t}\n\t\t},\n\t\thide() {\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 1:\n\t\t\t\t\treturn window.clearTimeout(this.t);\n\t\t\t\tcase 2:\n\t\t\t\t\treturn window.setTimeout(() => this.hide(), 1);\n\t\t\t\tcase 3:\n\t\t\t\t\tthis.$refs.modal.hide();\n\t\t\t}\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.$refs.modal.$refs.modal.addEventListener('show.bs.modal', () => {\n\t\t\tthis.state = 2;\n\t\t});\n\t\tthis.$refs.modal.$refs.modal.addEventListener('shown.bs.modal', () => {\n\t\t\tthis.state = 3;\n\t\t});\n\t\tthis.$refs.modal.$refs.modal.addEventListener('hide.bs.modal', () => {\n\t\t\tthis.state = 4;\n\t\t});\n\t\tthis.$refs.modal.$refs.modal.addEventListener('hidden.bs.modal', () => {\n\t\t\tthis.state = 0;\n\t\t});\n\t},\n\ttemplate: `\n\t\n\t\tLoading...\n\t`\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\t\n\t\t\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","import StudierendenantragLeitung from '../../../components/Studierendenantrag/Leitung.js';\nimport PluginsPhrasen from '../../../plugins/Phrasen.js';\n\nconst app = Vue.createApp({\n\tname: 'LeitungApp',\n\tcomponents: {\n\t\tStudierendenantragLeitung\n\t}\n});\napp\n\t.use(PluginsPhrasen)\n\t.use(primevue.config.default,{zIndex: {overlay: 9999}})\n\t.mount('#wrapper');"],"names":["LOCAL_STORAGE_ID","LeitungHeader","props","stgs","Array","emits","data","todo_value","stg_value","computed","value","a","this","push","join","watch","n","window","localStorage","setItem","$emit","created","values","savedPath","getItem","split","length","unshift","pop","template","BsModal","name","modal","fullscreen","backdrop","type","Boolean","String","default","validator","includes","focus","keyboard","noCloseBtn","dialogClass","Object","headerClass","bodyClass","footerClass","allowFullscreenExpand","methods","dispose","handleUpdate","hide","show","relatedTarget","toggle","toggleFullscreen","mounted","$refs","bootstrap","Modal","popup","body","options","title","footer","slots","undefined","includedPrimevue","primevue","Promise","resolve","reject","instance","Vue","createApp","setup","h","class","ref","unmount","beforeUnmount","result","unmounted","wrapper","parentElement","removeChild","document","createElement","use","config","zIndex","overlay","then","Phrasen","mount","appendChild","BsAlert","components","mixins","onHideBsModal","Function","onHiddenBsModal","onHidePreventedBsModal","onShowBsModal","onShownBsModal","modalContainer","msg","bind","ApiStudstatusLeitung","getStgs","method","url","getAntraege","params","getHistory","antrag_id","getPrestudents","query","approve","antrag","reopen","pause","unpause","object","approveObjection","denyObjection","LeitungActions","ActionsNew","AutoComplete","autocomplete","student","abortController","newUrl","FHC_JS_DATA_STORAGE_OBJECT","app_root","ci_router","prestudent_id","openForm","getInstance","src","$p","t","loadData","evt","abort","AbortController","$api","call","signal","timeout","catch","$fhcAlert","handleSystemError","ActionsColumns","columns","toggleColumn","col","visible","original","selectedData","stgL","stgA","currentStudent","selectedCanBeApproved","every","val","studiengang_kz","filter","row","typ","status","selectedCanBeRejected","selectedCanBeReopened","hideModal","CoreFetchCmpt","refresh","apiFunction","required","apiFunctionParameters","newValue","oldValue","fetchData","loading","error","errorMessage","apiFunctionResult","successHandler","errorHandler","finally","finallyHandler","setError","response","retval","message","ApiStudstatusWiederholung","getDetails","getLvs","create","studiensemester","cancel","saveLvs","forbiddenLvs","mandatoryLvs","LvPopup","antragId","Number","countRemaining","lvs","repeat_last","check","lvzugelassen","zwischen","k","lv","antrag_zugelassen","lvzugelassenLength","reduce","current","setlvs","param","loadlvs","submit","nextTick","dateFilter","cell","onRendered","success","div","initialValue","getValue","isArray","start","Date","end","PrimevueCalendar","calendar","console","Tabulator","extendModule","dates","headerValue","rowValue","rowDate","startDate","endDate","setHours","toDateString","singleDate","LeitungTable","columnData","table","lastHistoryClickedId","historyData","lvsData","reload","stg","setData","download","delimiter","bom","res","sort","b","insertamum","getHistoryStatus","index","insertvon","studierendenantrag_statustyp_kurzbz","i","showHistoryGrund","grund","modalGrund","$el","addEventListener","history","once","modalGrundPre","innerHTML","showLVs","lvList","dateFormatter","toLocaleDateString","loadCategory","placeholder","movableColumns","height","layout","ajaxURL","ajaxRequestFunc","ajaxResponse","persistence","headerFilter","group","page","persistenceID","formatter","titleFormatter","titleFormatterParams","rowRange","hozAlign","headerSort","field","sorter","headerFilterParams","valuesLookup","clearable","formatterParams","getData","status_insertvon","link","href","e","preventDefault","studierendenantrag_id","historyLoader","mutator","nachname","vorname","replace","headerFilterFunc","setAttribute","append","frozen","container","className","allowed_status_for_download","button","target","icon","span","canUnpause","getTable","status_insertamum","onclick","on","getColumns","def","getDefinition","isVisible","GrundPopup","optional","isInvalid","ApiStudstatusAbmeldung","StudierendenantragLeitung","FhcLoader","state","setTimeout","clearTimeout","stgkzL","map","parseInt","stgkzA","loadFilter","changeFilter","actionApprove","oks","antraege","currentAntrag","shift","loader","_singleOrMultiApiCall","showResults","actionReject","gruende","id","actionReopen","actionPause","actionUnpause","actionObject","actionoObjectionDeny","actionObjectionApprove","actionCancel","allSettled","errorHeader","results","fulfilled","endpoint","search","searchsettings","$fhcApi","post","searchAdvanced","searchdummy","phrasen$1","category","get","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","getHeader","navigation_page","getMenu","filter$1","saveCustomFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","studstatus","abmeldung","stdsem","errorHandling","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","leitung","profil","getView","uid","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","getProfilRequestFiles","requestID","selectProfilRequest","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","set","students","studiensemester_kurzbz","encodeURIComponent","getUri","prestudent","person","person_id","relative_path","getStg","setStg","konto","tabulatorConfig","self","ajaxParams","modelValue","only_open","studiengang_kz_intern","stg_kz","checkDoubles","form","confirmErrorHandler","insert","counter","edit","delete","buchungsnr","getBuchungstypen","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","save","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","semester","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","lehrveranstaltung_id","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","update","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","formData","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","event","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","tag","ampeln","open","all","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","globalProperties","factory","warn","addEndpoints","_get_config","uri","TypeError","clearValidation","setFeedback","_clean_return_value","meta","fhcApiAxios","baseURL","interceptors","request","FormData","item","FileList","File","newData","entries","nd","key","file","jsondata","forEach","JSON","stringify","errors","err","_defaultErrorHandlers","code","handled","alertDefault","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","severity","alertSystemError","exception","db","heading","sql","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","keys","provide","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","hasOwnProperty","isError","hasData","trim","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","prop","helperAppContainer","helperApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","called_path","called_method","detail","openMessagecard","Collapse","getOrCreateInstance","getAttribute","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","FhcAlert","FhcPhrasen","alertSuccess","toast","add","summary","life","alertInfo","alertWarning","alert","confirmDelete","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","html","alertMultiple","messageArray","toLowerCase","errMsg","toUpperCase","stack","handleSystemMessage","resetFormValidation","Event","querySelectorAll","el","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","input","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","fail","combine","handler","async","_format_toast","_default","msgs","indexOf","n_errors","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","remaining","configoverwrite","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","user_locale","server_languages","find","LC_Time","catArray","phrase","text","obj","elem","extractCategory","t_ref","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang"],"mappings":"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"} \ No newline at end of file diff --git a/public/dist/js/apps/lehre/Antrag/Lvzuweisung.js b/public/dist/js/apps/lehre/Antrag/Lvzuweisung.js index a414f7649..ecb4b32ab 100644 --- a/public/dist/js/apps/lehre/Antrag/Lvzuweisung.js +++ b/public/dist/js/apps/lehre/Antrag/Lvzuweisung.js @@ -1,4 +1,4 @@ -import e from"../../../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js?2025121701";import t from"../../../../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js?2025121701";import r from"../../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js?2025121701";import n from"../../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js?2025121701";var i={getDetails:e=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+e}),getLvs:e=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getLvs/"+e}),create:(e,t)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/createAntrag",params:{prestudent_id:e,studiensemester:t}}),cancel:(e,t)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/cancelAntrag",params:{prestudent_id:e,studiensemester:t}}),saveLvs:(e,t)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/saveLvs",params:{forbiddenLvs:e,mandatoryLvs:t}})},s={components:{StudierendenantragStatus:{props:{msg:String,severity:String},computed:{severityClass(){return"alert-"+this.severity}},template:'\n\t\n\t'}},props:{antragId:Number,initialStatusCode:String,initialStatusMsg:String,disabled:Boolean},data:()=>({lvs:[],isloading:!1,statusCode:"",statusMsg:""}),computed:{lvs1(){return this.lvs[Object.keys(this.lvs).filter(e=>1==e.substr(0,1))]||[]},lvs2(){return this.lvs[Object.keys(this.lvs).filter(e=>2==e.substr(0,1))]||[]},lvs1sem(){return(Object.keys(this.lvs).filter(e=>1==e.substr(0,1)).pop()||"1").substr(1)},lvs2sem(){return(Object.keys(this.lvs).filter(e=>2==e.substr(0,1)).pop()||"2").substr(1)},statusSeverity(){return 0===this.statusCode?"danger":"info"}},methods:{save(){this.isloading=!0;const e=this.lvs1.filter(e=>(e.antrag_zugelassen||this.lvs.repeat_last)&&!e._children).map(e=>({studierendenantrag_id:this.antragId,lehrveranstaltung_id:e.lehrveranstaltung_id,zugelassen:this.lvs.repeat_last?e.antrag_zugelassen?1:2:0,anmerkung:e.antrag_anmerkung||"",studiensemester_kurzbz:this.lvs1sem})),t=this.lvs2.filter(e=>!e._children).map(e=>({studierendenantrag_id:this.antragId,lehrveranstaltung_id:e.lehrveranstaltung_id,zugelassen:e.antrag_zugelassen?1:2,anmerkung:e.antrag_anmerkung||"",studiensemester_kurzbz:this.lvs2sem}));this.$api.call(i.saveLvs(e,t)).then(e=>{this.$fhcAlert.alertSuccess("Speichern erfolgreich"),this.statusCode=e.data[0].studierendenantrag_statustyp_kurzbz,this.statusMsg=e.data[0].typ,this.isloading=!1}).catch(e=>{this.statusCode=0,this.statusMsg="Error",this.isloading=!1})}},created(){this.statusCode=this.initialStatusCode,this.statusMsg=this.initialStatusMsg},mounted(){this.$p.loadCategory(["ui","lehre","studierendenantrag","global"]).then(()=>this.$api.call(i.getLvs(this.antragId))).then(e=>{let t={};for(var r in e.data){if("repeat_last"===r)continue;if(null===e.data[r]){const e=document.createElement("div");e.innerHTML=this.$p.t("studierendenantrag","error_stg_last_semester"),e.className="alert alert-warning",e.role="alert",this.$refs["lvtable"+r.substr(0,1)].append(e);continue}let i=e.data[r].reduce((e,t)=>(e[t.studienplan_lehrveranstaltung_id]=t,e),{});for(var n of Object.values(i))n.studienplan_lehrveranstaltung_id_parent&&(i[n.studienplan_lehrveranstaltung_id_parent]?(i[n.studienplan_lehrveranstaltung_id_parent]._children||(i[n.studienplan_lehrveranstaltung_id_parent]._children=[]),i[n.studienplan_lehrveranstaltung_id_parent]._children.push(n)):console.error("parent not available"));t[r]=Object.values(i).filter(e=>!e.studienplan_lehrveranstaltung_id_parent);let s=t[r],a=r.substr(0,1);const o={data:s,dataTree:!0,dataTreeStartExpanded:!0,dataTreeChildIndent:15,layout:"fitDataStretch",columns:[{title:this.$p.t("ui","bezeichnung"),field:"bezeichnung"},{title:this.$p.t("lehre","lehrform"),field:"lehrform_kurzbz"},{title:"ECTS",field:"ects"},{title:this.$p.t("lehre","note"),field:"note",formatter:(e,t,r)=>e.getValue()||"---"},{title:1!=a||e.data.repeat_last?this.$p.t("studierendenantrag","lv_wiederholen"):this.$p.t("studierendenantrag","lv_nicht_zulassen"),field:"antrag_zugelassen",formatter:(e,t,r)=>{let n=e.getData();if(n._children||!n.zeugnis)return"";let s=document.createElement("input");s.className="form-check-input",s.type="checkbox",s.role="switch",s.checked=e.getValue(),s.addEventListener("input",()=>{i[n.studienplan_lehrveranstaltung_id].antrag_zugelassen=s.checked,e.getRow().reformat()}),this.disabled&&(s.disabled=!0);let a=document.createElement("div");return a.className="form-check form-switch",a.append(s),a}},{title:this.$p.t("global","anmerkung"),field:"antrag_anmerkung",headerSort:!1,titleFormatter:(e,t,r)=>{let n=document.createElement("a");n.addEventListener("click",e=>{e.preventDefault()}),n.href="#",n.title=this.$p.t("studierendenantrag","anmerkung_tooltip"),new bootstrap.Tooltip(n);let i=document.createElement("span");i.innerHTML=this.$p.t("global","anmerkung")+" ",i.append(n);let s=document.createElement("i");return n.append(s),s.className="fa fa-info-circle",s.setAttribute("aria-hidden","true"),s.style.minWidth="1em",i},formatter:(e,t,r)=>{if(this.disabled)return e.getValue()||"";var n=e.getData();if(i[n.studienplan_lehrveranstaltung_id].antrag_zugelassen){let t=document.createElement("input");return t.className="form-control",t.type="text",t.value=e.getValue()||"",t.addEventListener("input",()=>{i[n.studienplan_lehrveranstaltung_id].antrag_anmerkung=t.value}),t}return""}}]};new Tabulator(this.$refs["lvtable"+r.substr(0,1)],o)}this.lvs=e.data}).catch(e=>{this.$fhcAlert.handleSystemError(e),this.isloading=!0})},template:'\n\t
    \n\t\t\n\t\t\t{{lvs.repeat_last ? $p.t(\'studierendenantrag\', \'title_lv_wiederholen\') : $p.t(\'studierendenantrag\', \'title_lv_nicht_zugelassen\')}}\n\t\t\t{{lvs1sem}}\n\t\t\n\t\t
    \n\t\t
    \n\n\t\t\n\t\t\t{{$p.t(\'studierendenantrag\', \'title_lv_wiederholen\')}}\n\t\t\t{{lvs2sem}}\n\t\t\n\t\t
    \n\t\t
    \n\n\t\t\n\t
    \n\t
    \n\t\t\n\t
    \n\t'},a={search(e,t){return this.$fhcApi.post("/api/frontend/v1/searchbar/search",e,t)},searchAdvanced(e,t){return this.$fhcApi.post("/api/frontend/v1/searchbar/searchAdvanced",e,t)},searchdummy(e){return this.$fhcApi.post("public/js/apps/api/dummyapi.php/Search",e)}},o={loadCategory(e){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+e)},setLanguage(e,t){const r={categories:e,language:t};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",{})}},d={getHeader(e){return this.$fhcApi.get("/api/frontend/v1/navigation/header",{navigation_page:e})},getMenu:function(e){return this.$fhcApi.get("/api/frontend/v1/navigation/menu",{navigation_page:e})}},u={saveCustomFilter(e){return this.$fhcApi.post("/api/frontend/v1/filter/saveCustomFilter",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,customFilterName:e.customFilterName})},removeCustomFilter(e){return this.$fhcApi.post("/api/frontend/v1/filter/removeCustomFilter",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterId:e.filterId})},applyFilterFields(e){return this.$fhcApi.post("/api/frontend/v1/filter/applyFilterFields",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterFields:e.filterFields})},addFilterField(e){return this.$fhcApi.post("/api/frontend/v1/filter/addFilterField",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterField:e.filterField})},removeFilterField(e){return this.$fhcApi.post("/api/frontend/v1/filter/removeFilterField",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterField:e.filterField})},getFilterById(e){return this.$fhcApi.get("/api/frontend/v1/filter/getFilter",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterId:e.filterId})},getFilter(e){return this.$fhcApi.get("/api/frontend/v1/filter/getFilter",{filterUniqueId:e.filterUniqueId,filterType:e.filterType})}},p={abmeldung:{getDetails(e,t){const r="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==e?"getDetailsForAntrag/"+e:"getDetailsForNewAntrag/"+t);return this.$fhcApi.get(r)},create(e,t,r){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:e,prestudent_id:t,grund:r},{errorHandling:"strict"})},cancel(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:e.studierendenantrag_id},{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:e})}},unterbrechung:{getDetails(e,t){const r="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==e?"getDetailsForAntrag/"+e:"getDetailsForNewAntrag/"+t);return this.$fhcApi.get(r)},create(e,t,r,n,i){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:e,prestudent_id:t,grund:r,datum_wiedereinstieg:n,attachment:i},{errorHandling:"strict"})},cancel(e){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:e},{errorHandling:"strict"})}},wiederholung:{getDetails(e){const t="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+e;return this.$fhcApi.get(t)},getLvs(e){const t="/api/frontend/v1/studstatus/wiederholung/getLvs/"+e;return this.$fhcApi.get(t)},create(e,t){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:e,studiensemester:t},{errorHandling:"strict"})},cancel(e,t){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:e,studiensemester:t},{errorHandling:"strict"})},saveLvs(e,t){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:e,mandatoryLvs:t})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(e,t,r){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+e).then(e=>e.data)},getHistory(e){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+e)},getPrestudents(e,t){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:e},{signal:t,timeout:3e4})},approve(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",e)},reject(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",e)},reopen(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",e)},pause(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",e)},unpause(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",e)},object(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",e)},approveObjection(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",e)},denyObjection(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",e)}}},l={getView:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/getView/${e}`,{})},fotoSperre:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/fotoSperre/${e}`,{})},isStudent:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/isStudent",{uid:e})},isMitarbeiter:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/isMitarbeiter/${e}`,{})},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(e,t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/getGemeinden/${e}/${t}`,{})},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",{})}},g={ +import e from"../../../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js";import t 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 s={getDetails:e=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+e}),getLvs:e=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getLvs/"+e}),create:(e,t)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/createAntrag",params:{prestudent_id:e,studiensemester:t}}),cancel:(e,t)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/cancelAntrag",params:{prestudent_id:e,studiensemester:t}}),saveLvs:(e,t)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/saveLvs",params:{forbiddenLvs:e,mandatoryLvs:t}})},i={components:{StudierendenantragStatus:{props:{msg:String,severity:String},computed:{severityClass(){return"alert-"+this.severity}},template:'\n\t\n\t'}},props:{antragId:Number,initialStatusCode:String,initialStatusMsg:String,disabled:Boolean},data:()=>({lvs:[],isloading:!1,statusCode:"",statusMsg:""}),computed:{lvs1(){return this.lvs[Object.keys(this.lvs).filter(e=>1==e.substr(0,1))]||[]},lvs2(){return this.lvs[Object.keys(this.lvs).filter(e=>2==e.substr(0,1))]||[]},lvs1sem(){return(Object.keys(this.lvs).filter(e=>1==e.substr(0,1)).pop()||"1").substr(1)},lvs2sem(){return(Object.keys(this.lvs).filter(e=>2==e.substr(0,1)).pop()||"2").substr(1)},statusSeverity(){return 0===this.statusCode?"danger":"info"}},methods:{save(){this.isloading=!0;const e=this.lvs1.filter(e=>(e.antrag_zugelassen||this.lvs.repeat_last)&&!e._children).map(e=>({studierendenantrag_id:this.antragId,lehrveranstaltung_id:e.lehrveranstaltung_id,zugelassen:this.lvs.repeat_last?e.antrag_zugelassen?1:2:0,anmerkung:e.antrag_anmerkung||"",studiensemester_kurzbz:this.lvs1sem})),t=this.lvs2.filter(e=>!e._children).map(e=>({studierendenantrag_id:this.antragId,lehrveranstaltung_id:e.lehrveranstaltung_id,zugelassen:e.antrag_zugelassen?1:2,anmerkung:e.antrag_anmerkung||"",studiensemester_kurzbz:this.lvs2sem}));this.$api.call(s.saveLvs(e,t)).then(e=>{this.$fhcAlert.alertSuccess("Speichern erfolgreich"),this.statusCode=e.data[0].studierendenantrag_statustyp_kurzbz,this.statusMsg=e.data[0].typ,this.isloading=!1}).catch(e=>{this.statusCode=0,this.statusMsg="Error",this.isloading=!1})}},created(){this.statusCode=this.initialStatusCode,this.statusMsg=this.initialStatusMsg},mounted(){this.$p.loadCategory(["ui","lehre","studierendenantrag","global"]).then(()=>this.$api.call(s.getLvs(this.antragId))).then(e=>{let t={};for(var r in e.data){if("repeat_last"===r)continue;if(null===e.data[r]){const e=document.createElement("div");e.innerHTML=this.$p.t("studierendenantrag","error_stg_last_semester"),e.className="alert alert-warning",e.role="alert",this.$refs["lvtable"+r.substr(0,1)].append(e);continue}let s=e.data[r].reduce((e,t)=>(e[t.studienplan_lehrveranstaltung_id]=t,e),{});for(var n of Object.values(s))n.studienplan_lehrveranstaltung_id_parent&&(s[n.studienplan_lehrveranstaltung_id_parent]?(s[n.studienplan_lehrveranstaltung_id_parent]._children||(s[n.studienplan_lehrveranstaltung_id_parent]._children=[]),s[n.studienplan_lehrveranstaltung_id_parent]._children.push(n)):console.error("parent not available"));t[r]=Object.values(s).filter(e=>!e.studienplan_lehrveranstaltung_id_parent);let i=t[r],a=r.substr(0,1);const o={data:i,dataTree:!0,dataTreeStartExpanded:!0,dataTreeChildIndent:15,layout:"fitDataStretch",columns:[{title:this.$p.t("ui","bezeichnung"),field:"bezeichnung"},{title:this.$p.t("lehre","lehrform"),field:"lehrform_kurzbz"},{title:"ECTS",field:"ects"},{title:this.$p.t("lehre","note"),field:"note",formatter:(e,t,r)=>e.getValue()||"---"},{title:1!=a||e.data.repeat_last?this.$p.t("studierendenantrag","lv_wiederholen"):this.$p.t("studierendenantrag","lv_nicht_zulassen"),field:"antrag_zugelassen",formatter:(e,t,r)=>{let n=e.getData();if(n._children||!n.zeugnis)return"";let i=document.createElement("input");i.className="form-check-input",i.type="checkbox",i.role="switch",i.checked=e.getValue(),i.addEventListener("input",()=>{s[n.studienplan_lehrveranstaltung_id].antrag_zugelassen=i.checked,e.getRow().reformat()}),this.disabled&&(i.disabled=!0);let a=document.createElement("div");return a.className="form-check form-switch",a.append(i),a}},{title:this.$p.t("global","anmerkung"),field:"antrag_anmerkung",headerSort:!1,titleFormatter:(e,t,r)=>{let n=document.createElement("a");n.addEventListener("click",e=>{e.preventDefault()}),n.href="#",n.title=this.$p.t("studierendenantrag","anmerkung_tooltip"),new bootstrap.Tooltip(n);let s=document.createElement("span");s.innerHTML=this.$p.t("global","anmerkung")+" ",s.append(n);let i=document.createElement("i");return n.append(i),i.className="fa fa-info-circle",i.setAttribute("aria-hidden","true"),i.style.minWidth="1em",s},formatter:(e,t,r)=>{if(this.disabled)return e.getValue()||"";var n=e.getData();if(s[n.studienplan_lehrveranstaltung_id].antrag_zugelassen){let t=document.createElement("input");return t.className="form-control",t.type="text",t.value=e.getValue()||"",t.addEventListener("input",()=>{s[n.studienplan_lehrveranstaltung_id].antrag_anmerkung=t.value}),t}return""}}]};new Tabulator(this.$refs["lvtable"+r.substr(0,1)],o)}this.lvs=e.data}).catch(e=>{this.$fhcAlert.handleSystemError(e),this.isloading=!0})},template:'\n\t
    \n\t\t\n\t\t\t{{lvs.repeat_last ? $p.t(\'studierendenantrag\', \'title_lv_wiederholen\') : $p.t(\'studierendenantrag\', \'title_lv_nicht_zugelassen\')}}\n\t\t\t{{lvs1sem}}\n\t\t\n\t\t
    \n\t\t
    \n\n\t\t\n\t\t\t{{$p.t(\'studierendenantrag\', \'title_lv_wiederholen\')}}\n\t\t\t{{lvs2sem}}\n\t\t\n\t\t
    \n\t\t
    \n\n\t\t\n\t
    \n\t
    \n\t\t\n\t
    \n\t'},a={search(e,t){return this.$fhcApi.post("/api/frontend/v1/searchbar/search",e,t)},searchAdvanced(e,t){return this.$fhcApi.post("/api/frontend/v1/searchbar/searchAdvanced",e,t)},searchdummy(e){return this.$fhcApi.post("public/js/apps/api/dummyapi.php/Search",e)}},o={loadCategory(e){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+e)},setLanguage(e,t){const r={categories:e,language:t};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",{})}},d={getHeader(e){return this.$fhcApi.get("/api/frontend/v1/navigation/header",{navigation_page:e})},getMenu:function(e){return this.$fhcApi.get("/api/frontend/v1/navigation/menu",{navigation_page:e})}},u={saveCustomFilter(e){return this.$fhcApi.post("/api/frontend/v1/filter/saveCustomFilter",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,customFilterName:e.customFilterName})},removeCustomFilter(e){return this.$fhcApi.post("/api/frontend/v1/filter/removeCustomFilter",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterId:e.filterId})},applyFilterFields(e){return this.$fhcApi.post("/api/frontend/v1/filter/applyFilterFields",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterFields:e.filterFields})},addFilterField(e){return this.$fhcApi.post("/api/frontend/v1/filter/addFilterField",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterField:e.filterField})},removeFilterField(e){return this.$fhcApi.post("/api/frontend/v1/filter/removeFilterField",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterField:e.filterField})},getFilterById(e){return this.$fhcApi.get("/api/frontend/v1/filter/getFilter",{filterUniqueId:e.filterUniqueId,filterType:e.filterType,filterId:e.filterId})},getFilter(e){return this.$fhcApi.get("/api/frontend/v1/filter/getFilter",{filterUniqueId:e.filterUniqueId,filterType:e.filterType})}},p={abmeldung:{getDetails(e,t){const r="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==e?"getDetailsForAntrag/"+e:"getDetailsForNewAntrag/"+t);return this.$fhcApi.get(r)},create(e,t,r){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:e,prestudent_id:t,grund:r},{errorHandling:"strict"})},cancel(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:e.studierendenantrag_id},{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:e})}},unterbrechung:{getDetails(e,t){const r="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==e?"getDetailsForAntrag/"+e:"getDetailsForNewAntrag/"+t);return this.$fhcApi.get(r)},create(e,t,r,n,s){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:e,prestudent_id:t,grund:r,datum_wiedereinstieg:n,attachment:s},{errorHandling:"strict"})},cancel(e){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:e},{errorHandling:"strict"})}},wiederholung:{getDetails(e){const t="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+e;return this.$fhcApi.get(t)},getLvs(e){const t="/api/frontend/v1/studstatus/wiederholung/getLvs/"+e;return this.$fhcApi.get(t)},create(e,t){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:e,studiensemester:t},{errorHandling:"strict"})},cancel(e,t){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:e,studiensemester:t},{errorHandling:"strict"})},saveLvs(e,t){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:e,mandatoryLvs:t})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(e,t,r){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+e).then(e=>e.data)},getHistory(e){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+e)},getPrestudents(e,t){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:e},{signal:t,timeout:3e4})},approve(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",e)},reject(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",e)},reopen(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",e)},pause(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",e)},unpause(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",e)},object(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",e)},approveObjection(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",e)},denyObjection(e){return Array.isArray(e)?Promise.allSettled(e.map(e=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",e,{errorHeader:"#"+e.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",e)}}},l={getView:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/getView/${e}`,{})},fotoSperre:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/fotoSperre/${e}`,{})},isStudent:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Profil/isStudent",{uid:e})},isMitarbeiter:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/isMitarbeiter/${e}`,{})},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(e,t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/Profil/getGemeinden/${e}/${t}`,{})},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",{})}},g={ //! 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:e,uid:t,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:e,uid:t,status_message:r,topic:n,requested_change:i})},denyProfilRequest:function({profil_update_id:e,uid:t,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:e,uid:t,topic:r,status_message:n})},insertFile:function(e,t=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${t}`,e)},getProfilRequestFiles:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${e}`,{})},selectProfilRequest:function(e=null,t=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...e?{uid:e}:{},...t?{id:t}:{}})},insertProfilRequest:function(e,t,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:e,payload:t,...r?{fileID:r}:{}})},updateProfilRequest:function(e,t,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:e,payload:t,ID:r,...n?{fileID:n}:{}})},deleteProfilRequest:function(e){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",{requestID:e})}},f={getRoomInfo(e,t,r){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:e,start_date:t,end_date:r})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(e,t,r){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${e}`,{start_date:t,end_date:r})},getLvPlanReservierungen(e,t){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:e,end_date:t})},getLehreinheitStudiensemester(e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${e}`,{})},studiensemesterDateInterval(e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${e}`,{})},LvPlanEvents(e,t,r){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:e,end_date:t,lv_id:r})}},c={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(e){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:e})}}},students:{uid(e,t){let r="api/frontend/v1/stv/students/"+encodeURIComponent(t)+"/uid/"+encodeURIComponent(e);return this.$fhcApi.getUri(r)},prestudent(e,t){let r="api/frontend/v1/stv/students/"+encodeURIComponent(t)+"/prestudent/"+encodeURIComponent(e);return this.$fhcApi.getUri(r)},person(e,t){let r="api/frontend/v1/stv/students/"+encodeURIComponent(t)+"/person/"+encodeURIComponent(e);return this.$fhcApi.getUri(r)},verband(e){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+e)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(e){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:e})}},konto:{tabulatorConfig(e,t){return e.ajaxURL="api/frontend/v1/stv/konto/get",e.ajaxParams=()=>({person_id:t.modelValue.person_id||t.modelValue.map(e=>e.person_id),only_open:t.filter,studiengang_kz:t.studiengang_kz_intern?t.stg_kz:""}),e.ajaxRequestFunc=(e,t,r)=>this.$fhcApi.post(e,r,t),e.ajaxResponse=(e,t,r)=>r.data,e},checkDoubles(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/konto/checkDoubles",t,{confirmErrorHandler:e=>!0})},insert(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/konto/insert",t)},counter(e){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",e)},edit(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/konto/update",t)},delete(e){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:e})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+r.id)},deleteGroup(e){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",e)}},kontakt:{getAdressen(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+r.id)},addNewAddress(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/addNewAddress/"+t,r)},loadAddress(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:e})},updateAddress(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/updateAddress/"+t,r)},deleteAddress(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:e})},getPlaces(e){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+e)},getFirmen(e){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+e)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+r.id)},addNewBankverbindung(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+t,r)},loadBankverbindung(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:e})},updateBankverbindung(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+t,r)},deleteBankverbindung(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:e})},getKontakte(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+r.id)},addNewContact(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/addNewContact/"+t,r)},loadContact(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:e})},updateContact(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/updateContact/"+t,r)},deleteContact(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:e})},getStandorteByFirma(e){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+e)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(e,t){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(e)+"/"+encodeURIComponent(t))},updatePrestudent(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/prestudent/updatePrestudent/"+t,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(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+r.id)},getMaxSem(e){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:e})},advanceStatus({prestudent_id:e,status_kurzbz:t,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+e+"/"+t+"/"+r+"/"+n)},confirmStatus({prestudent_id:e,status_kurzbz:t,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+e+"/"+t+"/"+r+"/"+n)},isLastStatus(e){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+e)},deleteStatus({prestudent_id:e,status_kurzbz:t,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+e+"/"+t+"/"+r+"/"+n)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+r.id)}},status:{insertStatus(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/status/insertStatus/"+t,r)},loadStatus({prestudent_id:e,status_kurzbz:t,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+e+"/"+t+"/"+r+"/"+n)},updateStatus(e,{prestudent_id:t,status_kurzbz:r,studiensemester_kurzbz:n,ausbildungssemester:i},s){return this.$fhcApi.post(e,"api/frontend/v1/stv/status/updateStatus/"+t+"/"+r+"/"+n+"/"+i,s)},getStudienplaene(e){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+e)},getStudiengang(e){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+e)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(e,t){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+e,t,{errorHeader:e})},changeStatus(e,t){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+e,t,{errorHeader:e})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(e,t){let r="api/frontend/v1/stv/student/get/"+encodeURIComponent(e)+"/"+encodeURIComponent(t);return this.$fhcApi.post(r)},save(e,t,r,n){let i="api/frontend/v1/stv/student/save/"+encodeURIComponent(t)+"/"+encodeURIComponent(r);return this.$fhcApi.post(e,i,n)}},exam:{getPruefungen(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+r.id)},loadPruefung(e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+e)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(e){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",e)},getLvsByStudent(e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+e)},getLvsandLesByStudent(e,t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+e+"/"+t)},getLvsAndMas(e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+e)},getMitarbeiterLv(e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+e)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(e){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",e)},addPruefung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/pruefung/insertPruefung/",t)},updatePruefung(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/pruefung/updatePruefung/"+t,r)},deletePruefung(e){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+e)}},abschlusspruefung:{getAbschlusspruefung(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+r.id)},addNewAbschlusspruefung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",t)},loadAbschlusspruefung(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:e})},updateAbschlusspruefung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",t)},deleteAbschlusspruefung(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:e})},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(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:e})},getTypStudiengang(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:e})},getMitarbeiter(e){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+e)},getPruefer(e){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+e)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:e})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(e,t){let r="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(e);return t&&(r=r+"/"+encodeURIComponent(t)),this.$fhcApi.get(r)},getTeacherProposal(e,t){let r="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(e);return t&&(r=r+"/"+encodeURIComponent(t)),this.$fhcApi.get(r)},getRepeaterGrades(e,t){let r="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(e);return t&&(r=r+"/"+encodeURIComponent(t)),this.$fhcApi.get(r)},updateCertificate({lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r,note:n,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r,note:n},{errorHeader:i})},deleteCertificate({lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r,lehrveranstaltung_bezeichnung:n}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r},{errorHeader:n})},copyTeacherProposalToCertificate({lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r,lehrveranstaltung_bezeichnung:n}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r},{errorHeader:n})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:e,lv_bezeichnung:t}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:e},{errorHeader:t})},getGradeFromPoints(e,t,r,n){const i=n?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:e,lehrveranstaltung_id:t,studiensemester_kurzbz:r},i)}},mobility:{getMobilitaeten(e,t,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(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/mobility/insertMobility/",t)},loadMobility(e){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+e)},updateMobility(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/mobility/updateMobility/",t)},deleteMobility(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+e)},getLVList(e){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+e)},getAllLehreinheiten(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",e)},getLvsandLesByStudent(e){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+e)},getPurposes(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+r.id)},getSupports(e,t,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(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+e.bisio_id,e)},addMobilityPurpose(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+e.bisio_id,e)},deleteMobilitySupport(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+e.bisio_id,e)},addMobilitySupport(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+e.bisio_id,e)}},archiv:{tabulatorConfig(e,t){return e.ajaxURL="api/frontend/v1/stv/archiv/get",e.ajaxParams=()=>({person_id:t.modelValue.person_id||t.modelValue.map(e=>e.person_id)}),e.ajaxRequestFunc=(e,t,r)=>this.$fhcApi.post(e,r,t),e.ajaxResponse=(e,t,r)=>r.data,e},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(e){return this.$fhcApi.post("api/frontend/v1/documents/archive",e)},archiveSigned(e){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",e)},update(e){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",e)},delete({akte_id:e,studiengang_kz:t}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:e,studiengang_kz:t})}},documents:{getDocumentsUnaccepted(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+r.id+"/"+r.studiengang_kz)},getDocumentsAccepted(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+r.id+"/"+r.studiengang_kz)},deleteZuordnung(e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+e.prestudent_id+"/"+e.dokument_kurzbz)},createZuordnung(e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+e.prestudent_id+"/"+e.dokument_kurzbz)},loadAkte(e){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+e)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(e,t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+e,t)},deleteFile(e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+e)},uploadFile(e,t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+e,t)}},exemptions:{getAnrechnungen(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+r.id)},getLehrveranstaltungen(e){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+e)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(e){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+e)},getLektoren(e){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+e)},addNewAnrechnung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",t)},loadAnrechnung(e){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+e)},editAnrechnung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",t)},deleteAnrechnung(e){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+e)}},jointstudies:{getStudies(e,t,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(e){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+e)},insertStudy(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",t)},updateStudy(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",t)},deleteStudy(e){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+e)}},courselist:{getCourselist(e,t,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")}},h={person:{getNotizen(e,t,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(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+t,r)},loadNotiz(e){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:e})},loadDokumente(e){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:e})},deleteNotiz(e,t,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:e,type_id:t,id:r})},updateNotiz(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+t,r)},getMitarbeiter(e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+e)},isBerechtigt(e,t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}}},v={person:{getAllBetriebsmittel(e,t,r){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+r.type+"/"+r.id)},addNewBetriebsmittel(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+t,r)},loadBetriebsmittel(e){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+e)},updateBetriebsmittel(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+t,r)},deleteBetriebsmittel(e){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+e)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(e){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+e)}}},A={updatePersonUnrulyStatus(e,t){try{const r={person_id:e,unruly:t},n="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(n,r,null)}catch(e){throw e}},filterPerson(e,t=""){try{const r=t+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(r,e)}catch(e){throw e}}},m={getContentID(e){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:e})},getRooms(e,t,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:e,von:t,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")}},_={content(e,t=null,r=null,n=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:e,...t?{version:t}:{},...r?{sprache:r}:{},...n?{sichtbar:n}:{}})},getNews(e=1,t=10,r){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:e,page_size:t,sprache:r})},news(e){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:e})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},b={getStudentenMail(e){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:e})},getLvInfo(e,t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/LV/${e}/${t}`,{})},getStudentPruefungen(e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/Pruefungen/${e}`,{})},getStudentProjektarbeiten(e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${e}`,{})},getStudentProjektabgaben(e){return this.$fhcApi.get("/api/frontend/v1/Lehre/getStudentProjektabgaben",{projektarbeit_id:e.projektarbeit_id,student_uid:e.student_uid})},postStudentProjektarbeitEndupload(e){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload",e,{Headers:{"Content-Type":"multipart/form-data"}})},postStudentProjektarbeitZwischenabgabe(e){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe",e,{Headers:{"Content-Type":"multipart/form-data"}})},getStudentProjektarbeitAbgabeFile(e,t){const r=`/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${e}&student_uid=${t}`;window.location=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+r},getMitarbeiterProjektarbeiten(e,t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${t}`,{})},postProjektarbeitAbgabe(e){const t={paabgabe_id:e.paabgabe_id,paabgabetyp_kurzbz:e.bezeichnung.paabgabetyp_kurzbz,datum:e.datum,fixtermin:e.fixtermin,insertvon:e.insertvon,kurzbz:e.kurzbz,projektarbeit_id:e.projektarbeit_id};return this.$fhcApi.post("/api/frontend/v1/Lehre/postProjektarbeitAbgabe",t,null)},deleteProjektarbeitAbgabe(e){const t={paabgabe_id:e};return this.$fhcApi.post("/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe",t,null)},postSerientermin(e,t,r,n,i){const s={datum:e,paabgabetyp_kurzbz:t,bezeichnung:r,kurzbz:n,projektarbeit_ids:i};return this.$fhcApi.post("/api/frontend/v1/Lehre/postSerientermin",s,null)},fetchDeadlines(e){const t={person_id:e};return this.$fhcApi.post("/api/frontend/v1/Lehre/fetchDeadlines",t,null)}},$={getLvMenu(e,t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/LvMenu/getLvMenu/${e}/${t}`,{})}},y={person:{getMessages(e,t,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(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+e.id+"/"+e.type_id)},getMsgVarsPrestudent(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+e.id+"/"+e.type_id)},getPersonId(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+e.id+"/"+e.type_id)},getUid(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+e.id+"/"+e.type_id)},getDataVorlage(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+e)},getNameOfDefaultRecipient(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+e.id+"/"+e.type_id)},getPreviewText(e,t){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+e.id+"/"+e.type_id,t)},getReplyData(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+e)},sendMessageFromModalContext(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/messages/messages/sendMessage/"+t,r)},sendMessage(e,t){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+e,t)},deleteMessage(e){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+e)}}},S={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},E={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(e=void 0,t=void 0,r=void 0,n=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:e,studiengang:t,semester:r,studienplan:n})},getStudiengaengeForStudienSemester:function(e){return this.$fhcApi.get(`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${e}`,{})},getStudienplaeneBySemester:function(e,t){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienplaeneBySemester",{studiengang:e,studiensemester:t})},getLvPlanForStudiensemester:function(e,t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${e}/${t}`,{})},getLvEvaluierungInfo:function(e,t){return this.$fhcApi.get(`/api/frontend/v1/Studium/getLvEvaluierungInfo/${e}/${t}`,{})}},P={search:a,phrasen:o,navigation:d,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:u,studstatus:p,profil:l,profilUpdate:g,lvPlan:f,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(e){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${e}`,{})},update:function({bookmark_id:e,url:t,title:r,tag:n=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${e}`,{url:t,title:r})},insert:function({url:e,title:t,tag:r}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:e,title:t,tag:r})}},stv:c,notiz:h,betriebsmittel:v,checkperson:A,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(e){return this.$fhcApi.get(`/api/frontend/v1/Ampeln/confirm/${e}`,{})}},ort:m,cms:_,lehre:b,addons:$,messages:y,vorlagen:S,addons:$,studiengang:{studiengangInformation:function(){return this.$fhcApi.get("/api/frontend/v1/Studgang/getStudiengangInfo",{})},getStudiengangByKz:function(e){return this.$fhcApi.get("/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz",{studiengang_kz:e})}},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",{})}},studium:E,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},T={install:(e,t)=>{if(e.config.globalProperties.$fhcApi)return void(t?.factory&&(console.warn("$fhcApi is DEPRECATED!"),e.config.globalProperties.$fhcApi.factory.addEndpoints(t.factory)));function r(e,t,r,n){if("string"==typeof e&&void 0===n)[t,r,n]=[e,t,r],e=void 0;else if(e){if("object"!=typeof e)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===t&&void 0===r&&void 0===n&&(n=e,e=void 0)}if(e){if(!e.clearValidation||!e.setFeedback)throw new TypeError("'form' is not a Form Component");e={clearValidation:e.clearValidation,setFeedback:e.setFeedback},n?n.form=e:n={form:e}}return[t,r,n]}function n(e){const t=e.data;return delete e.data,t.meta?t.meta.response=e:t.meta={response:e},t}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(e=>{if("post"!=e.method||!e.data)return e;if(e.data instanceof FormData)return e;if(!Object.values(e.data).every(e=>!(e instanceof FileList)&&(!Array.isArray(e)||e.every(e=>!(e instanceof File))))){const t=Object.entries(e.data).reduce((e,[t,r])=>{if(r instanceof FileList)for(const n of r)e.FormData.append(t+(r.length>1?"[]":""),n);else Array.isArray(r)?r.every(e=>!(e instanceof File))?e.jsondata[t]=r:r.forEach(n=>e.FormData.append(t+(r.length>1?"[]":""),n)):e.jsondata[t]=r;return e},{FormData:new FormData,jsondata:{}});t.FormData.append("_jsondata",JSON.stringify(t.jsondata)),e.data=t.FormData}return e}),i.interceptors.response.use(t=>("off"==t.config?.errorHandling||!1===t.config?.errorHandling||"fail"==t.config?.errorHandling||t.data.errors&&(t.data.errors=t.data.errors.filter(r=>(t.config[r.type+"ErrorHandler"]||e.config.globalProperties.$fhcApi._defaultErrorHandlers[r.type])(r,t.config))),n(t)),t=>"ERR_CANCELED"==t.code?Promise.reject({handled:!0,...t}):"off"==t.config?.errorHandling||!1===t.config?.errorHandling||"success"==t.config?.errorHandling?Promise.reject(t):t.response?404==t.response.status?(e.config.globalProperties.$fhcAlert.alertDefault("error",t.message,t.request.responseURL,!0),Promise.reject({handled:!0,...t})):(t.response.data.errors=t.response.data.errors.filter(r=>(t.config[r.type+"ErrorHandler"]||e.config.globalProperties.$fhcApi._defaultErrorHandlers[r.type])(r,t.config)),t.response.data.errors.length?Promise.reject(t):Promise.reject({handled:!0,...t})):t.request?(e.config.globalProperties.$fhcAlert.alertDefault("error",t.message,t.request.responseURL),Promise.reject({handled:!0,...t})):(e.config.globalProperties.$fhcAlert.alertError(t.message),Promise.reject({handled:!0,...t}))),e.config.globalProperties.$fhcApi={getUri:e=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),i.getUri({url:e})),get:(e,t,n,s)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[t,n,s]=r(e,t,n,s),n&&(s?s.params=n:s={params:n}),i.get(t,s)),post:(e,t,n,s)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[t,n,s]=r(e,t,n,s),i.post(t,n,s)),_defaultErrorHandlers:{validation(t,r){const n=e.config.globalProperties.$fhcAlert;return r?.form?(r.form.clearValidation(),r.form.setFeedback(!1,t.messages),!1):Array.isArray(t.messages)?(t.messages.forEach(n.alertError),!1):"object"!=typeof t.messages||(r?.errorHeader?Object.values(t.messages).forEach(t=>n.alertDefault("error",Array.isArray(r.errorHeader)?e.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,t,!0)):Object.entries(t.messages).forEach(([e,t])=>n.alertDefault("error",e,t,!0)),!1)},general(t,r){const n=e.config.globalProperties.$fhcAlert;r?.form?r.form.setFeedback(!1,t.message):r?.errorHeader?n.alertDefault("error",Array.isArray(r.errorHeader)?e.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,t.message,!0):n.alertError(t.message)},php(t){const r=e.config.globalProperties.$fhcAlert;var n="";switch(n+="Message: "+t.message+"\n\n",n+="Filename: "+t.filename+"\n",n+="Line Number: "+t.line+"\n",t.backtrace&&t.backtrace.length&&(n+="\nBacktrace: ",t.backtrace.forEach(e=>{n+="\n\tFile: "+e.file+"\n",n+="\tLine: "+e.line+"\n",n+="\tFunction: "+e.function+"\n"})),t.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":r.alertDefault("warn","PHP "+t.severity,n,!0);break;case"Notice":case"User Notice":case"Runtime Notice":r.alertDefault("info","PHP "+t.severity,n,!0);break;default:n="Type: PHP "+t.severity+"\n\n"+n,r.alertSystemError(n)}},exception(t){const r=e.config.globalProperties.$fhcAlert;var n="";n+="Type: "+t.class+"\n\n",n+="Message: "+t.message+"\n\n",n+="Filename: "+t.filename+"\n",n+="Line Number: "+t.line+"\n",t.backtrace&&t.backtrace.length&&(n+="\nBacktrace: ",t.backtrace.forEach(e=>{n+="\n\tFile: "+e.file+"\n",n+="\tLine: "+e.line+"\n",n+="\tFunction: "+e.function+"\n"})),r.alertSystemError(n)},db(t){const r=e.config.globalProperties.$fhcAlert;var n="";void 0!==t.heading&&(n+=t.heading+"\n\n"),void 0!==t.code&&(n+="Code: "+t.code+"\n\n"),void 0!==t.sql&&(n+="SQL: "+t.sql+"\n\n"),void 0!==t.message?n+="Message: "+t.message+"\n\n":void 0!==t.messages&&(n+="Messages: "+t.messages.join("\n\t")+"\n\n"),void 0!==t.filename&&(n+="Filename: "+t.filename+"\n"),void 0!==t.line&&(n+="Line Number: "+t.line+"\n"),r.alertSystemError(n)},auth(t,r){const n=e.config.globalProperties.$fhcAlert;var i="";i+="Controller name: "+t.controller+"\n",i+="Method name: "+t.method+"\n",i+="Required permissions: "+t.required_permissions,r?.errorHeader?n.alertDefault("error",Array.isArray(r.errorHeader)?e.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,t.message,!0):n.alertDefault("error",t.message,i)}}};class s{constructor(t,r){void 0===r?(this.$fhcApi={getUri:t=>(console.warn("$fhcApi.factory is DEPRECATED!"),e.config.globalProperties.$fhcApi.getUri(t)),get:(t,r,n,i)=>(console.warn("$fhcApi.factory is DEPRECATED!"),e.config.globalProperties.$fhcApi.get(t,r,n,i)),post:(t,r,n,i)=>(console.warn("$fhcApi.factory is DEPRECATED!"),e.config.globalProperties.$fhcApi.post(t,r,n,i))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),e.config.globalProperties.$fhcApi.factory)}),e.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(r||this).$fhcApi}}),this.addEndpoints(t,!0)}addEndpoints(e,t){Object.keys(e).forEach(t=>{Object.defineProperty(this,t,{get(){return"function"==typeof e[t]?e[t].bind(this):new s(e[t],this.$fhcApi.factory)}})}),t||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const a=new s(P);t?.factory&&(console.warn("$fhcApi is DEPRECATED!"),a.addEndpoints(t.factory)),e.config.globalProperties.$fhcApi.factory=a,e.provide("$fhcApi",e.config.globalProperties.$fhcApi)}};const C="error",k="retval",O={get:function(e,t,r=null){return O._axiosCall(e,t,"get",r)},post:function(e,t,r=null){return O._axiosCall(e,t,"post",r)},isSuccess:function(e){return!("object"!=typeof e||!e.hasOwnProperty(C)||!e.hasOwnProperty(k)||0!=e.error)},isError:function(e){return!O.isSuccess(e)},hasData:function(e){return!(!O.isSuccess(e)||!("object"==typeof e[k]&&Object.keys(e[k]).length>0||"array"==typeof e[k]&&e[k].length>0||"string"==typeof e[k]&&""!=e[k].trim()||"number"==typeof e[k]))},getData:function(e){return O.hasData(e)?e[k]:null},getError:function(e){return"object"==typeof e&&Object.keys(e).length>0&&e.hasOwnProperty(k)?e[k]:"Generic error"},getErrorCode:function(e){return"object"==typeof e&&e.hasOwnProperty(C)?e[C]:1},_generateRouterURI:function(e){var t=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(t=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+e),t},_printDebug:function(e,t,r){},_axiosCall:function(e,t,r,n){let i={method:r,url:O._generateRouterURI(e),timeout:5e3};if("get"==r?i.params=t:i.data=t,"object"==typeof n)for(var s in n)i[s]=n[s];return axios(i)}},F=document.createElement("div"),D=Vue.createApp({name:"FhcAlertApp",components:{PvToast:t,PvConfirm:r},methods:{mailToUrl:e=>"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: "+e.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(e){bootstrap.Collapse.getOrCreateInstance(e.target.getAttribute("href")).toggle()}},unmounted(){F.parentElement.removeChild(F)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});D.use(e),D.use(n);const R=D.mount(F);document.body.appendChild(F);var L={install:(e,t)=>{e.config.globalProperties.$p||e.use(M);const r={alertSuccess(e){if(Array.isArray(e))return e.forEach(this.alertSuccess);R.$refs.toast.add({severity:"success",summary:"Info",detail:e,life:1e3})},alertInfo(e){if(Array.isArray(e))return e.forEach(this.alertInfo);R.$refs.toast.add({severity:"info",summary:"Info",detail:e,life:3e3})},alertWarning(e){if(Array.isArray(e))return e.forEach(this.alertWarning);R.$refs.toast.add({severity:"warn",summary:"Achtung",detail:e})},alertError(e){if(Array.isArray(e))return e.forEach(this.alertError);R.$refs.toast.add({severity:"error",summary:"Achtung",detail:e})},alertSystemError(t){if(Array.isArray(t))return t.forEach(this.alertSystemError);R.$refs.alert.add({severity:"error",summary:Vue.computed(()=>e.config.globalProperties.$p.t("alert/systemerror")),detail:t})},confirmDelete:()=>new Promise((t,r)=>{R.$confirm.require({group:"fhcAlertConfirm",header:Vue.computed(()=>e.config.globalProperties.$p.t("alert/attention")),message:Vue.computed(()=>e.config.globalProperties.$p.t("alert/confirm_delete")),acceptLabel:Vue.computed(()=>e.config.globalProperties.$p.t("ui/loeschen")),acceptClass:"p-button-danger",rejectLabel:Vue.computed(()=>e.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:"p-button-secondary",accept(){t(!0)},reject(){t(!1)}})}),confirm:t=>new Promise((r,n)=>{R.$confirm.require({group:t?.group??"fhcAlertConfirm",header:t?.header??Vue.computed(()=>e.config.globalProperties.$p.t("alert/attention")),message:t?.message??"",acceptLabel:t?.acceptLabel??"Ok",acceptClass:t?.acceptClass??"btn btn-primary",rejectLabel:t?.rejectLabel??Vue.computed(()=>e.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:t?.rejectClass??"btn btn-outline-secondary",accept(){r(!0)},reject(){r(!1)}})}),alertDefault(e,t,r,n=!1,i=!1){let s={severity:e,summary:t,detail:r,html:i};n||(s.life=3e3),R.$refs.toast.add(s)},alertMultiple(e,t="info",r="Info",n=!1,i=!1){return!!e.every(e=>"string"==typeof e)&&(e.forEach(e=>this.alertDefault(t,r,e,n,i)),!0)},handleSystemError(e){if(!e.hasOwnProperty("name")||e.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof e)return r.alertSystemError(e);if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return e.every(r.alertSystemError);if(!e.hasOwnProperty("handled")||!e.handled){if("object"==typeof e&&null!==e){let t="";return e.hasOwnProperty("response")&&e.response?.data?.retval?t+="Error Message: "+(e.response.data.retval.message||e.response.data.retval)+"\r\n":e.hasOwnProperty("message")&&(t+="Error Message: "+e.message.toUpperCase()+"\r\n"),e.hasOwnProperty("config")&&e.config.hasOwnProperty("url")&&(t+="Error ConfigURL: "+e.config.url+"\r\n"),e.hasOwnProperty("stack")&&(t+="Error Stack: "+e.stack+"\r\n"),""==t&&(t="Error Message: "+JSON.stringify(e)+"\r\n"),t+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,r.alertSystemError(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)}}},handleSystemMessage(e){if("string"==typeof e)return r.alertWarning(e);if(Array.isArray(e)){if(e.every(e=>"string"==typeof e))return e.every(r.alertWarning);if(e.every(e=>"object"==typeof e)&&null!==msg)return e.every(e=>{e.hasOwnProperty("data")&&e.data.hasOwnProperty("retval")?r.alertWarning(JSON.stringify(e.data.retval)):r.alertSystemError(JSON.stringify(e))})}"object"!=typeof e||null===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):e.hasOwnProperty("data")&&e.data.hasOwnProperty("retval")?r.alertWarning(JSON.stringify(e.data.retval)):r.alertSystemError(JSON.stringify(e))},resetFormValidation(e){const t=new Event("fhc-form-reset");e.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(e=>e.dispatchEvent(t))},handleFormValidation(e,t){if(void 0===t){if(e&&e.nodeType===Node.ELEMENT_NODE)return t=>r.handleFormValidation(t,e)}else if(400==e?.response?.status){let n=O.getError(e.response.data);"object"!=typeof n&&(n=e.response.data),r.resetFormValidation(t);const i=Object.entries(n).filter(([e,r])=>{const n=t.querySelector('[data-fhc-form-validate="'+e+'"]');return!n||(n.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:r})),!1)}).map(e=>e[1]),s=t.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==e?.response?.status){let t=O.getError(e.response.data);r.alertError("object"==typeof t?Object.values(t):t)}else r.handleSystemError(e)}};e.config.globalProperties.$fhcAlert=r,e.provide("$fhcAlert",e.config.globalProperties.$fhcAlert)}},H={install:(e,t)=>{if(e.config.globalProperties.$api)return;function r(e,t){Array.isArray(e)?e.forEach(t):Object.entries(e).forEach(([e,r])=>r.forEach(r=>t(r,e)))}e.config.globalProperties.$fhcAlert||e.use(L);let n={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(e,t){e.clearValidation(),t.forEach(t=>e.setFeedback(!1,t.messages||t.message))},async toast(t){const r=e.config.globalProperties.$p;if(!r)return Promise.reject("Phrasen plugin not loaded!");async function n(e){e=e.reduce((e,t)=>{switch(t.type){case"not_found":case"site_failed":t.message?e[t.message]=[t.url]:e._default=[t.url];break;case"general":e._default||(e._default=[]),e._default.push(t.message);break;case"validation":Object.entries(t.messages).forEach(([t,r])=>{e[t]||(e[t]=[]),Array.isArray(r)?e[t].push(...r):e[t].push(r)})}return e},{});let t=0;const n=await Promise.all(Object.entries(e).sort((e,t)=>["_default"].indexOf(t[0])-["_default"].indexOf(e[0])).map(async([e,n])=>{if("_default"==e){await r.loadCategory("dashboard");e='
    '+r.t("dashboard/general")+"
    "}else e="
    "+e+"
    ";return t+=n.length,e+"
    "+n.join("
    ")+"
    "}));return{counter:t,msgs:n}}let i,s;Array.isArray(t)?({counter:i,msgs:s}=await n(t)):({counter:i,msgs:s}=await Object.entries(t).reduce(async(e,[t,r])=>{const i=await e,{counter:s,msgs:a}=await n(r);return i.counter+=s,i.msgs.push("
    "+t+"
    "+a.join("")+"
    "),i},Promise.resolve({counter:0,msgs:[]}))),await r.loadCategory("ui");const a=r.t("ui/n_errors",{n:i});e.config.globalProperties.$fhcAlert.alertDefault("error",a,"
    "+s.join("")+"
    ",!0,!0)},php(t){r(t,(t,r)=>{var n="";switch(n+="Message: "+t.message+"\n\n",n+="Filename: "+t.filename+"\n",n+="Line Number: "+t.line+"\n",t.backtrace&&t.backtrace.length&&(n+="\nBacktrace: ",t.backtrace.forEach(e=>{n+="\n\tFile: "+e.file+"\n",n+="\tLine: "+e.line+"\n",n+="\tFunction: "+e.function+"\n"})),t.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":r?r+=": PHP "+t.severity:r="PHP "+t.severity,e.config.globalProperties.$fhcAlert.alertDefault("warn",r,n,!0);break;case"Notice":case"User Notice":case"Runtime Notice":r?r+=": PHP "+t.severity:r="PHP "+t.severity,e.config.globalProperties.$fhcAlert.alertDefault("info",r,n,!0);break;default:n="Type: PHP "+t.severity+"\n\n"+n,r&&(n=r+"\n\n"+n),e.config.globalProperties.$fhcAlert.alertSystemError(n)}})},exception(t){r(t,(t,r)=>{var n="";r&&(n+=r+"\n\n"),n+="Type: "+t.class+"\n\n",n+="Message: "+t.message+"\n\n",n+="Filename: "+t.filename+"\n",n+="Line Number: "+t.line+"\n",t.backtrace&&t.backtrace.length&&(n+="\nBacktrace: ",t.backtrace.forEach(e=>{n+="\n\tFile: "+e.file+"\n",n+="\tLine: "+e.line+"\n",n+="\tFunction: "+e.function+"\n"})),e.config.globalProperties.$fhcAlert.alertSystemError(n)})},db(t){r(t,(t,r)=>{var n="";r&&(n+=r+"\n\n"),void 0!==t.heading&&(n+=t.heading+"\n\n"),void 0!==t.code&&(n+="Code: "+t.code+"\n\n"),void 0!==t.sql&&(n+="SQL: "+t.sql+"\n\n"),void 0!==t.message?n+="Message: "+t.message+"\n\n":void 0!==t.messages&&(n+="Messages: "+t.messages.join("\n\t")+"\n\n"),void 0!==t.filename&&(n+="Filename: "+t.filename+"\n"),void 0!==t.line&&(n+="Line Number: "+t.line+"\n"),e.config.globalProperties.$fhcAlert.alertSystemError(n)})},auth(t){r(t,(t,r)=>{r?r+=": "+t.message:r=t.message;var n="";n+="Controller name: "+t.controller+"\n",n+="Method name: "+t.method+"\n",n+="Required permissions: "+t.required_permissions,e.config.globalProperties.$fhcAlert.alertDefault("error",r,n,!0)})}}};function i(e,t,r,n){if("string"==typeof e&&void 0===n)[t,r,n]=[e,t,r],e=void 0;else if(e){if("object"!=typeof e)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===t&&void 0===r&&void 0===n&&(n=e,e=void 0)}if(e){if(!e.clearValidation||!e.setFeedback)throw new TypeError("'form' is not a Form Component");e={clearValidation:e.clearValidation,setFeedback:e.setFeedback},n?n.form=e:n={form:e}}return[t,r,n]}function s(e){if("string"==typeof e.data||e.data instanceof String)return s({data:e});const t=e.data;return delete e.data,t?(t.meta?t.meta.response=e:t.meta={response:e},t):{meta:{response:e},data:null}}function a(e){if(!1===e||"off"===e)return{...n,success:!1,fail:!1};if(!e||!0===e)return{...n};if("success"===e)return{...n,fail:!1};if("fail"===e)return{...n,success:!1};const{success:t,fail:r,handler:i,combine:s}=e;return e={...n},Object.entries({fail:r,success:t}).forEach(([t,r])=>{void 0!==r&&(e[t]=r)}),Object.entries({handler:i,combine:s}).forEach(([t,r])=>{void 0!==r&&(e[t]={...e[t],...r})}),e}function o(e){const t=a(e?.errorHandling);if(e?.form){const r=t.handler.form;t.handler={...t.handler,form:t=>r(e.form,t)}}else t.combine={...t.combine,form:[]};return t}function d(e){return e.response?404==e.response.status?[{type:"not_found",message:e.message,url:e.request.responseURL}]:null==e.response.data.errors?[]:e.response.data.errors:e.request?[{type:"site_failed",message:e.message,url:e.request.responseURL}]:[{type:"script",message:e.message}]}function u(e,t){const r={},n=[];if(null==t)return{};for(;t.length;)n.push(t.pop());for(var i of n){let n=i.type,a=null;for(var s in e.combine){let t=e.combine[s].includes(n),r=e.handler[s];if(t&&r&&(a=s,"form"==a))break}a&&(n=a);e.handler[n]?(r[n]||(r[n]=[]),Array.isArray(i)?r[n].push(...i):r[n].push(i)):t.push(i)}return r}void 0!==t?.errorHandling&&(n=a(t.errorHandling));const p=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});p.interceptors.request.use(e=>{if("post"!=e.method||!e.data)return e;if(e.data instanceof FormData)return e;if(!Object.values(e.data).every(e=>!(e instanceof FileList)&&(!Array.isArray(e)||e.every(e=>!(e instanceof File))))){const t=Object.entries(e.data).reduce((e,[t,r])=>{if(r instanceof FileList)for(const n of r)e.FormData.append(t+(r.length>1?"[]":""),n);else Array.isArray(r)?r.every(e=>!(e instanceof File))?e.jsondata[t]=r:r.forEach(n=>e.FormData.append(t+(r.length>1?"[]":""),n)):e.jsondata[t]=r;return e},{FormData:new FormData,jsondata:{}});t.FormData.append("_jsondata",JSON.stringify(t.jsondata)),e.data=t.FormData}return e}),p.interceptors.response.use(t=>("off"==t.config?.errorHandling||!1===t.config?.errorHandling||"fail"==t.config?.errorHandling||t.data.errors&&(t.data.errors=t.data.errors.filter(r=>(t.config[r.type+"ErrorHandler"]||e.config.globalProperties.$api._defaultErrorHandlers[r.type])(r,t.config))),s(t)),e=>{if("ERR_CANCELED"==e.code)return Promise.reject({handled:!0,...e});const t=o(e.config);if(!t.fail)return Promise.reject(e);const r=d(e),n=u(t,r);for(var i in n)t.handler[i](n[i]);return r.length?Promise.reject(e):Promise.reject({handled:!0,...e})}),e.config.globalProperties.$api={getUri:e=>p.getUri({url:e}),get:(e,t,r,n)=>([t,r,n]=i(e,t,r,n),r&&(n?n.params=r:n={params:r}),p.get(t,n)),post:(e,t,r,n)=>([t,r,n]=i(e,t,r,n),p.post(t,r,n)),call(t,r,n){if(Array.isArray(t)){const s=e.config.globalProperties.$api;return Promise.allSettled(t.map((e,t)=>(Array.isArray(e)||(e=["#"+t,e]),s.call(e[1],{errorHeader:e[0],errorHandling:!1})))).then(e=>{const[,,t]=i(n,void 0,void 0,r||{}),s=o(t);if(!s.success&&!s.fail)return e;const a={};for(var p of e){const[e,t]="fulfilled"===p.status?[s.success,p.value]:[s.fail,p.reason];if(!e)return;const r=u(s,d(t));for(var l in r)a[l]?a[l][t.config.errorHeader]=r[l]:a[l]={[t.config.errorHeader]:r[l]}}for(var g in a)s.handler[g](a[g]);return e})}let{method:s,url:a,params:p,config:l}=t;return void 0!==r&&(l=r),s||(s="get"),s.toLowerCase&&(s=s.toLowerCase()),"get"==s?this.get(n,a,p,l):"post"==s?this.post(n,a,p,l):void console.error("FhcApi: method not allowed:",s)},getErrorHandler:e=>o(e)},e.provide("$api",e.config.globalProperties.$api)}},J={loadCategory:e=>({method:"get",url:"/api/frontend/v1/phrasen/loadModule/"+e}),setLanguage:(e,t)=>({method:"post",url:"/api/frontend/v1/phrasen/setLanguage",params:{categories:e,language:t}}),getLanguage:()=>({method:"get",url:"/api/frontend/v1/phrasen/getLanguage"}),getActiveDbLanguages:()=>({method:"get",url:"/api/frontend/v1/phrasen/getAllLanguages"})};const B=Vue.reactive({}),z={};let w=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),j=Vue.computed(()=>w.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(e=>e.sprache==w.value).LC_Time:null);const G={user_language:w,user_locale:j,setLanguage(e){const t=Object.keys(B);return this.config.globalProperties.$api.call(J.setLanguage(t,e)).then(t=>(t.data.forEach(e=>{B[e.category][e.phrase]=e.text}),w.value=e,t))},loadCategory(e){return Array.isArray(e)?Promise.all(e.map(this.config.globalProperties.$p.loadCategory)):(z[e]||(z[e]=this.config.globalProperties.$api.call(J.loadCategory(e)).then(t=>t?.data?function(e,t){return e.filter(e=>e.category==t).reduce((e,t)=>(e[t.phrase]||(e[t.phrase]=t.text),e),{})}(t.data,e):{}).then(t=>{B[e]=t})),z[e])},t_ref(e,t,r){return console.warn("deprecated"),Vue.computed(()=>this.t(e,t,r))},t(e,t,r){if(void 0===r&&(Array.isArray(e)&&2==e.length||e.split&&2==e.split("/").length)&&(r=t,[e,t]=e.split?e.split("/"):e),void 0===t)return console.error("invalid input",e,t,r),"";let n=Vue.computed(()=>B[e]?function(e,t,r){let n=B[e][t];return n?(r&&(n=n.replace(/\{([^}]*)\}/g,(e,t)=>void 0===r[t]?e:r[t])),n):"<< PHRASE "+t+">>"}(e,t,r):"");return B[e]||this.loadCategory(e),n.value}};var M={install(e,t){e.config.globalProperties.$fhcApi||e.use(T),e.config.globalProperties.$api||e.use(H),e.config.globalProperties.$p={t:G.t,loadCategory:t=>G.loadCategory.call(e,t),setLanguage:t=>G.setLanguage.call(e,t),user_language:w,user_locale:j,t_ref:G.t_ref},e.provide("$p",e.config.globalProperties.$p)}};Vue.createApp({name:"LvzuweisungApp",components:{LvZuweisung:s},computed:{notinframe:()=>window.self===window.top}}).use(M).mount("#wrapper"); +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:e,uid:t,status_message:r,topic:n,requested_change:s}){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:e,uid:t,status_message:r,topic:n,requested_change:s})},denyProfilRequest:function({profil_update_id:e,uid:t,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:e,uid:t,topic:r,status_message:n})},insertFile:function(e,t=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${t}`,e)},getProfilRequestFiles:function(e){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${e}`,{})},selectProfilRequest:function(e=null,t=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...e?{uid:e}:{},...t?{id:t}:{}})},insertProfilRequest:function(e,t,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:e,payload:t,...r?{fileID:r}:{}})},updateProfilRequest:function(e,t,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:e,payload:t,ID:r,...n?{fileID:n}:{}})},deleteProfilRequest:function(e){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/deleteProfilRequest",{requestID:e})}},f={getRoomInfo(e,t,r){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:e,start_date:t,end_date:r})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(e,t,r){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${e}`,{start_date:t,end_date:r})},getLvPlanReservierungen(e,t){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:e,end_date:t})},getLehreinheitStudiensemester(e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${e}`,{})},studiensemesterDateInterval(e){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${e}`,{})},LvPlanEvents(e,t,r){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:e,end_date:t,lv_id:r})}},c={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(e){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:e})}}},students:{uid(e,t){let r="api/frontend/v1/stv/students/"+encodeURIComponent(t)+"/uid/"+encodeURIComponent(e);return this.$fhcApi.getUri(r)},prestudent(e,t){let r="api/frontend/v1/stv/students/"+encodeURIComponent(t)+"/prestudent/"+encodeURIComponent(e);return this.$fhcApi.getUri(r)},person(e,t){let r="api/frontend/v1/stv/students/"+encodeURIComponent(t)+"/person/"+encodeURIComponent(e);return this.$fhcApi.getUri(r)},verband(e){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+e)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(e){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:e})}},konto:{tabulatorConfig(e,t){return e.ajaxURL="api/frontend/v1/stv/konto/get",e.ajaxParams=()=>({person_id:t.modelValue.person_id||t.modelValue.map(e=>e.person_id),only_open:t.filter,studiengang_kz:t.studiengang_kz_intern?t.stg_kz:""}),e.ajaxRequestFunc=(e,t,r)=>this.$fhcApi.post(e,r,t),e.ajaxResponse=(e,t,r)=>r.data,e},checkDoubles(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/konto/checkDoubles",t,{confirmErrorHandler:e=>!0})},insert(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/konto/insert",t)},counter(e){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",e)},edit(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/konto/update",t)},delete(e){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:e})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+r.id)},deleteGroup(e){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",e)}},kontakt:{getAdressen(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+r.id)},addNewAddress(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/addNewAddress/"+t,r)},loadAddress(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:e})},updateAddress(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/updateAddress/"+t,r)},deleteAddress(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:e})},getPlaces(e){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+e)},getFirmen(e){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+e)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+r.id)},addNewBankverbindung(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+t,r)},loadBankverbindung(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:e})},updateBankverbindung(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+t,r)},deleteBankverbindung(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:e})},getKontakte(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+r.id)},addNewContact(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/addNewContact/"+t,r)},loadContact(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:e})},updateContact(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/kontakt/updateContact/"+t,r)},deleteContact(e){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:e})},getStandorteByFirma(e){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+e)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(e,t){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(e)+"/"+encodeURIComponent(t))},updatePrestudent(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/prestudent/updatePrestudent/"+t,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(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+r.id)},getMaxSem(e){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:e})},advanceStatus({prestudent_id:e,status_kurzbz:t,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+e+"/"+t+"/"+r+"/"+n)},confirmStatus({prestudent_id:e,status_kurzbz:t,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+e+"/"+t+"/"+r+"/"+n)},isLastStatus(e){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+e)},deleteStatus({prestudent_id:e,status_kurzbz:t,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+e+"/"+t+"/"+r+"/"+n)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+r.id)}},status:{insertStatus(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/status/insertStatus/"+t,r)},loadStatus({prestudent_id:e,status_kurzbz:t,studiensemester_kurzbz:r,ausbildungssemester:n}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+e+"/"+t+"/"+r+"/"+n)},updateStatus(e,{prestudent_id:t,status_kurzbz:r,studiensemester_kurzbz:n,ausbildungssemester:s},i){return this.$fhcApi.post(e,"api/frontend/v1/stv/status/updateStatus/"+t+"/"+r+"/"+n+"/"+s,i)},getStudienplaene(e){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+e)},getStudiengang(e){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+e)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(e,t){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+e,t,{errorHeader:e})},changeStatus(e,t){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+e,t,{errorHeader:e})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(e,t){let r="api/frontend/v1/stv/student/get/"+encodeURIComponent(e)+"/"+encodeURIComponent(t);return this.$fhcApi.post(r)},save(e,t,r,n){let s="api/frontend/v1/stv/student/save/"+encodeURIComponent(t)+"/"+encodeURIComponent(r);return this.$fhcApi.post(e,s,n)}},exam:{getPruefungen(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+r.id)},loadPruefung(e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+e)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(e){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",e)},getLvsByStudent(e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+e)},getLvsandLesByStudent(e,t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+e+"/"+t)},getLvsAndMas(e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+e)},getMitarbeiterLv(e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+e)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(e){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",e)},addPruefung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/pruefung/insertPruefung/",t)},updatePruefung(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/stv/pruefung/updatePruefung/"+t,r)},deletePruefung(e){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+e)}},abschlusspruefung:{getAbschlusspruefung(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+r.id)},addNewAbschlusspruefung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",t)},loadAbschlusspruefung(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:e})},updateAbschlusspruefung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",t)},deleteAbschlusspruefung(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:e})},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(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:e})},getTypStudiengang(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:e})},getMitarbeiter(e){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+e)},getPruefer(e){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+e)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(e){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:e})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(e,t){let r="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(e);return t&&(r=r+"/"+encodeURIComponent(t)),this.$fhcApi.get(r)},getTeacherProposal(e,t){let r="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(e);return t&&(r=r+"/"+encodeURIComponent(t)),this.$fhcApi.get(r)},getRepeaterGrades(e,t){let r="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(e);return t&&(r=r+"/"+encodeURIComponent(t)),this.$fhcApi.get(r)},updateCertificate({lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r,note:n,lehrveranstaltung_bezeichnung:s}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r,note:n},{errorHeader:s})},deleteCertificate({lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r,lehrveranstaltung_bezeichnung:n}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r},{errorHeader:n})},copyTeacherProposalToCertificate({lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r,lehrveranstaltung_bezeichnung:n}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:e,student_uid:t,studiensemester_kurzbz:r},{errorHeader:n})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:e,lv_bezeichnung:t}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:e},{errorHeader:t})},getGradeFromPoints(e,t,r,n){const s=n?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:e,lehrveranstaltung_id:t,studiensemester_kurzbz:r},s)}},mobility:{getMobilitaeten(e,t,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(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/mobility/insertMobility/",t)},loadMobility(e){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+e)},updateMobility(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/mobility/updateMobility/",t)},deleteMobility(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+e)},getLVList(e){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+e)},getAllLehreinheiten(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",e)},getLvsandLesByStudent(e){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+e)},getPurposes(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+r.id)},getSupports(e,t,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(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+e.bisio_id,e)},addMobilityPurpose(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+e.bisio_id,e)},deleteMobilitySupport(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+e.bisio_id,e)},addMobilitySupport(e){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+e.bisio_id,e)}},archiv:{tabulatorConfig(e,t){return e.ajaxURL="api/frontend/v1/stv/archiv/get",e.ajaxParams=()=>({person_id:t.modelValue.person_id||t.modelValue.map(e=>e.person_id)}),e.ajaxRequestFunc=(e,t,r)=>this.$fhcApi.post(e,r,t),e.ajaxResponse=(e,t,r)=>r.data,e},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(e){return this.$fhcApi.post("api/frontend/v1/documents/archive",e)},archiveSigned(e){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",e)},update(e){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",e)},delete({akte_id:e,studiengang_kz:t}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:e,studiengang_kz:t})}},documents:{getDocumentsUnaccepted(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+r.id+"/"+r.studiengang_kz)},getDocumentsAccepted(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+r.id+"/"+r.studiengang_kz)},deleteZuordnung(e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+e.prestudent_id+"/"+e.dokument_kurzbz)},createZuordnung(e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+e.prestudent_id+"/"+e.dokument_kurzbz)},loadAkte(e){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+e)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(e,t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+e,t)},deleteFile(e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+e)},uploadFile(e,t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+e,t)}},exemptions:{getAnrechnungen(e,t,r){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+r.id)},getLehrveranstaltungen(e){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+e)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(e){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+e)},getLektoren(e){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+e)},addNewAnrechnung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",t)},loadAnrechnung(e){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+e)},editAnrechnung(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",t)},deleteAnrechnung(e){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+e)}},jointstudies:{getStudies(e,t,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(e){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+e)},insertStudy(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",t)},updateStudy(e,t){return this.$fhcApi.post(e,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",t)},deleteStudy(e){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+e)}},courselist:{getCourselist(e,t,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")}},h={person:{getNotizen(e,t,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(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+t,r)},loadNotiz(e){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:e})},loadDokumente(e){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:e})},deleteNotiz(e,t,r){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:e,type_id:t,id:r})},updateNotiz(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+t,r)},getMitarbeiter(e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+e)},isBerechtigt(e,t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}}},v={person:{getAllBetriebsmittel(e,t,r){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+r.type+"/"+r.id)},addNewBetriebsmittel(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+t,r)},loadBetriebsmittel(e){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+e)},updateBetriebsmittel(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+t,r)},deleteBetriebsmittel(e){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+e)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(e){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+e)}}},A={updatePersonUnrulyStatus(e,t){try{const r={person_id:e,unruly:t},n="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(n,r,null)}catch(e){throw e}},filterPerson(e,t=""){try{const r=t+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(r,e)}catch(e){throw e}}},m={getContentID(e){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:e})},getRooms(e,t,r,n,s=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:e,von:t,bis:r,typ:n,personenanzahl:s})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},_={content(e,t=null,r=null,n=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:e,...t?{version:t}:{},...r?{sprache:r}:{},...n?{sichtbar:n}:{}})},getNews(e=1,t=10,r){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:e,page_size:t,sprache:r})},news(e){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:e})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},b={getStudentenMail(e){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:e})},getLvInfo(e,t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/LV/${e}/${t}`,{})},getStudentPruefungen(e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/Pruefungen/${e}`,{})}},$={getLvMenu(e,t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/LvMenu/getLvMenu/${e}/${t}`,{})}},y={person:{getMessages(e,t,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(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+e.id+"/"+e.type_id)},getMsgVarsPrestudent(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+e.id+"/"+e.type_id)},getPersonId(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+e.id+"/"+e.type_id)},getUid(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+e.id+"/"+e.type_id)},getDataVorlage(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+e)},getNameOfDefaultRecipient(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+e.id+"/"+e.type_id)},getPreviewText(e,t){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+e.id+"/"+e.type_id,t)},getReplyData(e){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+e)},sendMessageFromModalContext(e,t,r){return this.$fhcApi.post(e,"api/frontend/v1/messages/messages/sendMessage/"+t,r)},sendMessage(e,t){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+e,t)},deleteMessage(e){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+e)}}},S={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},E={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(e=void 0,t=void 0,r=void 0,n=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:e,studiengang:t,semester:r,studienplan:n})},getStudiengaengeForStudienSemester:function(e){return this.$fhcApi.get(`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${e}`,{})},getStudienplaeneBySemester:function(e,t){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienplaeneBySemester",{studiengang:e,studiensemester:t})},getLvPlanForStudiensemester:function(e,t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${e}/${t}`,{})},getLvEvaluierungInfo:function(e,t){return this.$fhcApi.get(`/api/frontend/v1/Studium/getLvEvaluierungInfo/${e}/${t}`,{})}},T={search:a,phrasen:o,navigation:d,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:u,studstatus:p,profil:l,profilUpdate:g,lvPlan:f,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(e){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${e}`,{})},update:function({bookmark_id:e,url:t,title:r,tag:n=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${e}`,{url:t,title:r})},insert:function({url:e,title:t,tag:r}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:e,title:t,tag:r})}},stv:c,notiz:h,betriebsmittel:v,checkperson:A,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(e){return this.$fhcApi.get(`/api/frontend/v1/Ampeln/confirm/${e}`,{})}},ort:m,cms:_,lehre:b,addons:$,messages:y,vorlagen:S,addons:$,studiengang:{studiengangInformation:function(){return this.$fhcApi.get("/api/frontend/v1/Studgang/getStudiengangInfo",{})},getStudiengangByKz:function(e){return this.$fhcApi.get("/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz",{studiengang_kz:e})}},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",{})}},studium:E,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},C={install:(e,t)=>{if(e.config.globalProperties.$fhcApi)return void(t?.factory&&(console.warn("$fhcApi is DEPRECATED!"),e.config.globalProperties.$fhcApi.factory.addEndpoints(t.factory)));function r(e,t,r,n){if("string"==typeof e&&void 0===n)[t,r,n]=[e,t,r],e=void 0;else if(e){if("object"!=typeof e)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===t&&void 0===r&&void 0===n&&(n=e,e=void 0)}if(e){if(!e.clearValidation||!e.setFeedback)throw new TypeError("'form' is not a Form Component");e={clearValidation:e.clearValidation,setFeedback:e.setFeedback},n?n.form=e:n={form:e}}return[t,r,n]}function n(e){const t=e.data;return delete e.data,t.meta?t.meta.response=e:t.meta={response:e},t}FHC_JS_DATA_STORAGE_OBJECT.app_root,FHC_JS_DATA_STORAGE_OBJECT.ci_router;const s=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});s.interceptors.request.use(e=>{if("post"!=e.method||!e.data)return e;if(e.data instanceof FormData)return e;if(!Object.values(e.data).every(e=>!(e instanceof FileList)&&(!Array.isArray(e)||e.every(e=>!(e instanceof File))))){const t=Object.entries(e.data).reduce((e,[t,r])=>{if(r instanceof FileList)for(const n of r)e.FormData.append(t+(r.length>1?"[]":""),n);else Array.isArray(r)?r.every(e=>!(e instanceof File))?e.jsondata[t]=r:r.forEach(n=>e.FormData.append(t+(r.length>1?"[]":""),n)):e.jsondata[t]=r;return e},{FormData:new FormData,jsondata:{}});t.FormData.append("_jsondata",JSON.stringify(t.jsondata)),e.data=t.FormData}return e}),s.interceptors.response.use(t=>("off"==t.config?.errorHandling||!1===t.config?.errorHandling||"fail"==t.config?.errorHandling||t.data.errors&&(t.data.errors=t.data.errors.filter(r=>(t.config[r.type+"ErrorHandler"]||e.config.globalProperties.$fhcApi._defaultErrorHandlers[r.type])(r,t.config))),n(t)),t=>"ERR_CANCELED"==t.code?Promise.reject({handled:!0,...t}):"off"==t.config?.errorHandling||!1===t.config?.errorHandling||"success"==t.config?.errorHandling?Promise.reject(t):t.response?404==t.response.status?(e.config.globalProperties.$fhcAlert.alertDefault("error",t.message,t.request.responseURL,!0),Promise.reject({handled:!0,...t})):(t.response.data.errors=t.response.data.errors.filter(r=>(t.config[r.type+"ErrorHandler"]||e.config.globalProperties.$fhcApi._defaultErrorHandlers[r.type])(r,t.config)),t.response.data.errors.length?Promise.reject(t):Promise.reject({handled:!0,...t})):t.request?(e.config.globalProperties.$fhcAlert.alertDefault("error",t.message,t.request.responseURL),Promise.reject({handled:!0,...t})):(e.config.globalProperties.$fhcAlert.alertError(t.message),Promise.reject({handled:!0,...t}))),e.config.globalProperties.$fhcApi={getUri:e=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),s.getUri({url:e})),get:(e,t,n,i)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[t,n,i]=r(e,t,n,i),n&&(i?i.params=n:i={params:n}),s.get(t,i)),post:(e,t,n,i)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[t,n,i]=r(e,t,n,i),s.post(t,n,i)),_defaultErrorHandlers:{validation(t,r){const n=e.config.globalProperties.$fhcAlert;return r?.form?(r.form.clearValidation(),r.form.setFeedback(!1,t.messages),!1):Array.isArray(t.messages)?(t.messages.forEach(n.alertError),!1):"object"!=typeof t.messages||(r?.errorHeader?Object.values(t.messages).forEach(t=>n.alertDefault("error",Array.isArray(r.errorHeader)?e.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,t,!0)):Object.entries(t.messages).forEach(([e,t])=>n.alertDefault("error",e,t,!0)),!1)},general(t,r){const n=e.config.globalProperties.$fhcAlert;r?.form?r.form.setFeedback(!1,t.message):r?.errorHeader?n.alertDefault("error",Array.isArray(r.errorHeader)?e.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,t.message,!0):n.alertError(t.message)},php(t){const r=e.config.globalProperties.$fhcAlert;var n="";switch(n+="Message: "+t.message+"\n\n",n+="Filename: "+t.filename+"\n",n+="Line Number: "+t.line+"\n",t.backtrace&&t.backtrace.length&&(n+="\nBacktrace: ",t.backtrace.forEach(e=>{n+="\n\tFile: "+e.file+"\n",n+="\tLine: "+e.line+"\n",n+="\tFunction: "+e.function+"\n"})),t.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":r.alertDefault("warn","PHP "+t.severity,n,!0);break;case"Notice":case"User Notice":case"Runtime Notice":r.alertDefault("info","PHP "+t.severity,n,!0);break;default:n="Type: PHP "+t.severity+"\n\n"+n,r.alertSystemError(n)}},exception(t){const r=e.config.globalProperties.$fhcAlert;var n="";n+="Type: "+t.class+"\n\n",n+="Message: "+t.message+"\n\n",n+="Filename: "+t.filename+"\n",n+="Line Number: "+t.line+"\n",t.backtrace&&t.backtrace.length&&(n+="\nBacktrace: ",t.backtrace.forEach(e=>{n+="\n\tFile: "+e.file+"\n",n+="\tLine: "+e.line+"\n",n+="\tFunction: "+e.function+"\n"})),r.alertSystemError(n)},db(t){const r=e.config.globalProperties.$fhcAlert;var n="";void 0!==t.heading&&(n+=t.heading+"\n\n"),void 0!==t.code&&(n+="Code: "+t.code+"\n\n"),void 0!==t.sql&&(n+="SQL: "+t.sql+"\n\n"),void 0!==t.message?n+="Message: "+t.message+"\n\n":void 0!==t.messages&&(n+="Messages: "+t.messages.join("\n\t")+"\n\n"),void 0!==t.filename&&(n+="Filename: "+t.filename+"\n"),void 0!==t.line&&(n+="Line Number: "+t.line+"\n"),r.alertSystemError(n)},auth(t,r){const n=e.config.globalProperties.$fhcAlert;var s="";s+="Controller name: "+t.controller+"\n",s+="Method name: "+t.method+"\n",s+="Required permissions: "+t.required_permissions,r?.errorHeader?n.alertDefault("error",Array.isArray(r.errorHeader)?e.config.globalProperties.$p.t.apply(null,r.errorHeader):r.errorHeader,t.message,!0):n.alertDefault("error",t.message,s)}}};class i{constructor(t,r){void 0===r?(this.$fhcApi={getUri:t=>(console.warn("$fhcApi.factory is DEPRECATED!"),e.config.globalProperties.$fhcApi.getUri(t)),get:(t,r,n,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),e.config.globalProperties.$fhcApi.get(t,r,n,s)),post:(t,r,n,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),e.config.globalProperties.$fhcApi.post(t,r,n,s))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),e.config.globalProperties.$fhcApi.factory)}),e.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(r||this).$fhcApi}}),this.addEndpoints(t,!0)}addEndpoints(e,t){Object.keys(e).forEach(t=>{Object.defineProperty(this,t,{get(){return"function"==typeof e[t]?e[t].bind(this):new i(e[t],this.$fhcApi.factory)}})}),t||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const a=new i(T);t?.factory&&(console.warn("$fhcApi is DEPRECATED!"),a.addEndpoints(t.factory)),e.config.globalProperties.$fhcApi.factory=a,e.provide("$fhcApi",e.config.globalProperties.$fhcApi)}};const P="error",k="retval",O={get:function(e,t,r=null){return O._axiosCall(e,t,"get",r)},post:function(e,t,r=null){return O._axiosCall(e,t,"post",r)},isSuccess:function(e){return!("object"!=typeof e||!e.hasOwnProperty(P)||!e.hasOwnProperty(k)||0!=e.error)},isError:function(e){return!O.isSuccess(e)},hasData:function(e){return!(!O.isSuccess(e)||!("object"==typeof e[k]&&Object.keys(e[k]).length>0||"array"==typeof e[k]&&e[k].length>0||"string"==typeof e[k]&&""!=e[k].trim()||"number"==typeof e[k]))},getData:function(e){return O.hasData(e)?e[k]:null},getError:function(e){return"object"==typeof e&&Object.keys(e).length>0&&e.hasOwnProperty(k)?e[k]:"Generic error"},getErrorCode:function(e){return"object"==typeof e&&e.hasOwnProperty(P)?e[P]:1},_generateRouterURI:function(e){var t=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(t=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+e),t},_printDebug:function(e,t,r){},_axiosCall:function(e,t,r,n){let s={method:r,url:O._generateRouterURI(e),timeout:5e3};if("get"==r?s.params=t:s.data=t,"object"==typeof n)for(var i in n)s[i]=n[i];return axios(s)}},F=document.createElement("div"),D=Vue.createApp({name:"FhcAlertApp",components:{PvToast:t,PvConfirm:r},methods:{mailToUrl:e=>"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: "+e.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(e){bootstrap.Collapse.getOrCreateInstance(e.target.getAttribute("href")).toggle()}},unmounted(){F.parentElement.removeChild(F)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});D.use(e),D.use(n);const R=D.mount(F);document.body.appendChild(F);var L={install:(e,t)=>{e.config.globalProperties.$p||e.use(M);const r={alertSuccess(e){if(Array.isArray(e))return e.forEach(this.alertSuccess);R.$refs.toast.add({severity:"success",summary:"Info",detail:e,life:1e3})},alertInfo(e){if(Array.isArray(e))return e.forEach(this.alertInfo);R.$refs.toast.add({severity:"info",summary:"Info",detail:e,life:3e3})},alertWarning(e){if(Array.isArray(e))return e.forEach(this.alertWarning);R.$refs.toast.add({severity:"warn",summary:"Achtung",detail:e})},alertError(e){if(Array.isArray(e))return e.forEach(this.alertError);R.$refs.toast.add({severity:"error",summary:"Achtung",detail:e})},alertSystemError(t){if(Array.isArray(t))return t.forEach(this.alertSystemError);R.$refs.alert.add({severity:"error",summary:Vue.computed(()=>e.config.globalProperties.$p.t("alert/systemerror")),detail:t})},confirmDelete:()=>new Promise((t,r)=>{R.$confirm.require({group:"fhcAlertConfirm",header:Vue.computed(()=>e.config.globalProperties.$p.t("alert/attention")),message:Vue.computed(()=>e.config.globalProperties.$p.t("alert/confirm_delete")),acceptLabel:Vue.computed(()=>e.config.globalProperties.$p.t("ui/loeschen")),acceptClass:"p-button-danger",rejectLabel:Vue.computed(()=>e.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:"p-button-secondary",accept(){t(!0)},reject(){t(!1)}})}),confirm:t=>new Promise((r,n)=>{R.$confirm.require({group:t?.group??"fhcAlertConfirm",header:t?.header??Vue.computed(()=>e.config.globalProperties.$p.t("alert/attention")),message:t?.message??"",acceptLabel:t?.acceptLabel??"Ok",acceptClass:t?.acceptClass??"btn btn-primary",rejectLabel:t?.rejectLabel??Vue.computed(()=>e.config.globalProperties.$p.t("ui/abbrechen")),rejectClass:t?.rejectClass??"btn btn-outline-secondary",accept(){r(!0)},reject(){r(!1)}})}),alertDefault(e,t,r,n=!1,s=!1){let i={severity:e,summary:t,detail:r,html:s};n||(i.life=3e3),R.$refs.toast.add(i)},alertMultiple(e,t="info",r="Info",n=!1,s=!1){return!!e.every(e=>"string"==typeof e)&&(e.forEach(e=>this.alertDefault(t,r,e,n,s)),!0)},handleSystemError(e){if(!e.hasOwnProperty("name")||e.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof e)return r.alertSystemError(e);if(Array.isArray(e)&&e.every(e=>"string"==typeof e))return e.every(r.alertSystemError);if(!e.hasOwnProperty("handled")||!e.handled){if("object"==typeof e&&null!==e){let t="";return e.hasOwnProperty("response")&&e.response?.data?.retval?t+="Error Message: "+(e.response.data.retval.message||e.response.data.retval)+"\r\n":e.hasOwnProperty("message")&&(t+="Error Message: "+e.message.toUpperCase()+"\r\n"),e.hasOwnProperty("config")&&e.config.hasOwnProperty("url")&&(t+="Error ConfigURL: "+e.config.url+"\r\n"),e.hasOwnProperty("stack")&&(t+="Error Stack: "+e.stack+"\r\n"),""==t&&(t="Error Message: "+JSON.stringify(e)+"\r\n"),t+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,r.alertSystemError(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)}}},handleSystemMessage(e){if("string"==typeof e)return r.alertWarning(e);if(Array.isArray(e)){if(e.every(e=>"string"==typeof e))return e.every(r.alertWarning);if(e.every(e=>"object"==typeof e)&&null!==msg)return e.every(e=>{e.hasOwnProperty("data")&&e.data.hasOwnProperty("retval")?r.alertWarning(JSON.stringify(e.data.retval)):r.alertSystemError(JSON.stringify(e))})}"object"!=typeof e||null===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):e.hasOwnProperty("data")&&e.data.hasOwnProperty("retval")?r.alertWarning(JSON.stringify(e.data.retval)):r.alertSystemError(JSON.stringify(e))},resetFormValidation(e){const t=new Event("fhc-form-reset");e.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(e=>e.dispatchEvent(t))},handleFormValidation(e,t){if(void 0===t){if(e&&e.nodeType===Node.ELEMENT_NODE)return t=>r.handleFormValidation(t,e)}else if(400==e?.response?.status){let n=O.getError(e.response.data);"object"!=typeof n&&(n=e.response.data),r.resetFormValidation(t);const s=Object.entries(n).filter(([e,r])=>{const n=t.querySelector('[data-fhc-form-validate="'+e+'"]');return!n||(n.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:r})),!1)}).map(e=>e[1]),i=t.querySelector("[data-fhc-form-error]");return void(i&&s.length?i.dispatchEvent(new CustomEvent("fhc-form-error",{detail:s})):s.forEach(r.alertError))}if(400==e?.response?.status){let t=O.getError(e.response.data);r.alertError("object"==typeof t?Object.values(t):t)}else r.handleSystemError(e)}};e.config.globalProperties.$fhcAlert=r,e.provide("$fhcAlert",e.config.globalProperties.$fhcAlert)}},H={install:(e,t)=>{if(e.config.globalProperties.$api)return;function r(e,t){Array.isArray(e)?e.forEach(t):Object.entries(e).forEach(([e,r])=>r.forEach(r=>t(r,e)))}e.config.globalProperties.$fhcAlert||e.use(L);let n={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(e,t){e.clearValidation(),t.forEach(t=>e.setFeedback(!1,t.messages||t.message))},async toast(t){const r=e.config.globalProperties.$p;if(!r)return Promise.reject("Phrasen plugin not loaded!");async function n(e){e=e.reduce((e,t)=>{switch(t.type){case"not_found":case"site_failed":t.message?e[t.message]=[t.url]:e._default=[t.url];break;case"general":e._default||(e._default=[]),e._default.push(t.message);break;case"validation":Object.entries(t.messages).forEach(([t,r])=>{e[t]||(e[t]=[]),Array.isArray(r)?e[t].push(...r):e[t].push(r)})}return e},{});let t=0;const n=await Promise.all(Object.entries(e).sort((e,t)=>["_default"].indexOf(t[0])-["_default"].indexOf(e[0])).map(async([e,n])=>{if("_default"==e){await r.loadCategory("dashboard");e='
    '+r.t("dashboard/general")+"
    "}else e="
    "+e+"
    ";return t+=n.length,e+"
    "+n.join("
    ")+"
    "}));return{counter:t,msgs:n}}let s,i;Array.isArray(t)?({counter:s,msgs:i}=await n(t)):({counter:s,msgs:i}=await Object.entries(t).reduce(async(e,[t,r])=>{const s=await e,{counter:i,msgs:a}=await n(r);return s.counter+=i,s.msgs.push("
    "+t+"
    "+a.join("")+"
    "),s},Promise.resolve({counter:0,msgs:[]}))),await r.loadCategory("ui");const a=r.t("ui/n_errors",{n:s});e.config.globalProperties.$fhcAlert.alertDefault("error",a,"
    "+i.join("")+"
    ",!0,!0)},php(t){r(t,(t,r)=>{var n="";switch(n+="Message: "+t.message+"\n\n",n+="Filename: "+t.filename+"\n",n+="Line Number: "+t.line+"\n",t.backtrace&&t.backtrace.length&&(n+="\nBacktrace: ",t.backtrace.forEach(e=>{n+="\n\tFile: "+e.file+"\n",n+="\tLine: "+e.line+"\n",n+="\tFunction: "+e.function+"\n"})),t.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":r?r+=": PHP "+t.severity:r="PHP "+t.severity,e.config.globalProperties.$fhcAlert.alertDefault("warn",r,n,!0);break;case"Notice":case"User Notice":case"Runtime Notice":r?r+=": PHP "+t.severity:r="PHP "+t.severity,e.config.globalProperties.$fhcAlert.alertDefault("info",r,n,!0);break;default:n="Type: PHP "+t.severity+"\n\n"+n,r&&(n=r+"\n\n"+n),e.config.globalProperties.$fhcAlert.alertSystemError(n)}})},exception(t){r(t,(t,r)=>{var n="";r&&(n+=r+"\n\n"),n+="Type: "+t.class+"\n\n",n+="Message: "+t.message+"\n\n",n+="Filename: "+t.filename+"\n",n+="Line Number: "+t.line+"\n",t.backtrace&&t.backtrace.length&&(n+="\nBacktrace: ",t.backtrace.forEach(e=>{n+="\n\tFile: "+e.file+"\n",n+="\tLine: "+e.line+"\n",n+="\tFunction: "+e.function+"\n"})),e.config.globalProperties.$fhcAlert.alertSystemError(n)})},db(t){r(t,(t,r)=>{var n="";r&&(n+=r+"\n\n"),void 0!==t.heading&&(n+=t.heading+"\n\n"),void 0!==t.code&&(n+="Code: "+t.code+"\n\n"),void 0!==t.sql&&(n+="SQL: "+t.sql+"\n\n"),void 0!==t.message?n+="Message: "+t.message+"\n\n":void 0!==t.messages&&(n+="Messages: "+t.messages.join("\n\t")+"\n\n"),void 0!==t.filename&&(n+="Filename: "+t.filename+"\n"),void 0!==t.line&&(n+="Line Number: "+t.line+"\n"),e.config.globalProperties.$fhcAlert.alertSystemError(n)})},auth(t){r(t,(t,r)=>{r?r+=": "+t.message:r=t.message;var n="";n+="Controller name: "+t.controller+"\n",n+="Method name: "+t.method+"\n",n+="Required permissions: "+t.required_permissions,e.config.globalProperties.$fhcAlert.alertDefault("error",r,n,!0)})}}};function s(e,t,r,n){if("string"==typeof e&&void 0===n)[t,r,n]=[e,t,r],e=void 0;else if(e){if("object"!=typeof e)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===t&&void 0===r&&void 0===n&&(n=e,e=void 0)}if(e){if(!e.clearValidation||!e.setFeedback)throw new TypeError("'form' is not a Form Component");e={clearValidation:e.clearValidation,setFeedback:e.setFeedback},n?n.form=e:n={form:e}}return[t,r,n]}function i(e){if("string"==typeof e.data||e.data instanceof String)return i({data:e});const t=e.data;return delete e.data,t?(t.meta?t.meta.response=e:t.meta={response:e},t):{meta:{response:e},data:null}}function a(e){if(!1===e||"off"===e)return{...n,success:!1,fail:!1};if(!e||!0===e)return{...n};if("success"===e)return{...n,fail:!1};if("fail"===e)return{...n,success:!1};const{success:t,fail:r,handler:s,combine:i}=e;return e={...n},Object.entries({fail:r,success:t}).forEach(([t,r])=>{void 0!==r&&(e[t]=r)}),Object.entries({handler:s,combine:i}).forEach(([t,r])=>{void 0!==r&&(e[t]={...e[t],...r})}),e}function o(e){const t=a(e?.errorHandling);if(e?.form){const r=t.handler.form;t.handler={...t.handler,form:t=>r(e.form,t)}}else t.combine={...t.combine,form:[]};return t}function d(e){return e.response?404==e.response.status?[{type:"not_found",message:e.message,url:e.request.responseURL}]:null==e.response.data.errors?[]:e.response.data.errors:e.request?[{type:"site_failed",message:e.message,url:e.request.responseURL}]:[{type:"script",message:e.message}]}function u(e,t){const r={},n=[];if(null==t)return{};for(;t.length;)n.push(t.pop());for(var s of n){let n=s.type,a=null;for(var i in e.combine){let t=e.combine[i].includes(n),r=e.handler[i];if(t&&r&&(a=i,"form"==a))break}a&&(n=a);e.handler[n]?(r[n]||(r[n]=[]),Array.isArray(s)?r[n].push(...s):r[n].push(s)):t.push(s)}return r}void 0!==t?.errorHandling&&(n=a(t.errorHandling));const p=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});p.interceptors.request.use(e=>{if("post"!=e.method||!e.data)return e;if(e.data instanceof FormData)return e;if(!Object.values(e.data).every(e=>!(e instanceof FileList)&&(!Array.isArray(e)||e.every(e=>!(e instanceof File))))){const t=Object.entries(e.data).reduce((e,[t,r])=>{if(r instanceof FileList)for(const n of r)e.FormData.append(t+(r.length>1?"[]":""),n);else Array.isArray(r)?r.every(e=>!(e instanceof File))?e.jsondata[t]=r:r.forEach(n=>e.FormData.append(t+(r.length>1?"[]":""),n)):e.jsondata[t]=r;return e},{FormData:new FormData,jsondata:{}});t.FormData.append("_jsondata",JSON.stringify(t.jsondata)),e.data=t.FormData}return e}),p.interceptors.response.use(t=>("off"==t.config?.errorHandling||!1===t.config?.errorHandling||"fail"==t.config?.errorHandling||t.data.errors&&(t.data.errors=t.data.errors.filter(r=>(t.config[r.type+"ErrorHandler"]||e.config.globalProperties.$api._defaultErrorHandlers[r.type])(r,t.config))),i(t)),e=>{if("ERR_CANCELED"==e.code)return Promise.reject({handled:!0,...e});const t=o(e.config);if(!t.fail)return Promise.reject(e);const r=d(e),n=u(t,r);for(var s in n)t.handler[s](n[s]);return r.length?Promise.reject(e):Promise.reject({handled:!0,...e})}),e.config.globalProperties.$api={getUri:e=>p.getUri({url:e}),get:(e,t,r,n)=>([t,r,n]=s(e,t,r,n),r&&(n?n.params=r:n={params:r}),p.get(t,n)),post:(e,t,r,n)=>([t,r,n]=s(e,t,r,n),p.post(t,r,n)),call(t,r,n){if(Array.isArray(t)){const i=e.config.globalProperties.$api;return Promise.allSettled(t.map((e,t)=>(Array.isArray(e)||(e=["#"+t,e]),i.call(e[1],{errorHeader:e[0],errorHandling:!1})))).then(e=>{const[,,t]=s(n,void 0,void 0,r||{}),i=o(t);if(!i.success&&!i.fail)return e;const a={};for(var p of e){const[e,t]="fulfilled"===p.status?[i.success,p.value]:[i.fail,p.reason];if(!e)return;const r=u(i,d(t));for(var l in r)a[l]?a[l][t.config.errorHeader]=r[l]:a[l]={[t.config.errorHeader]:r[l]}}for(var g in a)i.handler[g](a[g]);return e})}let{method:i,url:a,params:p,config:l}=t;return void 0!==r&&(l=r),i||(i="get"),i.toLowerCase&&(i=i.toLowerCase()),"get"==i?this.get(n,a,p,l):"post"==i?this.post(n,a,p,l):void console.error("FhcApi: method not allowed:",i)},getErrorHandler:e=>o(e)},e.provide("$api",e.config.globalProperties.$api)}},B={loadCategory:e=>({method:"get",url:"/api/frontend/v1/phrasen/loadModule/"+e}),setLanguage:(e,t)=>({method:"post",url:"/api/frontend/v1/phrasen/setLanguage",params:{categories:e,language:t}}),getLanguage:()=>({method:"get",url:"/api/frontend/v1/phrasen/getLanguage"}),getActiveDbLanguages:()=>({method:"get",url:"/api/frontend/v1/phrasen/getAllLanguages"})};const J=Vue.reactive({}),w={};let z=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),j=Vue.computed(()=>z.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(e=>e.sprache==z.value).LC_Time:null);const G={user_language:z,user_locale:j,setLanguage(e){const t=Object.keys(J);return this.config.globalProperties.$api.call(B.setLanguage(t,e)).then(t=>(t.data.forEach(e=>{J[e.category][e.phrase]=e.text}),z.value=e,t))},loadCategory(e){return Array.isArray(e)?Promise.all(e.map(this.config.globalProperties.$p.loadCategory)):(w[e]||(w[e]=this.config.globalProperties.$api.call(B.loadCategory(e)).then(t=>t?.data?function(e,t){return e.filter(e=>e.category==t).reduce((e,t)=>(e[t.phrase]||(e[t.phrase]=t.text),e),{})}(t.data,e):{}).then(t=>{J[e]=t})),w[e])},t_ref(e,t,r){return console.warn("deprecated"),Vue.computed(()=>this.t(e,t,r))},t(e,t,r){if(void 0===r&&(Array.isArray(e)&&2==e.length||e.split&&2==e.split("/").length)&&(r=t,[e,t]=e.split?e.split("/"):e),void 0===t)return console.error("invalid input",e,t,r),"";let n=Vue.computed(()=>J[e]?function(e,t,r){let n=J[e][t];return n?(r&&(n=n.replace(/\{([^}]*)\}/g,(e,t)=>void 0===r[t]?e:r[t])),n):"<< PHRASE "+t+">>"}(e,t,r):"");return J[e]||this.loadCategory(e),n.value}};var M={install(e,t){e.config.globalProperties.$fhcApi||e.use(C),e.config.globalProperties.$api||e.use(H),e.config.globalProperties.$p={t:G.t,loadCategory:t=>G.loadCategory.call(e,t),setLanguage:t=>G.setLanguage.call(e,t),user_language:z,user_locale:j,t_ref:G.t_ref},e.provide("$p",e.config.globalProperties.$p)}};Vue.createApp({name:"LvzuweisungApp",components:{LvZuweisung:i},computed:{notinframe:()=>window.self===window.top}}).use(M).mount("#wrapper"); //# sourceMappingURL=Lvzuweisung.js.map diff --git a/public/dist/js/apps/lehre/Antrag/Lvzuweisung.js.map b/public/dist/js/apps/lehre/Antrag/Lvzuweisung.js.map index 5cd36305d..2ec0576ef 100644 --- a/public/dist/js/apps/lehre/Antrag/Lvzuweisung.js.map +++ b/public/dist/js/apps/lehre/Antrag/Lvzuweisung.js.map @@ -1 +1 @@ -{"version":3,"file":"Lvzuweisung.js","sources":["../../../../../js/components/Studierendenantrag/Status.js","../../../../../js/api/factory/studstatus/wiederholung.js","../../../../../js/components/Studierendenantrag/Lvzuweisung.js","../../../../../js/api/search.js","../../../../../js/api/phrasen.js","../../../../../js/api/navigation.js","../../../../../js/api/filter.js","../../../../../js/api/studstatus.js","../../../../../js/api/profil.js","../../../../../js/api/profilUpdate.js","../../../../../js/api/lvPlan.js","../../../../../js/api/stv.js","../../../../../js/api/stv/verband.js","../../../../../js/api/stv/students.js","../../../../../js/api/stv/filter.js","../../../../../js/api/stv/konto.js","../../../../../js/api/stv/group.js","../../../../../js/api/stv/kontakt.js","../../../../../js/api/stv/prestudent.js","../../../../../js/api/stv/status.js","../../../../../js/api/stv/details.js","../../../../../js/api/stv/exam.js","../../../../../js/api/stv/abschlusspruefung.js","../../../../../js/api/stv/grades.js","../../../../../js/api/stv/mobility.js","../../../../../js/api/stv/archiv.js","../../../../../js/api/stv/documents.js","../../../../../js/api/stv/exemptions.js","../../../../../js/api/stv/jointstudies.js","../../../../../js/api/stv/courselist.js","../../../../../js/api/notiz.js","../../../../../js/api/notiz/person.js","../../../../../js/api/betriebsmittel.js","../../../../../js/api/betriebsmittel/person.js","../../../../../js/api/checkperson.js","../../../../../js/api/ort.js","../../../../../js/api/cms.js","../../../../../js/api/lehre.js","../../../../../js/api/addons.js","../../../../../js/api/messages.js","../../../../../js/api/messages/person.js","../../../../../js/api/vorlagen.js","../../../../../js/api/studium.js","../../../../../js/api/fhcapifactory.js","../../../../../js/api/dashboard.js","../../../../../js/api/bookmark.js","../../../../../js/api/ampeln.js","../../../../../js/api/studiengang.js","../../../../../js/api/menu.js","../../../../../js/api/authinfo.js","../../../../../js/api/language.js","../../../../../js/plugin/OldFhcApi.js","../../../../../js/RESTClient.js","../../../../../js/plugins/FhcAlert.js","../../../../../js/plugins/Api.js","../../../../../js/api/factory/phrasen.js","../../../../../js/plugins/Phrasen.js","../../../../../js/apps/lehre/Antrag/Lvzuweisung.js"],"sourcesContent":["export default {\n\tprops: {\n\t\tmsg: String,\n\t\tseverity: String\n\t},\n\tcomputed: {\n\t\tseverityClass() {\n\t\t\treturn 'alert-' + this.severity;\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t
    \n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tgetLvs(antrag_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tcancel(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/saveLvs',\n\t\t\tparams: {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t}\n\t\t};\n\t}\n};","import StudierendenantragStatus from './Status.js';\n\nimport ApiStudstatusWiederholung from '../../api/factory/studstatus/wiederholung.js';\n\nexport default {\n\tcomponents: {\n\t\tStudierendenantragStatus\n\t},\n\tprops: {\n\t\tantragId: Number,\n\t\tinitialStatusCode: String,\n\t\tinitialStatusMsg: String,\n\t\tdisabled: Boolean\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlvs: [],\n\t\t\tisloading: false,\n\t\t\tstatusCode: '',\n\t\t\tstatusMsg: ''\n\t\t};\n\t},\n\tcomputed: {\n\t\tlvs1() {\n\t\t\treturn this.lvs[Object.keys(this.lvs).filter(key => key.substr(0, 1) == 1)] || [];\n\t\t},\n\t\tlvs2() {\n\t\t\treturn this.lvs[Object.keys(this.lvs).filter(key => key.substr(0, 1) == 2)] || [];\n\t\t},\n\t\tlvs1sem(){\n\t\t\treturn (Object.keys(this.lvs).filter(key => key.substr(0, 1) == 1).pop() || \"1\").substr(1);\n\t\t},\n\t\tlvs2sem(){\n\t\t\treturn (Object.keys(this.lvs).filter(key => key.substr(0, 1) == 2).pop() || \"2\").substr(1);\n\t\t},\n\t\tstatusSeverity() {\n\t\t\tswitch (this.statusCode) {\n\t\t\t\tcase 0: return 'danger';\n\t\t\t\tdefault: return 'info';\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tsave() {\n\t\t\tthis.isloading = true;\n\t\t\tconst forbiddenLvs = this.lvs1.filter(lv => (lv.antrag_zugelassen || this.lvs.repeat_last)\n\t\t\t && !lv._children).map(lv => ({\n\t\t\t\tstudierendenantrag_id: this.antragId,\n\t\t\t\tlehrveranstaltung_id: lv.lehrveranstaltung_id,\n\t\t\t\tzugelassen: this.lvs.repeat_last ? (lv.antrag_zugelassen ? 1 : 2) : 0,\n\t\t\t\tanmerkung: lv.antrag_anmerkung || \"\",\n\t\t\t\tstudiensemester_kurzbz: this.lvs1sem\n\t\t\t}));\n\t\t\tconst mandatoryLvs = this.lvs2.filter(lv => !lv._children).map(lv => ({\n\t\t\t\tstudierendenantrag_id: this.antragId,\n\t\t\t\tlehrveranstaltung_id: lv.lehrveranstaltung_id,\n\t\t\t\tzugelassen:lv.antrag_zugelassen ? 1 : 2,\n\t\t\t\tanmerkung: lv.antrag_anmerkung || \"\",\n\t\t\t\tstudiensemester_kurzbz: this.lvs2sem\n\t\t\t}));\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStudstatusWiederholung.saveLvs(\n\t\t\t\t\tforbiddenLvs,\n\t\t\t\t\tmandatoryLvs\n\t\t\t\t))\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.$fhcAlert.alertSuccess('Speichern erfolgreich');\n\t\t\t\t\tthis.statusCode = response.data[0].studierendenantrag_statustyp_kurzbz;\n\t\t\t\t\tthis.statusMsg = response.data[0].typ;\n\t\t\t\t\tthis.isloading = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.statusCode = 0;\n\t\t\t\t\tthis.statusMsg = 'Error';\n\t\t\t\t\tthis.isloading = false;\n\t\t\t\t});\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.statusCode = this.initialStatusCode;\n\t\tthis.statusMsg = this.initialStatusMsg;\n\t},\n\tmounted() {\n\t\tthis.$p\n\t\t\t.loadCategory(['ui', 'lehre', 'studierendenantrag', 'global'])\n\t\t\t.then(() => this.$api.call(\n\t\t\t\tApiStudstatusWiederholung.getLvs(this.antragId)\n\t\t\t))\n\t\t\t.then(result => {\n\t\t\t\tlet res = {};\n\t\t\t\tfor (var k in result.data) {\n\t\t\t\t\tif (k === 'repeat_last')\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (result.data[k] === null) {\n\t\t\t\t\t\tconst alert = document.createElement('div');\n\t\t\t\t\t\talert.innerHTML = this.$p.t('studierendenantrag', 'error_stg_last_semester');\n\t\t\t\t\t\talert.className = 'alert alert-warning';\n\t\t\t\t\t\talert.role = 'alert';\n\t\t\t\t\t\tthis.$refs[\"lvtable\" + k.substr(0,1)].append(alert);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tlet lvs = result.data[k].reduce((obj,lv) => {\n\t\t\t\t\t\tobj[lv.studienplan_lehrveranstaltung_id] = lv;\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t}, {});\n\t\t\t\t\tfor (var lv of Object.values(lvs)) {\n\t\t\t\t\t\tif (!lv.studienplan_lehrveranstaltung_id_parent)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tif (!lvs[lv.studienplan_lehrveranstaltung_id_parent])\n\t\t\t\t\t\t\tconsole.error('parent not available');\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (!lvs[lv.studienplan_lehrveranstaltung_id_parent]._children)\n\t\t\t\t\t\t\t\tlvs[lv.studienplan_lehrveranstaltung_id_parent]._children = [];\n\t\t\t\t\t\t\tlvs[lv.studienplan_lehrveranstaltung_id_parent]._children.push(lv);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tres[k] = Object.values(lvs).filter(lv => !lv.studienplan_lehrveranstaltung_id_parent);\n\t\t\t\t\tlet current = res[k];\n\t\t\t\t\tlet index = k.substr(0,1);\n\n\t\t\t\t\tconst options = {\n\t\t\t\t\t\tdata: current,\n\t\t\t\t\t\tdataTree: true,\n\t\t\t\t\t\tdataTreeStartExpanded: true, //start with an expanded tree\n\t\t\t\t\t\tdataTreeChildIndent: 15,\n\t\t\t\t\t\tlayout: \"fitDataStretch\",\n\t\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t\t{title: this.$p.t('ui', 'bezeichnung'), field: \"bezeichnung\"},\n\t\t\t\t\t\t\t{title: this.$p.t('lehre','lehrform'), field: \"lehrform_kurzbz\"},\n\t\t\t\t\t\t\t{title: \"ECTS\", field: \"ects\"},\n\t\t\t\t\t\t\t{title: this.$p.t('lehre','note'), field: \"note\", formatter:(cell, formatterParams, onRendered) => cell.getValue() || \"---\"},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: index == 1 && !result.data.repeat_last ? this.$p.t('studierendenantrag','lv_nicht_zulassen') : this.$p.t('studierendenantrag','lv_wiederholen'),\n\t\t\t\t\t\t\t\tfield: \"antrag_zugelassen\",\n\t\t\t\t\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\t\t\t\t\tlet data = cell.getData();\n\t\t\t\t\t\t\t\t\tif (data._children || !data.zeugnis)\n\t\t\t\t\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t\t\t\t\tlet input = document.createElement('input');\n\t\t\t\t\t\t\t\t\tinput.className = \"form-check-input\";\n\t\t\t\t\t\t\t\t\tinput.type = \"checkbox\";\n\t\t\t\t\t\t\t\t\tinput.role = \"switch\";\n\t\t\t\t\t\t\t\t\tinput.checked = cell.getValue();\n\t\t\t\t\t\t\t\t\tinput.addEventListener('input', () => {\n\t\t\t\t\t\t\t\t\t\tlvs[data.studienplan_lehrveranstaltung_id].antrag_zugelassen = input.checked;\n\t\t\t\t\t\t\t\t\t\tcell.getRow().reformat();\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif (this.disabled) {\n\t\t\t\t\t\t\t\t\t\tinput.disabled = true;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tlet div = document.createElement('div');\n\t\t\t\t\t\t\t\t\tdiv.className = 'form-check form-switch';\n\t\t\t\t\t\t\t\t\tdiv.append(input);\n\n\t\t\t\t\t\t\t\t\treturn div;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: this.$p.t('global','anmerkung'),\n\t\t\t\t\t\t\t\tfield: \"antrag_anmerkung\",\n\t\t\t\t\t\t\t\theaderSort:false,\n\t\t\t\t\t\t\t\ttitleFormatter:(cell, formatterParams, onRendered)=>{\n\t\t\t\t\t\t\t\t\tlet link = document.createElement('a');\n\t\t\t\t\t\t\t\t\tlink.addEventListener('click', (e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tlink.href =\"#\";\n\t\t\t\t\t\t\t\t\tlink.title = this.$p.t('studierendenantrag','anmerkung_tooltip');\n\t\t\t\t\t\t\t\t\tnew bootstrap.Tooltip(link);\n\t\t\t\t\t\t\t\t\tlet tooltip = document.createElement('span');\n\t\t\t\t\t\t\t\t\ttooltip.innerHTML = this.$p.t('global','anmerkung') + \" \";\n\t\t\t\t\t\t\t\t\ttooltip.append(link);\n\n\t\t\t\t\t\t\t\t\tlet icon = document.createElement('i');\n\t\t\t\t\t\t\t\t\tlink.append(icon);\n\t\t\t\t\t\t\t\t\ticon.className = \"fa fa-info-circle\";\n\t\t\t\t\t\t\t\t\ticon.setAttribute(\"aria-hidden\", \"true\");\n\t\t\t\t\t\t\t\t\ticon.style.minWidth = '1em';\n\n\t\t\t\t\t\t\t\t\treturn tooltip;\n\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\t\t\t\t\tif (this.disabled) {\n\t\t\t\t\t\t\t\t\t\treturn cell.getValue() || \"\";\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvar data = cell.getData();\n\t\t\t\t\t\t\t\t\tif (lvs[data.studienplan_lehrveranstaltung_id].antrag_zugelassen)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlet input = document.createElement('input');\n\t\t\t\t\t\t\t\t\t\tinput.className = \"form-control\";\n\t\t\t\t\t\t\t\t\t\tinput.type = \"text\";\n\t\t\t\t\t\t\t\t\t\tinput.value = cell.getValue() || \"\";\n\t\t\t\t\t\t\t\t\t\tinput.addEventListener('input', () => {\n\t\t\t\t\t\t\t\t\t\t\tlvs[data.studienplan_lehrveranstaltung_id].antrag_anmerkung = input.value;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\treturn input;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t};\n\t\t\t\t\tvar table = new Tabulator(this.$refs[\"lvtable\" + k.substr(0,1)], options);\n\t\t\t\t}\n\t\t\t\tthis.lvs = result.data;\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\tthis.isloading = true;\n\t\t\t});\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t{{lvs.repeat_last ? $p.t('studierendenantrag', 'title_lv_wiederholen') : $p.t('studierendenantrag', 'title_lv_nicht_zugelassen')}}\n\t\t\t{{lvs1sem}}\n\t\t\n\t\t
    \n\t\t
    \n\n\t\t\n\t\t\t{{$p.t('studierendenantrag', 'title_lv_wiederholen')}}\n\t\t\t{{lvs2sem}}\n\t\t\n\t\t
    \n\t\t
    \n\n\t\t\n\t
    \n\t
    \n\t\t\n\t
    \n\t`\n}\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektarbeiten(uid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${uid}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektabgaben(detail) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektabgaben`\n\t\t\t, {\n\t\t\t\tprojektarbeit_id: detail.projektarbeit_id,\n\t\t\t\tstudent_uid: detail.student_uid\n\t\t\t}\n\t\t);\n\t},\n\tpostStudentProjektarbeitEndupload(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tpostStudentProjektarbeitZwischenabgabe(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tgetStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) {\n\t\tconst url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`;\n\n\t\twindow.location = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url\n\t},\n\tgetMitarbeiterProjektarbeiten(uid, all) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${all}`\n\t\t\t, {}\n\t\t);\n\t},\n\tpostProjektarbeitAbgabe(termin) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id: termin.paabgabe_id,\n\t\t\tpaabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz,\n\t\t\tdatum: termin.datum,\n\t\t\tfixtermin: termin.fixtermin,\n\t\t\tinsertvon: termin.insertvon,\n\t\t\tkurzbz: termin.kurzbz,\n\t\t\tprojektarbeit_id: termin.projektarbeit_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t\t\n\t},\n\tdeleteProjektarbeitAbgabe(paabgabe_id) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tpostSerientermin(datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids) {\n\t\tconst payload = {\n\t\t\tdatum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postSerientermin';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tfetchDeadlines(person_id) {\n\t\tconst payload = {\n\t\t\tperson_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/fetchDeadlines';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","import LvZuweisung from '../../../components/Studierendenantrag/Lvzuweisung.js';\nimport PluginsPhrasen from '../../../plugins/Phrasen.js';\n\nconst app = Vue.createApp({\n\tname: 'LvzuweisungApp',\n\tcomponents: {\n\t\tLvZuweisung\n\t},\n\tcomputed: {\n\t\tnotinframe() {\n\t\t\treturn window.self === window.top;\n\t\t}\n\t}\n});\napp\n\t.use(PluginsPhrasen)\n\t.mount('#wrapper');"],"names":["ApiStudstatusWiederholung","getDetails","prestudent_id","method","url","getLvs","antrag_id","create","studiensemester","params","cancel","saveLvs","forbiddenLvs","mandatoryLvs","LvZuweisung","components","StudierendenantragStatus","props","msg","String","severity","computed","severityClass","this","template","antragId","Number","initialStatusCode","initialStatusMsg","disabled","Boolean","data","lvs","isloading","statusCode","statusMsg","lvs1","Object","keys","filter","key","substr","lvs2","lvs1sem","pop","lvs2sem","statusSeverity","methods","save","lv","antrag_zugelassen","repeat_last","_children","map","studierendenantrag_id","lehrveranstaltung_id","zugelassen","anmerkung","antrag_anmerkung","studiensemester_kurzbz","$api","call","then","response","$fhcAlert","alertSuccess","studierendenantrag_statustyp_kurzbz","typ","catch","error","created","mounted","$p","loadCategory","result","res","k","alert","document","createElement","innerHTML","t","className","role","$refs","append","reduce","obj","studienplan_lehrveranstaltung_id","values","studienplan_lehrveranstaltung_id_parent","push","console","current","index","options","dataTree","dataTreeStartExpanded","dataTreeChildIndent","layout","columns","title","field","formatter","cell","formatterParams","onRendered","getValue","getData","zeugnis","input","type","checked","addEventListener","getRow","reformat","div","headerSort","titleFormatter","link","e","preventDefault","href","bootstrap","Tooltip","tooltip","icon","setAttribute","style","minWidth","value","Tabulator","handleSystemError","search","searchsettings","config","$fhcApi","post","searchAdvanced","searchdummy","phrasen$1","category","get","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","getHeader","navigation_page","getMenu","filter$1","saveCustomFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","studstatus","abmeldung","undefined","stdsem","grund","errorHandling","Array","isArray","Promise","allSettled","antrag","errorHeader","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","leitung","getStgs","getAntraege","getHistory","getPrestudents","query","signal","timeout","approve","a","reject","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","uid","FHC_JS_DATA_STORAGE_OBJECT","app_root","ci_router","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","replace","getProfilRequestFiles","requestID","selectProfilRequest","id","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","set","students","encodeURIComponent","getUri","prestudent","person","person_id","relative_path","getStg","setStg","studiengang_kz","konto","tabulatorConfig","self","ajaxURL","ajaxParams","modelValue","only_open","studiengang_kz_intern","stg_kz","ajaxRequestFunc","ajaxResponse","checkDoubles","form","confirmErrorHandler","insert","counter","edit","delete","buchungsnr","getBuchungstypen","group","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","status","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","semester","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","update","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","formData","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","event","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","getStudentProjektarbeiten","getStudentProjektabgaben","detail","projektarbeit_id","postStudentProjektarbeitEndupload","Headers","postStudentProjektarbeitZwischenabgabe","getStudentProjektarbeitAbgabeFile","paabgabe_id","window","location","getMitarbeiterProjektarbeiten","all","postProjektarbeitAbgabe","termin","paabgabetyp_kurzbz","bezeichnung","fixtermin","insertvon","kurzbz","deleteProjektarbeitAbgabe","postSerientermin","projektarbeit_ids","fetchDeadlines","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","tag","ampeln","open","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","globalProperties","factory","warn","addEndpoints","_get_config","uri","TypeError","clearValidation","setFeedback","_clean_return_value","meta","fhcApiAxios","baseURL","interceptors","request","use","FormData","every","item","FileList","i","File","newData","entries","nd","file","length","jsondata","forEach","JSON","stringify","errors","err","_defaultErrorHandlers","code","handled","alertDefault","message","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","alertSystemError","exception","class","db","heading","sql","join","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","bind","provide","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","hasOwnProperty","isError","hasData","trim","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","prop","helperAppContainer","helperApp","Vue","createApp","name","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","called_path","called_method","openMessagecard","Collapse","getOrCreateInstance","target","getAttribute","toggle","unmounted","parentElement","removeChild","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","mount","body","appendChild","FhcAlert","FhcPhrasen","toast","add","summary","life","alertInfo","alertWarning","confirmDelete","resolve","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","html","alertMultiple","messageArray","toLowerCase","errMsg","retval","toUpperCase","stack","handleSystemMessage","resetFormValidation","Event","querySelectorAll","el","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","success","fail","combine","handler","async","_format_toast","_default","msgs","sort","b","indexOf","n_errors","n","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","includes","newTypeHasHandler","errorConfig","remaining","configoverwrite","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","ref","user_locale","server_languages","find","LC_Time","catArray","row","phrase","text","elem","extractCategory","t_ref","split","val","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang","notinframe","top"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Lvzuweisung.js","sources":["../../../../../js/components/Studierendenantrag/Status.js","../../../../../js/api/factory/studstatus/wiederholung.js","../../../../../js/components/Studierendenantrag/Lvzuweisung.js","../../../../../js/api/search.js","../../../../../js/api/phrasen.js","../../../../../js/api/navigation.js","../../../../../js/api/filter.js","../../../../../js/api/studstatus.js","../../../../../js/api/profil.js","../../../../../js/api/profilUpdate.js","../../../../../js/api/lvPlan.js","../../../../../js/api/stv.js","../../../../../js/api/stv/verband.js","../../../../../js/api/stv/students.js","../../../../../js/api/stv/filter.js","../../../../../js/api/stv/konto.js","../../../../../js/api/stv/group.js","../../../../../js/api/stv/kontakt.js","../../../../../js/api/stv/prestudent.js","../../../../../js/api/stv/status.js","../../../../../js/api/stv/details.js","../../../../../js/api/stv/exam.js","../../../../../js/api/stv/abschlusspruefung.js","../../../../../js/api/stv/grades.js","../../../../../js/api/stv/mobility.js","../../../../../js/api/stv/archiv.js","../../../../../js/api/stv/documents.js","../../../../../js/api/stv/exemptions.js","../../../../../js/api/stv/jointstudies.js","../../../../../js/api/stv/courselist.js","../../../../../js/api/notiz.js","../../../../../js/api/notiz/person.js","../../../../../js/api/betriebsmittel.js","../../../../../js/api/betriebsmittel/person.js","../../../../../js/api/checkperson.js","../../../../../js/api/ort.js","../../../../../js/api/cms.js","../../../../../js/api/lehre.js","../../../../../js/api/addons.js","../../../../../js/api/messages.js","../../../../../js/api/messages/person.js","../../../../../js/api/vorlagen.js","../../../../../js/api/studium.js","../../../../../js/api/fhcapifactory.js","../../../../../js/api/dashboard.js","../../../../../js/api/bookmark.js","../../../../../js/api/ampeln.js","../../../../../js/api/studiengang.js","../../../../../js/api/menu.js","../../../../../js/api/authinfo.js","../../../../../js/api/language.js","../../../../../js/plugin/OldFhcApi.js","../../../../../js/RESTClient.js","../../../../../js/plugins/FhcAlert.js","../../../../../js/plugins/Api.js","../../../../../js/api/factory/phrasen.js","../../../../../js/plugins/Phrasen.js","../../../../../js/apps/lehre/Antrag/Lvzuweisung.js"],"sourcesContent":["export default {\n\tprops: {\n\t\tmsg: String,\n\t\tseverity: String\n\t},\n\tcomputed: {\n\t\tseverityClass() {\n\t\t\treturn 'alert-' + this.severity;\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t
    \n\t`\n}\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tgetLvs(antrag_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tcancel(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/saveLvs',\n\t\t\tparams: {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t}\n\t\t};\n\t}\n};","import StudierendenantragStatus from './Status.js';\n\nimport ApiStudstatusWiederholung from '../../api/factory/studstatus/wiederholung.js';\n\nexport default {\n\tcomponents: {\n\t\tStudierendenantragStatus\n\t},\n\tprops: {\n\t\tantragId: Number,\n\t\tinitialStatusCode: String,\n\t\tinitialStatusMsg: String,\n\t\tdisabled: Boolean\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tlvs: [],\n\t\t\tisloading: false,\n\t\t\tstatusCode: '',\n\t\t\tstatusMsg: ''\n\t\t};\n\t},\n\tcomputed: {\n\t\tlvs1() {\n\t\t\treturn this.lvs[Object.keys(this.lvs).filter(key => key.substr(0, 1) == 1)] || [];\n\t\t},\n\t\tlvs2() {\n\t\t\treturn this.lvs[Object.keys(this.lvs).filter(key => key.substr(0, 1) == 2)] || [];\n\t\t},\n\t\tlvs1sem(){\n\t\t\treturn (Object.keys(this.lvs).filter(key => key.substr(0, 1) == 1).pop() || \"1\").substr(1);\n\t\t},\n\t\tlvs2sem(){\n\t\t\treturn (Object.keys(this.lvs).filter(key => key.substr(0, 1) == 2).pop() || \"2\").substr(1);\n\t\t},\n\t\tstatusSeverity() {\n\t\t\tswitch (this.statusCode) {\n\t\t\t\tcase 0: return 'danger';\n\t\t\t\tdefault: return 'info';\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tsave() {\n\t\t\tthis.isloading = true;\n\t\t\tconst forbiddenLvs = this.lvs1.filter(lv => (lv.antrag_zugelassen || this.lvs.repeat_last)\n\t\t\t && !lv._children).map(lv => ({\n\t\t\t\tstudierendenantrag_id: this.antragId,\n\t\t\t\tlehrveranstaltung_id: lv.lehrveranstaltung_id,\n\t\t\t\tzugelassen: this.lvs.repeat_last ? (lv.antrag_zugelassen ? 1 : 2) : 0,\n\t\t\t\tanmerkung: lv.antrag_anmerkung || \"\",\n\t\t\t\tstudiensemester_kurzbz: this.lvs1sem\n\t\t\t}));\n\t\t\tconst mandatoryLvs = this.lvs2.filter(lv => !lv._children).map(lv => ({\n\t\t\t\tstudierendenantrag_id: this.antragId,\n\t\t\t\tlehrveranstaltung_id: lv.lehrveranstaltung_id,\n\t\t\t\tzugelassen:lv.antrag_zugelassen ? 1 : 2,\n\t\t\t\tanmerkung: lv.antrag_anmerkung || \"\",\n\t\t\t\tstudiensemester_kurzbz: this.lvs2sem\n\t\t\t}));\n\t\t\tthis.$api\n\t\t\t\t.call(ApiStudstatusWiederholung.saveLvs(\n\t\t\t\t\tforbiddenLvs,\n\t\t\t\t\tmandatoryLvs\n\t\t\t\t))\n\t\t\t\t.then(response => {\n\t\t\t\t\tthis.$fhcAlert.alertSuccess('Speichern erfolgreich');\n\t\t\t\t\tthis.statusCode = response.data[0].studierendenantrag_statustyp_kurzbz;\n\t\t\t\t\tthis.statusMsg = response.data[0].typ;\n\t\t\t\t\tthis.isloading = false;\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tthis.statusCode = 0;\n\t\t\t\t\tthis.statusMsg = 'Error';\n\t\t\t\t\tthis.isloading = false;\n\t\t\t\t});\n\t\t}\n\t},\n\tcreated() {\n\t\tthis.statusCode = this.initialStatusCode;\n\t\tthis.statusMsg = this.initialStatusMsg;\n\t},\n\tmounted() {\n\t\tthis.$p\n\t\t\t.loadCategory(['ui', 'lehre', 'studierendenantrag', 'global'])\n\t\t\t.then(() => this.$api.call(\n\t\t\t\tApiStudstatusWiederholung.getLvs(this.antragId)\n\t\t\t))\n\t\t\t.then(result => {\n\t\t\t\tlet res = {};\n\t\t\t\tfor (var k in result.data) {\n\t\t\t\t\tif (k === 'repeat_last')\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (result.data[k] === null) {\n\t\t\t\t\t\tconst alert = document.createElement('div');\n\t\t\t\t\t\talert.innerHTML = this.$p.t('studierendenantrag', 'error_stg_last_semester');\n\t\t\t\t\t\talert.className = 'alert alert-warning';\n\t\t\t\t\t\talert.role = 'alert';\n\t\t\t\t\t\tthis.$refs[\"lvtable\" + k.substr(0,1)].append(alert);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tlet lvs = result.data[k].reduce((obj,lv) => {\n\t\t\t\t\t\tobj[lv.studienplan_lehrveranstaltung_id] = lv;\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t}, {});\n\t\t\t\t\tfor (var lv of Object.values(lvs)) {\n\t\t\t\t\t\tif (!lv.studienplan_lehrveranstaltung_id_parent)\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tif (!lvs[lv.studienplan_lehrveranstaltung_id_parent])\n\t\t\t\t\t\t\tconsole.error('parent not available');\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (!lvs[lv.studienplan_lehrveranstaltung_id_parent]._children)\n\t\t\t\t\t\t\t\tlvs[lv.studienplan_lehrveranstaltung_id_parent]._children = [];\n\t\t\t\t\t\t\tlvs[lv.studienplan_lehrveranstaltung_id_parent]._children.push(lv);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tres[k] = Object.values(lvs).filter(lv => !lv.studienplan_lehrveranstaltung_id_parent);\n\t\t\t\t\tlet current = res[k];\n\t\t\t\t\tlet index = k.substr(0,1);\n\n\t\t\t\t\tconst options = {\n\t\t\t\t\t\tdata: current,\n\t\t\t\t\t\tdataTree: true,\n\t\t\t\t\t\tdataTreeStartExpanded: true, //start with an expanded tree\n\t\t\t\t\t\tdataTreeChildIndent: 15,\n\t\t\t\t\t\tlayout: \"fitDataStretch\",\n\t\t\t\t\t\tcolumns: [\n\t\t\t\t\t\t\t{title: this.$p.t('ui', 'bezeichnung'), field: \"bezeichnung\"},\n\t\t\t\t\t\t\t{title: this.$p.t('lehre','lehrform'), field: \"lehrform_kurzbz\"},\n\t\t\t\t\t\t\t{title: \"ECTS\", field: \"ects\"},\n\t\t\t\t\t\t\t{title: this.$p.t('lehre','note'), field: \"note\", formatter:(cell, formatterParams, onRendered) => cell.getValue() || \"---\"},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: index == 1 && !result.data.repeat_last ? this.$p.t('studierendenantrag','lv_nicht_zulassen') : this.$p.t('studierendenantrag','lv_wiederholen'),\n\t\t\t\t\t\t\t\tfield: \"antrag_zugelassen\",\n\t\t\t\t\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\t\t\t\t\tlet data = cell.getData();\n\t\t\t\t\t\t\t\t\tif (data._children || !data.zeugnis)\n\t\t\t\t\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t\t\t\t\tlet input = document.createElement('input');\n\t\t\t\t\t\t\t\t\tinput.className = \"form-check-input\";\n\t\t\t\t\t\t\t\t\tinput.type = \"checkbox\";\n\t\t\t\t\t\t\t\t\tinput.role = \"switch\";\n\t\t\t\t\t\t\t\t\tinput.checked = cell.getValue();\n\t\t\t\t\t\t\t\t\tinput.addEventListener('input', () => {\n\t\t\t\t\t\t\t\t\t\tlvs[data.studienplan_lehrveranstaltung_id].antrag_zugelassen = input.checked;\n\t\t\t\t\t\t\t\t\t\tcell.getRow().reformat();\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tif (this.disabled) {\n\t\t\t\t\t\t\t\t\t\tinput.disabled = true;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tlet div = document.createElement('div');\n\t\t\t\t\t\t\t\t\tdiv.className = 'form-check form-switch';\n\t\t\t\t\t\t\t\t\tdiv.append(input);\n\n\t\t\t\t\t\t\t\t\treturn div;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttitle: this.$p.t('global','anmerkung'),\n\t\t\t\t\t\t\t\tfield: \"antrag_anmerkung\",\n\t\t\t\t\t\t\t\theaderSort:false,\n\t\t\t\t\t\t\t\ttitleFormatter:(cell, formatterParams, onRendered)=>{\n\t\t\t\t\t\t\t\t\tlet link = document.createElement('a');\n\t\t\t\t\t\t\t\t\tlink.addEventListener('click', (e) => {\n\t\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tlink.href =\"#\";\n\t\t\t\t\t\t\t\t\tlink.title = this.$p.t('studierendenantrag','anmerkung_tooltip');\n\t\t\t\t\t\t\t\t\tnew bootstrap.Tooltip(link);\n\t\t\t\t\t\t\t\t\tlet tooltip = document.createElement('span');\n\t\t\t\t\t\t\t\t\ttooltip.innerHTML = this.$p.t('global','anmerkung') + \" \";\n\t\t\t\t\t\t\t\t\ttooltip.append(link);\n\n\t\t\t\t\t\t\t\t\tlet icon = document.createElement('i');\n\t\t\t\t\t\t\t\t\tlink.append(icon);\n\t\t\t\t\t\t\t\t\ticon.className = \"fa fa-info-circle\";\n\t\t\t\t\t\t\t\t\ticon.setAttribute(\"aria-hidden\", \"true\");\n\t\t\t\t\t\t\t\t\ticon.style.minWidth = '1em';\n\n\t\t\t\t\t\t\t\t\treturn tooltip;\n\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\t\t\t\t\tif (this.disabled) {\n\t\t\t\t\t\t\t\t\t\treturn cell.getValue() || \"\";\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvar data = cell.getData();\n\t\t\t\t\t\t\t\t\tif (lvs[data.studienplan_lehrveranstaltung_id].antrag_zugelassen)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tlet input = document.createElement('input');\n\t\t\t\t\t\t\t\t\t\tinput.className = \"form-control\";\n\t\t\t\t\t\t\t\t\t\tinput.type = \"text\";\n\t\t\t\t\t\t\t\t\t\tinput.value = cell.getValue() || \"\";\n\t\t\t\t\t\t\t\t\t\tinput.addEventListener('input', () => {\n\t\t\t\t\t\t\t\t\t\t\tlvs[data.studienplan_lehrveranstaltung_id].antrag_anmerkung = input.value;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\treturn input;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t};\n\t\t\t\t\tvar table = new Tabulator(this.$refs[\"lvtable\" + k.substr(0,1)], options);\n\t\t\t\t}\n\t\t\t\tthis.lvs = result.data;\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tthis.$fhcAlert.handleSystemError(error);\n\t\t\t\tthis.isloading = true;\n\t\t\t});\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\t{{lvs.repeat_last ? $p.t('studierendenantrag', 'title_lv_wiederholen') : $p.t('studierendenantrag', 'title_lv_nicht_zugelassen')}}\n\t\t\t{{lvs1sem}}\n\t\t\n\t\t
    \n\t\t
    \n\n\t\t\n\t\t\t{{$p.t('studierendenantrag', 'title_lv_wiederholen')}}\n\t\t\t{{lvs2sem}}\n\t\t\n\t\t
    \n\t\t
    \n\n\t\t\n\t
    \n\t
    \n\t\t\n\t
    \n\t`\n}\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\t\n\t\t\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","import LvZuweisung from '../../../components/Studierendenantrag/Lvzuweisung.js';\nimport PluginsPhrasen from '../../../plugins/Phrasen.js';\n\nconst app = Vue.createApp({\n\tname: 'LvzuweisungApp',\n\tcomponents: {\n\t\tLvZuweisung\n\t},\n\tcomputed: {\n\t\tnotinframe() {\n\t\t\treturn window.self === window.top;\n\t\t}\n\t}\n});\napp\n\t.use(PluginsPhrasen)\n\t.mount('#wrapper');"],"names":["ApiStudstatusWiederholung","getDetails","prestudent_id","method","url","getLvs","antrag_id","create","studiensemester","params","cancel","saveLvs","forbiddenLvs","mandatoryLvs","LvZuweisung","components","StudierendenantragStatus","props","msg","String","severity","computed","severityClass","this","template","antragId","Number","initialStatusCode","initialStatusMsg","disabled","Boolean","data","lvs","isloading","statusCode","statusMsg","lvs1","Object","keys","filter","key","substr","lvs2","lvs1sem","pop","lvs2sem","statusSeverity","methods","save","lv","antrag_zugelassen","repeat_last","_children","map","studierendenantrag_id","lehrveranstaltung_id","zugelassen","anmerkung","antrag_anmerkung","studiensemester_kurzbz","$api","call","then","response","$fhcAlert","alertSuccess","studierendenantrag_statustyp_kurzbz","typ","catch","error","created","mounted","$p","loadCategory","result","res","k","alert","document","createElement","innerHTML","t","className","role","$refs","append","reduce","obj","studienplan_lehrveranstaltung_id","values","studienplan_lehrveranstaltung_id_parent","push","console","current","index","options","dataTree","dataTreeStartExpanded","dataTreeChildIndent","layout","columns","title","field","formatter","cell","formatterParams","onRendered","getValue","getData","zeugnis","input","type","checked","addEventListener","getRow","reformat","div","headerSort","titleFormatter","link","e","preventDefault","href","bootstrap","Tooltip","tooltip","icon","setAttribute","style","minWidth","value","Tabulator","handleSystemError","search","searchsettings","config","$fhcApi","post","searchAdvanced","searchdummy","phrasen$1","category","get","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","getHeader","navigation_page","getMenu","filter$1","saveCustomFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","studstatus","abmeldung","undefined","stdsem","grund","errorHandling","Array","isArray","Promise","allSettled","antrag","errorHeader","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","leitung","getStgs","getAntraege","getHistory","getPrestudents","query","signal","timeout","approve","a","reject","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","uid","FHC_JS_DATA_STORAGE_OBJECT","app_root","ci_router","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","replace","getProfilRequestFiles","requestID","selectProfilRequest","id","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","set","students","encodeURIComponent","getUri","prestudent","person","person_id","relative_path","getStg","setStg","studiengang_kz","konto","tabulatorConfig","self","ajaxURL","ajaxParams","modelValue","only_open","studiengang_kz_intern","stg_kz","ajaxRequestFunc","ajaxResponse","checkDoubles","form","confirmErrorHandler","insert","counter","edit","delete","buchungsnr","getBuchungstypen","group","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","status","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","semester","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","update","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","formData","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","event","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","tag","ampeln","open","all","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","globalProperties","factory","warn","addEndpoints","_get_config","uri","TypeError","clearValidation","setFeedback","_clean_return_value","meta","fhcApiAxios","baseURL","interceptors","request","use","FormData","every","item","FileList","i","File","newData","entries","nd","file","length","jsondata","forEach","JSON","stringify","errors","err","_defaultErrorHandlers","code","handled","alertDefault","message","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","alertSystemError","exception","class","db","heading","sql","join","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","bind","provide","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","hasOwnProperty","isError","hasData","trim","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","prop","helperAppContainer","helperApp","Vue","createApp","name","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","called_path","called_method","detail","openMessagecard","Collapse","getOrCreateInstance","target","getAttribute","toggle","unmounted","parentElement","removeChild","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","mount","body","appendChild","FhcAlert","FhcPhrasen","toast","add","summary","life","alertInfo","alertWarning","confirmDelete","resolve","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","html","alertMultiple","messageArray","toLowerCase","errMsg","retval","toUpperCase","stack","handleSystemMessage","resetFormValidation","Event","querySelectorAll","el","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","success","fail","combine","handler","async","_format_toast","_default","msgs","sort","b","indexOf","n_errors","n","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","includes","newTypeHasHandler","errorConfig","remaining","configoverwrite","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","ref","user_locale","server_languages","find","LC_Time","catArray","row","phrase","text","elem","extractCategory","t_ref","split","val","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang","notinframe","window","top"],"mappings":"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"} \ No newline at end of file diff --git a/public/dist/js/apps/lehre/Antrag/Student.js b/public/dist/js/apps/lehre/Antrag/Student.js index 64221ce2b..b236f7b4c 100644 --- a/public/dist/js/apps/lehre/Antrag/Student.js +++ b/public/dist/js/apps/lehre/Antrag/Student.js @@ -1,4 +1,4 @@ -import t from"../../../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js?2025121701";import e from"../../../../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js?2025121701";import r from"../../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js?2025121701";import n from"../../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js?2025121701";var s={name:"BootstrapModal",data:()=>({modal:null,fullscreen:!1}),props:{backdrop:{type:[Boolean,String],default:!0,validator:t=>["static",!0,!1].includes(t)},focus:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},noCloseBtn:Boolean,dialogClass:[String,Array,Object],headerClass:{type:[String,Array,Object],default:""},bodyClass:{type:[String,Array,Object],default:"px-4 py-5"},footerClass:{type:[String,Array,Object],default:""},allowFullscreenExpand:{type:Boolean,default:!1}},emits:["hideBsModal","hiddenBsModal","hidePreventedBsModal","showBsModal","shownBsModal"],methods:{dispose(){return this.modal.dispose()},handleUpdate(){return this.modal.handleUpdate()},hide(){return this.modal.hide()},show(t){return this.modal.show(t)},toggle(){return this.modal.toggle()},toggleFullscreen(){this.fullscreen=!this.fullscreen}},mounted(){this.$refs.modal&&(this.modal=new bootstrap.Modal(this.$refs.modal,{backdrop:this.backdrop,focus:this.focus,keyboard:this.keyboard}))},popup(t,e,r,n){const s=this,i={};void 0!==t&&(i.default=()=>t),void 0!==r&&(i.title=()=>r),void 0!==n&&(i.footer=()=>n);let a=!1;return"undefined"!=typeof primevue&&(a=!0),new Promise((t,r)=>{const n=Vue.createApp({name:"ModalTmpApp",setup:()=>()=>Vue.h(s,{class:"fade",...e,ref:"modal","onHidden.bs.modal":n.unmount},i),mounted(){this.$refs.modal.show()},beforeUnmount(){this.$refs.modal&&(!1!==this.$refs.modal.result?t(this.$refs.modal.result):r())},unmounted(){o.parentElement.removeChild(o)}}),o=document.createElement("div");a&&n.use(primevue.config.default,{zIndex:{overlay:9999}}),Promise.resolve().then(function(){return x}).then(t=>{n.use(t.default),n.mount(o),document.body.appendChild(o)})})},template:''},i={name:"BootstrapAlert",components:{BsModal:s},mixins:[s],props:{dialogClass:{type:[String,Array,Object],default:"modal-dialog-centered"},onHideBsModal:Function,onHiddenBsModal:Function,onHidePreventedBsModal:Function,onShowBsModal:Function,onShownBsModal:Function},data:()=>({result:!0}),mounted(){this.modal=this.$refs.modalContainer.modal},popup(t,e){return s.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t'};const a={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t'};var o={getDetails:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t}),getLvs:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getLvs/"+t}),create:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/createAntrag",params:{prestudent_id:t,studiensemester:e}}),cancel:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/cancelAntrag",params:{prestudent_id:t,studiensemester:e}}),saveLvs:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/saveLvs",params:{forbiddenLvs:t,mandatoryLvs:e}})},d={name:"StudierendenantragLeitungLvPopup",components:{CoreFetchCmpt:a},mixins:[i],props:{footer:Boolean,antragId:Number,countRemaining:Number},data:()=>({lvs:null,repeat_last:!1,refresh:!0,result:!1,check:!1}),computed:{lvzugelassen(){let t={};for(let e in this.lvs)t[e]=this.lvs[e]?this.lvs[e].filter(t=>t.antrag_zugelassen):null;return t},lvzugelassenLength(){return Object.values(this.lvzugelassen).reduce((t,e)=>t+(e?e.length:0),0)}},methods:{setlvs(t){this.repeat_last=!!t.repeat_last,this.repeat_last&&delete t.repeat_last,this.lvs=t},loadlvs(){return this.antragId?this.$api.call(o.getLvs(this.antragId)):new Promise(()=>{})},submit(t){this.result=[t,this.check],this.hide()}},watch:{antragId(){Vue.nextTick(()=>{this.refresh=!this.refresh})}},popup(t,e){return"string"==typeof e&&(e={default:e}),i.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t\t\n\t'},p={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)}},u={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",{})}},l={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})}},c={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})}},f={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,s){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:r,datum_wiedereinstieg:n,attachment:s},{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)}}},g={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",{})}},h={ +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 s={name:"BootstrapModal",data:()=>({modal:null,fullscreen:!1}),props:{backdrop:{type:[Boolean,String],default:!0,validator:t=>["static",!0,!1].includes(t)},focus:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},noCloseBtn:Boolean,dialogClass:[String,Array,Object],headerClass:{type:[String,Array,Object],default:""},bodyClass:{type:[String,Array,Object],default:"px-4 py-5"},footerClass:{type:[String,Array,Object],default:""},allowFullscreenExpand:{type:Boolean,default:!1}},emits:["hideBsModal","hiddenBsModal","hidePreventedBsModal","showBsModal","shownBsModal","toggleFullscreen"],methods:{dispose(){return this.modal.dispose()},handleUpdate(){return this.modal.handleUpdate()},hide(){return this.modal.hide()},show(t){return this.modal.show(t)},toggle(){return this.modal.toggle()},toggleFullscreen(){this.fullscreen=!this.fullscreen,this.$emit("toggleFullscreen")}},mounted(){this.$refs.modal&&(this.modal=new bootstrap.Modal(this.$refs.modal,{backdrop:this.backdrop,focus:this.focus,keyboard:this.keyboard}))},popup(t,e,r,n){const s=this,i={};void 0!==t&&(i.default=()=>t),void 0!==r&&(i.title=()=>r),void 0!==n&&(i.footer=()=>n);let a=!1;return"undefined"!=typeof primevue&&(a=!0),new Promise((t,r)=>{const n=Vue.createApp({name:"ModalTmpApp",setup:()=>()=>Vue.h(s,{class:"fade",...e,ref:"modal","onHidden.bs.modal":n.unmount},i),mounted(){this.$refs.modal.show()},beforeUnmount(){this.$refs.modal&&(!1!==this.$refs.modal.result?t(this.$refs.modal.result):r())},unmounted(){o.parentElement.removeChild(o)}}),o=document.createElement("div");a&&n.use(primevue.config.default,{zIndex:{overlay:9999}}),Promise.resolve().then(function(){return x}).then(t=>{n.use(t.default),n.mount(o),document.body.appendChild(o)})})},template:''},i={name:"BootstrapAlert",components:{BsModal:s},mixins:[s],props:{dialogClass:{type:[String,Array,Object],default:"modal-dialog-centered"},onHideBsModal:Function,onHiddenBsModal:Function,onHidePreventedBsModal:Function,onShowBsModal:Function,onShownBsModal:Function},data:()=>({result:!0}),mounted(){this.modal=this.$refs.modalContainer.modal},popup(t,e){return s.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t'};const a={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t'};var o={getDetails:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t}),getLvs:t=>({method:"get",url:"/api/frontend/v1/studstatus/wiederholung/getLvs/"+t}),create:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/createAntrag",params:{prestudent_id:t,studiensemester:e}}),cancel:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/cancelAntrag",params:{prestudent_id:t,studiensemester:e}}),saveLvs:(t,e)=>({method:"post",url:"/api/frontend/v1/studstatus/wiederholung/saveLvs",params:{forbiddenLvs:t,mandatoryLvs:e}})},d={name:"StudierendenantragLeitungLvPopup",components:{CoreFetchCmpt:a},mixins:[i],props:{footer:Boolean,antragId:Number,countRemaining:Number},data:()=>({lvs:null,repeat_last:!1,refresh:!0,result:!1,check:!1}),computed:{lvzugelassen(){let t={};for(let e in this.lvs)t[e]=this.lvs[e]?this.lvs[e].filter(t=>t.antrag_zugelassen):null;return t},lvzugelassenLength(){return Object.values(this.lvzugelassen).reduce((t,e)=>t+(e?e.length:0),0)}},methods:{setlvs(t){this.repeat_last=!!t.repeat_last,this.repeat_last&&delete t.repeat_last,this.lvs=t},loadlvs(){return this.antragId?this.$api.call(o.getLvs(this.antragId)):new Promise(()=>{})},submit(t){this.result=[t,this.check],this.hide()}},watch:{antragId(){Vue.nextTick(()=>{this.refresh=!this.refresh})}},popup(t,e){return"string"==typeof e&&(e={default:e}),i.popup.bind(this)(t,e)},template:'\n\t\t\n\t\t\n\t\t\n\t'},u={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)}},l={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",{})}},p={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})}},c={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})}},f={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,s){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:r,datum_wiedereinstieg:n,attachment:s},{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)}}},g={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",{})}},h={ //! 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:s}){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:s})},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})}},v={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})}},m={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:s},i){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+r+"/"+n+"/"+s,i)},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 s="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(r);return this.$fhcApi.post(t,s,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:s}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:r,note:n},{errorHeader:s})},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 s=n?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:r},s)}},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")}},A={person:{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/")}}},_={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)}}},b={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}}},$={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,s=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:s})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},y={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",{})}},S={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}`,{})},getStudentProjektarbeiten(t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${t}`,{})},getStudentProjektabgaben(t){return this.$fhcApi.get("/api/frontend/v1/Lehre/getStudentProjektabgaben",{projektarbeit_id:t.projektarbeit_id,student_uid:t.student_uid})},postStudentProjektarbeitEndupload(t){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload",t,{Headers:{"Content-Type":"multipart/form-data"}})},postStudentProjektarbeitZwischenabgabe(t){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe",t,{Headers:{"Content-Type":"multipart/form-data"}})},getStudentProjektarbeitAbgabeFile(t,e){const r=`/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${t}&student_uid=${e}`;window.location=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+r},getMitarbeiterProjektarbeiten(t,e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${e}`,{})},postProjektarbeitAbgabe(t){const e={paabgabe_id:t.paabgabe_id,paabgabetyp_kurzbz:t.bezeichnung.paabgabetyp_kurzbz,datum:t.datum,fixtermin:t.fixtermin,insertvon:t.insertvon,kurzbz:t.kurzbz,projektarbeit_id:t.projektarbeit_id};return this.$fhcApi.post("/api/frontend/v1/Lehre/postProjektarbeitAbgabe",e,null)},deleteProjektarbeitAbgabe(t){const e={paabgabe_id:t};return this.$fhcApi.post("/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe",e,null)},postSerientermin(t,e,r,n,s){const i={datum:t,paabgabetyp_kurzbz:e,bezeichnung:r,kurzbz:n,projektarbeit_ids:s};return this.$fhcApi.post("/api/frontend/v1/Lehre/postSerientermin",i,null)},fetchDeadlines(t){const e={person_id:t};return this.$fhcApi.post("/api/frontend/v1/Lehre/fetchDeadlines",e,null)}},P={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}`,{})}},E={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)}}},C={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},T={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}`,{})}},k={search:p,phrasen:u,navigation:l,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:c,studstatus:f,profil:g,profilUpdate:h,lvPlan:v,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:m,notiz:A,betriebsmittel:_,checkperson:b,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:$,cms:y,lehre:S,addons:P,messages:E,vorlagen:C,addons:P,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",{})}},studium:T,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},F={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 s=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});s.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}),s.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."),s.getUri({url:t})),get:(t,e,n,i)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,n,i]=r(t,e,n,i),n&&(i?i.params=n:i={params:n}),s.get(e,i)),post:(t,e,n,i)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,n,i]=r(t,e,n,i),s.post(e,n,i)),_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 s="";s+="Controller name: "+e.controller+"\n",s+="Method name: "+e.method+"\n",s+="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,s)}}};class i{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,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,r,n,s)),post:(e,r,n,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,r,n,s))},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 i(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const a=new i(k);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 O="error",D="retval",B={get:function(t,e,r=null){return B._axiosCall(t,e,"get",r)},post:function(t,e,r=null){return B._axiosCall(t,e,"post",r)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(O)||!t.hasOwnProperty(D)||0!=t.error)},isError:function(t){return!B.isSuccess(t)},hasData:function(t){return!(!B.isSuccess(t)||!("object"==typeof t[D]&&Object.keys(t[D]).length>0||"array"==typeof t[D]&&t[D].length>0||"string"==typeof t[D]&&""!=t[D].trim()||"number"==typeof t[D]))},getData:function(t){return B.hasData(t)?t[D]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(D)?t[D]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(O)?t[O]: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 s={method:r,url:B._generateRouterURI(t),timeout:5e3};if("get"==r?s.params=e:s.data=e,"object"==typeof n)for(var i in n)s[i]=n[i];return axios(s)}},R=document.createElement("div"),H=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(){R.parentElement.removeChild(R)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});H.use(t),H.use(n);const L=H.mount(R);document.body.appendChild(R);var w={install:(t,e)=>{t.config.globalProperties.$p||t.use(N);const r={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);L.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);L.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);L.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);L.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);L.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,r)=>{L.$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)=>{L.$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,s=!1){let i={severity:t,summary:e,detail:r,html:s};n||(i.life=3e3),L.$refs.toast.add(i)},alertMultiple(t,e="info",r="Info",n=!1,s=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,r,t,n,s)),!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=B.getError(t.response.data);"object"!=typeof n&&(n=t.response.data),r.resetFormValidation(e);const s=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]),i=e.querySelector("[data-fhc-form-error]");return void(i&&s.length?i.dispatchEvent(new CustomEvent("fhc-form-error",{detail:s})):s.forEach(r.alertError))}if(400==t?.response?.status){let e=B.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)}},J={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(w);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='
    '+r.t("dashboard/general")+"
    "}else t="
    "+t+"
    ";return e+=n.length,t+"
    "+n.join("
    ")+"
    "}));return{counter:e,msgs:n}}let s,i;Array.isArray(e)?({counter:s,msgs:i}=await n(e)):({counter:s,msgs:i}=await Object.entries(e).reduce(async(t,[e,r])=>{const s=await t,{counter:i,msgs:a}=await n(r);return s.counter+=i,s.msgs.push("
    "+e+"
    "+a.join("")+"
    "),s},Promise.resolve({counter:0,msgs:[]}))),await r.loadCategory("ui");const a=r.t("ui/n_errors",{n:s});t.config.globalProperties.$fhcAlert.alertDefault("error",a,"
    "+i.join("")+"
    ",!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 s(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 i(t){if("string"==typeof t.data||t.data instanceof String)return i({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:s,combine:i}=t;return t={...n},Object.entries({fail:r,success:e}).forEach(([e,r])=>{void 0!==r&&(t[e]=r)}),Object.entries({handler:s,combine:i}).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 d(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 p(t,e){const r={},n=[];if(null==e)return{};for(;e.length;)n.push(e.pop());for(var s of n){let n=s.type,a=null;for(var i in t.combine){let e=t.combine[i].includes(n),r=t.handler[i];if(e&&r&&(a=i,"form"==a))break}a&&(n=a);t.handler[n]?(r[n]||(r[n]=[]),Array.isArray(s)?r[n].push(...s):r[n].push(s)):e.push(s)}return r}void 0!==e?.errorHandling&&(n=a(e.errorHandling));const u=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});u.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}),u.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))),i(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=d(t),n=p(e,r);for(var s in n)e.handler[s](n[s]);return r.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>u.getUri({url:t}),get:(t,e,r,n)=>([e,r,n]=s(t,e,r,n),r&&(n?n.params=r:n={params:r}),u.get(e,n)),post:(t,e,r,n)=>([e,r,n]=s(t,e,r,n),u.post(e,r,n)),call(e,r,n){if(Array.isArray(e)){const i=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),i.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=s(n,void 0,void 0,r||{}),i=o(e);if(!i.success&&!i.fail)return t;const a={};for(var u of t){const[t,e]="fulfilled"===u.status?[i.success,u.value]:[i.fail,u.reason];if(!t)return;const r=p(i,d(e));for(var l in r)a[l]?a[l][e.config.errorHeader]=r[l]:a[l]={[e.config.errorHeader]:r[l]}}for(var c in a)i.handler[c](a[c]);return t})}let{method:i,url:a,params:u,config:l}=e;return void 0!==r&&(l=r),i||(i="get"),i.toLowerCase&&(i=i.toLowerCase()),"get"==i?this.get(n,a,u,l):"post"==i?this.post(n,a,u,l):void console.error("FhcApi: method not allowed:",i)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},j={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 z=Vue.reactive({}),M={};let G=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),U=Vue.computed(()=>G.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==G.value).LC_Time:null);const I={user_language:G,user_locale:U,setLanguage(t){const e=Object.keys(z);return this.config.globalProperties.$api.call(j.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{z[t.category][t.phrase]=t.text}),G.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(M[t]||(M[t]=this.config.globalProperties.$api.call(j.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=>{z[t]=e})),M[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(()=>z[t]?function(t,e,r){let n=z[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 z[t]||this.loadCategory(t),n.value}};var N={install(t,e){t.config.globalProperties.$fhcApi||t.use(F),t.config.globalProperties.$api||t.use(J),t.config.globalProperties.$p={t:I.t,loadCategory:e=>I.loadCategory.call(t,e),setLanguage:e=>I.setLanguage.call(t,e),user_language:G,user_locale:U,t_ref:I.t_ref},t.provide("$p",t.config.globalProperties.$p)}},x=Object.freeze({__proto__:null,default:N,user_locale:U});Vue.createApp({name:"StudentApp",components:{LvPopup:d}}).use(N).mount("#wrapper"); +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:s}){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:s})},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})}},v={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})}},m={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:s},i){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+r+"/"+n+"/"+s,i)},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 s="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(r);return this.$fhcApi.post(t,s,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:s}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:r,note:n},{errorHeader:s})},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 s=n?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:r},s)}},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")}},A={person:{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/")}}},_={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)}}},b={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}}},y={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,s=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:s})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},$={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",{})}},S={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}`,{})}},E={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}`,{})}},C={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)}}},P={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},T={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}`,{})}},k={search:u,phrasen:l,navigation:p,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:c,studstatus:f,profil:g,profilUpdate:h,lvPlan:v,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:m,notiz:A,betriebsmittel:_,checkperson:b,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:y,cms:$,lehre:S,addons:E,messages:C,vorlagen:P,addons:E,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",{})}},studium:T,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},F={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 s=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});s.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}),s.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."),s.getUri({url:t})),get:(t,e,n,i)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,n,i]=r(t,e,n,i),n&&(i?i.params=n:i={params:n}),s.get(e,i)),post:(t,e,n,i)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,n,i]=r(t,e,n,i),s.post(e,n,i)),_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 s="";s+="Controller name: "+e.controller+"\n",s+="Method name: "+e.method+"\n",s+="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,s)}}};class i{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,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,r,n,s)),post:(e,r,n,s)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,r,n,s))},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 i(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const a=new i(k);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 O="error",D="retval",B={get:function(t,e,r=null){return B._axiosCall(t,e,"get",r)},post:function(t,e,r=null){return B._axiosCall(t,e,"post",r)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(O)||!t.hasOwnProperty(D)||0!=t.error)},isError:function(t){return!B.isSuccess(t)},hasData:function(t){return!(!B.isSuccess(t)||!("object"==typeof t[D]&&Object.keys(t[D]).length>0||"array"==typeof t[D]&&t[D].length>0||"string"==typeof t[D]&&""!=t[D].trim()||"number"==typeof t[D]))},getData:function(t){return B.hasData(t)?t[D]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(D)?t[D]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(O)?t[O]: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 s={method:r,url:B._generateRouterURI(t),timeout:5e3};if("get"==r?s.params=e:s.data=e,"object"==typeof n)for(var i in n)s[i]=n[i];return axios(s)}},R=document.createElement("div"),H=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(){R.parentElement.removeChild(R)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});H.use(t),H.use(n);const L=H.mount(R);document.body.appendChild(R);var w={install:(t,e)=>{t.config.globalProperties.$p||t.use(N);const r={alertSuccess(t){if(Array.isArray(t))return t.forEach(this.alertSuccess);L.$refs.toast.add({severity:"success",summary:"Info",detail:t,life:1e3})},alertInfo(t){if(Array.isArray(t))return t.forEach(this.alertInfo);L.$refs.toast.add({severity:"info",summary:"Info",detail:t,life:3e3})},alertWarning(t){if(Array.isArray(t))return t.forEach(this.alertWarning);L.$refs.toast.add({severity:"warn",summary:"Achtung",detail:t})},alertError(t){if(Array.isArray(t))return t.forEach(this.alertError);L.$refs.toast.add({severity:"error",summary:"Achtung",detail:t})},alertSystemError(e){if(Array.isArray(e))return e.forEach(this.alertSystemError);L.$refs.alert.add({severity:"error",summary:Vue.computed(()=>t.config.globalProperties.$p.t("alert/systemerror")),detail:e})},confirmDelete:()=>new Promise((e,r)=>{L.$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)=>{L.$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,s=!1){let i={severity:t,summary:e,detail:r,html:s};n||(i.life=3e3),L.$refs.toast.add(i)},alertMultiple(t,e="info",r="Info",n=!1,s=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,r,t,n,s)),!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=B.getError(t.response.data);"object"!=typeof n&&(n=t.response.data),r.resetFormValidation(e);const s=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]),i=e.querySelector("[data-fhc-form-error]");return void(i&&s.length?i.dispatchEvent(new CustomEvent("fhc-form-error",{detail:s})):s.forEach(r.alertError))}if(400==t?.response?.status){let e=B.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)}},J={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(w);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='
    '+r.t("dashboard/general")+"
    "}else t="
    "+t+"
    ";return e+=n.length,t+"
    "+n.join("
    ")+"
    "}));return{counter:e,msgs:n}}let s,i;Array.isArray(e)?({counter:s,msgs:i}=await n(e)):({counter:s,msgs:i}=await Object.entries(e).reduce(async(t,[e,r])=>{const s=await t,{counter:i,msgs:a}=await n(r);return s.counter+=i,s.msgs.push("
    "+e+"
    "+a.join("")+"
    "),s},Promise.resolve({counter:0,msgs:[]}))),await r.loadCategory("ui");const a=r.t("ui/n_errors",{n:s});t.config.globalProperties.$fhcAlert.alertDefault("error",a,"
    "+i.join("")+"
    ",!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 s(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 i(t){if("string"==typeof t.data||t.data instanceof String)return i({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:s,combine:i}=t;return t={...n},Object.entries({fail:r,success:e}).forEach(([e,r])=>{void 0!==r&&(t[e]=r)}),Object.entries({handler:s,combine:i}).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 d(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 u(t,e){const r={},n=[];if(null==e)return{};for(;e.length;)n.push(e.pop());for(var s of n){let n=s.type,a=null;for(var i in t.combine){let e=t.combine[i].includes(n),r=t.handler[i];if(e&&r&&(a=i,"form"==a))break}a&&(n=a);t.handler[n]?(r[n]||(r[n]=[]),Array.isArray(s)?r[n].push(...s):r[n].push(s)):e.push(s)}return r}void 0!==e?.errorHandling&&(n=a(e.errorHandling));const l=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});l.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}),l.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))),i(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=d(t),n=u(e,r);for(var s in n)e.handler[s](n[s]);return r.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>l.getUri({url:t}),get:(t,e,r,n)=>([e,r,n]=s(t,e,r,n),r&&(n?n.params=r:n={params:r}),l.get(e,n)),post:(t,e,r,n)=>([e,r,n]=s(t,e,r,n),l.post(e,r,n)),call(e,r,n){if(Array.isArray(e)){const i=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),i.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=s(n,void 0,void 0,r||{}),i=o(e);if(!i.success&&!i.fail)return t;const a={};for(var l of t){const[t,e]="fulfilled"===l.status?[i.success,l.value]:[i.fail,l.reason];if(!t)return;const r=u(i,d(e));for(var p in r)a[p]?a[p][e.config.errorHeader]=r[p]:a[p]={[e.config.errorHeader]:r[p]}}for(var c in a)i.handler[c](a[c]);return t})}let{method:i,url:a,params:l,config:p}=e;return void 0!==r&&(p=r),i||(i="get"),i.toLowerCase&&(i=i.toLowerCase()),"get"==i?this.get(n,a,l,p):"post"==i?this.post(n,a,l,p):void console.error("FhcApi: method not allowed:",i)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},z={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 j=Vue.reactive({}),M={};let G=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),U=Vue.computed(()=>G.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==G.value).LC_Time:null);const I={user_language:G,user_locale:U,setLanguage(t){const e=Object.keys(j);return this.config.globalProperties.$api.call(z.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{j[t.category][t.phrase]=t.text}),G.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(M[t]||(M[t]=this.config.globalProperties.$api.call(z.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=>{j[t]=e})),M[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(()=>j[t]?function(t,e,r){let n=j[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 j[t]||this.loadCategory(t),n.value}};var N={install(t,e){t.config.globalProperties.$fhcApi||t.use(F),t.config.globalProperties.$api||t.use(J),t.config.globalProperties.$p={t:I.t,loadCategory:e=>I.loadCategory.call(t,e),setLanguage:e=>I.setLanguage.call(t,e),user_language:G,user_locale:U,t_ref:I.t_ref},t.provide("$p",t.config.globalProperties.$p)}},x=Object.freeze({__proto__:null,default:N,user_locale:U});Vue.createApp({name:"StudentApp",components:{LvPopup:d}}).use(N).mount("#wrapper"); //# sourceMappingURL=Student.js.map diff --git a/public/dist/js/apps/lehre/Antrag/Student.js.map b/public/dist/js/apps/lehre/Antrag/Student.js.map index db0e064d8..18a27b96b 100644 --- a/public/dist/js/apps/lehre/Antrag/Student.js.map +++ b/public/dist/js/apps/lehre/Antrag/Student.js.map @@ -1 +1 @@ -{"version":3,"file":"Student.js","sources":["../../../../../js/components/Bootstrap/Modal.js","../../../../../js/components/Bootstrap/Alert.js","../../../../../js/components/Fetch.js","../../../../../js/api/factory/studstatus/wiederholung.js","../../../../../js/components/Studierendenantrag/Leitung/LvPopup.js","../../../../../js/api/search.js","../../../../../js/api/phrasen.js","../../../../../js/api/navigation.js","../../../../../js/api/filter.js","../../../../../js/api/studstatus.js","../../../../../js/api/profil.js","../../../../../js/api/profilUpdate.js","../../../../../js/api/lvPlan.js","../../../../../js/api/stv.js","../../../../../js/api/stv/verband.js","../../../../../js/api/stv/students.js","../../../../../js/api/stv/filter.js","../../../../../js/api/stv/konto.js","../../../../../js/api/stv/group.js","../../../../../js/api/stv/kontakt.js","../../../../../js/api/stv/prestudent.js","../../../../../js/api/stv/status.js","../../../../../js/api/stv/details.js","../../../../../js/api/stv/exam.js","../../../../../js/api/stv/abschlusspruefung.js","../../../../../js/api/stv/grades.js","../../../../../js/api/stv/mobility.js","../../../../../js/api/stv/archiv.js","../../../../../js/api/stv/documents.js","../../../../../js/api/stv/exemptions.js","../../../../../js/api/stv/jointstudies.js","../../../../../js/api/stv/courselist.js","../../../../../js/api/notiz.js","../../../../../js/api/notiz/person.js","../../../../../js/api/betriebsmittel.js","../../../../../js/api/betriebsmittel/person.js","../../../../../js/api/checkperson.js","../../../../../js/api/ort.js","../../../../../js/api/cms.js","../../../../../js/api/lehre.js","../../../../../js/api/addons.js","../../../../../js/api/messages.js","../../../../../js/api/messages/person.js","../../../../../js/api/vorlagen.js","../../../../../js/api/studium.js","../../../../../js/api/fhcapifactory.js","../../../../../js/api/dashboard.js","../../../../../js/api/bookmark.js","../../../../../js/api/ampeln.js","../../../../../js/api/studiengang.js","../../../../../js/api/menu.js","../../../../../js/api/authinfo.js","../../../../../js/api/language.js","../../../../../js/plugin/OldFhcApi.js","../../../../../js/RESTClient.js","../../../../../js/plugins/FhcAlert.js","../../../../../js/plugins/Api.js","../../../../../js/api/factory/phrasen.js","../../../../../js/plugins/Phrasen.js","../../../../../js/apps/lehre/Antrag/Student.js"],"sourcesContent":["//import Phrasen from '../../plugin/Phrasen.js';\n\nexport default {\n\tname: 'BootstrapModal',\n\tdata: () => ({\n\t\tmodal: null,\n\t\tfullscreen: false\n\t}),\n\tprops: {\n\t\tbackdrop: {\n\t\t\ttype: [Boolean,String],\n\t\t\tdefault: true,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['static', true, false].includes(value);\n\t\t\t}\n\t\t},\n\t\tfocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tkeyboard: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tnoCloseBtn: Boolean,\n\t\tdialogClass: [String,Array,Object],\n\t\theaderClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tbodyClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'px-4 py-5'\n\t\t},\n\t\tfooterClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tallowFullscreenExpand: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\temits: [\n\t\t\"hideBsModal\",\n\t\t\"hiddenBsModal\",\n\t\t\"hidePreventedBsModal\",\n\t\t\"showBsModal\",\n\t\t\"shownBsModal\"\n\t],\n\tmethods: {\n\t\tdispose() {\n\t\t\treturn this.modal.dispose();\n\t\t},\n\t\thandleUpdate() {\n\t\t\treturn this.modal.handleUpdate();\n\t\t},\n\t\thide() {\n\t\t\treturn this.modal.hide();\n\t\t},\n\t\tshow(relatedTarget) {\n\t\t\treturn this.modal.show(relatedTarget);\n\t\t},\n\t\ttoggle() {\n\t\t\treturn this.modal.toggle();\n\t\t},\n\t\ttoggleFullscreen() {\n\t\t\tthis.fullscreen = !this.fullscreen\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$refs.modal)\n\t\t\tthis.modal = new bootstrap.Modal(this.$refs.modal, {\n\t\t\t\tbackdrop: this.backdrop,\n\t\t\t\tfocus: this.focus,\n\t\t\t\tkeyboard: this.keyboard\n\t\t\t});\n\t},\n\tpopup(body, options, title, footer) {\n\t\tconst BsModal = this,\n\t\t\tslots = {};\n\t\tif (body !== undefined)\n\t\t\tslots.default = () => body;\n\t\tif (title !== undefined)\n\t\t\tslots.title = () => title;\n\t\tif (footer !== undefined)\n\t\t\tslots.footer = () => footer;\n\n\t\t// little hack to check whether primevue is included in the app or not\n\t\tlet includedPrimevue = false;\n\t\tif(typeof primevue !== 'undefined'){\n\t\t\tincludedPrimevue = true;\n\t\t}\n\n\t\treturn new Promise((resolve,reject) => {\n\t\t\tconst instance = Vue.createApp({\n\t\t\t\tname: 'ModalTmpApp',\n\t\t\t\tsetup() {\n\t\t\t\t\treturn () => Vue.h(BsModal, {...{\n\t\t\t\t\t\tclass: 'fade'\n\t\t\t\t\t},...options, ...{\n\t\t\t\t\t\tref: 'modal',\n\t\t\t\t\t\t'onHidden.bs.modal': instance.unmount\n\t\t\t\t\t}}, slots);\n\t\t\t\t},\n\t\t\t\tmounted() {\n\t\t\t\t\tthis.$refs.modal.show();\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tbeforeUnmount() {\n\t\t\t\t\tif (this.$refs.modal)\n\t\t\t\t\t\tthis.$refs.modal.result !== false ? resolve(this.$refs.modal.result) : reject();\n\t\t\t\t},\n\t\t\t\tunmounted() {\n\t\t\t\t\twrapper.parentElement.removeChild(wrapper);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst wrapper = document.createElement(\"div\");\n\t\t\t\n\t\t\t// if(primevue) --> won't work because primevue is not defined in this scope and promise would be rejected\n\t\t\tif (includedPrimevue){\n\t\t\t\tinstance.use(primevue.config.default, {zIndex: {overlay: 9999}})\n\t\t\t}\n\t\t\t\t \n\t\t\t//instance.use(Phrasen); // TODO(chris): find a more dynamic way\n\t\t\timport('../../plugins/Phrasen.js').then((Phrasen) => {\n\t\t\t\tinstance.use(Phrasen.default);\n\t\t\t\tinstance.mount(wrapper);\n\t\t\t\tdocument.body.appendChild(wrapper);\n\t\t\t});\n\t\t});\n\t},\n\ttemplate: `
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    `\n}\n","import BsModal from './Modal.js';\n\nexport default {\n\tname: 'BootstrapAlert',\n\tcomponents: {\n\t\tBsModal\n\t},\n\tmixins: [\n\t\tBsModal\n\t],\n\tprops: {\n\t\tdialogClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'modal-dialog-centered'\n\t\t},\n\t\t/*\n\t\t * NOTE(chris):\n\t\t * Hack to expose in \"emits\" declared events to $props which we use\n\t\t * in the v-bind directive to forward all events.\n\t\t * @see: https://github.com/vuejs/core/issues/3432\n\t\t*/\n\t\tonHideBsModal: Function,\n\t\tonHiddenBsModal: Function,\n\t\tonHidePreventedBsModal: Function,\n\t\tonShowBsModal: Function,\n\t\tonShownBsModal: Function\n\t},\n\tdata: () => ({\n\t\tresult: true\n\t}),\n\tmounted() {\n\t\tthis.modal = this.$refs.modalContainer.modal;\n\t},\n\tpopup(msg, options) {\n\t\treturn BsModal.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tgetLvs(antrag_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tcancel(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/saveLvs',\n\t\t\tparams: {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t}\n\t\t};\n\t}\n};","import BsAlert from '../../Bootstrap/Alert.js';\nimport {CoreFetchCmpt} from \"../../Fetch.js\";\n\nimport ApiStudstatusWiederholung from '../../../api/factory/studstatus/wiederholung.js';\n\nexport default {\n\tname: 'StudierendenantragLeitungLvPopup',\n\tcomponents: {\n\t\tCoreFetchCmpt\n\t},\n\tmixins: [\n\t\tBsAlert\n\t],\n\tprops: {\n\t\tfooter: Boolean,\n\t\tantragId: Number,\n\t\tcountRemaining: Number\n\t},\n\tdata(){\n\t\treturn {\n\t\t\tlvs: null,\n\t\t\trepeat_last: false,\n\t\t\trefresh: true,\n\t\t\tresult: false,\n\t\t\tcheck: false\n\t\t};\n\t},\n\tcomputed: {\n\t\tlvzugelassen() {\n\t\t\tlet zwischen = {};\n\t\t\tfor (let k in this.lvs){\n\t\t\t\tzwischen[k] = this.lvs[k] ? this.lvs[k].filter(lv=>lv.antrag_zugelassen) : null;\n\t\t\t}\n\t\t\treturn zwischen;\n\t\t},\n\t\tlvzugelassenLength() {\n\t\t\treturn Object.values(this.lvzugelassen).reduce((result, current) => result + (current ? current.length : 0), 0);\n\t\t}\n\t},\n\tmethods: {\n\t\tsetlvs(param) {\n\t\t\tthis.repeat_last = !!param.repeat_last;\n\t\t\tif (this.repeat_last) {\n\t\t\t\tdelete param.repeat_last;\n\t\t\t}\n\t\t\tthis.lvs = param;\n\t\t},\n\t\tloadlvs() {\n\t\t\tif (!this.antragId)\n\t\t\t\treturn new Promise(() => {});\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusWiederholung.getLvs(this.antragId));\n\t\t},\n\t\tsubmit(result) {\n\t\t\tthis.result = [result, this.check];\n\t\t\tthis.hide();\n\t\t}\n\t},\n\twatch: {\n\t\tantragId() {\n\t\t\tVue.nextTick(() => {\n\t\t\t\tthis.refresh = !this.refresh;\n\t\t\t});\n\t\t}\n\t},\n\tpopup(msg, options) {\n\t\tif (typeof options === 'string')\n\t\t\toptions = { default: options };\n\t\treturn BsAlert.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektarbeiten(uid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${uid}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektabgaben(detail) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektabgaben`\n\t\t\t, {\n\t\t\t\tprojektarbeit_id: detail.projektarbeit_id,\n\t\t\t\tstudent_uid: detail.student_uid\n\t\t\t}\n\t\t);\n\t},\n\tpostStudentProjektarbeitEndupload(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tpostStudentProjektarbeitZwischenabgabe(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tgetStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) {\n\t\tconst url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`;\n\n\t\twindow.location = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url\n\t},\n\tgetMitarbeiterProjektarbeiten(uid, all) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${all}`\n\t\t\t, {}\n\t\t);\n\t},\n\tpostProjektarbeitAbgabe(termin) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id: termin.paabgabe_id,\n\t\t\tpaabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz,\n\t\t\tdatum: termin.datum,\n\t\t\tfixtermin: termin.fixtermin,\n\t\t\tinsertvon: termin.insertvon,\n\t\t\tkurzbz: termin.kurzbz,\n\t\t\tprojektarbeit_id: termin.projektarbeit_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t\t\n\t},\n\tdeleteProjektarbeitAbgabe(paabgabe_id) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tpostSerientermin(datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids) {\n\t\tconst payload = {\n\t\t\tdatum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postSerientermin';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tfetchDeadlines(person_id) {\n\t\tconst payload = {\n\t\t\tperson_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/fetchDeadlines';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","import LvPopup from '../../../components/Studierendenantrag/Leitung/LvPopup.js';\nimport PluginsPhrasen from '../../../plugins/Phrasen.js';\n\nconst app = Vue.createApp({\n\tname: 'StudentApp',\n\tcomponents: {\n\t\tLvPopup\n\t}\n});\napp\n\t.use(PluginsPhrasen)\n\t.mount('#wrapper');"],"names":["BsModal","name","data","modal","fullscreen","props","backdrop","type","Boolean","String","default","validator","value","includes","focus","keyboard","noCloseBtn","dialogClass","Array","Object","headerClass","bodyClass","footerClass","allowFullscreenExpand","emits","methods","dispose","this","handleUpdate","hide","show","relatedTarget","toggle","toggleFullscreen","mounted","$refs","bootstrap","Modal","popup","body","options","title","footer","slots","undefined","includedPrimevue","primevue","Promise","resolve","reject","instance","Vue","createApp","setup","h","class","ref","unmount","beforeUnmount","result","unmounted","wrapper","parentElement","removeChild","document","createElement","use","config","zIndex","overlay","then","Phrasen","mount","appendChild","template","BsAlert","components","mixins","onHideBsModal","Function","onHiddenBsModal","onHidePreventedBsModal","onShowBsModal","onShownBsModal","modalContainer","msg","bind","CoreFetchCmpt","refresh","apiFunction","required","apiFunctionParameters","watch","newValue","oldValue","fetchData","loading","error","errorMessage","created","apiFunctionResult","successHandler","catch","errorHandler","finally","finallyHandler","setError","response","$emit","retval","message","ApiStudstatusWiederholung","getDetails","prestudent_id","method","url","getLvs","antrag_id","create","studiensemester","params","cancel","saveLvs","forbiddenLvs","mandatoryLvs","LvPopup","antragId","Number","countRemaining","lvs","repeat_last","check","computed","lvzugelassen","zwischen","k","filter","lv","antrag_zugelassen","lvzugelassenLength","values","reduce","current","length","setlvs","param","loadlvs","$api","call","submit","nextTick","search","searchsettings","$fhcApi","post","searchAdvanced","searchdummy","phrasen$1","loadCategory","category","get","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","getHeader","navigation_page","getMenu","filter$1","saveCustomFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","studstatus","abmeldung","stdsem","grund","errorHandling","isArray","allSettled","map","antrag","studierendenantrag_id","errorHeader","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","leitung","getStgs","getAntraege","res","getHistory","getPrestudents","query","signal","timeout","approve","a","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","uid","FHC_JS_DATA_STORAGE_OBJECT","app_root","ci_router","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","replace","getProfilRequestFiles","requestID","selectProfilRequest","id","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","set","students","studiensemester_kurzbz","encodeURIComponent","getUri","prestudent","person","person_id","relative_path","getStg","setStg","studiengang_kz","konto","tabulatorConfig","self","ajaxURL","ajaxParams","modelValue","e","only_open","studiengang_kz_intern","stg_kz","ajaxRequestFunc","ajaxResponse","checkDoubles","form","confirmErrorHandler","insert","counter","edit","delete","buchungsnr","getBuchungstypen","group","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","status","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","save","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","semester","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","lehrveranstaltung_id","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","update","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","formData","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","event","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","typ","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","getStudentProjektarbeiten","getStudentProjektabgaben","detail","projektarbeit_id","postStudentProjektarbeitEndupload","Headers","postStudentProjektarbeitZwischenabgabe","getStudentProjektarbeitAbgabeFile","paabgabe_id","window","location","getMitarbeiterProjektarbeiten","all","postProjektarbeitAbgabe","termin","paabgabetyp_kurzbz","bezeichnung","fixtermin","insertvon","kurzbz","deleteProjektarbeitAbgabe","postSerientermin","projektarbeit_ids","fetchDeadlines","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","tag","ampeln","open","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","globalProperties","factory","console","warn","addEndpoints","_get_config","uri","TypeError","clearValidation","setFeedback","_clean_return_value","meta","fhcApiAxios","baseURL","interceptors","request","FormData","every","item","FileList","i","File","newData","entries","nd","key","file","append","jsondata","forEach","JSON","stringify","errors","err","_defaultErrorHandlers","code","handled","$fhcAlert","alertDefault","responseURL","alertError","validation","$p","t","apply","general","php","filename","line","backtrace","function","severity","alertSystemError","exception","db","heading","sql","join","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","keys","provide","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","hasOwnProperty","isError","hasData","trim","getData","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","prop","helperAppContainer","helperApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","called_path","called_method","openMessagecard","Collapse","getOrCreateInstance","target","getAttribute","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","FhcAlert","FhcPhrasen","alertSuccess","toast","add","summary","life","alertInfo","alertWarning","alert","confirmDelete","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","html","alertMultiple","messageArray","handleSystemError","toLowerCase","errMsg","toUpperCase","stack","handleSystemMessage","resetFormValidation","Event","querySelectorAll","el","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","input","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","success","fail","combine","handler","async","_format_toast","_default","push","field","msgs","sort","b","indexOf","n_errors","n","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","pop","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","remaining","configoverwrite","index","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","user_locale","server_languages","find","LC_Time","catArray","row","phrase","text","obj","elem","extractCategory","t_ref","split","val","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Student.js","sources":["../../../../../js/components/Bootstrap/Modal.js","../../../../../js/components/Bootstrap/Alert.js","../../../../../js/components/Fetch.js","../../../../../js/api/factory/studstatus/wiederholung.js","../../../../../js/components/Studierendenantrag/Leitung/LvPopup.js","../../../../../js/api/search.js","../../../../../js/api/phrasen.js","../../../../../js/api/navigation.js","../../../../../js/api/filter.js","../../../../../js/api/studstatus.js","../../../../../js/api/profil.js","../../../../../js/api/profilUpdate.js","../../../../../js/api/lvPlan.js","../../../../../js/api/stv.js","../../../../../js/api/stv/verband.js","../../../../../js/api/stv/students.js","../../../../../js/api/stv/filter.js","../../../../../js/api/stv/konto.js","../../../../../js/api/stv/group.js","../../../../../js/api/stv/kontakt.js","../../../../../js/api/stv/prestudent.js","../../../../../js/api/stv/status.js","../../../../../js/api/stv/details.js","../../../../../js/api/stv/exam.js","../../../../../js/api/stv/abschlusspruefung.js","../../../../../js/api/stv/grades.js","../../../../../js/api/stv/mobility.js","../../../../../js/api/stv/archiv.js","../../../../../js/api/stv/documents.js","../../../../../js/api/stv/exemptions.js","../../../../../js/api/stv/jointstudies.js","../../../../../js/api/stv/courselist.js","../../../../../js/api/notiz.js","../../../../../js/api/notiz/person.js","../../../../../js/api/betriebsmittel.js","../../../../../js/api/betriebsmittel/person.js","../../../../../js/api/checkperson.js","../../../../../js/api/ort.js","../../../../../js/api/cms.js","../../../../../js/api/lehre.js","../../../../../js/api/addons.js","../../../../../js/api/messages.js","../../../../../js/api/messages/person.js","../../../../../js/api/vorlagen.js","../../../../../js/api/studium.js","../../../../../js/api/fhcapifactory.js","../../../../../js/api/dashboard.js","../../../../../js/api/bookmark.js","../../../../../js/api/ampeln.js","../../../../../js/api/studiengang.js","../../../../../js/api/menu.js","../../../../../js/api/authinfo.js","../../../../../js/api/language.js","../../../../../js/plugin/OldFhcApi.js","../../../../../js/RESTClient.js","../../../../../js/plugins/FhcAlert.js","../../../../../js/plugins/Api.js","../../../../../js/api/factory/phrasen.js","../../../../../js/plugins/Phrasen.js","../../../../../js/apps/lehre/Antrag/Student.js"],"sourcesContent":["//import Phrasen from '../../plugin/Phrasen.js';\n\nexport default {\n\tname: 'BootstrapModal',\n\tdata: () => ({\n\t\tmodal: null,\n\t\tfullscreen: false\n\t}),\n\tprops: {\n\t\tbackdrop: {\n\t\t\ttype: [Boolean,String],\n\t\t\tdefault: true,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['static', true, false].includes(value);\n\t\t\t}\n\t\t},\n\t\tfocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tkeyboard: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tnoCloseBtn: Boolean,\n\t\tdialogClass: [String,Array,Object],\n\t\theaderClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tbodyClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'px-4 py-5'\n\t\t},\n\t\tfooterClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: ''\n\t\t},\n\t\tallowFullscreenExpand: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\temits: [\n\t\t\"hideBsModal\",\n\t\t\"hiddenBsModal\",\n\t\t\"hidePreventedBsModal\",\n\t\t\"showBsModal\",\n\t\t\"shownBsModal\",\n\t\t\"toggleFullscreen\"\n\t],\n\tmethods: {\n\t\tdispose() {\n\t\t\treturn this.modal.dispose();\n\t\t},\n\t\thandleUpdate() {\n\t\t\treturn this.modal.handleUpdate();\n\t\t},\n\t\thide() {\n\t\t\treturn this.modal.hide();\n\t\t},\n\t\tshow(relatedTarget) {\n\t\t\treturn this.modal.show(relatedTarget);\n\t\t},\n\t\ttoggle() {\n\t\t\treturn this.modal.toggle();\n\t\t},\n\t\ttoggleFullscreen() {\n\t\t\tthis.fullscreen = !this.fullscreen\n\t\t\tthis.$emit('toggleFullscreen')\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.$refs.modal)\n\t\t\tthis.modal = new bootstrap.Modal(this.$refs.modal, {\n\t\t\t\tbackdrop: this.backdrop,\n\t\t\t\tfocus: this.focus,\n\t\t\t\tkeyboard: this.keyboard\n\t\t\t});\n\t},\n\tpopup(body, options, title, footer) {\n\t\tconst BsModal = this,\n\t\t\tslots = {};\n\t\tif (body !== undefined)\n\t\t\tslots.default = () => body;\n\t\tif (title !== undefined)\n\t\t\tslots.title = () => title;\n\t\tif (footer !== undefined)\n\t\t\tslots.footer = () => footer;\n\n\t\t// little hack to check whether primevue is included in the app or not\n\t\tlet includedPrimevue = false;\n\t\tif(typeof primevue !== 'undefined'){\n\t\t\tincludedPrimevue = true;\n\t\t}\n\n\t\treturn new Promise((resolve,reject) => {\n\t\t\tconst instance = Vue.createApp({\n\t\t\t\tname: 'ModalTmpApp',\n\t\t\t\tsetup() {\n\t\t\t\t\treturn () => Vue.h(BsModal, {...{\n\t\t\t\t\t\tclass: 'fade'\n\t\t\t\t\t},...options, ...{\n\t\t\t\t\t\tref: 'modal',\n\t\t\t\t\t\t'onHidden.bs.modal': instance.unmount\n\t\t\t\t\t}}, slots);\n\t\t\t\t},\n\t\t\t\tmounted() {\n\t\t\t\t\tthis.$refs.modal.show();\n\t\t\t\t\t\n\t\t\t\t},\n\t\t\t\tbeforeUnmount() {\n\t\t\t\t\tif (this.$refs.modal)\n\t\t\t\t\t\tthis.$refs.modal.result !== false ? resolve(this.$refs.modal.result) : reject();\n\t\t\t\t},\n\t\t\t\tunmounted() {\n\t\t\t\t\twrapper.parentElement.removeChild(wrapper);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst wrapper = document.createElement(\"div\");\n\t\t\t\n\t\t\t// if(primevue) --> won't work because primevue is not defined in this scope and promise would be rejected\n\t\t\tif (includedPrimevue){\n\t\t\t\tinstance.use(primevue.config.default, {zIndex: {overlay: 9999}})\n\t\t\t}\n\t\t\t\t \n\t\t\t//instance.use(Phrasen); // TODO(chris): find a more dynamic way\n\t\t\timport('../../plugins/Phrasen.js').then((Phrasen) => {\n\t\t\t\tinstance.use(Phrasen.default);\n\t\t\t\tinstance.mount(wrapper);\n\t\t\t\tdocument.body.appendChild(wrapper);\n\t\t\t});\n\t\t});\n\t},\n\ttemplate: `
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    `\n}\n","import BsModal from './Modal.js';\n\nexport default {\n\tname: 'BootstrapAlert',\n\tcomponents: {\n\t\tBsModal\n\t},\n\tmixins: [\n\t\tBsModal\n\t],\n\tprops: {\n\t\tdialogClass: {\n\t\t\ttype: [String,Array,Object],\n\t\t\tdefault: 'modal-dialog-centered'\n\t\t},\n\t\t/*\n\t\t * NOTE(chris):\n\t\t * Hack to expose in \"emits\" declared events to $props which we use\n\t\t * in the v-bind directive to forward all events.\n\t\t * @see: https://github.com/vuejs/core/issues/3432\n\t\t*/\n\t\tonHideBsModal: Function,\n\t\tonHiddenBsModal: Function,\n\t\tonHidePreventedBsModal: Function,\n\t\tonShowBsModal: Function,\n\t\tonShownBsModal: Function\n\t},\n\tdata: () => ({\n\t\tresult: true\n\t}),\n\tmounted() {\n\t\tthis.modal = this.$refs.modalContainer.modal;\n\t},\n\tpopup(msg, options) {\n\t\treturn BsModal.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetDetails(prestudent_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tgetLvs(antrag_id) {\n\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl\n\t\t};\n\t},\n\tcreate(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/createAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tcancel(prestudent_id, studiensemester) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/cancelAntrag',\n\t\t\tparams: {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}\n\t\t};\n\t},\n\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/studstatus/wiederholung/saveLvs',\n\t\t\tparams: {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t}\n\t\t};\n\t}\n};","import BsAlert from '../../Bootstrap/Alert.js';\nimport {CoreFetchCmpt} from \"../../Fetch.js\";\n\nimport ApiStudstatusWiederholung from '../../../api/factory/studstatus/wiederholung.js';\n\nexport default {\n\tname: 'StudierendenantragLeitungLvPopup',\n\tcomponents: {\n\t\tCoreFetchCmpt\n\t},\n\tmixins: [\n\t\tBsAlert\n\t],\n\tprops: {\n\t\tfooter: Boolean,\n\t\tantragId: Number,\n\t\tcountRemaining: Number\n\t},\n\tdata(){\n\t\treturn {\n\t\t\tlvs: null,\n\t\t\trepeat_last: false,\n\t\t\trefresh: true,\n\t\t\tresult: false,\n\t\t\tcheck: false\n\t\t};\n\t},\n\tcomputed: {\n\t\tlvzugelassen() {\n\t\t\tlet zwischen = {};\n\t\t\tfor (let k in this.lvs){\n\t\t\t\tzwischen[k] = this.lvs[k] ? this.lvs[k].filter(lv=>lv.antrag_zugelassen) : null;\n\t\t\t}\n\t\t\treturn zwischen;\n\t\t},\n\t\tlvzugelassenLength() {\n\t\t\treturn Object.values(this.lvzugelassen).reduce((result, current) => result + (current ? current.length : 0), 0);\n\t\t}\n\t},\n\tmethods: {\n\t\tsetlvs(param) {\n\t\t\tthis.repeat_last = !!param.repeat_last;\n\t\t\tif (this.repeat_last) {\n\t\t\t\tdelete param.repeat_last;\n\t\t\t}\n\t\t\tthis.lvs = param;\n\t\t},\n\t\tloadlvs() {\n\t\t\tif (!this.antragId)\n\t\t\t\treturn new Promise(() => {});\n\t\t\treturn this.$api\n\t\t\t\t.call(ApiStudstatusWiederholung.getLvs(this.antragId));\n\t\t},\n\t\tsubmit(result) {\n\t\t\tthis.result = [result, this.check];\n\t\t\tthis.hide();\n\t\t}\n\t},\n\twatch: {\n\t\tantragId() {\n\t\t\tVue.nextTick(() => {\n\t\t\t\tthis.refresh = !this.refresh;\n\t\t\t});\n\t\t}\n\t},\n\tpopup(msg, options) {\n\t\tif (typeof options === 'string')\n\t\t\toptions = { default: options };\n\t\treturn BsAlert.popup.bind(this)(msg, options);\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t`\n}\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\t\n\t\t\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","import LvPopup from '../../../components/Studierendenantrag/Leitung/LvPopup.js';\nimport PluginsPhrasen from '../../../plugins/Phrasen.js';\n\nconst app = Vue.createApp({\n\tname: 'StudentApp',\n\tcomponents: {\n\t\tLvPopup\n\t}\n});\napp\n\t.use(PluginsPhrasen)\n\t.mount('#wrapper');"],"names":["BsModal","name","data","modal","fullscreen","props","backdrop","type","Boolean","String","default","validator","value","includes","focus","keyboard","noCloseBtn","dialogClass","Array","Object","headerClass","bodyClass","footerClass","allowFullscreenExpand","emits","methods","dispose","this","handleUpdate","hide","show","relatedTarget","toggle","toggleFullscreen","$emit","mounted","$refs","bootstrap","Modal","popup","body","options","title","footer","slots","undefined","includedPrimevue","primevue","Promise","resolve","reject","instance","Vue","createApp","setup","h","class","ref","unmount","beforeUnmount","result","unmounted","wrapper","parentElement","removeChild","document","createElement","use","config","zIndex","overlay","then","Phrasen","mount","appendChild","template","BsAlert","components","mixins","onHideBsModal","Function","onHiddenBsModal","onHidePreventedBsModal","onShowBsModal","onShownBsModal","modalContainer","msg","bind","CoreFetchCmpt","refresh","apiFunction","required","apiFunctionParameters","watch","newValue","oldValue","fetchData","loading","error","errorMessage","created","apiFunctionResult","successHandler","catch","errorHandler","finally","finallyHandler","setError","response","retval","message","ApiStudstatusWiederholung","getDetails","prestudent_id","method","url","getLvs","antrag_id","create","studiensemester","params","cancel","saveLvs","forbiddenLvs","mandatoryLvs","LvPopup","antragId","Number","countRemaining","lvs","repeat_last","check","computed","lvzugelassen","zwischen","k","filter","lv","antrag_zugelassen","lvzugelassenLength","values","reduce","current","length","setlvs","param","loadlvs","$api","call","submit","nextTick","search","searchsettings","$fhcApi","post","searchAdvanced","searchdummy","phrasen$1","loadCategory","category","get","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","getHeader","navigation_page","getMenu","filter$1","saveCustomFilter","wsParams","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","studstatus","abmeldung","stdsem","grund","errorHandling","isArray","allSettled","map","antrag","studierendenantrag_id","errorHeader","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","leitung","getStgs","getAntraege","res","getHistory","getPrestudents","query","signal","timeout","approve","a","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","uid","FHC_JS_DATA_STORAGE_OBJECT","app_root","ci_router","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","replace","getProfilRequestFiles","requestID","selectProfilRequest","id","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","set","students","studiensemester_kurzbz","encodeURIComponent","getUri","prestudent","person","person_id","relative_path","getStg","setStg","studiengang_kz","konto","tabulatorConfig","self","ajaxURL","ajaxParams","modelValue","e","only_open","studiengang_kz_intern","stg_kz","ajaxRequestFunc","ajaxResponse","checkDoubles","form","confirmErrorHandler","insert","counter","edit","delete","buchungsnr","getBuchungstypen","group","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","status","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","save","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","semester","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","lehrveranstaltung_id","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","update","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","formData","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","event","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","typ","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","tag","ampeln","open","all","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","globalProperties","factory","console","warn","addEndpoints","_get_config","uri","TypeError","clearValidation","setFeedback","_clean_return_value","meta","fhcApiAxios","baseURL","interceptors","request","FormData","every","item","FileList","i","File","newData","entries","nd","key","file","append","jsondata","forEach","JSON","stringify","errors","err","_defaultErrorHandlers","code","handled","$fhcAlert","alertDefault","responseURL","alertError","validation","$p","t","apply","general","php","filename","line","backtrace","function","severity","alertSystemError","exception","db","heading","sql","join","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","keys","provide","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","hasOwnProperty","isError","hasData","trim","getData","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","prop","helperAppContainer","helperApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","called_path","called_method","detail","openMessagecard","Collapse","getOrCreateInstance","target","getAttribute","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","FhcAlert","FhcPhrasen","alertSuccess","toast","add","summary","life","alertInfo","alertWarning","alert","confirmDelete","$confirm","require","header","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","html","alertMultiple","messageArray","handleSystemError","toLowerCase","errMsg","toUpperCase","stack","handleSystemMessage","resetFormValidation","Event","querySelectorAll","el","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","input","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","success","fail","combine","handler","async","_format_toast","_default","push","field","msgs","sort","b","indexOf","n_errors","n","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","pop","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","remaining","configoverwrite","index","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","user_locale","server_languages","find","LC_Time","catArray","row","phrase","text","obj","elem","extractCategory","t_ref","split","val","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang"],"mappings":"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"} \ No newline at end of file diff --git a/public/dist/js/apps/lehre/lvplanung/LvTemplates.js b/public/dist/js/apps/lehre/lvplanung/LvTemplates.js index b0df45b38..b75778f66 100644 --- a/public/dist/js/apps/lehre/lvplanung/LvTemplates.js +++ b/public/dist/js/apps/lehre/lvplanung/LvTemplates.js @@ -1,4 +1,4 @@ -import t from"../../../../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js?2025121701";import e from"../../../../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js?2025121701";import n from"../../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js?2025121701";import i from"../../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js?2025121701";const r={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t'},a="Filter Component New Filter";var s={props:{filters:{type:Array,default:[]},columns:{type:Array,default:[]},fields:{type:Array,default:[]}},emits:{switchFilter:["filterId"],applyFilterConfig:["filterFields"],saveCustomFilter:["customFilterName"]},data:function(){return{currentFields:[]}},computed:{types(){return this.columns.reduce((t,e)=>{let n=e.type.toLowerCase();return n.indexOf("int")>=0?t[e.name]="Numeric":n.indexOf("varchar")>=0||n.indexOf("text")>=0||n.indexOf("bpchar")>=0?t[e.name]="Text":n.indexOf("timestamp")>=0||n.indexOf("date")>=0?t[e.name]="Date":t[e.name]="",t},{})}},watch:{fields(t){this.currentFields=t}},methods:{switchFilter(t){this.$emit("switchFilter",t.currentTarget.value)},applyFilterConfig(){const t=this.currentFields.filter(t=>t.name!=a);t.filter(t=>""==t.condition).length?alert("Please fill all the filter options"):this.$emit("applyFilterConfig",t)},addField(t){this.currentFields.push({name:a})},removeField(t){this.currentFields.splice(t,1)}},template:'\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tFilter {{ index + 1 }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\x3c!-- Numeric --\x3e\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\x3c!-- Text --\x3e\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\x3c!-- Timestamp and date --\x3e\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t\x3c!-- Filter save options --\x3e\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t'},o={props:{fields:Array,selected:{type:Array,default:[]},names:{type:Object,default:{}}},emits:{hide:["fieldName"],show:["fieldName"]},data:function(){return{selectedFields:[]}},watch:{selected(t){this.selectedFields=t}},methods:{toggle(t){-1!=this.selectedFields.indexOf(t)?(this.selectedFields.splice(this.selectedFields.indexOf(t),1),this.$emit("hide",t)):(this.selectedFields.push(t),this.$emit("show",t))}},template:'\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{{ names[fieldToDisplay] || fieldToDisplay }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\n\t'};const l={jsonLines:"fa-file-lines",xlsx:"fa-file-excel",pdf:"fa-file-pdf",html:"fa-file-code",json:"fa-file",csv:"fa-file-csv"},d={jsonLines:"Download as JSONLINES",xlsx:"Download as XLSX",pdf:"Download as PDF",html:"Download as HTML",json:"Download as JSON",csv:"Download as CSV "};var u={props:{tabulator:Object,config:{type:[Boolean,String,Function,Array,Object],default:!1},iconClass:[String,Array,Object]},computed:{currentConfig(){if(!this.config)return!1;let t=this.config;if(t instanceof Function)return[t];if(null===t)return[];if(!0===this.config&&(t=["csv"]),"[object String]"===Object.prototype.toString.call(t)&&(t=t.split(",")),"object"==typeof t&&!Array.isArray(t)){let r=[];for(var e in t){var n,i=t[e];i&&("[object String]"===Object.prototype.toString.call(i)?null!==(n=this.stringToFileFormatter(i))?r.push({icon:"fa-solid "+l[n],label:i===e?d[n]:e,formatter:n}):null!==(n=this.stringToFileFormatter(e))?r.push({icon:"fa-solid "+l[n],label:i,formatter:n}):alert("neither "+e+" nor "+i+" are supported download file types"):"object"!=typeof i||Array.isArray(i)?null!==(n=this.stringToFileFormatter(e))?r.push({icon:"fa-solid "+l[n],label:d[n],formatter:n}):alert(e+" is not a supported download file type"):null!==(n=this.stringToFileFormatter(e))?(void 0===i.formatter&&(i.formatter=n),void 0===i.label&&(i.label=d[n]),void 0===i.icon&&(i.icon=l[n]),r.push(i)):(void 0===i.label&&(i.label=e),r.push(i)))}t=r}if(Array.isArray(t)){if(t=t.map(t=>{if("[object String]"===Object.prototype.toString.call(t)){let e=this.stringToFileFormatter(t);return null===e?null:{icon:"fa-solid "+l[e],label:d[e],formatter:e}}if(t instanceof Function)return{formatter:t};if("object"==typeof t&&!Array.isArray(t)&&null!==t){if(t.formatter instanceof Function)return t;if(this.validateFileFormatter(t.formatter))return t}return null}).filter(t=>null!==t),t.length<2)return t;if(t.filter(t=>t.label||t.icon).length==t.length)return t;alert("Config not valid")}return[]}},methods:{stringToFileFormatter(t){let e=t.toLowerCase();return"jsonlines"==e?"jsonLines":["xlsx","pdf","html","json","csv"].includes(e)?e:null},validateFileFormatter(t){let e=this.stringToFileFormatter(t);if(!e)return alert(t+" is not a supported file formatter"),!1;if("xlsx"==e&&!window.XLSX)return alert("XLSX Library not loaded"),!1;if("pdf"==e){if(!window.jspdf)return alert("jsPDF Library not loaded"),!1;if(!new jspdf.jsPDF({}).autoTable)return alert("jsPDF-AutoTable Plugin not loaded"),!1}return!0},download(t){this.tabulator.download(t.formatter,t.file,t.options)}},template:'\n\t\n\t'};const p=new WeakMap;var c={mounted(t,e){let n=!1;p.set(t,e=>{if(!n)return;if(t.contains(e.target))return;const i=bootstrap.Collapse.getInstance(t);i&&i.hide()}),t.addEventListener("shown.bs.collapse",()=>{n=!0}),t.addEventListener("hide.bs.collapse",()=>{n=!1}),document.addEventListener("click",p.get(t),!0)},beforeUnmount(t,e){document.removeEventListener("click",p.get(t)),delete t.collapsibleAutoHideFunc}};window.Tabulator?.extendModule("layout","modes",{fitDataStretchFrozen(t,e){var n=0,i=this.table.rowManager.element.clientWidth,r=0,a=!1;t.forEach((t,e)=>{t.widthFixed||t.reinitializeWidth(),(this.table.options.responsiveLayout?t.modules.responsive.visible:t.visible&&!t.definition.frozen)&&(a=t),t.visible&&(n+=t.getWidth())}),a?(r=i-n+a.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(a.setWidth(0),this.table.modules.responsiveLayout.update()),r>0?a.setWidth(r):a.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()}});var f={saveCustomFilter:t=>({method:"post",url:"/api/frontend/v1/filter/saveCustomFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,customFilterName:t.customFilterName}}),removeCustomFilter:t=>({method:"post",url:"/api/frontend/v1/filter/removeCustomFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId}}),applyFilterFields:t=>({method:"post",url:"/api/frontend/v1/filter/applyFilterFields",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterFields:t.filterFields}}),addFilterField:t=>({method:"post",url:"/api/frontend/v1/filter/addFilterField",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField}}),removeFilterField:t=>({method:"post",url:"/api/frontend/v1/filter/removeFilterField",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField}}),getFilterById:t=>({method:"get",url:"/api/frontend/v1/filter/getFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId}}),getFilter:t=>({method:"get",url:"/api/frontend/v1/filter/getFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType}})},h=0;const g={components:{CoreFetchCmpt:r,FilterConfig:s,FilterColumns:o,TableDownload:u},directives:{collapseAutoClose:c},emits:["nwNewEntry","click:new","tableBuilt","uuidDefined"],props:{onNwNewEntry:Function,title:String,description:String,sideMenu:{type:Boolean,default:!0},filterType:{type:String},tabulatorOptions:Object,tabulatorEvents:Array,tableOnly:Boolean,noColumnFilter:Boolean,reload:Boolean,reloadBtnInfotext:String,download:{type:[Boolean,String,Function,Array,Object],default:!1},newBtnShow:Boolean,newBtnClass:[String,Array,Object],newBtnDisabled:Boolean,newBtnLabel:String,uniqueId:String,idField:String,parentIdField:String,countOnly:Boolean,useSelectionSpan:{type:Boolean,default:!0}},data:function(){return{uuid:0,filterName:null,filterActive:!1,fields:null,dataset:null,datasetMetadata:null,selectedFields:null,filterFields:null,availableFilters:null,selectedFilter:null,fetchCmptRefresh:!1,fetchCmptApiFunction:null,fetchCmptApiFunctionParams:null,fetchCmptDataFetched:null,fetchResult:null,tabulator:null,tableBuilt:!1,tabulatorHasSelector:!1,selectedData:[],persistence:{sort:!0,columns:!0,filter:!1,headerFilter:!1,group:!1,page:!1}}},computed:{notSelectedFields(){return this.fields&&this.selectedFields?this.fields.filter(t=>-1===this.selectedFields.indexOf(t)):null},filteredData(){return this.dataset?JSON.parse(JSON.stringify(this.dataset)):[]},filteredColumns(){let t=JSON.parse(JSON.stringify(this.fields))||[],e=JSON.parse(JSON.stringify(this.selectedFields))||[],n=null;if(this.tabulatorOptions&&this.tabulatorOptions.hasOwnProperty("columns")&&(n=this.tabulatorOptions.columns),!Array.isArray(n)||Array.isArray(n)&&n.length=0,n.push(t)}}else for(let i of n)i.visible=e.indexOf(i.field)>=0||-1==t.indexOf(i.field),i.hasOwnProperty("resizable")&&(i.resizable=i.visible);return n},fieldIdsForVisibilty(){return this.tableBuilt?this.tabulator.getColumns().filter(t=>{let e=t.getDefinition();return!e.frozen&&e.title&&"responsiveCollapse"!=e.formatter}).map(t=>t.getField()):[]},fieldNames(){return this.tableBuilt?this.tabulator.getColumns().reduce((t,e)=>(t[e.getField()]=e.getDefinition().title,t),{}):{}},idExtra(){return this.uuid?"-"+this.uuid:""},columnsForFilter(){if(!this.filteredColumns||!this.datasetMetadata)return[];const t=this.filteredColumns.reduce((t,e)=>(t[e.field]=e.title,t),{});return this.datasetMetadata.map(e=>({...e,title:t[e.name]}))}},methods:{reloadTable(){this.tableOnly?this.tabulator.setData():this.getFilter()},async initTabulator(){let t="< Phrasen Plugin not loaded! >";this.$p&&(await this.$p.loadCategory("ui"),t=this.$p.t("ui/keineDatenVorhanden")),this.tableOnly||await new Promise(t=>{const e=window.location.hash?window.location.hash.slice(1):null,n=e=>{this.setRenderData(e),t()};null===e?this.startFetchCmpt(t=>this.$api.call(f.getFilter(t)),null,n):this.startFetchCmpt(t=>this.$api.call(f.getFilterById(t)),{filterId:e},n)});let e={layout:"fitDataStretchFrozen",movableColumns:!0,columnDefaults:{tooltip:!0},placeholder:t,persistence:this.persistence,...this.tabulatorOptions||{}};if(void 0===e.height&&void 0===e.minHeight&&void 0===e.maxHeight&&(e.height=500),this.tableOnly?e.columns.forEach(t=>{void 0===t.visible&&(t.visible=!0)}):(e.data=this.filteredData,e.columns=this.filteredColumns),(e.selectable||e.columns&&e.columns.filter(t=>"rowSelection"==t.formatter).length)&&(this.tabulatorHasSelector=!0),this.idField&&(this.parentIdField&&(e.dataTree=!0),e.index=this.idField),this.tabulator=new Tabulator(this.$refs.table,e),Array.isArray(this.tabulatorEvents)&&this.tabulatorEvents.length>0)for(let t of this.tabulatorEvents)this.tabulator.on(t.event,t.handler);this.tabulator.on("tableBuilt",()=>{this.tableBuilt=!0,this.$emit("tableBuilt")}),this.tabulator.on("rowSelectionChanged",t=>{this.selectedData=t}),this.parentIdField&&this.idField&&this.tabulator.on("dataLoading",t=>{let e=[];for(let n=0;n{const t=this.tabulator.getColumns();this.fields=t.map(t=>t.getField()),this.selectedFields=t.filter(t=>t.isVisible()).map(t=>t.getField()),this.tabulator.options.persistence.headerFilter&&this._setHeaderFilter()}),this.tabulator.on("dataFiltered",t=>{this.filterActive=t.length>0})},updateTabulator(){this.tabulator&&(this.tableBuilt?this._updateTabulator():this.tabulator.on("tableBuilt",this._updateTabulator))},_updateTabulator(){this.tabulatorHasSelector=this.tabulatorOptions.selectable||this.filteredColumns.filter(t=>"rowSelection"==t.formatter).length,this.tabulator.setColumns(this.filteredColumns),this.tabulator.setData(this.filteredData),this._setHeaderFilter()},clearFilters(){this.tabulator.getHeaderFilters().forEach(t=>{this.tabulator.setHeaderFilterValue(t.field,"")}),this.tabulator.clearFilter(),this.filterActive=!1},_setHeaderFilter(){this.tabulator.getHeaderFilters().forEach(t=>{this.tabulator.setHeaderFilterValue(t.field,t.value)})},getFilter(){null===this.selectedFilter?this.startFetchCmpt(t=>this.$api.call(f.getFilter(t)),null,this.render):this.startFetchCmpt(t=>this.$api.call(f.getFilterById(t)),{filterId:this.selectedFilter},this.render)},setRenderData(t){this.fetchResult=t,this.filterName=t.filterName,this.dataset=t.dataset,this.datasetMetadata=t.datasetMetadata,this.fields=t.fields,this.selectedFields=t.selectedFields,this.filterFields=[];for(let e=0;ethis.$api.call(f.saveCustomFilter(t)),{customFilterName:t},this.getFilter)},handlerRemoveCustomFilter(t){let e=t.currentTarget.getAttribute("href").substring(1);e===this.selectedFilter&&(this.selectedFilter=null),this.startFetchCmpt(t=>this.$api.call(f.removeCustomFilter(t)),{filterId:e},this.getFilter)},handlerGetFilterById:function(t){let e=null,n=t.currentTarget.getAttribute("href");e=null==n?t.currentTarget.value:n.substring(1),this.switchFilter(e)},switchFilter(t){this.selectedFilter=t,this.getFilter()},applyFilterConfig(t){this.selectedFilter=null,this.startFetchCmpt(t=>this.$api.call(f.applyFilterFields(t)),{filterFields:t},this.getFilter)},appendChild(t,e){let n=e[this.parentIdField];for(let i=0;i{this.tableOnly||(this.selectedFilter=window.location.hash?window.location.hash.slice(1):null,this.render(this.fetchResult))})},template:'\n\t\t\x3c!-- Load filter data --\x3e\n\t\t\n\t\t\n\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ selectedData.length }} ausgewählt\n\t\t\t\t\t\t Mit {{ selectedData.length }} ausgewählten:\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t[ {{ filterName }} ]\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\n\t\t\x3c!-- Tabulator --\x3e\n\t\t
    \n\t'};let m={};var v={name:"FormInput",inheritAttrs:!1,components:{FhcFragment:{render(){return this.$slots&&this.$slots.default?this.$slots.default():null}}},inject:{registerToForm:{from:"$registerToForm",default:null},clearValidationForName:{from:"$clearValidationForName",default:null}},props:{bsFeedback:Boolean,noAutoClass:Boolean,noFeedback:Boolean,inputGroup:Boolean,type:String,name:String,containerClass:[String,Array,Object],label:String,onInput:[Array,Function],"onUpdate:modelValue":[Array,Function]},data:()=>({valid:void 0,feedback:[],modelValueDummy:void 0}),computed:{hasContainer(){if(!this.bsFeedback)return!0;if(this.containerClass)return!0;for(const t in this.autoContainerClass)if(Object.hasOwn(this.autoContainerClass,t))return!0;return!1},acc(){return this.containerClass?"string"==typeof this.containerClass||this.containerClass instanceof String?this.containerClass.split(" ").reduce((t,e)=>(t[e]=!0,t),{}):Array.isArray(this.containerClass)?this.containerClass.reduce((t,e)=>(t[e]=!0,t),{}):this.containerClass:{}},autoContainerClass(){if(this.noAutoClass)return this.acc;const t={...this.acc};return this.inputGroup&&(t["input-group-item"]=!0),"radio"!=this.lcType&&"checkbox"!=this.lcType||(t["form-check"]=!0),this.inputGroup&&t["form-check"]&&(t["input-group-item"]=!1,t["form-check"]=!1,t["input-group-text"]=!0),t},lcType(){return this.type?this.type.toLowerCase():"text"},tag(){switch(this.lcType){case"textarea":case"select":return this.lcType;case"datepicker":return"VueDatePicker";case"autocomplete":return"PvAutocomplete";case"uploadimage":return"UploadImage";case"uploadfile":case"uploaddms":return"UploadDms";default:return"input"}},validationClass(){const t=[];if(this.valid?t.push("is-valid"):!1===this.valid&&t.push("is-invalid"),!this.noAutoClass){let e=this.$attrs.class?this.$attrs.class.split(" "):[];switch(this.lcType){case"select":e.includes("form-select")||t.push("form-select");break;case"range":e.includes("form-range")||t.push("form-range");break;case"radio":case"checkbox":e.includes("form-check-input")||e.includes("btn-check")||t.push("form-check-input");break;case"color":e.includes("form-control-color")||t.push("form-control-color"),e.includes("form-control")||t.push("form-control");break;case"autocomplete":case"datepicker":t.push("p-0"),t.push("border-0"),e.includes("form-control")||t.push("form-control");break;case"text":case"number":case"password":case"textarea":e.includes("form-control")||t.push("form-control")}}return t},feedbackClass(){return this.feedback&&!0!==this.feedback?this.bsFeedback?{"valid-feedback":!0===this.valid,"invalid-feedback":!1===this.valid}:{"valid-tooltip":!0===this.valid,"invalid-tooltip":!1===this.valid}:""},modelValueCmp:{get(){return this.$attrs.hasOwnProperty("modelValue")?this.$attrs.modelValue:this.modelValueDummy},set(t){this.$attrs.hasOwnProperty("modelValue")||(this.modelValueDummy=t),this.$emit("update:modelValue",t)}},idCmp(){let t=this.$attrs.id;if("datepicker"==this.lcType&&(t=this.$attrs.uid),!t&&this.label&&(t="fhc-form-input"),t)return"datepicker"==this.lcType&&(t="dp-input-"+t),void 0===m[t]&&(m[t]=0),t+"-"+m[t]++}},methods:{clearValidation(){this.valid=void 0,this.feedback=[]},clearValidationForThisName(){void 0!==this.valid&&(this.clearValidationForName&&this.name?this.clearValidationForName(this.name):this.clearValidation())},setFeedback(t,e){if(e||(e=[]),Array.isArray(e)||(e=[e]),this.valid=t,this.name&&("radio"==this.lcType||"checkbox"==this.lcType)){const t='input[type="'+this.lcType+'"][name="'+this.name+'"]';if([...this.$el.parentNode.querySelectorAll(t)].pop()!=this.$refs.input)return}this.feedback=e},_loadComponents(){"VueDatePicker"!=this.tag||this._.components.VueDatePicker?"PvAutocomplete"!=this.tag||this._.components.PvAutocomplete?"UploadImage"!=this.tag||this._.components.UploadImage?"UploadDms"!=this.tag||this._.components.UploadDms||(this._.components.UploadDms=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return ot}))):this._.components.UploadImage=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return at})):this._.components.PvAutocomplete=primevue.autocomplete:this._.components.VueDatePicker=Vue.defineAsyncComponent(()=>import("../../../../../js/components/vueDatepicker.js.php?2025121701"))}},beforeMount(){this._loadComponents()},beforeUpdate(){this._loadComponents()},mounted(){this.registerToForm&&this.registerToForm(this)},template:'\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs[\'input-class-name\'] ? $attrs[\'input-class-name\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs[\'input-class\'] ? $attrs[\'input-class\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t'};const b="lehrveranstaltung_template_id";var A={components:{CoreFilterCmpt:g,CoreFormInput:v},data:function(){return{table:null,studiensemester:[],selectedStudiensemester:"",cbDataTreeStartExpanded:!1}},computed:{tabulatorOptions(){const t=function(t){var e;const n=t.getField(),i=t.getTable().getData(),r=function(t,e){var n={},i={};for(const a of t){const t=null!==a[e]?a[e]:"";n[t]=t,a._children&&a._children.length>0&&(i=r(a._children,e),n={...n,...i})}return n};e=r(i,n);const a=Object.keys(e).sort();return-1===a.indexOf("")&&a.unshift(""),a},e=function(t,n,i,r){if(i._children&&i._children.length>0)for(var a in i._children)return n==t||e(t,i._children[a][r.field],i._children[a],r);return n==t},n=this;return{ajaxResponse:(t,e,i)=>n.prepDataTreeData(i.data),layout:"fitColumns",autoResize:!1,resizableColumnFit:!0,index:"lehrveranstaltung_id",selectable:!0,selectableRangeMode:"click",dataTree:!0,dataTreeStartExpanded:n.cbDataTreeStartExpanded,dataTreeChildIndent:15,persistence:{filter:!1},columns:[{title:"LV-ID",field:"lehrveranstaltung_id",headerFilter:!0,visible:!1},{title:"LV Kurzbz",field:"kurzbz",headerFilter:!0,visible:!1,width:70},{title:"STG Kurzbz",field:"stg_typ_kurzbz",headerFilter:"list",headerFilterParams:{valuesLookup:t},headerFilterFunc:e,headerFilterFuncParams:{field:"stg_typ_kurzbz"},visible:!0,width:80},{title:"OrgEinheit",field:"lv_oe_bezeichnung",headerFilter:!0,visible:!1,width:250},{title:"Lehrtyp Kurzbz",field:"lehrtyp_kurzbz",headerFilter:!0,visible:!1,width:70},{title:"Studiengangtyp",field:"stg_typ_bezeichnung",headerFilter:"list",headerFilterParams:{valuesLookup:t},headerFilterFunc:e,headerFilterFuncParams:{field:"stg_typ_bezeichnung"},width:150},{title:"OrgForm",field:"orgform_kurzbz",headerFilter:"list",headerFilterParams:{valuesLookup:t},headerFilterFunc:e,headerFilterFuncParams:{field:"orgform_kurzbz"},width:70},{title:"Semester",field:"semester",headerFilter:!0,width:50},{title:"Lehrveranstaltung",field:"lv_bezeichnung",headerFilter:!0,minWidth:250},{title:"Lehrveranstaltung ENG",field:"bezeichnung_english",headerFilter:!0,minWidth:250},{title:"ECTS",field:"ects",headerFilter:!0,width:50,hozAlign:"right"},{title:"Lehrform",field:"lehrform_kurzbz",headerFilter:!0,width:50},{title:"Sprache",field:"sprache",headerFilter:!0,width:100},{title:"Aktiv",field:"aktiv",width:50,formatter:"tickCross",headerFilter:"tickCross",headerFilterParams:{tristate:!0},hozAlign:"center",formatterParams:{tickElement:'',crossElement:''}},{title:"Studienplan",field:"studienplan_bezeichnung",headerFilter:!0,visible:!0,width:220},{title:"OE Kurzbz",field:"lv_oe_kurzbz",headerFilter:!0,visible:!1,minWidth:80},{title:this.$p.t("global/aktionen"),field:"actions",width:140,formatter:(t,e,n)=>{let i=document.createElement("div");i.className="d-flex gap-2";let r=document.createElement("button");return r.className="btn btn-outline-secondary",r.innerHTML=' '+this.$p.t("global/verwalten"),r.addEventListener("click",e=>this.openAdminLvTemplate(e,t.getRow())),i.append(r),i},frozen:!0}]}},urlToAdminAllTemplates:()=>FHC_JS_DATA_STORAGE_OBJECT.app_root+"vilesci/lehre/lehrveranstaltung.php?stg_kz=99999&semester=-1&orgform=-1"},methods:{async loadAndSetStudiensemester(){await this.$api.get("api/frontend/v1/organisation/Studiensemester/getAll",{start:"2011-01-01",order:"desc"}).then(t=>this.studiensemester=t.data).then(()=>this.$api.get("api/frontend/v1/organisation/Studiensemester/getAktNext")).then(t=>this.selectedStudiensemester=t.data[0].studiensemester_kurzbz).catch(t=>this.$fhcAlert.handleSystemError(t))},async onTableBuilt(){this.table=this.$refs.lvTemplateUebersichtTable.tabulator,await this.loadAndSetStudiensemester(),this.table.setData(this.$api.getUri()+"/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree?studiensemester_kurzbz="+this.selectedStudiensemester),await this.$p.loadCategory(["lehre"]),this.table.updateColumnDefinition("lv_bezeichnung",{title:this.$p.t("lehre","lehrveranstaltung")})},onChangeStudiensemester(){this.table.setData(this.$api.getUri()+"/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree?studiensemester_kurzbz="+this.selectedStudiensemester)},openAdminLvTemplate(t,e){const n=FHC_JS_DATA_STORAGE_OBJECT.app_root+"vilesci/lehre/lehrveranstaltung.php?stg_kz=&semester=-1&orgform=-1&lehrveranstaltung_id="+e.getData().lehrveranstaltung_id;window.open(n,"_blank").focus()},prepDataTreeData(t){let e=[];for(let n=0;n\n\t
    \n\t\t
    {{ $p.t(\'lehre/lvTemplatesUebersicht\') }}
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t
    \n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t
    \n\t
    \n\n\n'},_={getHeader:t=>({method:"get",url:"/api/frontend/v1/navigation/header",params:{navigation_page:t}}),getMenu:t=>({method:"get",url:"/api/frontend/v1/navigation/menu",params:{navigation_page:t}})};const y={components:{CoreFetchCmpt:r},props:{addHeaderMenuEntries:Object,addSideMenuEntries:Object,hideTopMenu:Boolean,leftNavCssClasses:{type:String,default:"navbar navbar-left-side"}},data:()=>({headerMenu:{},sideMenu:{}}),computed:{headerMenuEntries(){let t=this.headerMenu?{...this.headerMenu}:{};return null!=this.headerMenu&&null!=this.addHeaderMenuEntries&&Object.keys(this.addHeaderMenuEntries).length>0&&(t[this.addHeaderMenuEntries.description]=this.addHeaderMenuEntries),t},sideMenuEntries(){let t=this.sideMenu?{...this.sideMenu}:{};return null!=this.sideMenu&&null!=this.addSideMenuEntries&&Object.keys(this.addSideMenuEntries).length>0&&(t[this.addSideMenuEntries.description]=this.addSideMenuEntries),t}},methods:{getNavigationPage:()=>FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,fetchCmptApiFunctionHeader(){return this.$api.call(_.getHeader(this.getNavigationPage()))},fetchCmptApiFunctionSideMenu(){return this.$api.call(_.getMenu(this.getNavigationPage()))},fetchCmptDataFetchedHeader(t){this.headerMenu=t||{}},fetchCmptDataFetchedMenu(t){this.sideMenu=t||{}},getDataBsToggle:t=>t.children?"dropdown":null},template:'\n\t\t\x3c!-- Load head menu --\x3e\n\t\t\n\t\t\x3c!-- Load side menu --\x3e\n\t\t\n\n\t\t\x3c!-- Top menu --\x3e\n\t\t\n\n\t\t\x3c!-- Left side menu --\x3e\n\t\t\n\t'};var F={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)}},$={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const n={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",n)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},C={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})}},S={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})}},T={abmeldung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n},{errorHandling:"strict"})},cancel(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t.studierendenantrag_id},{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t})}},unterbrechung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n,i,r){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:i,attachment:r},{errorHandling:"strict"})},cancel(t){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:t},{errorHandling:"strict"})}},wiederholung:{getDetails(t){const e="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t;return this.$fhcApi.get(e)},getLvs(t){const e="/api/frontend/v1/studstatus/wiederholung/getLvs/"+t;return this.$fhcApi.get(e)},create(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},cancel(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},saveLvs(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:t,mandatoryLvs:e})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(t,e,n){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+t).then(t=>t.data)},getHistory(t){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+t)},getPrestudents(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:t},{signal:e,timeout:3e4})},approve(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t)},reject(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t)},reopen(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t)},pause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t)},unpause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t)},object(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t)},approveObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t)},denyObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t)}}},k={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",{})}},E={ +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 n from"../../../../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js";import i from"../../../../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js";const r={emits:["dataFetched"],props:{refresh:{type:Boolean},apiFunction:{required:!0,type:Function},apiFunctionParameters:{}},watch:{refresh:function(t,e){this.fetchData()}},data:function(){return{loading:!1,error:!1,errorMessage:null}},created:function(){this.fetchData()},methods:{fetchData:function(){if(this.loading=!0,this.error=!1,this.errorMessage=null,"function"==typeof this.apiFunction){let t=this.apiFunction(this.apiFunctionParameters);t instanceof Promise?t.then(this.successHandler).catch(this.errorHandler).finally(this.finallyHandler):this.setError("The called apiFunction does not return a Promise")}else this.setError("Property apiFunction is not a function")},setError:function(t){this.loading=!1,this.error=!0,this.errorMessage=t},successHandler:function(t){this.$emit("dataFetched",t?t.data:void 0)},errorHandler:function(t){t.response?.data?.retval?this.setError(t.response.data.retval):t.data?.message?this.setError(t.data.message):this.setError(t.message)},finallyHandler:function(){this.loading=!1}},template:'\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t'},a="Filter Component New Filter";var s={props:{filters:{type:Array,default:[]},columns:{type:Array,default:[]},fields:{type:Array,default:[]}},emits:{switchFilter:["filterId"],applyFilterConfig:["filterFields"],saveCustomFilter:["customFilterName"]},data:function(){return{currentFields:[]}},computed:{types(){return this.columns.reduce((t,e)=>{let n=e.type.toLowerCase();return n.indexOf("int")>=0?t[e.name]="Numeric":n.indexOf("varchar")>=0||n.indexOf("text")>=0||n.indexOf("bpchar")>=0?t[e.name]="Text":n.indexOf("timestamp")>=0||n.indexOf("date")>=0?t[e.name]="Date":t[e.name]="",t},{})}},watch:{fields(t){this.currentFields=t}},methods:{switchFilter(t){this.$emit("switchFilter",t.currentTarget.value)},applyFilterConfig(){const t=this.currentFields.filter(t=>t.name!=a);t.filter(t=>""==t.condition).length?alert("Please fill all the filter options"):this.$emit("applyFilterConfig",t)},addField(t){this.currentFields.push({name:a})},removeField(t){this.currentFields.splice(t,1)}},template:'\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tFilter {{ index + 1 }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\x3c!-- Numeric --\x3e\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\x3c!-- Text --\x3e\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\x3c!-- Timestamp and date --\x3e\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t\x3c!-- Filter save options --\x3e\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t'},o={props:{fields:Array,selected:{type:Array,default:[]},names:{type:Object,default:{}}},emits:{hide:["fieldName"],show:["fieldName"]},data:function(){return{selectedFields:[]}},watch:{selected(t){this.selectedFields=t}},methods:{toggle(t){-1!=this.selectedFields.indexOf(t)?(this.selectedFields.splice(this.selectedFields.indexOf(t),1),this.$emit("hide",t)):(this.selectedFields.push(t),this.$emit("show",t))}},template:'\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{{ names[fieldToDisplay] || fieldToDisplay }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\n\t'};const l={jsonLines:"fa-file-lines",xlsx:"fa-file-excel",pdf:"fa-file-pdf",html:"fa-file-code",json:"fa-file",csv:"fa-file-csv"},d={jsonLines:"Download as JSONLINES",xlsx:"Download as XLSX",pdf:"Download as PDF",html:"Download as HTML",json:"Download as JSON",csv:"Download as CSV "};var u={props:{tabulator:Object,config:{type:[Boolean,String,Function,Array,Object],default:!1},iconClass:[String,Array,Object]},computed:{currentConfig(){if(!this.config)return!1;let t=this.config;if(t instanceof Function)return[t];if(null===t)return[];if(!0===this.config&&(t=["csv"]),"[object String]"===Object.prototype.toString.call(t)&&(t=t.split(",")),"object"==typeof t&&!Array.isArray(t)){let r=[];for(var e in t){var n,i=t[e];i&&("[object String]"===Object.prototype.toString.call(i)?null!==(n=this.stringToFileFormatter(i))?r.push({icon:"fa-solid "+l[n],label:i===e?d[n]:e,formatter:n}):null!==(n=this.stringToFileFormatter(e))?r.push({icon:"fa-solid "+l[n],label:i,formatter:n}):alert("neither "+e+" nor "+i+" are supported download file types"):"object"!=typeof i||Array.isArray(i)?null!==(n=this.stringToFileFormatter(e))?r.push({icon:"fa-solid "+l[n],label:d[n],formatter:n}):alert(e+" is not a supported download file type"):null!==(n=this.stringToFileFormatter(e))?(void 0===i.formatter&&(i.formatter=n),void 0===i.label&&(i.label=d[n]),void 0===i.icon&&(i.icon=l[n]),r.push(i)):(void 0===i.label&&(i.label=e),r.push(i)))}t=r}if(Array.isArray(t)){if(t=t.map(t=>{if("[object String]"===Object.prototype.toString.call(t)){let e=this.stringToFileFormatter(t);return null===e?null:{icon:"fa-solid "+l[e],label:d[e],formatter:e}}if(t instanceof Function)return{formatter:t};if("object"==typeof t&&!Array.isArray(t)&&null!==t){if(t.formatter instanceof Function)return t;if(this.validateFileFormatter(t.formatter))return t}return null}).filter(t=>null!==t),t.length<2)return t;if(t.filter(t=>t.label||t.icon).length==t.length)return t;alert("Config not valid")}return[]}},methods:{stringToFileFormatter(t){let e=t.toLowerCase();return"jsonlines"==e?"jsonLines":["xlsx","pdf","html","json","csv"].includes(e)?e:null},validateFileFormatter(t){let e=this.stringToFileFormatter(t);if(!e)return alert(t+" is not a supported file formatter"),!1;if("xlsx"==e&&!window.XLSX)return alert("XLSX Library not loaded"),!1;if("pdf"==e){if(!window.jspdf)return alert("jsPDF Library not loaded"),!1;if(!new jspdf.jsPDF({}).autoTable)return alert("jsPDF-AutoTable Plugin not loaded"),!1}return!0},download(t){this.tabulator.download(t.formatter,t.file,t.options)}},template:'\n\t\n\t'};const p=new WeakMap;var c={mounted(t,e){let n=!1;p.set(t,e=>{if(!n)return;if(t.contains(e.target))return;const i=bootstrap.Collapse.getInstance(t);i&&i.hide()}),t.addEventListener("shown.bs.collapse",()=>{n=!0}),t.addEventListener("hide.bs.collapse",()=>{n=!1}),document.addEventListener("click",p.get(t),!0)},beforeUnmount(t,e){document.removeEventListener("click",p.get(t)),delete t.collapsibleAutoHideFunc}};window.Tabulator?.extendModule("layout","modes",{fitDataStretchFrozen(t,e){var n=0,i=this.table.rowManager.element.clientWidth,r=0,a=!1;t.forEach((t,e)=>{t.widthFixed||t.reinitializeWidth(),(this.table.options.responsiveLayout?t.modules.responsive.visible:t.visible&&!t.definition.frozen)&&(a=t),t.visible&&(n+=t.getWidth())}),a?(r=i-n+a.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(a.setWidth(0),this.table.modules.responsiveLayout.update()),r>0?a.setWidth(r):a.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()}});var f={saveCustomFilter:t=>({method:"post",url:"/api/frontend/v1/filter/saveCustomFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,customFilterName:t.customFilterName}}),removeCustomFilter:t=>({method:"post",url:"/api/frontend/v1/filter/removeCustomFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId}}),applyFilterFields:t=>({method:"post",url:"/api/frontend/v1/filter/applyFilterFields",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterFields:t.filterFields}}),addFilterField:t=>({method:"post",url:"/api/frontend/v1/filter/addFilterField",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField}}),removeFilterField:t=>({method:"post",url:"/api/frontend/v1/filter/removeFilterField",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterField:t.filterField}}),getFilterById:t=>({method:"get",url:"/api/frontend/v1/filter/getFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType,filterId:t.filterId}}),getFilter:t=>({method:"get",url:"/api/frontend/v1/filter/getFilter",params:{filterUniqueId:t.filterUniqueId,filterType:t.filterType}})},h=0;const g={components:{CoreFetchCmpt:r,FilterConfig:s,FilterColumns:o,TableDownload:u},directives:{collapseAutoClose:c},emits:["nwNewEntry","click:new","tableBuilt","uuidDefined"],props:{onNwNewEntry:Function,title:String,description:String,sideMenu:{type:Boolean,default:!0},filterType:{type:String},tabulatorOptions:Object,tabulatorEvents:Array,tableOnly:Boolean,noColumnFilter:Boolean,reload:Boolean,reloadBtnInfotext:String,download:{type:[Boolean,String,Function,Array,Object],default:!1},newBtnShow:Boolean,newBtnClass:[String,Array,Object],newBtnDisabled:Boolean,newBtnLabel:String,uniqueId:String,idField:String,parentIdField:String,countOnly:Boolean,useSelectionSpan:{type:Boolean,default:!0}},data:function(){return{uuid:0,filterName:null,filterActive:!1,fields:null,dataset:null,datasetMetadata:null,selectedFields:null,filterFields:null,availableFilters:null,selectedFilter:null,fetchCmptRefresh:!1,fetchCmptApiFunction:null,fetchCmptApiFunctionParams:null,fetchCmptDataFetched:null,fetchResult:null,tabulator:null,tableBuilt:!1,tabulatorHasSelector:!1,selectedData:[],persistence:{sort:!0,columns:!0,filter:!1,headerFilter:!1,group:!1,page:!1}}},computed:{notSelectedFields(){return this.fields&&this.selectedFields?this.fields.filter(t=>-1===this.selectedFields.indexOf(t)):null},filteredData(){return this.dataset?JSON.parse(JSON.stringify(this.dataset)):[]},filteredColumns(){let t=JSON.parse(JSON.stringify(this.fields))||[],e=JSON.parse(JSON.stringify(this.selectedFields))||[],n=null;if(this.tabulatorOptions&&this.tabulatorOptions.hasOwnProperty("columns")&&(n=this.tabulatorOptions.columns),!Array.isArray(n)||Array.isArray(n)&&n.length=0,n.push(t)}}else for(let i of n)i.visible=e.indexOf(i.field)>=0||-1==t.indexOf(i.field),i.hasOwnProperty("resizable")&&(i.resizable=i.visible);return n},fieldIdsForVisibilty(){return this.tableBuilt?this.tabulator.getColumns().filter(t=>{let e=t.getDefinition();return!e.frozen&&e.title&&"responsiveCollapse"!=e.formatter}).map(t=>t.getField()):[]},fieldNames(){return this.tableBuilt?this.tabulator.getColumns().reduce((t,e)=>(t[e.getField()]=e.getDefinition().title,t),{}):{}},idExtra(){return this.uuid?"-"+this.uuid:""},columnsForFilter(){if(!this.filteredColumns||!this.datasetMetadata)return[];const t=this.filteredColumns.reduce((t,e)=>(t[e.field]=e.title,t),{});return this.datasetMetadata.map(e=>({...e,title:t[e.name]}))}},methods:{reloadTable(){this.tableOnly?this.tabulator.setData():this.getFilter()},async initTabulator(){let t="< Phrasen Plugin not loaded! >";this.$p&&(await this.$p.loadCategory("ui"),t=this.$p.t("ui/keineDatenVorhanden")),this.tableOnly||await new Promise(t=>{const e=window.location.hash?window.location.hash.slice(1):null,n=e=>{this.setRenderData(e),t()};null===e?this.startFetchCmpt(t=>this.$api.call(f.getFilter(t)),null,n):this.startFetchCmpt(t=>this.$api.call(f.getFilterById(t)),{filterId:e},n)});let e={layout:"fitDataStretchFrozen",movableColumns:!0,columnDefaults:{tooltip:!0},placeholder:t,persistence:this.persistence,...this.tabulatorOptions||{}};if(void 0===e.height&&void 0===e.minHeight&&void 0===e.maxHeight&&(e.height=500),this.tableOnly?e.columns.forEach(t=>{void 0===t.visible&&(t.visible=!0)}):(e.data=this.filteredData,e.columns=this.filteredColumns),(e.selectable||e.columns&&e.columns.filter(t=>"rowSelection"==t.formatter).length)&&(this.tabulatorHasSelector=!0),this.idField&&(this.parentIdField&&(e.dataTree=!0),e.index=this.idField),this.tabulator=new Tabulator(this.$refs.table,e),Array.isArray(this.tabulatorEvents)&&this.tabulatorEvents.length>0)for(let t of this.tabulatorEvents)this.tabulator.on(t.event,t.handler);this.tabulator.on("tableBuilt",()=>{this.tableBuilt=!0,this.$emit("tableBuilt")}),this.tabulator.on("rowSelectionChanged",t=>{this.selectedData=t}),this.parentIdField&&this.idField&&this.tabulator.on("dataLoading",t=>{let e=[];for(let n=0;n{const t=this.tabulator.getColumns();this.fields=t.map(t=>t.getField()),this.selectedFields=t.filter(t=>t.isVisible()).map(t=>t.getField()),this.tabulator.options.persistence.headerFilter&&this._setHeaderFilter()}),this.tabulator.on("dataFiltered",t=>{this.filterActive=t.length>0})},updateTabulator(){this.tabulator&&(this.tableBuilt?this._updateTabulator():this.tabulator.on("tableBuilt",this._updateTabulator))},_updateTabulator(){this.tabulatorHasSelector=this.tabulatorOptions.selectable||this.filteredColumns.filter(t=>"rowSelection"==t.formatter).length,this.tabulator.setColumns(this.filteredColumns),this.tabulator.setData(this.filteredData),this._setHeaderFilter()},clearFilters(){this.tabulator.getHeaderFilters().forEach(t=>{this.tabulator.setHeaderFilterValue(t.field,"")}),this.tabulator.clearFilter(),this.filterActive=!1},_setHeaderFilter(){this.tabulator.getHeaderFilters().forEach(t=>{this.tabulator.setHeaderFilterValue(t.field,t.value)})},getFilter(){null===this.selectedFilter?this.startFetchCmpt(t=>this.$api.call(f.getFilter(t)),null,this.render):this.startFetchCmpt(t=>this.$api.call(f.getFilterById(t)),{filterId:this.selectedFilter},this.render)},setRenderData(t){this.fetchResult=t,this.filterName=t.filterName,this.dataset=t.dataset,this.datasetMetadata=t.datasetMetadata,this.fields=t.fields,this.selectedFields=t.selectedFields,this.filterFields=[];for(let e=0;ethis.$api.call(f.saveCustomFilter(t)),{customFilterName:t},this.getFilter)},handlerRemoveCustomFilter(t){let e=t.currentTarget.getAttribute("href").substring(1);e===this.selectedFilter&&(this.selectedFilter=null),this.startFetchCmpt(t=>this.$api.call(f.removeCustomFilter(t)),{filterId:e},this.getFilter)},handlerGetFilterById:function(t){let e=null,n=t.currentTarget.getAttribute("href");e=null==n?t.currentTarget.value:n.substring(1),this.switchFilter(e)},switchFilter(t){this.selectedFilter=t,this.getFilter()},applyFilterConfig(t){this.selectedFilter=null,this.startFetchCmpt(t=>this.$api.call(f.applyFilterFields(t)),{filterFields:t},this.getFilter)},appendChild(t,e){let n=e[this.parentIdField];for(let i=0;i{this.tableOnly||(this.selectedFilter=window.location.hash?window.location.hash.slice(1):null,this.render(this.fetchResult))})},template:'\n\t\t\x3c!-- Load filter data --\x3e\n\t\t\n\t\t\n\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ selectedData.length }} ausgewählt\n\t\t\t\t\t\t Mit {{ selectedData.length }} ausgewählten:\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t[ {{ filterName }} ]\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\n\t\t\x3c!-- Tabulator --\x3e\n\t\t
    \n\t'};let m={};var v={name:"FormInput",inheritAttrs:!1,components:{FhcFragment:{render(){return this.$slots&&this.$slots.default?this.$slots.default():null}}},inject:{registerToForm:{from:"$registerToForm",default:null},clearValidationForName:{from:"$clearValidationForName",default:null}},props:{bsFeedback:Boolean,noAutoClass:Boolean,noFeedback:Boolean,inputGroup:Boolean,type:String,name:String,containerClass:[String,Array,Object],label:String,onInput:[Array,Function],"onUpdate:modelValue":[Array,Function]},data:()=>({valid:void 0,feedback:[],modelValueDummy:void 0}),computed:{hasContainer(){if(!this.bsFeedback)return!0;if(this.containerClass)return!0;for(const t in this.autoContainerClass)if(Object.hasOwn(this.autoContainerClass,t))return!0;return!1},acc(){return this.containerClass?"string"==typeof this.containerClass||this.containerClass instanceof String?this.containerClass.split(" ").reduce((t,e)=>(t[e]=!0,t),{}):Array.isArray(this.containerClass)?this.containerClass.reduce((t,e)=>(t[e]=!0,t),{}):this.containerClass:{}},autoContainerClass(){if(this.noAutoClass)return this.acc;const t={...this.acc};return this.inputGroup&&(t["input-group-item"]=!0),"radio"!=this.lcType&&"checkbox"!=this.lcType||(t["form-check"]=!0),this.inputGroup&&t["form-check"]&&(t["input-group-item"]=!1,t["form-check"]=!1,t["input-group-text"]=!0),t},lcType(){return this.type?this.type.toLowerCase():"text"},tag(){switch(this.lcType){case"textarea":case"select":return this.lcType;case"datepicker":return"VueDatePicker";case"autocomplete":return"PvAutocomplete";case"uploadimage":return"UploadImage";case"uploadfile":case"uploaddms":return"UploadDms";default:return"input"}},validationClass(){const t=[];if(this.valid?t.push("is-valid"):!1===this.valid&&t.push("is-invalid"),!this.noAutoClass){let e=this.$attrs.class?this.$attrs.class.split(" "):[];switch(this.lcType){case"select":e.includes("form-select")||t.push("form-select");break;case"range":e.includes("form-range")||t.push("form-range");break;case"radio":case"checkbox":e.includes("form-check-input")||e.includes("btn-check")||t.push("form-check-input");break;case"color":e.includes("form-control-color")||t.push("form-control-color"),e.includes("form-control")||t.push("form-control");break;case"autocomplete":case"datepicker":t.push("p-0"),t.push("border-0"),e.includes("form-control")||t.push("form-control");break;case"text":case"number":case"password":case"textarea":e.includes("form-control")||t.push("form-control")}}return t},feedbackClass(){return this.feedback&&!0!==this.feedback?this.bsFeedback?{"valid-feedback":!0===this.valid,"invalid-feedback":!1===this.valid}:{"valid-tooltip":!0===this.valid,"invalid-tooltip":!1===this.valid}:""},modelValueCmp:{get(){return this.$attrs.hasOwnProperty("modelValue")?this.$attrs.modelValue:this.modelValueDummy},set(t){this.$attrs.hasOwnProperty("modelValue")||(this.modelValueDummy=t),this.$emit("update:modelValue",t)}},idCmp(){let t=this.$attrs.id;if("datepicker"==this.lcType&&(t=this.$attrs.uid),!t&&this.label&&(t="fhc-form-input"),t)return"datepicker"==this.lcType&&(t="dp-input-"+t),void 0===m[t]&&(m[t]=0),t+"-"+m[t]++}},methods:{clearValidation(){this.valid=void 0,this.feedback=[]},clearValidationForThisName(){void 0!==this.valid&&(this.clearValidationForName&&this.name?this.clearValidationForName(this.name):this.clearValidation())},setFeedback(t,e){if(e||(e=[]),Array.isArray(e)||(e=[e]),this.valid=t,this.name&&("radio"==this.lcType||"checkbox"==this.lcType)){const t='input[type="'+this.lcType+'"][name="'+this.name+'"]';if([...this.$el.parentNode.querySelectorAll(t)].pop()!=this.$refs.input)return}this.feedback=e},_loadComponents(){"VueDatePicker"!=this.tag||this._.components.VueDatePicker?"PvAutocomplete"!=this.tag||this._.components.PvAutocomplete?"UploadImage"!=this.tag||this._.components.UploadImage?"UploadDms"!=this.tag||this._.components.UploadDms||(this._.components.UploadDms=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return ot}))):this._.components.UploadImage=Vue.defineAsyncComponent(()=>Promise.resolve().then(function(){return at})):this._.components.PvAutocomplete=primevue.autocomplete:this._.components.VueDatePicker=Vue.defineAsyncComponent(()=>import("../../../../../js/components/vueDatepicker.js.php"))}},beforeMount(){this._loadComponents()},beforeUpdate(){this._loadComponents()},mounted(){this.registerToForm&&this.registerToForm(this)},template:'\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs[\'input-class-name\'] ? $attrs[\'input-class-name\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs[\'input-class\'] ? $attrs[\'input-class\'].split(\' \') : [])].join(\' \')"\n\t\t\t@update:model-value="clearValidationForThisName"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t'};const b="lehrveranstaltung_template_id";var A={components:{CoreFilterCmpt:g,CoreFormInput:v},data:function(){return{table:null,studiensemester:[],selectedStudiensemester:"",cbDataTreeStartExpanded:!1}},computed:{tabulatorOptions(){const t=function(t){var e;const n=t.getField(),i=t.getTable().getData(),r=function(t,e){var n={},i={};for(const a of t){const t=null!==a[e]?a[e]:"";n[t]=t,a._children&&a._children.length>0&&(i=r(a._children,e),n={...n,...i})}return n};e=r(i,n);const a=Object.keys(e).sort();return-1===a.indexOf("")&&a.unshift(""),a},e=function(t,n,i,r){if(i._children&&i._children.length>0)for(var a in i._children)return n==t||e(t,i._children[a][r.field],i._children[a],r);return n==t},n=this;return{ajaxResponse:(t,e,i)=>n.prepDataTreeData(i.data),layout:"fitColumns",autoResize:!1,resizableColumnFit:!0,index:"lehrveranstaltung_id",selectable:!0,selectableRangeMode:"click",dataTree:!0,dataTreeStartExpanded:n.cbDataTreeStartExpanded,dataTreeChildIndent:15,persistence:{filter:!1},columns:[{title:"LV-ID",field:"lehrveranstaltung_id",headerFilter:!0,visible:!1},{title:"LV Kurzbz",field:"kurzbz",headerFilter:!0,visible:!1,width:70},{title:"STG Kurzbz",field:"stg_typ_kurzbz",headerFilter:"list",headerFilterParams:{valuesLookup:t},headerFilterFunc:e,headerFilterFuncParams:{field:"stg_typ_kurzbz"},visible:!0,width:80},{title:"OrgEinheit",field:"lv_oe_bezeichnung",headerFilter:!0,visible:!1,width:250},{title:"Lehrtyp Kurzbz",field:"lehrtyp_kurzbz",headerFilter:!0,visible:!1,width:70},{title:"Studiengangtyp",field:"stg_typ_bezeichnung",headerFilter:"list",headerFilterParams:{valuesLookup:t},headerFilterFunc:e,headerFilterFuncParams:{field:"stg_typ_bezeichnung"},width:150},{title:"OrgForm",field:"orgform_kurzbz",headerFilter:"list",headerFilterParams:{valuesLookup:t},headerFilterFunc:e,headerFilterFuncParams:{field:"orgform_kurzbz"},width:70},{title:"Semester",field:"semester",headerFilter:!0,width:50},{title:"Lehrveranstaltung",field:"lv_bezeichnung",headerFilter:!0,minWidth:250},{title:"Lehrveranstaltung ENG",field:"bezeichnung_english",headerFilter:!0,minWidth:250},{title:"ECTS",field:"ects",headerFilter:!0,width:50,hozAlign:"right"},{title:"Lehrform",field:"lehrform_kurzbz",headerFilter:!0,width:50},{title:"Sprache",field:"sprache",headerFilter:!0,width:100},{title:"Aktiv",field:"aktiv",width:50,formatter:"tickCross",headerFilter:"tickCross",headerFilterParams:{tristate:!0},hozAlign:"center",formatterParams:{tickElement:'',crossElement:''}},{title:"Studienplan",field:"studienplan_bezeichnung",headerFilter:!0,visible:!0,width:220},{title:"OE Kurzbz",field:"lv_oe_kurzbz",headerFilter:!0,visible:!1,minWidth:80},{title:this.$p.t("global/aktionen"),field:"actions",width:140,formatter:(t,e,n)=>{let i=document.createElement("div");i.className="d-flex gap-2";let r=document.createElement("button");return r.className="btn btn-outline-secondary",r.innerHTML=' '+this.$p.t("global/verwalten"),r.addEventListener("click",e=>this.openAdminLvTemplate(e,t.getRow())),i.append(r),i},frozen:!0}]}},urlToAdminAllTemplates:()=>FHC_JS_DATA_STORAGE_OBJECT.app_root+"vilesci/lehre/lehrveranstaltung.php?stg_kz=99999&semester=-1&orgform=-1"},methods:{async loadAndSetStudiensemester(){await this.$api.get("api/frontend/v1/organisation/Studiensemester/getAll",{start:"2011-01-01",order:"desc"}).then(t=>this.studiensemester=t.data).then(()=>this.$api.get("api/frontend/v1/organisation/Studiensemester/getAktNext")).then(t=>this.selectedStudiensemester=t.data[0].studiensemester_kurzbz).catch(t=>this.$fhcAlert.handleSystemError(t))},async onTableBuilt(){this.table=this.$refs.lvTemplateUebersichtTable.tabulator,await this.loadAndSetStudiensemester(),this.table.setData(this.$api.getUri()+"/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree?studiensemester_kurzbz="+this.selectedStudiensemester),await this.$p.loadCategory(["lehre"]),this.table.updateColumnDefinition("lv_bezeichnung",{title:this.$p.t("lehre","lehrveranstaltung")})},onChangeStudiensemester(){this.table.setData(this.$api.getUri()+"/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree?studiensemester_kurzbz="+this.selectedStudiensemester)},openAdminLvTemplate(t,e){const n=FHC_JS_DATA_STORAGE_OBJECT.app_root+"vilesci/lehre/lehrveranstaltung.php?stg_kz=&semester=-1&orgform=-1&lehrveranstaltung_id="+e.getData().lehrveranstaltung_id;window.open(n,"_blank").focus()},prepDataTreeData(t){let e=[];for(let n=0;n\n\t
    \n\t\t
    {{ $p.t(\'lehre/lvTemplatesUebersicht\') }}
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t
    \n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t
    \n\t
    \n\n\n'},y={getHeader:t=>({method:"get",url:"/api/frontend/v1/navigation/header",params:{navigation_page:t}}),getMenu:t=>({method:"get",url:"/api/frontend/v1/navigation/menu",params:{navigation_page:t}})};const _={components:{CoreFetchCmpt:r},props:{addHeaderMenuEntries:Object,addSideMenuEntries:Object,hideTopMenu:Boolean,leftNavCssClasses:{type:String,default:"navbar navbar-left-side"}},data:()=>({headerMenu:{},sideMenu:{}}),computed:{headerMenuEntries(){let t=this.headerMenu?{...this.headerMenu}:{};return null!=this.headerMenu&&null!=this.addHeaderMenuEntries&&Object.keys(this.addHeaderMenuEntries).length>0&&(t[this.addHeaderMenuEntries.description]=this.addHeaderMenuEntries),t},sideMenuEntries(){let t=this.sideMenu?{...this.sideMenu}:{};return null!=this.sideMenu&&null!=this.addSideMenuEntries&&Object.keys(this.addSideMenuEntries).length>0&&(t[this.addSideMenuEntries.description]=this.addSideMenuEntries),t}},methods:{getNavigationPage:()=>FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,fetchCmptApiFunctionHeader(){return this.$api.call(y.getHeader(this.getNavigationPage()))},fetchCmptApiFunctionSideMenu(){return this.$api.call(y.getMenu(this.getNavigationPage()))},fetchCmptDataFetchedHeader(t){this.headerMenu=t||{}},fetchCmptDataFetchedMenu(t){this.sideMenu=t||{}},getDataBsToggle:t=>t.children?"dropdown":null},template:'\n\t\t\x3c!-- Load head menu --\x3e\n\t\t\n\t\t\x3c!-- Load side menu --\x3e\n\t\t\n\n\t\t\x3c!-- Top menu --\x3e\n\t\t\n\n\t\t\x3c!-- Left side menu --\x3e\n\t\t\n\t'};var F={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)}},$={loadCategory(t){return this.$fhcApi.get("/api/frontend/v1/phrasen/loadModule/"+t)},setLanguage(t,e){const n={categories:t,language:e};return this.$fhcApi.post("/api/frontend/v1/phrasen/setLanguage",n)},getLanguage(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getLanguage",{})},getActiveDbLanguages(){return this.$fhcApi.get("/api/frontend/v1/phrasen/getAllLanguages",{})}},C={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})}},S={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})}},T={abmeldung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/abmeldung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n){return this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n},{errorHandling:"strict"})},cancel(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t.studierendenantrag_id},{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/abmeldung/cancelAntrag",{antrag_id:t})}},unterbrechung:{getDetails(t,e){const n="/api/frontend/v1/studstatus/unterbrechung/"+(void 0!==t?"getDetailsForAntrag/"+t:"getDetailsForNewAntrag/"+e);return this.$fhcApi.get(n)},create(t,e,n,i,r){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/createAntrag",{studiensemester:t,prestudent_id:e,grund:n,datum_wiedereinstieg:i,attachment:r},{errorHandling:"strict"})},cancel(t){return this.$fhcApi.post("/api/frontend/v1/studstatus/unterbrechung/cancelAntrag",{antrag_id:t},{errorHandling:"strict"})}},wiederholung:{getDetails(t){const e="/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/"+t;return this.$fhcApi.get(e)},getLvs(t){const e="/api/frontend/v1/studstatus/wiederholung/getLvs/"+t;return this.$fhcApi.get(e)},create(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/createAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},cancel(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/cancelAntrag",{prestudent_id:t,studiensemester:e},{errorHandling:"strict"})},saveLvs(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/wiederholung/saveLvs",{forbiddenLvs:t,mandatoryLvs:e})}},leitung:{getStgs(){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getActiveStgs")},getAntraege(t,e,n){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getAntraege/"+t).then(t=>t.data)},getHistory(t){return this.$fhcApi.get("/api/frontend/v1/studstatus/leitung/getHistory/"+t)},getPrestudents(t,e){return this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/getPrestudents",{query:t},{signal:e,timeout:3e4})},approve(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveAntrag",t)},reject(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/rejectAntrag",t)},reopen(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/reopenAntrag",t)},pause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/pauseAntrag",t)},unpause(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/unpauseAntrag",t)},object(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/objectAntrag",t)},approveObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/approveObjection",t)},denyObjection(t){return Array.isArray(t)?Promise.allSettled(t.map(t=>this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t,{errorHeader:"#"+t.studierendenantrag_id}))):this.$fhcApi.post("/api/frontend/v1/studstatus/leitung/denyObjection",t)}}},k={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",{})}},E={ //! API calls for profil update requests -getStatus:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getStatus",{})},getTopic:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getTopic",{})},acceptProfilRequest:function({profil_update_id:t,uid:e,status_message:n,topic:i,requested_change:r}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",{profil_update_id:t,uid:e,status_message:n,topic:i,requested_change:r})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:n,status_message:i}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/denyProfilRequest",{profil_update_id:t,uid:e,topic:n,status_message:i})},insertFile:function(t,e=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,t)},getProfilRequestFiles:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`,{})},selectProfilRequest:function(t=null,e=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...t?{uid:t}:{},...e?{id:e}:{}})},insertProfilRequest:function(t,e,n=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/insertProfilRequest",{topic:t,payload:e,...n?{fileID:n}:{}})},updateProfilRequest:function(t,e,n,i=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/updateProfilRequest",{topic:t,payload:e,ID:n,...i?{fileID:i}:{}})},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})}},P={getRoomInfo(t,e,n){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:n})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,n){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:n})},getLvPlanReservierungen(t,e){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:t,end_date:e})},getLehreinheitStudiensemester(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${t}`,{})},studiensemesterDateInterval(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${t}`,{})},LvPlanEvents(t,e,n){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:n})}},w={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(t){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:t})}}},students:{uid(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},prestudent(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},person(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},verband(t){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+t)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(t){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:t})}},konto:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/konto/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id),only_open:e.filter,studiengang_kz:e.studiengang_kz_intern?e.stg_kz:""}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},checkDoubles(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/checkDoubles",e,{confirmErrorHandler:t=>!0})},insert(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/insert",e)},counter(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",t)},edit(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/update",e)},delete(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:t})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+n.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+n.id)},addNewAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,n)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,n)},deleteAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:t})},getPlaces(t){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+t)},getFirmen(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+t)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+n.id)},addNewBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,n)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,n)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+n.id)},addNewContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,n)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,n)},deleteContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:t})},getStandorteByFirma(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+t)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(t,e){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e))},updatePrestudent(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,n)},getBezeichnungZGV(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungZGV/")},getBezeichnungMZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungMZgv/")},getBezeichnungDZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungDZgv/")},getStgs(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStgs/")},getAusbildung(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAusbildung/")},getAufmerksamdurch(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAufmerksamdurch/")},getBerufstaetigkeit(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBerufstaetigkeit/")},getTypenStg(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getTypenStg/")},getBisstandort(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBisstandort/")},getHistoryPrestudent(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+n.id)},getMaxSem(t){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:t})},advanceStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+n+"/"+i)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+n+"/"+i)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+n+"/"+i)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+n.id)}},status:{insertStatus(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,n)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+n+"/"+i)},updateStatus(t,{prestudent_id:e,status_kurzbz:n,studiensemester_kurzbz:i,ausbildungssemester:r},a){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+n+"/"+i+"/"+r,a)},getStudienplaene(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+t)},getStudiengang(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+t)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+t,e,{errorHeader:t})},changeStatus(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+t,e,{errorHeader:t})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(t,e){let n="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(n)},save(t,e,n,i){let r="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(n);return this.$fhcApi.post(t,r,i)}},exam:{getPruefungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+n.id)},loadPruefung(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+t)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",t)},getLvsByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+t)},getLvsandLesByStudent(t,e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+t+"/"+e)},getLvsAndMas(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+t)},getMitarbeiterLv(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",t)},addPruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/insertPruefung/",e)},updatePruefung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,n)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+n.id)},addNewAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",e)},loadAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:t})},updateAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",e)},deleteAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:t})},getTypenAbschlusspruefung(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/")},getTypenAntritte(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/")},getBeurteilungen(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/")},getAkadGrade(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:t})},getTypStudiengang(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:t})},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+t)},getPruefer(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:t})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(t,e){let n="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getTeacherProposal(t,e){let n="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getRepeaterGrades(t,e){let n="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:i,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:i},{errorHeader:r})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:i})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:i})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:t,lv_bezeichnung:e}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:t},{errorHeader:e})},getGradeFromPoints(t,e,n,i){const r=i?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:n},r)}},mobility:{getMobilitaeten(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+n.id)},getProgramsMobility(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getProgramsMobility/")},addNewMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/insertMobility/",e)},loadMobility(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+t)},updateMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/updateMobility/",e)},deleteMobility(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+t)},getLVList(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+t)},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",t)},getLvsandLesByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+t)},getPurposes(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+n.id)},getSupports(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+n.id)},getListPurposes(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListPurposes/")},getListSupports(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListSupports/")},deleteMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+t.bisio_id,t)},addMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+t.bisio_id,t)},deleteMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+t.bisio_id,t)},addMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+t.bisio_id,t)}},archiv:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/archiv/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id)}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(t){return this.$fhcApi.post("api/frontend/v1/documents/archive",t)},archiveSigned(t){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",t)},update(t){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",t)},delete({akte_id:t,studiengang_kz:e}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:t,studiengang_kz:e})}},documents:{getDocumentsUnaccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+n.id+"/"+n.studiengang_kz)},getDocumentsAccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+n.id+"/"+n.studiengang_kz)},deleteZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},createZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},loadAkte(t){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+t)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+t,e)},deleteFile(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+t)},uploadFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+t,e)}},exemptions:{getAnrechnungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+n.id)},getLehrveranstaltungen(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+t)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+t)},getLektoren(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+t)},addNewAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",e)},loadAnrechnung(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+t)},editAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",e)},deleteAnrechnung(t){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+t)}},jointstudies:{getStudies(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+n.id)},getTypenMobility(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/")},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/")},getStudyprograms(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/")},getListPartner(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/")},getStatiPrestudent(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/")},loadStudy(t){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+t)},insertStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",e)},updateStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",e)},deleteStudy(t){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+t)}},courselist:{getCourselist(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+n.student_uid+"/"+n.start_date+"/"+n.end_date+"/"+n.group_consecutiveHours+"/"+n.dbStundenplanTable)},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStudiensemester/")}},configStudent(){return this.$fhcApi.get("api/frontend/v1/stv/config/student")},configStudents(){return this.$fhcApi.get("api/frontend/v1/stv/config/students")}},D={person:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,n)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,n)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+t)},isBerechtigt(t,e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}}},O={person:{getAllBetriebsmittel(t,e,n){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+n.type+"/"+n.id)},addNewBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,n)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,n)},deleteBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+t)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(t){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+t)}}},x={updatePersonUnrulyStatus(t,e){try{const n={person_id:t,unruly:e},i="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(i,n,null)}catch(t){throw t}},filterPerson(t,e=""){try{const n=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(n,t)}catch(t){throw t}}},B={getContentID(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/ContentID",{ort_kurzbz:t})},getRooms(t,e,n,i,r=0){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getRooms",{datum:t,von:e,bis:n,typ:i,personenanzahl:r})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},L={content(t,e=null,n=null,i=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...n?{sprache:n}:{},...i?{sichtbar:i}:{}})},getNews(t=1,e=10,n){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:n})},news(t){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:t})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},H={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}`,{})},getStudentProjektarbeiten(t){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${t}`,{})},getStudentProjektabgaben(t){return this.$fhcApi.get("/api/frontend/v1/Lehre/getStudentProjektabgaben",{projektarbeit_id:t.projektarbeit_id,student_uid:t.student_uid})},postStudentProjektarbeitEndupload(t){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload",t,{Headers:{"Content-Type":"multipart/form-data"}})},postStudentProjektarbeitZwischenabgabe(t){return this.$fhcApi.post("/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe",t,{Headers:{"Content-Type":"multipart/form-data"}})},getStudentProjektarbeitAbgabeFile(t,e){const n=`/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${t}&student_uid=${e}`;window.location=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+n},getMitarbeiterProjektarbeiten(t,e){return this.$fhcApi.get(`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${e}`,{})},postProjektarbeitAbgabe(t){const e={paabgabe_id:t.paabgabe_id,paabgabetyp_kurzbz:t.bezeichnung.paabgabetyp_kurzbz,datum:t.datum,fixtermin:t.fixtermin,insertvon:t.insertvon,kurzbz:t.kurzbz,projektarbeit_id:t.projektarbeit_id};return this.$fhcApi.post("/api/frontend/v1/Lehre/postProjektarbeitAbgabe",e,null)},deleteProjektarbeitAbgabe(t){const e={paabgabe_id:t};return this.$fhcApi.post("/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe",e,null)},postSerientermin(t,e,n,i,r){const a={datum:t,paabgabetyp_kurzbz:e,bezeichnung:n,kurzbz:i,projektarbeit_ids:r};return this.$fhcApi.post("/api/frontend/v1/Lehre/postSerientermin",a,null)},fetchDeadlines(t){const e={person_id:t};return this.$fhcApi.post("/api/frontend/v1/Lehre/fetchDeadlines",e,null)}},R={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}`,{})}},z={person:{getMessages(t,e,n){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+n.id+"/"+n.type+"/"+n.size+"/"+n.page)},getVorlagen(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getVorlagen/")},getMsgVarsLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/")},getMessageVarsPerson(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+t.id+"/"+t.type_id)},getMsgVarsPrestudent(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+t.id+"/"+t.type_id)},getPersonId(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id)},getUid(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+t.id+"/"+t.type_id)},getDataVorlage(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+t)},getNameOfDefaultRecipient(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+t.id+"/"+t.type_id)},getPreviewText(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+t.id+"/"+t.type_id,e)},getReplyData(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+t)},sendMessageFromModalContext(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,n)},sendMessage(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+t,e)},deleteMessage(t){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+t)}}},j={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},J={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,n=void 0,i=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:n,studienplan:i})},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:F,phrasen:$,navigation:C,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:S,studstatus:T,profil:k,profilUpdate:E,lvPlan:P,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(t){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${t}`,{})},update:function({bookmark_id:t,url:e,title:n,tag:i=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:n})},insert:function({url:t,title:e,tag:n}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:n})}},stv:w,notiz:D,betriebsmittel:O,checkperson:x,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:B,cms:L,lehre:H,addons:R,messages:z,vorlagen:j,addons:R,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",{})}},studium:J,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},I={install:(t,e)=>{if(t.config.globalProperties.$fhcApi)return void(e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory.addEndpoints(e.factory)));function n(t,e,n,i){if("string"==typeof t&&void 0===i)[e,n,i]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===i&&(i=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},i?i.form=t:i={form:t}}return[e,n,i]}function i(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 r=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});r.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const i of n)t.FormData.append(e+(n.length>1?"[]":""),i);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(i=>t.FormData.append(e+(n.length>1?"[]":""),i)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),r.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),i(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),r.getUri({url:t})),get:(t,e,i,a)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,i,a]=n(t,e,i,a),i&&(a?a.params=i:a={params:i}),r.get(e,a)),post:(t,e,i,a)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,i,a]=n(t,e,i,a),r.post(e,i,a)),_defaultErrorHandlers:{validation(e,n){const i=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(i.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>i.alertDefault("error",t,e,!0)),!1)},general(e,n){const i=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):i.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var i="";switch(i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,i,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,i,!0);break;default:i="Type: PHP "+e.severity+"\n\n"+i,n.alertSystemError(i)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var i="";i+="Type: "+e.class+"\n\n",i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),n.alertSystemError(i)},db(e){const n=t.config.globalProperties.$fhcAlert;var i="";void 0!==e.heading&&(i+=e.heading+"\n\n"),void 0!==e.code&&(i+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(i+="SQL: "+e.sql+"\n\n"),void 0!==e.message?i+="Message: "+e.message+"\n\n":void 0!==e.messages&&(i+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(i+="Filename: "+e.filename+"\n"),void 0!==e.line&&(i+="Line Number: "+e.line+"\n"),n.alertSystemError(i)},auth(e,n){const i=t.config.globalProperties.$fhcAlert;var r="";r+="Controller name: "+e.controller+"\n",r+="Method name: "+e.method+"\n",r+="Required permissions: "+e.required_permissions,n?.errorHeader?i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):i.alertDefault("error",e.message,r)}}};class a{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,i,r)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,i,r)),post:(e,n,i,r)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,i,r))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e,!0)}addEndpoints(t,e){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new a(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const s=new a(M);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),s.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=s,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};const U="error",N="retval",V={get:function(t,e,n=null){return V._axiosCall(t,e,"get",n)},post:function(t,e,n=null){return V._axiosCall(t,e,"post",n)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(U)||!t.hasOwnProperty(N)||0!=t.error)},isError:function(t){return!V.isSuccess(t)},hasData:function(t){return!(!V.isSuccess(t)||!("object"==typeof t[N]&&Object.keys(t[N]).length>0||"array"==typeof t[N]&&t[N].length>0||"string"==typeof t[N]&&""!=t[N].trim()||"number"==typeof t[N]))},getData:function(t){return V.hasData(t)?t[N]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(N)?t[N]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(U)?t[U]:1},_generateRouterURI:function(t){var e=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(e=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+t),e},_printDebug:function(t,e,n){},_axiosCall:function(t,e,n,i){let r={method:n,url:V._generateRouterURI(t),timeout:5e3};if("get"==n?r.params=e:r.data=e,"object"==typeof i)for(var a in i)r[a]=i[a];return axios(r)}},G=document.createElement("div"),q=Vue.createApp({name:"FhcAlertApp",components:{PvToast:e,PvConfirm:n},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(){G.parentElement.removeChild(G)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});q.use(t),q.use(i);const W=q.mount(G);document.body.appendChild(G);var Z={install:(t,e)=>{t.config.globalProperties.$p||t.use(it);const n={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,n)=>{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((n,i)=>{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(){n(!0)},reject(){n(!1)}})}),alertDefault(t,e,n,i=!1,r=!1){let a={severity:t,summary:e,detail:n,html:r};i||(a.life=3e3),W.$refs.toast.add(a)},alertMultiple(t,e="info",n="Info",i=!1,r=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,n,t,i,r)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return n.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(n.alertSystemError);if(!t.hasOwnProperty("handled")||!t.handled){if("object"==typeof t&&null!==t){let e="";return t.hasOwnProperty("response")&&t.response?.data?.retval?e+="Error Message: "+(t.response.data.retval.message||t.response.data.retval)+"\r\n":t.hasOwnProperty("message")&&(e+="Error Message: "+t.message.toUpperCase()+"\r\n"),t.hasOwnProperty("config")&&t.config.hasOwnProperty("url")&&(e+="Error ConfigURL: "+t.config.url+"\r\n"),t.hasOwnProperty("stack")&&(e+="Error Stack: "+t.stack+"\r\n"),""==e&&(e="Error Message: "+JSON.stringify(t)+"\r\n"),e+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,n.alertSystemError(e)}n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method)}}},handleSystemMessage(t){if("string"==typeof t)return n.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(n.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method):t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))},resetFormValidation(t){const e=new Event("fhc-form-reset");t.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(t=>t.dispatchEvent(e))},handleFormValidation(t,e){if(void 0===e){if(t&&t.nodeType===Node.ELEMENT_NODE)return e=>n.handleFormValidation(e,t)}else if(400==t?.response?.status){let i=V.getError(t.response.data);"object"!=typeof i&&(i=t.response.data),n.resetFormValidation(e);const r=Object.entries(i).filter(([t,n])=>{const i=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!i||(i.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:n})),!1)}).map(t=>t[1]),a=e.querySelector("[data-fhc-form-error]");return void(a&&r.length?a.dispatchEvent(new CustomEvent("fhc-form-error",{detail:r})):r.forEach(n.alertError))}if(400==t?.response?.status){let e=V.getError(t.response.data);n.alertError("object"==typeof e?Object.values(e):e)}else n.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=n,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}},K={install:(t,e)=>{if(t.config.globalProperties.$api)return;function n(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,n])=>n.forEach(n=>e(n,t)))}t.config.globalProperties.$fhcAlert||t.use(Z);let i={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(t,e){t.clearValidation(),e.forEach(e=>t.setFeedback(!1,e.messages||e.message))},async toast(e){const n=t.config.globalProperties.$p;if(!n)return Promise.reject("Phrasen plugin not loaded!");async function i(t){t=t.reduce((t,e)=>{switch(e.type){case"not_found":case"site_failed":e.message?t[e.message]=[e.url]:t._default=[e.url];break;case"general":t._default||(t._default=[]),t._default.push(e.message);break;case"validation":Object.entries(e.messages).forEach(([e,n])=>{t[e]||(t[e]=[]),Array.isArray(n)?t[e].push(...n):t[e].push(n)})}return t},{});let e=0;const i=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,i])=>{if("_default"==t){await n.loadCategory("dashboard");t='
    '+n.t("dashboard/general")+"
    "}else t="
    "+t+"
    ";return e+=i.length,t+"
    "+i.join("
    ")+"
    "}));return{counter:e,msgs:i}}let r,a;Array.isArray(e)?({counter:r,msgs:a}=await i(e)):({counter:r,msgs:a}=await Object.entries(e).reduce(async(t,[e,n])=>{const r=await t,{counter:a,msgs:s}=await i(n);return r.counter+=a,r.msgs.push("
    "+e+"
    "+s.join("")+"
    "),r},Promise.resolve({counter:0,msgs:[]}))),await n.loadCategory("ui");const s=n.t("ui/n_errors",{n:r});t.config.globalProperties.$fhcAlert.alertDefault("error",s,"
    "+a.join("")+"
    ",!0,!0)},php(e){n(e,(e,n)=>{var i="";switch(i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",n,i,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",n,i,!0);break;default:i="Type: PHP "+e.severity+"\n\n"+i,n&&(i=n+"\n\n"+i),t.config.globalProperties.$fhcAlert.alertSystemError(i)}})},exception(e){n(e,(e,n)=>{var i="";n&&(i+=n+"\n\n"),i+="Type: "+e.class+"\n\n",i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(i)})},db(e){n(e,(e,n)=>{var i="";n&&(i+=n+"\n\n"),void 0!==e.heading&&(i+=e.heading+"\n\n"),void 0!==e.code&&(i+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(i+="SQL: "+e.sql+"\n\n"),void 0!==e.message?i+="Message: "+e.message+"\n\n":void 0!==e.messages&&(i+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(i+="Filename: "+e.filename+"\n"),void 0!==e.line&&(i+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(i)})},auth(e){n(e,(e,n)=>{n?n+=": "+e.message:n=e.message;var i="";i+="Controller name: "+e.controller+"\n",i+="Method name: "+e.method+"\n",i+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",n,i,!0)})}}};function r(t,e,n,i){if("string"==typeof t&&void 0===i)[e,n,i]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===i&&(i=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},i?i.form=t:i={form:t}}return[e,n,i]}function a(t){if("string"==typeof t.data||t.data instanceof String)return a({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 s(t){if(!1===t||"off"===t)return{...i,success:!1,fail:!1};if(!t||!0===t)return{...i};if("success"===t)return{...i,fail:!1};if("fail"===t)return{...i,success:!1};const{success:e,fail:n,handler:r,combine:a}=t;return t={...i},Object.entries({fail:n,success:e}).forEach(([e,n])=>{void 0!==n&&(t[e]=n)}),Object.entries({handler:r,combine:a}).forEach(([e,n])=>{void 0!==n&&(t[e]={...t[e],...n})}),t}function o(t){const e=s(t?.errorHandling);if(t?.form){const n=e.handler.form;e.handler={...e.handler,form:e=>n(t.form,e)}}else e.combine={...e.combine,form:[]};return e}function l(t){return t.response?404==t.response.status?[{type:"not_found",message:t.message,url:t.request.responseURL}]:null==t.response.data.errors?[]:t.response.data.errors:t.request?[{type:"site_failed",message:t.message,url:t.request.responseURL}]:[{type:"script",message:t.message}]}function d(t,e){const n={},i=[];if(null==e)return{};for(;e.length;)i.push(e.pop());for(var r of i){let i=r.type,s=null;for(var a in t.combine){let e=t.combine[a].includes(i),n=t.handler[a];if(e&&n&&(s=a,"form"==s))break}s&&(i=s);t.handler[i]?(n[i]||(n[i]=[]),Array.isArray(r)?n[i].push(...r):n[i].push(r)):e.push(r)}return n}void 0!==e?.errorHandling&&(i=s(e.errorHandling));const u=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});u.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const i of n)t.FormData.append(e+(n.length>1?"[]":""),i);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(i=>t.FormData.append(e+(n.length>1?"[]":""),i)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),u.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[n.type])(n,e.config))),a(e)),t=>{if("ERR_CANCELED"==t.code)return Promise.reject({handled:!0,...t});const e=o(t.config);if(!e.fail)return Promise.reject(t);const n=l(t),i=d(e,n);for(var r in i)e.handler[r](i[r]);return n.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>u.getUri({url:t}),get:(t,e,n,i)=>([e,n,i]=r(t,e,n,i),n&&(i?i.params=n:i={params:n}),u.get(e,i)),post:(t,e,n,i)=>([e,n,i]=r(t,e,n,i),u.post(e,n,i)),call(e,n,i){if(Array.isArray(e)){const a=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),a.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=r(i,void 0,void 0,n||{}),a=o(e);if(!a.success&&!a.fail)return t;const s={};for(var u of t){const[t,e]="fulfilled"===u.status?[a.success,u.value]:[a.fail,u.reason];if(!t)return;const n=d(a,l(e));for(var p in n)s[p]?s[p][e.config.errorHeader]=n[p]:s[p]={[e.config.errorHeader]:n[p]}}for(var c in s)a.handler[c](s[c]);return t})}let{method:a,url:s,params:u,config:p}=e;return void 0!==n&&(p=n),a||(a="get"),a.toLowerCase&&(a=a.toLowerCase()),"get"==a?this.get(i,s,u,p):"post"==a?this.post(i,s,u,p):void console.error("FhcApi: method not allowed:",a)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},X={loadCategory:t=>({method:"get",url:"/api/frontend/v1/phrasen/loadModule/"+t}),setLanguage:(t,e)=>({method:"post",url:"/api/frontend/v1/phrasen/setLanguage",params:{categories:t,language:e}}),getLanguage:()=>({method:"get",url:"/api/frontend/v1/phrasen/getLanguage"}),getActiveDbLanguages:()=>({method:"get",url:"/api/frontend/v1/phrasen/getAllLanguages"})};const Y=Vue.reactive({}),Q={};let tt=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),et=Vue.computed(()=>tt.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==tt.value).LC_Time:null);const nt={user_language:tt,user_locale:et,setLanguage(t){const e=Object.keys(Y);return this.config.globalProperties.$api.call(X.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{Y[t.category][t.phrase]=t.text}),tt.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(Q[t]||(Q[t]=this.config.globalProperties.$api.call(X.loadCategory(t)).then(e=>e?.data?function(t,e){return t.filter(t=>t.category==e).reduce((t,e)=>(t[e.phrase]||(t[e.phrase]=e.text),t),{})}(e.data,t):{}).then(e=>{Y[t]=e})),Q[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let i=Vue.computed(()=>Y[t]?function(t,e,n){let i=Y[t][e];return i?(n&&(i=i.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),i):"<< PHRASE "+e+">>"}(t,e,n):"");return Y[t]||this.loadCategory(t),i.value}};var it={install(t,e){t.config.globalProperties.$fhcApi||t.use(I),t.config.globalProperties.$api||t.use(K),t.config.globalProperties.$p={t:nt.t,loadCategory:e=>nt.loadCategory.call(t,e),setLanguage:e=>nt.setLanguage.call(t,e),user_language:tt,user_locale:et,t_ref:nt.t_ref},t.provide("$p",t.config.globalProperties.$p)}};Vue.createApp({name:"LvTemplatesApp",components:{CoreNavigationCmpt:y,LvTemplateUebersicht:A}}).use(primevue.config.default,{zIndex:{overlay:9999}}).use(it).mount("#main");var rt={emits:["update:modelValue"],props:{modelValue:String},computed:{valueAsBase64DataString(){return this.modelValue&&"data:image"!=this.modelValue.substring(0,10)?"data:image/jpeg;charset=utf-8;base64,"+this.modelValue:this.modelValue}},methods:{openUploadDialog(){this.$refs.fileInput.click()},pickFile(){let t=this.$refs.fileInput.files;if(t&&t[0]){let e=new FileReader;e.onload=t=>{this.$emit("update:modelValue",t.target.result)},e.readAsDataURL(t[0])}},deleteImage(){this.$emit("update:modelValue","")}},template:'\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    '},at=Object.freeze({__proto__:null,default:rt}),st={components:{DmsItem:{emits:["delete"],props:{modelValue:{type:[File,Object],required:!0}},data:()=>({preview:""}),watch:{modelValue(t){"application/x.fhc-dms+json"==t.type&&t.text().then(t=>{const e=JSON.parse(t);this.preview=e.preview||""})}},template:'\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • '}},emits:["update:modelValue"],props:{modelValue:{type:[FileList,Array],required:!0},multiple:Boolean,id:String,name:String,inputClass:[String,Array,Object],noList:Boolean,accept:{type:String,default:""},disabled:{type:Boolean,default:!1}},methods:{stringifyFile:t=>JSON.stringify({lastModified:t.lastModified,lastModifiedDate:t.lastModifiedDate,name:t.name,size:t.size,type:t.type}),addFiles(t){if(!this.multiple)return this.$emit("update:modelValue",t.target.files);const e=new DataTransfer,n=[];for(var i of this.modelValue)e.items.add(i),n.push(this.stringifyFile(i));for(var i of t.target.files)n.indexOf(this.stringifyFile(i))<0&&e.items.add(i);this.$emit("update:modelValue",e.files)},removeFile(t){const e=Array.from(this.modelValue)[t],n=new DataTransfer;for(var i of this.modelValue)i!==e&&n.items.add(i);this.$emit("update:modelValue",n.files)}},watch:{modelValue(t){if(!t)return;if(t instanceof FileList){if(!this.$refs.upload)return;return this.$refs.upload.files=t}const e=new DataTransfer;for(var n of t)if(n instanceof File)e.items.add(n);else{const t=new File([JSON.stringify(n)],n.name,{type:"application/x.fhc-dms+json"});e.items.add(t)}this.$emit("update:modelValue",e.files)}},template:'\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    '},ot=Object.freeze({__proto__:null,default:st}); +getStatus:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getStatus",{})},getTopic:function(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/getTopic",{})},acceptProfilRequest:function({profil_update_id:t,uid:e,status_message:n,topic:i,requested_change:r}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/acceptProfilRequest",{profil_update_id:t,uid:e,status_message:n,topic:i,requested_change:r})},denyProfilRequest:function({profil_update_id:t,uid:e,topic:n,status_message:i}){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/denyProfilRequest",{profil_update_id:t,uid:e,topic:n,status_message:i})},insertFile:function(t,e=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/insertFile/${e}`,t)},getProfilRequestFiles:function(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+`/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${t}`,{})},selectProfilRequest:function(t=null,e=null){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/selectProfilRequest",{...t?{uid:t}:{},...e?{id:e}:{}})},insertProfilRequest:function(t,e,n=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/insertProfilRequest",{topic:t,payload:e,...n?{fileID:n}:{}})},updateProfilRequest:function(t,e,n,i=null){return this.$fhcApi.post(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/ProfilUpdate/updateProfilRequest",{topic:t,payload:e,ID:n,...i?{fileID:i}:{}})},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})}},P={getRoomInfo(t,e,n){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getRoomplan",{ort_kurzbz:t,start_date:e,end_date:n})},getStunden(){return this.$fhcApi.get("/api/frontend/v1/LvPlan/Stunden",{})},getOrtReservierungen(t,e,n){return this.$fhcApi.post(`/api/frontend/v1/LvPlan/getReservierungen/${t}`,{start_date:e,end_date:n})},getLvPlanReservierungen(t,e){return this.$fhcApi.post("/api/frontend/v1/LvPlan/getReservierungen",{start_date:t,end_date:e})},getLehreinheitStudiensemester(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${t}`,{})},studiensemesterDateInterval(t){return this.$fhcApi.get(`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${t}`,{})},LvPlanEvents(t,e,n){return this.$fhcApi.get("/api/frontend/v1/LvPlan/LvPlanEvents",{start_date:t,end_date:e,lv_id:n})}},w={verband:{get(){return this.$fhcApi.get("api/frontend/v1/stv/verband")},favorites:{get(){return this.$fhcApi.get("api/frontend/v1/stv/favorites")},set(t){return this.$fhcApi.post("api/frontend/v1/stv/favorites/set",{favorites:t})}}},students:{uid(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/uid/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},prestudent(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/prestudent/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},person(t,e){let n="api/frontend/v1/stv/students/"+encodeURIComponent(e)+"/person/"+encodeURIComponent(t);return this.$fhcApi.getUri(n)},verband(t){return this.$fhcApi.getUri("api/frontend/v1/stv/students/"+t)}},filter:{getStg(){return this.$fhcApi.get("api/frontend/v1/stv/filter/getStg")},setStg(t){return this.$fhcApi.post("api/frontend/v1/stv/filter/setStg",{studiengang_kz:t})}},konto:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/konto/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id),only_open:e.filter,studiengang_kz:e.studiengang_kz_intern?e.stg_kz:""}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},checkDoubles(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/checkDoubles",e,{confirmErrorHandler:t=>!0})},insert(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/insert",e)},counter(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/counter",t)},edit(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/konto/update",e)},delete(t){return this.$fhcApi.post("api/frontend/v1/stv/konto/delete",{buchungsnr:t})},getBuchungstypen(){return this.$fhcApi.get("api/frontend/v1/stv/konto/getBuchungstypen")}},group:{getGruppen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/Gruppen/getGruppen/"+n.id)},deleteGroup(t){return this.$fhcApi.post("api/frontend/v1/stv/Gruppen/deleteGruppe/",t)}},kontakt:{getAdressen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressen/"+n.id)},addNewAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewAddress/"+e,n)},loadAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadAddress/",{address_id:t})},updateAddress(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateAddress/"+e,n)},deleteAddress(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteAddress/",{address_id:t})},getPlaces(t){return this.$fhcApi.get("api/frontend/v1/stv/address/getPlaces/"+t)},getFirmen(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getFirmen/"+t)},getNations(){return this.$fhcApi.get("api/frontend/v1/stv/address/getNations/")},getAdressentypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getAdressentypen/")},getBankverbindung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getBankverbindung/"+n.id)},addNewBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewBankverbindung/"+e,n)},loadBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadBankverbindung/",{bankverbindung_id:t})},updateBankverbindung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateBankverbindung/"+e,n)},deleteBankverbindung(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteBankverbindung/",{bankverbindung_id:t})},getKontakte(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakte/"+n.id)},addNewContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/addNewContact/"+e,n)},loadContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/loadContact/",{kontakt_id:t})},updateContact(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/kontakt/updateContact/"+e,n)},deleteContact(t){return this.$fhcApi.post("api/frontend/v1/stv/kontakt/deleteContact/",{kontakt_id:t})},getStandorteByFirma(t){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getStandorteByFirma/"+t)},getKontakttypen(){return this.$fhcApi.get("api/frontend/v1/stv/kontakt/getKontakttypen/")}},prestudent:{get(t,e){return this.$fhcApi.post("api/frontend/v1/stv/prestudent/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e))},updatePrestudent(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/prestudent/updatePrestudent/"+e,n)},getBezeichnungZGV(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungZGV/")},getBezeichnungMZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungMZgv/")},getBezeichnungDZgv(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBezeichnungDZgv/")},getStgs(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStgs/")},getAusbildung(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAusbildung/")},getAufmerksamdurch(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getAufmerksamdurch/")},getBerufstaetigkeit(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBerufstaetigkeit/")},getTypenStg(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getTypenStg/")},getBisstandort(){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getBisstandort/")},getHistoryPrestudent(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/status/getHistoryPrestudent/"+n.id)},getMaxSem(t){return this.$fhcApi.post("api/frontend/v1/stv/status/getMaxSemester/",{studiengang_kzs:t})},advanceStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/advanceStatus/"+t+"/"+e+"/"+n+"/"+i)},confirmStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/confirmStatus/"+t+"/"+e+"/"+n+"/"+i)},isLastStatus(t){return this.$fhcApi.get("api/frontend/v1/stv/status/isLastStatus/"+t)},deleteStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/deleteStatus/"+t+"/"+e+"/"+n+"/"+i)},getLastBismeldestichtag(){return this.$fhcApi.get("api/frontend/v1/stv/status/getLastBismeldestichtag/")},getHistoryPrestudents(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getHistoryPrestudents/"+n.id)}},status:{insertStatus(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/insertStatus/"+e,n)},loadStatus({prestudent_id:t,status_kurzbz:e,studiensemester_kurzbz:n,ausbildungssemester:i}){return this.$fhcApi.post("api/frontend/v1/stv/status/loadStatus/"+t+"/"+e+"/"+n+"/"+i)},updateStatus(t,{prestudent_id:e,status_kurzbz:n,studiensemester_kurzbz:i,ausbildungssemester:r},a){return this.$fhcApi.post(t,"api/frontend/v1/stv/status/updateStatus/"+e+"/"+n+"/"+i+"/"+r,a)},getStudienplaene(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudienplaene/"+t)},getStudiengang(t){return this.$fhcApi.get("api/frontend/v1/stv/prestudent/getStudiengang/"+t)},getStatusgruende(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusgruende/")},getStati(){return this.$fhcApi.get("api/frontend/v1/stv/lists/getStati/")},addStudent(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/addStudent/"+t,e,{errorHeader:t})},changeStatus(t,e){return this.$fhcApi.post("api/frontend/v1/stv/status/changeStatus/"+t,e,{errorHeader:t})},getStatusarray(){return this.$fhcApi.get("api/frontend/v1/stv/status/getStatusarray/")}},details:{get(t,e){let n="api/frontend/v1/stv/student/get/"+encodeURIComponent(t)+"/"+encodeURIComponent(e);return this.$fhcApi.post(n)},save(t,e,n,i){let r="api/frontend/v1/stv/student/save/"+encodeURIComponent(e)+"/"+encodeURIComponent(n);return this.$fhcApi.post(t,r,i)}},exam:{getPruefungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getPruefungen/"+n.id)},loadPruefung(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/loadPruefung/"+t)},getTypenPruefungen(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getTypenPruefungen")},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/getAllLehreinheiten/",t)},getLvsByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsByStudent/"+t)},getLvsandLesByStudent(t,e){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsandLesByStudent/"+t+"/"+e)},getLvsAndMas(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getLvsAndMas/"+t)},getMitarbeiterLv(t){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getMitarbeiterLv/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/pruefung/getNoten")},checkZeugnisnoteLv(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/",t)},addPruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/insertPruefung/",e)},updatePruefung(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/stv/pruefung/updatePruefung/"+e,n)},deletePruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/pruefung/deletePruefung/"+t)}},abschlusspruefung:{getAbschlusspruefung(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/"+n.id)},addNewAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/",e)},loadAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/",{id:t})},updateAbschlusspruefung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/",e)},deleteAbschlusspruefung(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/",{id:t})},getTypenAbschlusspruefung(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/")},getTypenAntritte(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/")},getBeurteilungen(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/")},getAkadGrade(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getAkadGrade/",{studiengang_kz:t})},getTypStudiengang(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/",{studiengang_kz:t})},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/"+t)},getPruefer(t){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getPruefer/"+t)},getNoten(){return this.$fhcApi.get("api/frontend/v1/stv/abschlusspruefung/getNoten/")},checkForExistingExams(t){return this.$fhcApi.post("api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/",{uids:t})}},grades:{list(){return this.$fhcApi.get("api/frontend/v1/stv/grades/list")},getCertificate(t,e){let n="api/frontend/v1/stv/grades/getCertificate/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getTeacherProposal(t,e){let n="api/frontend/v1/stv/grades/getTeacherProposal/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},getRepeaterGrades(t,e){let n="api/frontend/v1/stv/grades/getRepeaterGrades/"+encodeURIComponent(t);return e&&(n=n+"/"+encodeURIComponent(e)),this.$fhcApi.get(n)},updateCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:i,lehrveranstaltung_bezeichnung:r}){return this.$fhcApi.post("api/frontend/v1/stv/grades/updateCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,note:i},{errorHeader:r})},deleteCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/deleteCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:i})},copyTeacherProposalToCertificate({lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n,lehrveranstaltung_bezeichnung:i}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyTeacherProposalToCertificate",{lehrveranstaltung_id:t,student_uid:e,studiensemester_kurzbz:n},{errorHeader:i})},copyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id:t,lv_bezeichnung:e}){return this.$fhcApi.post("api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate",{studierendenantrag_lehrveranstaltung_id:t},{errorHeader:e})},getGradeFromPoints(t,e,n,i){const r=i?{errorHandling:!1}:{};return this.$fhcApi.post("api/frontend/v1/stv/grades/getGradeFromPoints",{points:t,lehrveranstaltung_id:e,studiensemester_kurzbz:n},r)}},mobility:{getMobilitaeten(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getMobilitaeten/"+n.id)},getProgramsMobility(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getProgramsMobility/")},addNewMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/insertMobility/",e)},loadMobility(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/loadMobility/"+t)},updateMobility(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/mobility/updateMobility/",e)},deleteMobility(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobility/"+t)},getLVList(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLVList/"+t)},getAllLehreinheiten(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/getAllLehreinheiten/",t)},getLvsandLesByStudent(t){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getLvsandLesByStudent/"+t)},getPurposes(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getPurposes/"+n.id)},getSupports(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getSupports/"+n.id)},getListPurposes(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListPurposes/")},getListSupports(){return this.$fhcApi.get("api/frontend/v1/stv/mobility/getListSupports/")},deleteMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilityPurpose/"+t.bisio_id,t)},addMobilityPurpose(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilityPurpose/"+t.bisio_id,t)},deleteMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/deleteMobilitySupport/"+t.bisio_id,t)},addMobilitySupport(t){return this.$fhcApi.post("api/frontend/v1/stv/mobility/addMobilitySupport/"+t.bisio_id,t)}},archiv:{tabulatorConfig(t,e){return t.ajaxURL="api/frontend/v1/stv/archiv/get",t.ajaxParams=()=>({person_id:e.modelValue.person_id||e.modelValue.map(t=>t.person_id)}),t.ajaxRequestFunc=(t,e,n)=>this.$fhcApi.post(t,n,e),t.ajaxResponse=(t,e,n)=>n.data,t},getArchivVorlagen(){return this.$fhcApi.post("api/frontend/v1/stv/archiv/getArchivVorlagen")},archive(t){return this.$fhcApi.post("api/frontend/v1/documents/archive",t)},archiveSigned(t){return this.$fhcApi.post("api/frontend/v1/documents/archiveSigned",t)},update(t){return this.$fhcApi.post("api/frontend/v1/stv/archiv/update",t)},delete({akte_id:t,studiengang_kz:e}){return this.$fhcApi.post("api/frontend/v1/stv/archiv/delete",{akte_id:t,studiengang_kz:e})}},documents:{getDocumentsUnaccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/"+n.id+"/"+n.studiengang_kz)},getDocumentsAccepted(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDocumentsAccepted/"+n.id+"/"+n.studiengang_kz)},deleteZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},createZuordnung(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/createZuordnung/"+t.prestudent_id+"/"+t.dokument_kurzbz)},loadAkte(t){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/loadAkte/"+t)},getDoktypen(){return this.$fhcApi.get("api/frontend/v1/stv/dokumente/getDoktypen/")},updateFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/updateAkte/"+t,e)},deleteFile(t){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/deleteAkte/"+t)},uploadFile(t,e){return this.$fhcApi.post("api/frontend/v1/stv/dokumente/uploadDokument/"+t,e)}},exemptions:{getAnrechnungen(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getAnrechnungen/"+n.id)},getLehrveranstaltungen(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/"+t)},getBegruendungen(){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getBegruendungen/")},getLvsKompatibel(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLvsKompatibel/"+t)},getLektoren(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/getLektoren/"+t)},addNewAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/insertAnrechnung/",e)},loadAnrechnung(t){return this.$fhcApi.get("api/frontend/v1/stv/anrechnungen/loadAnrechnung/"+t)},editAnrechnung(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/anrechnungen/updateAnrechnung/",e)},deleteAnrechnung(t){return this.$fhcApi.post("api/frontend/v1/stv/anrechnungen/deleteAnrechnung/"+t)}},jointstudies:{getStudies(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudien/"+n.id)},getTypenMobility(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/")},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/")},getStudyprograms(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/")},getListPartner(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/")},getStatiPrestudent(){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/")},loadStudy(t){return this.$fhcApi.get("api/frontend/v1/stv/GemeinsameStudien/loadStudie/"+t)},insertStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/insertStudie/",e)},updateStudy(t,e){return this.$fhcApi.post(t,"api/frontend/v1/stv/GemeinsameStudien/updateStudie/",e)},deleteStudy(t){return this.$fhcApi.post("api/frontend/v1/stv/GemeinsameStudien/deleteStudie/"+t)}},courselist:{getCourselist(t,e,n){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStundenplan/"+n.student_uid+"/"+n.start_date+"/"+n.end_date+"/"+n.group_consecutiveHours+"/"+n.dbStundenplanTable)},getStudiensemester(){return this.$fhcApi.get("api/frontend/v1/stv/LvTermine/getStudiensemester/")}},configStudent(){return this.$fhcApi.get("api/frontend/v1/stv/config/student")},configStudents(){return this.$fhcApi.get("api/frontend/v1/stv/config/students")}},D={person:{getNotizen(t,e,n){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getNotizen/"+n.id+"/"+n.type)},getUid(){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getUid/")},addNewNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/addNewNotiz/"+e,n)},loadNotiz(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadNotiz/",{notiz_id:t})},loadDokumente(t){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/loadDokumente/",{notiz_id:t})},deleteNotiz(t,e,n){return this.$fhcApi.post("api/frontend/v1/notiz/notizPerson/deleteNotiz/",{notiz_id:t,type_id:e,id:n})},updateNotiz(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/notiz/notizPerson/updateNotiz/"+e,n)},getMitarbeiter(t){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/getMitarbeiter/"+t)},isBerechtigt(t,e){return this.$fhcApi.get("api/frontend/v1/notiz/notizPerson/isBerechtigt/")}}},O={person:{getAllBetriebsmittel(t,e,n){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/"+n.type+"/"+n.id)},addNewBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/"+e,n)},loadBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/"+t)},updateBetriebsmittel(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/"+e,n)},deleteBetriebsmittel(t){return this.$fhcApi.post("api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/"+t)},getTypenBetriebsmittel(){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/")},loadInventarliste(t){return this.$fhcApi.get("api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/"+t)}}},x={updatePersonUnrulyStatus(t,e){try{const n={person_id:t,unruly:e},i="/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus";return this.$fhcApi.post(i,n,null)}catch(t){throw t}},filterPerson(t,e=""){try{const n=e+"/api/frontend/v1/checkperson/CheckPerson/filterPerson";return axios.post(n,t)}catch(t){throw t}}},B={getContentID(t){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/ContentID",{ort_kurzbz:t})},getRooms(t,e,n,i,r=0){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getRooms",{datum:t,von:e,bis:n,typ:i,personenanzahl:r})},getRoomTypes(){return this.$fhcApi.get(FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/api/frontend/v1/Ort/getTypes")}},L={content(t,e=null,n=null,i=null){return this.$fhcApi.get("/api/frontend/v1/Cms/content",{content_id:t,...e?{version:e}:{},...n?{sprache:n}:{},...i?{sichtbar:i}:{}})},getNews(t=1,e=10,n){return this.$fhcApi.get("/api/frontend/v1/Cms/getNews",{page:t,page_size:e,sprache:n})},news(t){return this.$fhcApi.get("/api/frontend/v1/Cms/news",{limit:t})},getNewsRowCount:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getNewsRowCount",{})},getNewsExtra:function(){return this.$fhcApi.get("/api/frontend/v1/Cms/getStudiengangInfoForNews",{})}},R={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}`,{})}},H={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}`,{})}},z={person:{getMessages(t,e,n){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessages/"+n.id+"/"+n.type+"/"+n.size+"/"+n.page)},getVorlagen(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getVorlagen/")},getMsgVarsLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/")},getMessageVarsPerson(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMessageVarsPerson/"+t.id+"/"+t.type_id)},getMsgVarsPrestudent(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getMsgVarsPrestudent/"+t.id+"/"+t.type_id)},getPersonId(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getPersonId/"+t.id+"/"+t.type_id)},getUid(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getUid/"+t.id+"/"+t.type_id)},getDataVorlage(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getDataVorlage/"+t)},getNameOfDefaultRecipient(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getNameOfDefaultRecipient/"+t.id+"/"+t.type_id)},getPreviewText(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/getPreviewText/"+t.id+"/"+t.type_id,e)},getReplyData(t){return this.$fhcApi.get("api/frontend/v1/messages/messages/getReplyData/"+t)},sendMessageFromModalContext(t,e,n){return this.$fhcApi.post(t,"api/frontend/v1/messages/messages/sendMessage/"+e,n)},sendMessage(t,e){return this.$fhcApi.post("api/frontend/v1/messages/messages/sendMessage/"+t,e)},deleteMessage(t){return this.$fhcApi.post("api/frontend/v1/messages/messages/deleteMessage/"+t)}}},J={getVorlagen(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagen/")},getVorlagenByLoggedInUser(){return this.$fhcApi.get("api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/")}},M={getStudiensemester:function(){return this.$fhcApi.get("/components/Cis/Mylv/Studiensemester",{})},getAllStudienSemester:function(t=void 0,e=void 0,n=void 0,i=void 0){return this.$fhcApi.get("/api/frontend/v1/Studium/getStudienAllSemester",{studiensemester:t,studiengang:e,semester:n,studienplan:i})},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}`,{})}},j={search:F,phrasen:$,navigation:C,dashboard:{async getViewData(){return this.$fhcApi.get("/api/frontend/v1/Cis4FhcApi/getViewData",null,null)}},filter:S,studstatus:T,profil:k,profilUpdate:E,lvPlan:P,bookmark:{getBookmarks:function(){return this.$fhcApi.get("/api/frontend/v1/Bookmark/getBookmarks",{})},delete:function(t){return this.$fhcApi.get(`/api/frontend/v1/Bookmark/delete/${t}`,{})},update:function({bookmark_id:t,url:e,title:n,tag:i=null}){return this.$fhcApi.post(`/api/frontend/v1/Bookmark/update/${t}`,{url:e,title:n})},insert:function({url:t,title:e,tag:n}){return this.$fhcApi.post("/api/frontend/v1/Bookmark/insert",{url:t,title:e,tag:n})}},stv:w,notiz:D,betriebsmittel:O,checkperson:x,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:B,cms:L,lehre:R,addons:H,messages:z,vorlagen:J,addons:H,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",{})}},studium:M,language:{getAll(){return this.$fhcApi.get("/api/frontend/v1/language/get")}}},I={install:(t,e)=>{if(t.config.globalProperties.$fhcApi)return void(e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory.addEndpoints(e.factory)));function n(t,e,n,i){if("string"==typeof t&&void 0===i)[e,n,i]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===i&&(i=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},i?i.form=t:i={form:t}}return[e,n,i]}function i(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 r=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});r.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const i of n)t.FormData.append(e+(n.length>1?"[]":""),i);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(i=>t.FormData.append(e+(n.length>1?"[]":""),i)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),r.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config))),i(e)),e=>"ERR_CANCELED"==e.code?Promise.reject({handled:!0,...e}):"off"==e.config?.errorHandling||!1===e.config?.errorHandling||"success"==e.config?.errorHandling?Promise.reject(e):e.response?404==e.response.status?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL,!0),Promise.reject({handled:!0,...e})):(e.response.data.errors=e.response.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$fhcApi._defaultErrorHandlers[n.type])(n,e.config)),e.response.data.errors.length?Promise.reject(e):Promise.reject({handled:!0,...e})):e.request?(t.config.globalProperties.$fhcAlert.alertDefault("error",e.message,e.request.responseURL),Promise.reject({handled:!0,...e})):(t.config.globalProperties.$fhcAlert.alertError(e.message),Promise.reject({handled:!0,...e}))),t.config.globalProperties.$fhcApi={getUri:t=>(console.warn("$fhcApi.getUri is DEPRECATED! Use $api.getUri instead."),r.getUri({url:t})),get:(t,e,i,a)=>(console.warn("$fhcApi.get is DEPRECATED! Use $api.get instead."),[e,i,a]=n(t,e,i,a),i&&(a?a.params=i:a={params:i}),r.get(e,a)),post:(t,e,i,a)=>(console.warn("$fhcApi.post is DEPRECATED! Use $api.post instead."),[e,i,a]=n(t,e,i,a),r.post(e,i,a)),_defaultErrorHandlers:{validation(e,n){const i=t.config.globalProperties.$fhcAlert;return n?.form?(n.form.clearValidation(),n.form.setFeedback(!1,e.messages),!1):Array.isArray(e.messages)?(e.messages.forEach(i.alertError),!1):"object"!=typeof e.messages||(n?.errorHeader?Object.values(e.messages).forEach(e=>i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e,!0)):Object.entries(e.messages).forEach(([t,e])=>i.alertDefault("error",t,e,!0)),!1)},general(e,n){const i=t.config.globalProperties.$fhcAlert;n?.form?n.form.setFeedback(!1,e.message):n?.errorHeader?i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):i.alertError(e.message)},php(e){const n=t.config.globalProperties.$fhcAlert;var i="";switch(i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n.alertDefault("warn","PHP "+e.severity,i,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n.alertDefault("info","PHP "+e.severity,i,!0);break;default:i="Type: PHP "+e.severity+"\n\n"+i,n.alertSystemError(i)}},exception(e){const n=t.config.globalProperties.$fhcAlert;var i="";i+="Type: "+e.class+"\n\n",i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),n.alertSystemError(i)},db(e){const n=t.config.globalProperties.$fhcAlert;var i="";void 0!==e.heading&&(i+=e.heading+"\n\n"),void 0!==e.code&&(i+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(i+="SQL: "+e.sql+"\n\n"),void 0!==e.message?i+="Message: "+e.message+"\n\n":void 0!==e.messages&&(i+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(i+="Filename: "+e.filename+"\n"),void 0!==e.line&&(i+="Line Number: "+e.line+"\n"),n.alertSystemError(i)},auth(e,n){const i=t.config.globalProperties.$fhcAlert;var r="";r+="Controller name: "+e.controller+"\n",r+="Method name: "+e.method+"\n",r+="Required permissions: "+e.required_permissions,n?.errorHeader?i.alertDefault("error",Array.isArray(n.errorHeader)?t.config.globalProperties.$p.t.apply(null,n.errorHeader):n.errorHeader,e.message,!0):i.alertDefault("error",e.message,r)}}};class a{constructor(e,n){void 0===n?(this.$fhcApi={getUri:e=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.getUri(e)),get:(e,n,i,r)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.get(e,n,i,r)),post:(e,n,i,r)=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.post(e,n,i,r))},Object.defineProperty(this.$fhcApi,"factory",{get:()=>(console.warn("$fhcApi.factory is DEPRECATED!"),t.config.globalProperties.$fhcApi.factory)}),t.config.globalProperties.$fhcApi.factory=this):Object.defineProperty(this,"$fhcApi",{get(){return(n||this).$fhcApi}}),this.addEndpoints(e,!0)}addEndpoints(t,e){Object.keys(t).forEach(e=>{Object.defineProperty(this,e,{get(){return"function"==typeof t[e]?t[e].bind(this):new a(t[e],this.$fhcApi.factory)}})}),e||console.warn("$fhcApi.factory.addEndpoints() is DEPRECATED!")}}const s=new a(j);e?.factory&&(console.warn("$fhcApi is DEPRECATED!"),s.addEndpoints(e.factory)),t.config.globalProperties.$fhcApi.factory=s,t.provide("$fhcApi",t.config.globalProperties.$fhcApi)}};const U="error",N="retval",V={get:function(t,e,n=null){return V._axiosCall(t,e,"get",n)},post:function(t,e,n=null){return V._axiosCall(t,e,"post",n)},isSuccess:function(t){return!("object"!=typeof t||!t.hasOwnProperty(U)||!t.hasOwnProperty(N)||0!=t.error)},isError:function(t){return!V.isSuccess(t)},hasData:function(t){return!(!V.isSuccess(t)||!("object"==typeof t[N]&&Object.keys(t[N]).length>0||"array"==typeof t[N]&&t[N].length>0||"string"==typeof t[N]&&""!=t[N].trim()||"number"==typeof t[N]))},getData:function(t){return V.hasData(t)?t[N]:null},getError:function(t){return"object"==typeof t&&Object.keys(t).length>0&&t.hasOwnProperty(N)?t[N]:"Generic error"},getErrorCode:function(t){return"object"==typeof t&&t.hasOwnProperty(U)?t[U]:1},_generateRouterURI:function(t){var e=null;return"undefined"!=typeof FHC_JS_DATA_STORAGE_OBJECT&&(e=FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"+t),e},_printDebug:function(t,e,n){},_axiosCall:function(t,e,n,i){let r={method:n,url:V._generateRouterURI(t),timeout:5e3};if("get"==n?r.params=e:r.data=e,"object"==typeof i)for(var a in i)r[a]=i[a];return axios(r)}},G=document.createElement("div"),q=Vue.createApp({name:"FhcAlertApp",components:{PvToast:e,PvConfirm:n},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(){G.parentElement.removeChild(G)},computed:{showmaillink:function(){return""!==FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto}},template:'\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t'});q.use(t),q.use(i);const W=q.mount(G);document.body.appendChild(G);var Z={install:(t,e)=>{t.config.globalProperties.$p||t.use(it);const n={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,n)=>{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((n,i)=>{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(){n(!0)},reject(){n(!1)}})}),alertDefault(t,e,n,i=!1,r=!1){let a={severity:t,summary:e,detail:n,html:r};i||(a.life=3e3),W.$refs.toast.add(a)},alertMultiple(t,e="info",n="Info",i=!1,r=!1){return!!t.every(t=>"string"==typeof t)&&(t.forEach(t=>this.alertDefault(e,n,t,i,r)),!0)},handleSystemError(t){if(!t.hasOwnProperty("name")||t.name.toLowerCase()!=="AbortError".toLowerCase()){if("string"==typeof t)return n.alertSystemError(t);if(Array.isArray(t)&&t.every(t=>"string"==typeof t))return t.every(n.alertSystemError);if(!t.hasOwnProperty("handled")||!t.handled){if("object"==typeof t&&null!==t){let e="";return t.hasOwnProperty("response")&&t.response?.data?.retval?e+="Error Message: "+(t.response.data.retval.message||t.response.data.retval)+"\r\n":t.hasOwnProperty("message")&&(e+="Error Message: "+t.message.toUpperCase()+"\r\n"),t.hasOwnProperty("config")&&t.config.hasOwnProperty("url")&&(e+="Error ConfigURL: "+t.config.url+"\r\n"),t.hasOwnProperty("stack")&&(e+="Error Stack: "+t.stack+"\r\n"),""==e&&(e="Error Message: "+JSON.stringify(t)+"\r\n"),e+="Error Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method,n.alertSystemError(e)}n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method)}}},handleSystemMessage(t){if("string"==typeof t)return n.alertWarning(t);if(Array.isArray(t)){if(t.every(t=>"string"==typeof t))return t.every(n.alertWarning);if(t.every(t=>"object"==typeof t)&&null!==msg)return t.every(t=>{t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))})}"object"!=typeof t||null===t?n.alertSystemError("alertSystemError throws Generic Error\r\nError Controller Path: "+FHC_JS_DATA_STORAGE_OBJECT.called_path+"/"+FHC_JS_DATA_STORAGE_OBJECT.called_method):t.hasOwnProperty("data")&&t.data.hasOwnProperty("retval")?n.alertWarning(JSON.stringify(t.data.retval)):n.alertSystemError(JSON.stringify(t))},resetFormValidation(t){const e=new Event("fhc-form-reset");t.querySelectorAll(["[data-fhc-form-validate],[data-fhc-form-error]"]).forEach(t=>t.dispatchEvent(e))},handleFormValidation(t,e){if(void 0===e){if(t&&t.nodeType===Node.ELEMENT_NODE)return e=>n.handleFormValidation(e,t)}else if(400==t?.response?.status){let i=V.getError(t.response.data);"object"!=typeof i&&(i=t.response.data),n.resetFormValidation(e);const r=Object.entries(i).filter(([t,n])=>{const i=e.querySelector('[data-fhc-form-validate="'+t+'"]');return!i||(i.dispatchEvent(new CustomEvent("fhc-form-invalidate",{detail:n})),!1)}).map(t=>t[1]),a=e.querySelector("[data-fhc-form-error]");return void(a&&r.length?a.dispatchEvent(new CustomEvent("fhc-form-error",{detail:r})):r.forEach(n.alertError))}if(400==t?.response?.status){let e=V.getError(t.response.data);n.alertError("object"==typeof e?Object.values(e):e)}else n.handleSystemError(t)}};t.config.globalProperties.$fhcAlert=n,t.provide("$fhcAlert",t.config.globalProperties.$fhcAlert)}},K={install:(t,e)=>{if(t.config.globalProperties.$api)return;function n(t,e){Array.isArray(t)?t.forEach(e):Object.entries(t).forEach(([t,n])=>n.forEach(n=>e(n,t)))}t.config.globalProperties.$fhcAlert||t.use(Z);let i={success:!0,fail:!0,combine:{form:["validation","general"],toast:["validation","general","not_found","site_failed"]},handler:{form(t,e){t.clearValidation(),e.forEach(e=>t.setFeedback(!1,e.messages||e.message))},async toast(e){const n=t.config.globalProperties.$p;if(!n)return Promise.reject("Phrasen plugin not loaded!");async function i(t){t=t.reduce((t,e)=>{switch(e.type){case"not_found":case"site_failed":e.message?t[e.message]=[e.url]:t._default=[e.url];break;case"general":t._default||(t._default=[]),t._default.push(e.message);break;case"validation":Object.entries(e.messages).forEach(([e,n])=>{t[e]||(t[e]=[]),Array.isArray(n)?t[e].push(...n):t[e].push(n)})}return t},{});let e=0;const i=await Promise.all(Object.entries(t).sort((t,e)=>["_default"].indexOf(e[0])-["_default"].indexOf(t[0])).map(async([t,i])=>{if("_default"==t){await n.loadCategory("dashboard");t='
    '+n.t("dashboard/general")+"
    "}else t="
    "+t+"
    ";return e+=i.length,t+"
    "+i.join("
    ")+"
    "}));return{counter:e,msgs:i}}let r,a;Array.isArray(e)?({counter:r,msgs:a}=await i(e)):({counter:r,msgs:a}=await Object.entries(e).reduce(async(t,[e,n])=>{const r=await t,{counter:a,msgs:s}=await i(n);return r.counter+=a,r.msgs.push("
    "+e+"
    "+s.join("")+"
    "),r},Promise.resolve({counter:0,msgs:[]}))),await n.loadCategory("ui");const s=n.t("ui/n_errors",{n:r});t.config.globalProperties.$fhcAlert.alertDefault("error",s,"
    "+a.join("")+"
    ",!0,!0)},php(e){n(e,(e,n)=>{var i="";switch(i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),e.severity){case"Warning":case"Core Warning":case"Compile Warning":case"User Warning":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("warn",n,i,!0);break;case"Notice":case"User Notice":case"Runtime Notice":n?n+=": PHP "+e.severity:n="PHP "+e.severity,t.config.globalProperties.$fhcAlert.alertDefault("info",n,i,!0);break;default:i="Type: PHP "+e.severity+"\n\n"+i,n&&(i=n+"\n\n"+i),t.config.globalProperties.$fhcAlert.alertSystemError(i)}})},exception(e){n(e,(e,n)=>{var i="";n&&(i+=n+"\n\n"),i+="Type: "+e.class+"\n\n",i+="Message: "+e.message+"\n\n",i+="Filename: "+e.filename+"\n",i+="Line Number: "+e.line+"\n",e.backtrace&&e.backtrace.length&&(i+="\nBacktrace: ",e.backtrace.forEach(t=>{i+="\n\tFile: "+t.file+"\n",i+="\tLine: "+t.line+"\n",i+="\tFunction: "+t.function+"\n"})),t.config.globalProperties.$fhcAlert.alertSystemError(i)})},db(e){n(e,(e,n)=>{var i="";n&&(i+=n+"\n\n"),void 0!==e.heading&&(i+=e.heading+"\n\n"),void 0!==e.code&&(i+="Code: "+e.code+"\n\n"),void 0!==e.sql&&(i+="SQL: "+e.sql+"\n\n"),void 0!==e.message?i+="Message: "+e.message+"\n\n":void 0!==e.messages&&(i+="Messages: "+e.messages.join("\n\t")+"\n\n"),void 0!==e.filename&&(i+="Filename: "+e.filename+"\n"),void 0!==e.line&&(i+="Line Number: "+e.line+"\n"),t.config.globalProperties.$fhcAlert.alertSystemError(i)})},auth(e){n(e,(e,n)=>{n?n+=": "+e.message:n=e.message;var i="";i+="Controller name: "+e.controller+"\n",i+="Method name: "+e.method+"\n",i+="Required permissions: "+e.required_permissions,t.config.globalProperties.$fhcAlert.alertDefault("error",n,i,!0)})}}};function r(t,e,n,i){if("string"==typeof t&&void 0===i)[e,n,i]=[t,e,n],t=void 0;else if(t){if("object"!=typeof t)throw new TypeError("Parameter 1 of _get_config must be an object or a string");void 0===e&&void 0===n&&void 0===i&&(i=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},i?i.form=t:i={form:t}}return[e,n,i]}function a(t){if("string"==typeof t.data||t.data instanceof String)return a({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 s(t){if(!1===t||"off"===t)return{...i,success:!1,fail:!1};if(!t||!0===t)return{...i};if("success"===t)return{...i,fail:!1};if("fail"===t)return{...i,success:!1};const{success:e,fail:n,handler:r,combine:a}=t;return t={...i},Object.entries({fail:n,success:e}).forEach(([e,n])=>{void 0!==n&&(t[e]=n)}),Object.entries({handler:r,combine:a}).forEach(([e,n])=>{void 0!==n&&(t[e]={...t[e],...n})}),t}function o(t){const e=s(t?.errorHandling);if(t?.form){const n=e.handler.form;e.handler={...e.handler,form:e=>n(t.form,e)}}else e.combine={...e.combine,form:[]};return e}function l(t){return t.response?404==t.response.status?[{type:"not_found",message:t.message,url:t.request.responseURL}]:null==t.response.data.errors?[]:t.response.data.errors:t.request?[{type:"site_failed",message:t.message,url:t.request.responseURL}]:[{type:"script",message:t.message}]}function d(t,e){const n={},i=[];if(null==e)return{};for(;e.length;)i.push(e.pop());for(var r of i){let i=r.type,s=null;for(var a in t.combine){let e=t.combine[a].includes(i),n=t.handler[a];if(e&&n&&(s=a,"form"==s))break}s&&(i=s);t.handler[i]?(n[i]||(n[i]=[]),Array.isArray(r)?n[i].push(...r):n[i].push(r)):e.push(r)}return n}void 0!==e?.errorHandling&&(i=s(e.errorHandling));const u=axios.create({timeout:5e5,baseURL:FHC_JS_DATA_STORAGE_OBJECT.app_root+FHC_JS_DATA_STORAGE_OBJECT.ci_router+"/"});u.interceptors.request.use(t=>{if("post"!=t.method||!t.data)return t;if(t.data instanceof FormData)return t;if(!Object.values(t.data).every(t=>!(t instanceof FileList)&&(!Array.isArray(t)||t.every(t=>!(t instanceof File))))){const e=Object.entries(t.data).reduce((t,[e,n])=>{if(n instanceof FileList)for(const i of n)t.FormData.append(e+(n.length>1?"[]":""),i);else Array.isArray(n)?n.every(t=>!(t instanceof File))?t.jsondata[e]=n:n.forEach(i=>t.FormData.append(e+(n.length>1?"[]":""),i)):t.jsondata[e]=n;return t},{FormData:new FormData,jsondata:{}});e.FormData.append("_jsondata",JSON.stringify(e.jsondata)),t.data=e.FormData}return t}),u.interceptors.response.use(e=>("off"==e.config?.errorHandling||!1===e.config?.errorHandling||"fail"==e.config?.errorHandling||e.data.errors&&(e.data.errors=e.data.errors.filter(n=>(e.config[n.type+"ErrorHandler"]||t.config.globalProperties.$api._defaultErrorHandlers[n.type])(n,e.config))),a(e)),t=>{if("ERR_CANCELED"==t.code)return Promise.reject({handled:!0,...t});const e=o(t.config);if(!e.fail)return Promise.reject(t);const n=l(t),i=d(e,n);for(var r in i)e.handler[r](i[r]);return n.length?Promise.reject(t):Promise.reject({handled:!0,...t})}),t.config.globalProperties.$api={getUri:t=>u.getUri({url:t}),get:(t,e,n,i)=>([e,n,i]=r(t,e,n,i),n&&(i?i.params=n:i={params:n}),u.get(e,i)),post:(t,e,n,i)=>([e,n,i]=r(t,e,n,i),u.post(e,n,i)),call(e,n,i){if(Array.isArray(e)){const a=t.config.globalProperties.$api;return Promise.allSettled(e.map((t,e)=>(Array.isArray(t)||(t=["#"+e,t]),a.call(t[1],{errorHeader:t[0],errorHandling:!1})))).then(t=>{const[,,e]=r(i,void 0,void 0,n||{}),a=o(e);if(!a.success&&!a.fail)return t;const s={};for(var u of t){const[t,e]="fulfilled"===u.status?[a.success,u.value]:[a.fail,u.reason];if(!t)return;const n=d(a,l(e));for(var p in n)s[p]?s[p][e.config.errorHeader]=n[p]:s[p]={[e.config.errorHeader]:n[p]}}for(var c in s)a.handler[c](s[c]);return t})}let{method:a,url:s,params:u,config:p}=e;return void 0!==n&&(p=n),a||(a="get"),a.toLowerCase&&(a=a.toLowerCase()),"get"==a?this.get(i,s,u,p):"post"==a?this.post(i,s,u,p):void console.error("FhcApi: method not allowed:",a)},getErrorHandler:t=>o(t)},t.provide("$api",t.config.globalProperties.$api)}},X={loadCategory:t=>({method:"get",url:"/api/frontend/v1/phrasen/loadModule/"+t}),setLanguage:(t,e)=>({method:"post",url:"/api/frontend/v1/phrasen/setLanguage",params:{categories:t,language:e}}),getLanguage:()=>({method:"get",url:"/api/frontend/v1/phrasen/getLanguage"}),getActiveDbLanguages:()=>({method:"get",url:"/api/frontend/v1/phrasen/getAllLanguages"})};const Y=Vue.reactive({}),Q={};let tt=Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language),et=Vue.computed(()=>tt.value?FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(t=>t.sprache==tt.value).LC_Time:null);const nt={user_language:tt,user_locale:et,setLanguage(t){const e=Object.keys(Y);return this.config.globalProperties.$api.call(X.setLanguage(e,t)).then(e=>(e.data.forEach(t=>{Y[t.category][t.phrase]=t.text}),tt.value=t,e))},loadCategory(t){return Array.isArray(t)?Promise.all(t.map(this.config.globalProperties.$p.loadCategory)):(Q[t]||(Q[t]=this.config.globalProperties.$api.call(X.loadCategory(t)).then(e=>e?.data?function(t,e){return t.filter(t=>t.category==e).reduce((t,e)=>(t[e.phrase]||(t[e.phrase]=e.text),t),{})}(e.data,t):{}).then(e=>{Y[t]=e})),Q[t])},t_ref(t,e,n){return console.warn("deprecated"),Vue.computed(()=>this.t(t,e,n))},t(t,e,n){if(void 0===n&&(Array.isArray(t)&&2==t.length||t.split&&2==t.split("/").length)&&(n=e,[t,e]=t.split?t.split("/"):t),void 0===e)return console.error("invalid input",t,e,n),"";let i=Vue.computed(()=>Y[t]?function(t,e,n){let i=Y[t][e];return i?(n&&(i=i.replace(/\{([^}]*)\}/g,(t,e)=>void 0===n[e]?t:n[e])),i):"<< PHRASE "+e+">>"}(t,e,n):"");return Y[t]||this.loadCategory(t),i.value}};var it={install(t,e){t.config.globalProperties.$fhcApi||t.use(I),t.config.globalProperties.$api||t.use(K),t.config.globalProperties.$p={t:nt.t,loadCategory:e=>nt.loadCategory.call(t,e),setLanguage:e=>nt.setLanguage.call(t,e),user_language:tt,user_locale:et,t_ref:nt.t_ref},t.provide("$p",t.config.globalProperties.$p)}};Vue.createApp({name:"LvTemplatesApp",components:{CoreNavigationCmpt:_,LvTemplateUebersicht:A}}).use(primevue.config.default,{zIndex:{overlay:9999}}).use(it).mount("#main");var rt={emits:["update:modelValue"],props:{modelValue:String},computed:{valueAsBase64DataString(){return this.modelValue&&"data:image"!=this.modelValue.substring(0,10)?"data:image/jpeg;charset=utf-8;base64,"+this.modelValue:this.modelValue}},methods:{openUploadDialog(){this.$refs.fileInput.click()},pickFile(){let t=this.$refs.fileInput.files;if(t&&t[0]){let e=new FileReader;e.onload=t=>{this.$emit("update:modelValue",t.target.result)},e.readAsDataURL(t[0])}},deleteImage(){this.$emit("update:modelValue","")}},template:'\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    '},at=Object.freeze({__proto__:null,default:rt}),st={components:{DmsItem:{emits:["delete"],props:{modelValue:{type:[File,Object],required:!0}},data:()=>({preview:""}),watch:{modelValue(t){"application/x.fhc-dms+json"==t.type&&t.text().then(t=>{const e=JSON.parse(t);this.preview=e.preview||""})}},template:'\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • '}},emits:["update:modelValue"],props:{modelValue:{type:[FileList,Array],required:!0},multiple:Boolean,id:String,name:String,inputClass:[String,Array,Object],noList:Boolean,accept:{type:String,default:""},disabled:{type:Boolean,default:!1}},methods:{stringifyFile:t=>JSON.stringify({lastModified:t.lastModified,lastModifiedDate:t.lastModifiedDate,name:t.name,size:t.size,type:t.type}),addFiles(t){if(!this.multiple)return this.$emit("update:modelValue",t.target.files);const e=new DataTransfer,n=[];for(var i of this.modelValue)e.items.add(i),n.push(this.stringifyFile(i));for(var i of t.target.files)n.indexOf(this.stringifyFile(i))<0&&e.items.add(i);this.$emit("update:modelValue",e.files)},removeFile(t){const e=Array.from(this.modelValue)[t],n=new DataTransfer;for(var i of this.modelValue)i!==e&&n.items.add(i);this.$emit("update:modelValue",n.files)}},watch:{modelValue(t){if(!t)return;if(t instanceof FileList){if(!this.$refs.upload)return;return this.$refs.upload.files=t}const e=new DataTransfer;for(var n of t)if(n instanceof File)e.items.add(n);else{const t=new File([JSON.stringify(n)],n.name,{type:"application/x.fhc-dms+json"});e.items.add(t)}this.$emit("update:modelValue",e.files)}},template:'\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    '},ot=Object.freeze({__proto__:null,default:st}); //# sourceMappingURL=LvTemplates.js.map diff --git a/public/dist/js/apps/lehre/lvplanung/LvTemplates.js.map b/public/dist/js/apps/lehre/lvplanung/LvTemplates.js.map index e28ed686b..393824cdc 100644 --- a/public/dist/js/apps/lehre/lvplanung/LvTemplates.js.map +++ b/public/dist/js/apps/lehre/lvplanung/LvTemplates.js.map @@ -1 +1 @@ -{"version":3,"file":"LvTemplates.js","sources":["../../../../../js/components/Fetch.js","../../../../../js/components/filter/Filter/Config.js","../../../../../js/components/filter/Filter/Columns.js","../../../../../js/components/filter/Table/Download.js","../../../../../js/directives/collapseAutoClose.js","../../../../../js/tabulator/layouts/fitDataStretchFrozen.js","../../../../../js/api/factory/filter.js","../../../../../js/components/filter/Filter.js","../../../../../js/components/Form/Input.js","../../../../../js/components/Fragment.js","../../../../../js/lehre/lvplanung/LvTemplateUebersicht.js","../../../../../js/api/factory/navigation.js","../../../../../js/components/navigation/Navigation.js","../../../../../js/api/search.js","../../../../../js/api/phrasen.js","../../../../../js/api/navigation.js","../../../../../js/api/filter.js","../../../../../js/api/studstatus.js","../../../../../js/api/profil.js","../../../../../js/api/profilUpdate.js","../../../../../js/api/lvPlan.js","../../../../../js/api/stv.js","../../../../../js/api/stv/verband.js","../../../../../js/api/stv/students.js","../../../../../js/api/stv/filter.js","../../../../../js/api/stv/konto.js","../../../../../js/api/stv/group.js","../../../../../js/api/stv/kontakt.js","../../../../../js/api/stv/prestudent.js","../../../../../js/api/stv/status.js","../../../../../js/api/stv/details.js","../../../../../js/api/stv/exam.js","../../../../../js/api/stv/abschlusspruefung.js","../../../../../js/api/stv/grades.js","../../../../../js/api/stv/mobility.js","../../../../../js/api/stv/archiv.js","../../../../../js/api/stv/documents.js","../../../../../js/api/stv/exemptions.js","../../../../../js/api/stv/jointstudies.js","../../../../../js/api/stv/courselist.js","../../../../../js/api/notiz.js","../../../../../js/api/notiz/person.js","../../../../../js/api/betriebsmittel.js","../../../../../js/api/betriebsmittel/person.js","../../../../../js/api/checkperson.js","../../../../../js/api/ort.js","../../../../../js/api/cms.js","../../../../../js/api/lehre.js","../../../../../js/api/addons.js","../../../../../js/api/messages.js","../../../../../js/api/messages/person.js","../../../../../js/api/vorlagen.js","../../../../../js/api/studium.js","../../../../../js/api/fhcapifactory.js","../../../../../js/api/dashboard.js","../../../../../js/api/bookmark.js","../../../../../js/api/ampeln.js","../../../../../js/api/studiengang.js","../../../../../js/api/menu.js","../../../../../js/api/authinfo.js","../../../../../js/api/language.js","../../../../../js/plugin/OldFhcApi.js","../../../../../js/RESTClient.js","../../../../../js/plugins/FhcAlert.js","../../../../../js/plugins/Api.js","../../../../../js/api/factory/phrasen.js","../../../../../js/plugins/Phrasen.js","../../../../../js/apps/lehre/lvplanung/LvTemplates.js","../../../../../js/components/Form/Upload/Image.js","../../../../../js/components/Form/Upload/Dms.js","../../../../../js/components/Form/Upload/Dms/Item.js"],"sourcesContent":["/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nconst FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\tfilters: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tfields: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t}\n\t},\n\temits: {\n\t\tswitchFilter: ['filterId'],\n\t\tapplyFilterConfig: ['filterFields'],\n\t\tsaveCustomFilter: ['customFilterName']\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tcurrentFields: []\n\t\t};\n\t},\n\tcomputed: {\n\t\ttypes() {\n\t\t\treturn this.columns.reduce((a,c) => {\n\t\t\t\tlet type = c.type.toLowerCase();\n\t\t\t\tif (type.indexOf('int') >= 0)\n\t\t\t\t\ta[c.name] = 'Numeric';\n\t\t\t\telse if (\n\t\t\t\t\ttype.indexOf('varchar') >= 0 || \n\t\t\t\t\ttype.indexOf('text') >= 0 || \n\t\t\t\t\ttype.indexOf('bpchar') >= 0\n\t\t\t\t)\n\t\t\t\t\ta[c.name] = 'Text';\n\t\t\t\telse if (\n\t\t\t\t\ttype.indexOf('timestamp') >= 0 || \n\t\t\t\t\ttype.indexOf('date') >= 0\n\t\t\t\t)\n\t\t\t\t\ta[c.name] = 'Date';\n\t\t\t\telse\n\t\t\t\t\ta[c.name] = '';\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t}\n\t},\n\twatch: {\n\t\tfields(n) {\n\t\t\tthis.currentFields = n;\n\t\t}\n\t},\n\tmethods: {\n\t\tswitchFilter(evt) {\n\t\t\tthis.$emit('switchFilter', evt.currentTarget.value);\n\t\t},\n\t\tapplyFilterConfig() {\n\t\t\tconst filteredFields = this.currentFields.filter(el => el.name != FILTER_COMPONENT_NEW_FILTER);\n\t\t\tif (filteredFields.filter(el => el.condition == \"\").length)\n\t\t\t\talert(\"Please fill all the filter options\");\n\t\t\telse\n\t\t\t\tthis.$emit('applyFilterConfig', filteredFields);\n\t\t},\n\t\taddField(evt) {\n\t\t\tthis.currentFields.push({\n\t\t\t\tname: FILTER_COMPONENT_NEW_FILTER\n\t\t\t});\n\t\t},\n\t\tremoveField(index) {\n\t\t\tthis.currentFields.splice(index, 1);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tFilter {{ index + 1 }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\tfields: Array,\n\t\tselected: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tnames: {\n\t\t\ttype: Object,\n\t\t\tdefault: {}\n\t\t}\n\t},\n\temits: {\n\t\thide: ['fieldName'],\n\t\tshow: ['fieldName']\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tselectedFields: []\n\t\t};\n\t},\n\twatch: {\n\t\tselected(n) {\n\t\t\tthis.selectedFields = n;\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggle(field) {\n\t\t\tif (this.selectedFields.indexOf(field) != -1)\n\t\t\t{\n\t\t\t\tthis.selectedFields.splice(this.selectedFields.indexOf(field), 1);\n\t\t\t\tthis.$emit('hide', field);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.selectedFields.push(field);\n\t\t\t\tthis.$emit('show', field);\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{{ names[fieldToDisplay] || fieldToDisplay }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\n\t`\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nconst DEFAULT_ICONS = {\n\tjsonLines: 'fa-file-lines',\n\txlsx: 'fa-file-excel',\n\tpdf: 'fa-file-pdf',\n\thtml: 'fa-file-code',\n\tjson: 'fa-file',\n\tcsv: 'fa-file-csv'\n};\nconst DEFAULT_LABELS = {\n\tjsonLines: 'Download as JSONLINES',\n\txlsx: 'Download as XLSX',\n\tpdf: 'Download as PDF',\n\thtml: 'Download as HTML',\n\tjson: 'Download as JSON',\n\tcsv: 'Download as CSV '\n};\n\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\ttabulator: Object,\n\t\tconfig: {\n\t\t\ttype: [Boolean, String, Function, Array, Object],\n\t\t\tdefault: false\n\t\t},\n\t\ticonClass: [String, Array, Object]\n\t},\n\tcomputed: {\n\t\tcurrentConfig() {\n\t\t\tif (!this.config)\n\t\t\t\treturn false;\n\n\t\t\tlet config = this.config;\n\n\t\t\tif (config instanceof Function)\n\t\t\t\treturn [config];\n\n\t\t\tif (config === null)\n\t\t\t\treturn [];\n\n\t\t\tif (this.config === true)\n\t\t\t\tconfig = ['csv'];\n\n\t\t\tif (Object.prototype.toString.call(config) === \"[object String]\")\n\t\t\t\tconfig = config.split(',');\n\n\t\t\tif (typeof config === 'object' && !Array.isArray(config)) {\n\t\t\t\tlet newConfig = [];\n\t\t\t\tfor (var k in config) {\n\t\t\t\t\tvar v = config[k], type;\n\t\t\t\t\t\n\t\t\t\t\tif (!v)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\n\t\t\t\t\tif (Object.prototype.toString.call(v) === \"[object String]\") {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(v);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\tlabel: v === k ? DEFAULT_LABELS[type] : k,\n\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\t\tif(type !== null) {\n\t\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\t\tlabel: v,\n\t\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\talert('neither ' + k + ' nor ' + v + ' are supported download file types');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (typeof v === 'object' && !Array.isArray(v)) {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tif (v.formatter === undefined)\n\t\t\t\t\t\t\t\tv.formatter = type;\n\t\t\t\t\t\t\tif (v.label === undefined)\n\t\t\t\t\t\t\t\tv.label = DEFAULT_LABELS[type];\n\t\t\t\t\t\t\tif (v.icon === undefined)\n\t\t\t\t\t\t\t\tv.icon = DEFAULT_ICONS[type];\n\t\t\t\t\t\t\tnewConfig.push(v);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (v.label === undefined)\n\t\t\t\t\t\t\t\tv.label = k;\n\t\t\t\t\t\t\tnewConfig.push(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\tlabel: DEFAULT_LABELS[type],\n\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\talert(k + ' is not a supported download file type');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconfig = newConfig;\n\t\t\t}\n\n\t\t\tif (Array.isArray(config))\n\t\t\t{\n\t\t\t\tconfig = config.map(el => {\n\t\t\t\t\tif (Object.prototype.toString.call(el) === \"[object String]\") {\n\t\t\t\t\t\tlet formatter = this.stringToFileFormatter(el);\n\t\t\t\t\t\tif (formatter === null)\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[formatter],\n\t\t\t\t\t\t\tlabel: DEFAULT_LABELS[formatter],\n\t\t\t\t\t\t\tformatter\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (el instanceof Function)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tformatter: el\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (typeof el === 'object' && !Array.isArray(el) && el !== null) {\n\t\t\t\t\t\tif (el.formatter instanceof Function)\n\t\t\t\t\t\t\treturn el;\n\t\t\t\t\t\tif (this.validateFileFormatter(el.formatter))\n\t\t\t\t\t\t\treturn el;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn null;\n\t\t\t\t}).filter(el => el !== null);\n\n\t\t\t\tif (config.length < 2)\n\t\t\t\t\treturn config;\n\n\t\t\t\tif (config.filter(el => el.label || el.icon).length == config.length)\n\t\t\t\t\treturn config;\n\n\t\t\t\talert('Config not valid');\n\t\t\t}\n\n\t\t\treturn [];\n\t\t}\n\t},\n\tmethods: {\n\t\tstringToFileFormatter(input) {\n\t\t\tlet lcInput = input.toLowerCase();\n\t\t\t\n\t\t\tif (lcInput == 'jsonlines')\n\t\t\t\treturn 'jsonLines';\n\t\t\t\n\t\t\tif (['xlsx', 'pdf', 'html', 'json', 'csv'].includes(lcInput))\n\t\t\t\treturn lcInput;\n\n\t\t\treturn null;\n\t\t},\n\t\tvalidateFileFormatter(input) {\n\t\t\tlet formatter = this.stringToFileFormatter(input);\n\t\t\tif (!formatter) {\n\t\t\t\talert(input + ' is not a supported file formatter');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (formatter == 'xlsx') {\n\t\t\t\tif (!window.XLSX) {\n\t\t\t\t\talert('XLSX Library not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (formatter == 'pdf') {\n\t\t\t\tif (!window.jspdf) {\n\t\t\t\t\talert('jsPDF Library not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar doc = new jspdf.jsPDF({});\n\t\t\t\tif (!doc.autoTable) {\n\t\t\t\t\talert('jsPDF-AutoTable Plugin not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tdownload(config) {\n\t\t\tthis.tabulator.download(config.formatter, config.file, config.options)\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t`\n};\n\n","const elementDataMap = new WeakMap();\n\nexport default {\n\tmounted(el, binding) {\n\t\tlet open = false;\n\t\telementDataMap.set(el, evt => {\n\t\t\tif (!open)\n\t\t\t\treturn;\n\n\t\t\tif (el.contains(evt.target))\n\t\t\t\treturn;\n\n\t\t\tconst collapse = bootstrap.Collapse.getInstance(el)\n\t\t\tif (collapse)\n\t\t\t\tcollapse.hide();\n\t\t});\n\t\tel.addEventListener('shown.bs.collapse', () => {\n\t\t\topen = true;\n\t\t});\n\t\tel.addEventListener('hide.bs.collapse', () => {\n\t\t\topen = false;\n\t\t});\n\t\tdocument.addEventListener('click', elementDataMap.get(el), true);\n\t},\n\tbeforeUnmount(el, binding) {\n\t\tdocument.removeEventListener('click', elementDataMap.get(el));\n\t\tdelete el.collapsibleAutoHideFunc;\n\t}\n}","/**\n * This may need changes if Tabulator gets updated!\n *\n * Current working Version: 5.5.2\n * \n * This is a copy of the fitDataStretch function. The only difference\n * is the check for frozen columns on line 22.\n */\n\nexport default window.Tabulator?.extendModule(\"layout\", \"modes\", {\n\tfitDataStretchFrozen(columns, forced) {\n\t\tvar colsWidth = 0,\n\t\ttableWidth = this.table.rowManager.element.clientWidth,\n\t\tgap = 0,\n\t\tlastCol = false;\n\n\t\tcolumns.forEach((column, i) => {\n\t\t\tif (!column.widthFixed) {\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\n\t\t\tif (this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible && !column.definition.frozen) {\n\t\t\t\tlastCol = column;\n\t\t\t}\n\n\t\t\tif (column.visible) {\n\t\t\t\tcolsWidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\tif (lastCol){\n\t\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\t\tlastCol.setWidth(0);\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\n\t\t\tif (gap > 0) {\n\t\t\t\tlastCol.setWidth(gap);\n\t\t\t} else {\n\t\t\t\tlastCol.reinitializeWidth();\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t}\n\t}\n});\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/saveCustomFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t};\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/removeCustomFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t};\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/applyFilterFields',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t};\n\t},\n\taddFilterField(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/addFilterField',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t};\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/removeFilterField',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t};\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/filter/getFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t};\n\t},\n\tgetFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/filter/getFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport {CoreFetchCmpt} from '../../components/Fetch.js';\nimport FilterConfig from './Filter/Config.js';\nimport FilterColumns from './Filter/Columns.js';\nimport TableDownload from './Table/Download.js';\nimport collapseAutoClose from '../../directives/collapseAutoClose.js';\n\nimport moduleLayoutFitDataStretchFrozen from '../../tabulator/layouts/fitDataStretchFrozen.js';\n\nimport ApiFilter from '../../api/factory/filter.js';\n\n//\nconst FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';\nconst FILTER_COMPONENT_NEW_FILTER_TYPE = 'Filter Component New Filter Type';\n\nvar _uuid = 0;\n\n/**\n *\n */\nexport const CoreFilterCmpt = {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tFilterConfig,\n\t\tFilterColumns,\n\t\tTableDownload\n\t},\n\tdirectives: {\n\t\tcollapseAutoClose\n\t},\n\temits: [\n\t\t'nwNewEntry',\n\t\t'click:new',\n\t\t'tableBuilt',\n\t\t'uuidDefined'\n\t],\n\tprops: {\n\t\tonNwNewEntry: Function, // NOTE(chris): Hack to get the nwNewEntry listener into $props\n\t\ttitle: String,\n\t\tdescription: String,\n\t\tsideMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tfilterType: {\n\t\t\ttype: String\n\t\t},\n\t\ttabulatorOptions: Object,\n\t\ttabulatorEvents: Array,\n\t\ttableOnly: Boolean,\n\t\tnoColumnFilter:Boolean,\n\t\treload: Boolean,\n\t\treloadBtnInfotext: String,\n\t\tdownload: {\n\t\t\ttype: [Boolean, String, Function, Array, Object],\n\t\t\tdefault: false\n\t\t},\n\t\tnewBtnShow: Boolean,\n\t\tnewBtnClass: [String, Array, Object],\n\t\tnewBtnDisabled: Boolean,\n\t\tnewBtnLabel: String,\n\t\tuniqueId: String,\n\n\t\tidField: String,\n\t\tparentIdField: String,\n\t\tcountOnly: Boolean,\n\t\tuseSelectionSpan: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tuuid: 0,\n\t\t\t// FilterCmpt properties\n\t\t\tfilterName: null,\n\t\t\tfilterActive: false,\n\t\t\tfields: null,\n\t\t\tdataset: null,\n\t\t\tdatasetMetadata: null,\n\t\t\tselectedFields: null,\n\t\t\tfilterFields: null,\n\n\t\t\tavailableFilters: null,\n\t\t\tselectedFilter: null,\n\n\t\t\t// FetchCmpt binded properties\n\t\t\tfetchCmptRefresh: false,\n\t\t\tfetchCmptApiFunction: null,\n\t\t\tfetchCmptApiFunctionParams: null,\n\t\t\tfetchCmptDataFetched: null,\n\n\t\t\tfetchResult: null,\n\n\t\t\ttabulator: null,\n\t\t\ttableBuilt: false,\n\t\t\ttabulatorHasSelector: false,\n\t\t\tselectedData: [],\n\t\t\tpersistence: {\n\t\t\t\tsort: true,\n\t\t\t\tcolumns: true,\n\t\t\t\tfilter: false,\n\t\t\t\theaderFilter: false,\n\t\t\t\tgroup: false,\n\t\t\t\tpage: false,\n\t\t\t}\n\t\t};\n\t},\n\tcomputed: {\n\t\tnotSelectedFields() {\n\t\t\tif (!this.fields || !this.selectedFields)\n\t\t\t\treturn null;\n\t\t\treturn this.fields.filter(x => this.selectedFields.indexOf(x) === -1)\n\t\t},\n\t\tfilteredData() {\n\t\t\tif (!this.dataset)\n\t\t\t\treturn [];\n\t\t\treturn JSON.parse(JSON.stringify(this.dataset));\n\t\t},\n\t\tfilteredColumns() {\n\t\t\tlet fields = JSON.parse(JSON.stringify(this.fields)) || [];\n\t\t\tlet selectedFields = JSON.parse(JSON.stringify(this.selectedFields)) || [];\n\n\t\t\tlet columns = null;\n\n\t\t\t// If the tabulator options has been provided and it contains the property columns\n\t\t\tif (this.tabulatorOptions && this.tabulatorOptions.hasOwnProperty('columns'))\n\t\t\t\tcolumns = this.tabulatorOptions.columns;\n\n\t\t\t// If columns is not an array or it is an array with less elements then the array fields\n\t\t\tif (!Array.isArray(columns) || (Array.isArray(columns) && columns.length < fields.length))\n\t\t\t{\n\t\t\t\tcolumns = []; // set it as an empty array\n\n\t\t\t\t// Loop throught all the retrieved columns from database\n\t\t\t\tfor (let field of fields)\n\t\t\t\t{\n\t\t\t\t\t// Create a new column having the title equal to the field name\n\t\t\t\t\tlet column = {\n\t\t\t\t\t\ttitle: field,\n\t\t\t\t\t\tfield: field\n\t\t\t\t\t};\n\n\t\t\t\t\t// If the column has to be displayed or not\n\t\t\t\t\tcolumn.visible = selectedFields.indexOf(field) >= 0;\n\n\t\t\t\t\t// Add the new column to the list of columns\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // the property columns has been provided in the tabulator options\n\t\t\t{\n\t\t\t\t// Loop throught the property columns of the tabulator options\n\t\t\t\tfor (let col of columns)\n\t\t\t\t{\n\t\t\t\t\t// If the column has to be displayed or not\n\t\t\t\t\t/* fields.indexOf(col.field) == -1; ensures displaying formatter colums\n\t\t\t\t\te.g. column with rowSelection checkboxes or with custom formatted action buttons */\n\t\t\t\t\tcol.visible = selectedFields.indexOf(col.field) >= 0 || fields.indexOf(col.field) == -1;\n\n\t\t\t\t\tif (col.hasOwnProperty('resizable'))\n\t\t\t\t\t\tcol.resizable = col.visible;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn columns;\n\t\t},\n\t\tfieldIdsForVisibilty() {\n\t\t\tif (!this.tableBuilt)\n\t\t\t\treturn [];\n\t\t\treturn this.tabulator.getColumns().filter(col => {\n\t\t\t\tlet def = col.getDefinition();\n\t\t\t\treturn !def.frozen && def.title && def.formatter != \"responsiveCollapse\";\n\t\t\t}).map(col => col.getField());\n\t\t},\n\t\tfieldNames() {\n\t\t\tif (!this.tableBuilt)\n\t\t\t\treturn {};\n\t\t\treturn this.tabulator.getColumns().reduce((res, col) => {\n\t\t\t\tres[col.getField()] = col.getDefinition().title;\n\t\t\t\treturn res;\n\t\t\t}, {});\n\t\t},\n\t\tidExtra() {\n\t\t\tif (!this.uuid)\n\t\t\t\treturn '';\n\t\t\treturn '-' + this.uuid;\n\t\t},\n\t\tcolumnsForFilter() {\n\t\t\tif (!this.filteredColumns || !this.datasetMetadata)\n\t\t\t\treturn [];\n\t\t\tconst filterTitles = this.filteredColumns.reduce((a,c) => {\n\t\t\t\ta[c.field] = c.title;\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t\treturn this.datasetMetadata.map(el => ({...el, ...{title: filterTitles[el.name]}}));\n\t\t}\n\t},\n\tmethods: {\n\t\treloadTable() {\n\t\t\tif (this.tableOnly)\n\t\t\t\tthis.tabulator.setData();\n\t\t\telse\n\t\t\t\tthis.getFilter();\n\t\t},\n\t\tasync initTabulator() {\n\t\t\tlet placeholder = '< Phrasen Plugin not loaded! >';\n\t\t\tif (this.$p) {\n\t\t\t\tawait this.$p.loadCategory('ui');\n\t\t\t\tplaceholder = this.$p.t('ui/keineDatenVorhanden');\n\t\t\t}\n\n\t\t\tif (!this.tableOnly) {\n\t\t\t\t// prefetch data to get fields & selectedFields for filteredColumns & filteredData\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tconst filterId = window.location.hash ? window.location.hash.slice(1) : null;\n\n\t\t\t\t\tconst resolvePromiseFunc = data => {\n\t\t\t\t\t\tthis.setRenderData(data);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\t// get the filter data\n\t\t\t\t\tif (filterId === null)\n\t\t\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilter(wsParams)),\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tresolvePromiseFunc\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilterById(wsParams)),\n\t\t\t\t\t\t\t{ filterId },\n\t\t\t\t\t\t\tresolvePromiseFunc\n\t\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Define a default tabulator options in case it was not provided\n\t\t\tlet tabulatorOptions = {...{\n\t\t\t\t\tlayout: \"fitDataStretchFrozen\",\n\t\t\t\t\tmovableColumns: true,\n\t\t\t\t\tcolumnDefaults:{\n\t\t\t\t\t\ttooltip: true\n\t\t\t\t\t},\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tpersistence: this.persistence,\n\t\t\t\t}, ...(this.tabulatorOptions || {})};\n\n\t\t\t// set default height if no height property is set\n\t\t\tif (tabulatorOptions.height === undefined &&\n\t\t\t\ttabulatorOptions.minHeight === undefined &&\n\t\t\t\ttabulatorOptions.maxHeight === undefined) {\n\t\t\t\ttabulatorOptions.height = 500;\n\t\t\t}\n\n\t\t\tif (!this.tableOnly) {\n\t\t\t\ttabulatorOptions.data = this.filteredData;\n\t\t\t\ttabulatorOptions.columns = this.filteredColumns;\n\t\t\t} else {\n\t\t\t\ttabulatorOptions.columns.forEach(col => {\n\t\t\t\t\tif (col.visible === undefined)\n\t\t\t\t\t\tcol.visible = true;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (tabulatorOptions.selectable || (tabulatorOptions.columns && tabulatorOptions.columns.filter(el => el.formatter == 'rowSelection').length))\n\t\t\t\tthis.tabulatorHasSelector = true;\n\n\t\t\tif (this.idField) {\n\t\t\t\t// enable nested tabulator if parent Id given\n\t\t\t\tif (this.parentIdField) tabulatorOptions.dataTree = true;\n\t\t\t\t// set tabulator index\n\t\t\t\ttabulatorOptions.index = this.idField;\n\t\t\t}\n\n\t\t\t// Start the tabulator with the build options\n\t\t\tthis.tabulator = new Tabulator(\n\t\t\t\tthis.$refs.table,\n\t\t\t\ttabulatorOptions\n\t\t\t);\n\t\t\t// If event handlers have been provided\n\t\t\tif (Array.isArray(this.tabulatorEvents) && this.tabulatorEvents.length > 0)\n\t\t\t{\n\t\t\t\t// Attach all the provided event handlers to the started tabulator\n\t\t\t\tfor (let evt of this.tabulatorEvents)\n\t\t\t\t\tthis.tabulator.on(evt.event, evt.handler);\n\t\t\t}\n\t\t\tthis.tabulator.on('tableBuilt', () => {this.tableBuilt = true; this.$emit('tableBuilt');});\n\t\t\tthis.tabulator.on(\"rowSelectionChanged\", data => {\n\t\t\t\tthis.selectedData = data;\n\t\t\t});\n\n\t\t\t// if nested tabulator, restructure data\n\t\t\tif (this.parentIdField && this.idField) {\n\t\t\t\tthis.tabulator.on(\"dataLoading\", data => {\n\t\t\t\t\tlet toDelete = [];\n\n\t\t\t\t\t// loop through all data\n\t\t\t\t\tfor (let childIdx = 0; childIdx < data.length; childIdx++)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet child = data[childIdx];\n\n\t\t\t\t\t\t// if it has parent id, it is a child\n\t\t\t\t\t\tif (child[this.parentIdField])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// append the child on the right place. If parent found, mark original sw child on 0 level for deleting\n\t\t\t\t\t\t\tif (this.appendChild(data, child)) toDelete.push(childIdx);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// delete the marked children from 0 level\n\t\t\t\t\tfor (let counter = 0; counter < toDelete.length; counter++)\n\t\t\t\t\t{\n\t\t\t\t\t\t// decrease index by counter as index of data array changes after every deletion\n\t\t\t\t\t\tdata.splice(toDelete[counter] - counter, 1);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this.tableOnly) {\n\t\t\t\tthis.tabulator.on('tableBuilt', () => {\n\t\t\t\t\tconst cols = this.tabulator.getColumns();\n\t\t\t\t\tthis.fields = cols.map(col => col.getField());\n\t\t\t\t\tthis.selectedFields = cols.filter(col => col.isVisible()).map(col => col.getField());\n\t\t\t\t\tif (this.tabulator.options.persistence.headerFilter)\n\t\t\t\t\t\tthis._setHeaderFilter();\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t\tthis.tabulator.on(\"dataFiltered\", filters => {\n\t\t\t\tthis.filterActive = filters.length > 0;\n\t\t\t});\n\t\t},\n\t\tupdateTabulator() {\n\t\t\tif (this.tabulator) {\n\t\t\t\tif (this.tableBuilt)\n\t\t\t\t\tthis._updateTabulator();\n\t\t\t\telse\n\t\t\t\t\tthis.tabulator.on('tableBuilt', this._updateTabulator);\n\t\t\t}\n\t\t},\n\t\t_updateTabulator() {\n\t\t\tthis.tabulatorHasSelector = this.tabulatorOptions.selectable || this.filteredColumns.filter(el => el.formatter == 'rowSelection').length;\n\t\t\tthis.tabulator.setColumns(this.filteredColumns);\n\t\t\tthis.tabulator.setData(this.filteredData);\n\t\t\tthis._setHeaderFilter()\n\t\t},\n\t\tclearFilters()\n\t\t{\n\t\t\tlet existingFilters = this.tabulator.getHeaderFilters();\n\t\t\texistingFilters.forEach(filter => {\n\t\t\t\tthis.tabulator.setHeaderFilterValue(filter.field, \"\");\n\t\t\t});\n\t\t\tthis.tabulator.clearFilter();\n\t\t\tthis.filterActive = false;\n\t\t},\n\t\t_setHeaderFilter()\n\t\t{\n\t\t\tconst existingFilters = this.tabulator.getHeaderFilters();\n\t\t\texistingFilters.forEach(filter => {\n\t\t\t\tthis.tabulator.setHeaderFilterValue(filter.field, filter.value);\n\t\t\t});\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tgetFilter() {\n\t\t\tif (this.selectedFilter === null)\n\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilter(wsParams)),\n\t\t\t\t\tnull,\n\t\t\t\t\tthis.render\n\t\t\t\t);\n\t\t\telse\n\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilterById(wsParams)),\n\t\t\t\t\t{\n\t\t\t\t\t\tfilterId: this.selectedFilter\n\t\t\t\t\t},\n\t\t\t\t\tthis.render\n\t\t\t\t);\n\t\t},\n\t\tsetRenderData(data) {\n\t\t\tthis.fetchResult = data;\n\t\t\tthis.filterName = data.filterName;\n\t\t\tthis.dataset = data.dataset;\n\t\t\tthis.datasetMetadata = data.datasetMetadata;\n\n\t\t\tthis.fields = data.fields;\n\t\t\tthis.selectedFields = data.selectedFields;\n\t\t\tthis.filterFields = [];\n\n\t\t\tfor (let i = 0; i < data.datasetMetadata.length; i++)\n\t\t\t{\n\t\t\t\tfor (let j = 0; j < data.filters.length; j++)\n\t\t\t\t{\n\t\t\t\t\tif (data.datasetMetadata[i].name == data.filters[j].name)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet filter = data.filters[j];\n\t\t\t\t\t\tfilter.type = data.datasetMetadata[i].type;\n\n\t\t\t\t\t\tthis.filterFields.push(filter);\n\t\t\t\t\t\t//break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\trender(response) {\n\t\t\tlet data = response;\n\n\t\t\tthis.setRenderData(data);\n\n\t\t\t// If the side menu is active\n\t\t\tif (this.sideMenu === true)\n\t\t\t{\n\t\t\t\tthis.setSideMenu(data);\n\t\t\t}\n\t\t\telse // otherwise use the dropdown in the filter options\n\t\t\t{\n\t\t\t\tthis.setDropDownMenu(data);\n\t\t\t}\n\t\t\tthis.updateTabulator();\n\t\t},\n\t\t/**\n\t\t * Set the menu\n\t\t */\n\t\tsetSideMenu(data) {\n\t\t\tlet filters = data.sideMenu.filters;\n\t\t\tlet personalFilters = data.sideMenu.personalFilters;\n\t\t\tlet filtersArray = [];\n\n\t\t\tfor (let filtersCount = 0; filtersCount < filters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = filters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: filters[filtersCount].filter_id,\n\t\t\t\t\tlink: link + filters[filtersCount].filter_id,\n\t\t\t\t\tdescription: filters[filtersCount].desc,\n\t\t\t\t\tsort: filtersCount,\n\t\t\t\t\tonClickCall: this.handlerGetFilterById\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = personalFilters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: personalFilters[filtersCount].filter_id,\n\t\t\t\t\tlink: link + personalFilters[filtersCount].filter_id,\n\t\t\t\t\tdescription: personalFilters[filtersCount].desc,\n\t\t\t\t\tsubscriptDescription: personalFilters[filtersCount].subscriptDescription,\n\t\t\t\t\tsubscriptLinkClass: personalFilters[filtersCount].subscriptLinkClass,\n\t\t\t\t\tsubscriptLinkValue: personalFilters[filtersCount].subscriptLinkValue,\n\t\t\t\t\tsort: filtersCount,\n\t\t\t\t\tonClickCall: this.handlerGetFilterById,\n\t\t\t\t\tonClickSubscriptCall: this.handlerRemoveCustomFilter\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.availableFilters = filtersArray;\n\n\t\t\tthis.$emit(\n\t\t\t\t'nwNewEntry',\n\t\t\t\t{\n\t\t\t\t\tlink: \"#\",\n\t\t\t\t\tdescription: \"Filters\",\n\t\t\t\t\ticon: \"filter\",\n\t\t\t\t\tchildren: filtersArray\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t * Set the drop down menu\n\t\t */\n\t\tsetDropDownMenu(data) {\n\t\t\tlet filters = data.sideMenu.filters;\n\t\t\tlet personalFilters = data.sideMenu.personalFilters;\n\t\t\tlet filtersArray = [];\n\n\t\t\tfor (let filtersCount = 0; filtersCount < filters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = filters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: filters[filtersCount].filter_id,\n\t\t\t\t\toption: filters[filtersCount].filter_id,\n\t\t\t\t\tdescription: filters[filtersCount].desc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = personalFilters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: personalFilters[filtersCount].filter_id,\n\t\t\t\t\toption: personalFilters[filtersCount].filter_id,\n\t\t\t\t\tdescription: personalFilters[filtersCount].desc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.availableFilters = filtersArray;\n\t\t},\n\t\t/**\n\t\t * Used to start/refresh the FetchCmpt\n\t\t */\n\t\tstartFetchCmpt(apiFunction, apiFunctionParameters, dataFetchedCallback) {\n\t\t\t// Assign the function api of the FetchCmpt binded property\n\t\t\tthis.fetchCmptApiFunction = apiFunction;\n\n\t\t\t// In case a null value is provided set the parameters as an empty object\n\t\t\tif (apiFunctionParameters == null) apiFunctionParameters = {};\n\n\t\t\t// Always needed parameters\n\t\t\tapiFunctionParameters.filterUniqueId = FHC_JS_DATA_STORAGE_OBJECT.called_path + \"/\" + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\t\t\tapiFunctionParameters.filterType = this.filterType;\n\n\t\t\tif (this.uniqueId)\n\t\t\t\tapiFunctionParameters.filterUniqueId += '_' + this.uniqueId;\n\n\t\t\t// Assign parameters to the FetchCmpt binded properties\n\t\t\tthis.fetchCmptApiFunctionParams = apiFunctionParameters;\n\t\t\t// Assign data fetch callback to the FetchCmpt binded properties\n\t\t\tthis.fetchCmptDataFetched = dataFetchedCallback;\n\t\t\t// Set the FetchCmpt binded property refresh to have the component to refresh\n\t\t\t// NOTE: this should be the last one to be called because it triggers the FetchCmpt to start to refresh\n\t\t\tthis.fetchCmptRefresh === true ? this.fetchCmptRefresh = false : this.fetchCmptRefresh = true;\n\t\t},\n\n\t\t// ------------------------------------------------------------------------------------------------------------------\n\t\t// Event handlers\n\n\t\t/**\n\t\t *\n\t\t */\n\t\thandlerSaveCustomFilter(customFilterName) {\n\t\t\tthis.selectedFilter = null;\n\t\t\t//\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.saveCustomFilter(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tcustomFilterName\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\thandlerRemoveCustomFilter(event) {\n\t\t\tlet filterId = event.currentTarget.getAttribute(\"href\").substring(1);\n\t\t\tif (filterId === this.selectedFilter)\n\t\t\t\tthis.selectedFilter = null;\n\t\t\t//\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.removeCustomFilter(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tfilterId: filterId\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\n\t\t/*\n\t\t *\n\t\t */\n\t\thandlerGetFilterById: function(event) {\n\n\t\t\tlet filterId = null;\n\n\t\t\t// Get the attribute href if side menu is rendered\n\t\t\tlet attr = event.currentTarget.getAttribute(\"href\");\n\n\t\t\t// Otherwise get the value of the drop down menu\n\t\t\tif (attr == null)\n\t\t\t{\n\t\t\t\tfilterId = event.currentTarget.value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilterId = attr.substring(1);\n\t\t\t}\n\n\t\t\tthis.switchFilter(filterId);\n\t\t},\n\t\tswitchFilter(filterId) {\n\t\t\tthis.selectedFilter = filterId;\n\t\t\tthis.getFilter();\n\t\t},\n\t\tapplyFilterConfig(filterFields) {\n\t\t\tthis.selectedFilter = null;\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.applyFilterFields(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tfilterFields\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\n\t\t// append child to it's parent\n\t\tappendChild(data, child) {\n\t\t\t// get parent id\n\t\t\tlet parentId = child[this.parentIdField];\n\n\t\t\t// loop thorugh all data\n\t\t\tfor (let parentIdx = 0; parentIdx < data.length; parentIdx++)\n\t\t\t{\n\t\t\t\tlet parent = data[parentIdx];\n\n\t\t\t\t// if it's the parent\n\t\t\t\tif (parent[this.idField] == parentId)\n\t\t\t\t{\n\t\t\t\t\t// create children array if not done yet\n\t\t\t\t\tif (!parent._children) parent._children = [];\n\n\t\t\t\t\t// if child is not included in children array, append the child\n\t\t\t\t\tif (!parent._children.includes(child)) parent._children.push(child);\n\n\t\t\t\t\t// parent found\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// search children for parents\n\t\t\t\telse if (parent._children) this.appendChild(parent._children, child);\n\t\t\t}\n\n\t\t\t// parent not found\n\t\t\treturn false;\n\t\t}\n\t},\n\tbeforeCreate() {\n\t\tif (!this.tableOnly == !this.filterType)\n\t\t\talert('You can not have a filter-type in table-only mode!');\n\t},\n\tcreated() {\n\t\tif (this.sideMenu && (!this.$props.onNwNewEntry || !(this.$props.onNwNewEntry instanceof Function)))\n\t\t\talert('\"nwNewEntry\" listener is mandatory when sideMenu is true');\n\t\tthis.uuid = _uuid++;\n\t\tthis.$emit('uuidDefined', this.uuid)\n\t},\n\tmounted() {\n\t\tthis.initTabulator().then(() => {\n\t\t\tif (!this.tableOnly) {\n\t\t\t\tthis.selectedFilter = window.location.hash ? window.location.hash.slice(1) : null;\n\t\t\t\tthis.render(this.fetchResult);\n\t\t\t}\n\t\t});\n\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\n\t\t
    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t\t{{ title }}\n\t\t\t\t

    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ selectedData.length }} ausgewählt\n\t\t\t\t\t\t Mit {{ selectedData.length }} ausgewählten:\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t[ {{ filterName }} ]\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\n\t\t\n\t\t
    \n\t`\n};\n","import FhcFragment from \"../Fragment.js\";\n\nlet _uuid = {};\n\nexport default {\n\tname: \"FormInput\",\n\tinheritAttrs: false,\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tinject: {\n\t\tregisterToForm: {\n\t\t\tfrom: '$registerToForm',\n\t\t\tdefault: null\n\t\t},\n\t\tclearValidationForName: {\n\t\t\tfrom: '$clearValidationForName',\n\t\t\tdefault: null\n\t\t}\n\t},\n\tprops: {\n\t\tbsFeedback: Boolean,\n\t\tnoAutoClass: Boolean,\n\t\tnoFeedback: Boolean,\n\t\tinputGroup: Boolean,\n\t\ttype: String,\n\t\tname: String,\n\t\tcontainerClass: [String, Array, Object],\n\t\tlabel: String,\n\t\t// NOTE(chris): remove these from $attrs array to prevent doubled event listeners\n\t\tonInput: [Array, Function],\n\t\t'onUpdate:modelValue': [Array, Function]\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tvalid: undefined,\n\t\t\tfeedback: [],\n\t\t\tmodelValueDummy: undefined\n\t\t}\n\t},\n\tcomputed: {\n\t\thasContainer() {\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn true;\n\t\t\tif (this.containerClass)\n\t\t\t\treturn true;\n\t\t\tfor (const prop in this.autoContainerClass)\n\t\t\t\tif (Object.hasOwn(this.autoContainerClass, prop))\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t},\n\t\tacc() {\n\t\t\tif (!this.containerClass)\n\t\t\t\treturn {};\n\t\t\tif (typeof this.containerClass === 'string' || this.containerClass instanceof String)\n\t\t\t\treturn this.containerClass.split(' ').reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\tif (Array.isArray(this.containerClass))\n\t\t\t\treturn this.containerClass.reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\treturn this.containerClass;\n\t\t},\n\t\tautoContainerClass() {\n\t\t\tif (this.noAutoClass)\n\t\t\t\treturn this.acc;\n\t\t\t\n\t\t\tconst acc = {...this.acc};\n\t\t\t\n\t\t\tif (this.inputGroup)\n\t\t\t\tacc['input-group-item'] = true;\n\n\t\t\tif (this.lcType == 'radio' || this.lcType == 'checkbox')\n\t\t\t\tacc['form-check'] = true;\n\t\t\t\n\t\t\tif (this.inputGroup && acc['form-check']) {\n\t\t\t\tacc['input-group-item'] = false;\n\t\t\t\tacc['form-check'] = false;\n\t\t\t\tacc['input-group-text'] = true;\n\t\t\t}\n\t\t\treturn acc;\n\t\t},\n\t\tlcType() {\n\t\t\tif (!this.type)\n\t\t\t\treturn 'text';\n\t\t\treturn this.type.toLowerCase();\n\t\t},\n\t\ttag() {\n\t\t\tswitch (this.lcType) {\n\t\t\t\tcase 'textarea':\n\t\t\t\tcase 'select':\n\t\t\t\t\treturn this.lcType;\n\t\t\t\tcase 'datepicker':\n\t\t\t\t\treturn 'VueDatePicker';\n\t\t\t\tcase 'autocomplete':\n\t\t\t\t\treturn 'PvAutocomplete';\n\t\t\t\tcase 'uploadimage':\n\t\t\t\t\treturn 'UploadImage';\n\t\t\t\tcase 'uploadfile':\n\t\t\t\tcase 'uploaddms':\n\t\t\t\t\treturn 'UploadDms';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'input';\n\t\t\t}\n\t\t},\n\t\tvalidationClass() {\n\t\t\tconst classes = [];\n\t\t\tif (this.valid)\n\t\t\t\tclasses.push('is-valid');\n\t\t\telse if (this.valid === false)\n\t\t\t\tclasses.push('is-invalid');\n\t\t\t\n\t\t\tif (!this.noAutoClass) {\n\t\t\t\tlet c = this.$attrs.class ? this.$attrs.class.split(' ') : [];\n\t\t\t\tswitch (this.lcType) {\n\t\t\t\t\t// TODO(chris): complete list!\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tif (!c.includes('form-select'))\n\t\t\t\t\t\t\tclasses.push('form-select');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'range':\n\t\t\t\t\t\tif (!c.includes('form-range'))\n\t\t\t\t\t\t\tclasses.push('form-range');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\tcase 'checkbox':\n\t\t\t\t\t\t// TODO(chris): maybe different handling?\n\t\t\t\t\t\tif (!c.includes('form-check-input') && !c.includes('btn-check'))\n\t\t\t\t\t\t\tclasses.push('form-check-input');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tif (!c.includes('form-control-color'))\n\t\t\t\t\t\t\tclasses.push('form-control-color');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'autocomplete':\n\t\t\t\t\tcase 'datepicker':\n\t\t\t\t\t\tclasses.push('p-0');\n\t\t\t\t\t\tclasses.push('border-0');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'text':\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'password':\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\tfeedbackClass() {\n\t\t\tif (!this.feedback || this.feedback === true)\n\t\t\t\treturn '';\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn {\n\t\t\t\t\t'valid-tooltip': this.valid === true,\n\t\t\t\t\t'invalid-tooltip': this.valid === false\n\t\t\t\t};\n\t\t\treturn {\n\t\t\t\t'valid-feedback': this.valid === true,\n\t\t\t\t'invalid-feedback': this.valid === false\n\t\t\t};\n\t\t},\n\t\tmodelValueCmp: {\n\t\t\tget() {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\treturn this.modelValueDummy;\n\t\t\t\treturn this.$attrs.modelValue;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\tthis.modelValueDummy = v;\n\t\t\t\tthis.$emit('update:modelValue', v);\n\t\t\t}\n\t\t},\n\t\tidCmp() {\n\t\t\tlet uuid = this.$attrs.id;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = this.$attrs.uid;\n\t\t\tif (!uuid && this.label)\n\t\t\t\tuuid = 'fhc-form-input';\n\t\t\tif (!uuid)\n\t\t\t\treturn undefined;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = 'dp-input-' + uuid;\n\t\t\tif (_uuid[uuid] === undefined)\n\t\t\t\t_uuid[uuid] = 0;\n\t\t\treturn uuid + '-' + (_uuid[uuid]++);\n\t\t}\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.valid = undefined;\n\t\t\tthis.feedback = [];\n\t\t},\n\t\tclearValidationForThisName() {\n\t\t\tif (this.valid === undefined)\n\t\t\t\treturn;\n\t\t\tif (this.clearValidationForName && this.name)\n\t\t\t\tthis.clearValidationForName(this.name);\n\t\t\telse\n\t\t\t\tthis.clearValidation();\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tthis.valid = valid;\n\t\t\t// NOTE(chris): On a list of radios/checkboxes only add the feedback message to the last item\n\t\t\tif (this.name && (this.lcType == 'radio' || this.lcType == 'checkbox')) {\n\t\t\t\tconst selector = 'input[type=\"' + this.lcType + '\"][name=\"' + this.name + '\"]';\n\t\t\t\tif ([...this.$el.parentNode.querySelectorAll(selector)].pop() != this.$refs.input)\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.feedback = feedback;\n\t\t},\n\t\t_loadComponents() {\n\t\t\tif (this.tag == 'VueDatePicker' && !this._.components.VueDatePicker) {\n\t\t\t\tthis._.components.VueDatePicker = Vue.defineAsyncComponent(() => import(\"../vueDatepicker.js.php\"));\n\t\t\t} else if (this.tag == 'PvAutocomplete' && !this._.components.PvAutocomplete) {\n\t\t\t\tthis._.components.PvAutocomplete = primevue.autocomplete;\n\t\t\t} else if (this.tag == 'UploadImage' && !this._.components.UploadImage) {\n\t\t\t\tthis._.components.UploadImage = Vue.defineAsyncComponent(() => import(\"./Upload/Image.js\"));\n\t\t\t} else if (this.tag == 'UploadDms' && !this._.components.UploadDms) {\n\t\t\t\tthis._.components.UploadDms = Vue.defineAsyncComponent(() => import(\"./Upload/Dms.js\"));\n\t\t\t}\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis._loadComponents();\n\t},\n\tbeforeUpdate() {\n\t\tthis._loadComponents();\n\t},\n\tmounted() {\n\t\tif (this.registerToForm)\n\t\t\tthis.registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class-name'] ? $attrs['input-class-name'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class'] ? $attrs['input-class'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t`\n}\n","export default {\n\trender() {\n\t\treturn (this.$slots && this.$slots.default) ? this.$slots.default() : null;\n\t}\n};","import {CoreFilterCmpt} from '../../components/filter/Filter.js';\nimport CoreFormInput from \"../../components/Form/Input.js\";\n\n// Fields used to restructure table data for dataTree\nconst idField = 'lehrveranstaltung_id';\nconst parentIdField = 'lehrveranstaltung_template_id';\nconst STUDIENSEMESTER_DROPDOWN_STARTDATE = '2011-01-01';\n\nexport default {\n\tcomponents: {\n\t\tCoreFilterCmpt,\n\t\tCoreFormInput\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\ttable: null,\n\t\t\tstudiensemester: [],\n\t\t\tselectedStudiensemester: '',\n\t\t\tcbDataTreeStartExpanded: false\t// checkbox expand dataTree or not\n\t\t}\n\t},\n\tcomputed: {\n\t\ttabulatorOptions() {\n const fhcValuesLookup = function(cell) {\n var values = {};\n const field = cell.getField();\n const data = cell.getTable().getData();\n const collectvalues = function(rows, field) {\n var values = {};\n var childvalues = {};\n for(const row of rows) {\n const rowvalue = (row[field] !== null) ? row[field] : '';\n values[rowvalue] = rowvalue;\n if(row['_children'] && row['_children'].length > 0) {\n childvalues = collectvalues(row['_children'], field);\n values = {...values, ...childvalues}\n }\n }\n return values;\n }\n values = collectvalues(data, field);\n const vals = Object.keys(values).sort();\n if(vals.indexOf('') === -1) {\n vals.unshift('');\n }\n return vals;\n };\n const fhctreefilter = function(headerValue, rowValue, rowData, filterParams){\n if (rowData['_children'] && rowData['_children'].length > 0) {\n for (var i in rowData['_children']) {\n return rowValue == headerValue || \n fhctreefilter(\n headerValue, \n rowData['_children'][i][filterParams.field], \n rowData['_children'][i], \n filterParams\n );\n }\n }\n\n return rowValue == headerValue;\n };\n\t\t\tconst self = this;\n\t\t\treturn {\n\t\t\t\t// NOTE: data is set on table built to await preselected actual Studiensemester\n\t\t\t\tajaxResponse(url, params, response) {\n\t\t\t\t\treturn self.prepDataTreeData(response.data) // Prepare data for dataTree view\n\t\t\t\t},\n\t\t\t\tlayout: 'fitColumns',\n\t\t\t\tautoResize: false, // prevent auto resizing of table\n\t\t\t\tresizableColumnFit: true, //maintain the fit of columns when resizing\n\t\t\t\tindex: 'lehrveranstaltung_id',\n\t\t\t\tselectable: true,\n\t\t\t\tselectableRangeMode: 'click',\n\t\t\t\tdataTree: true,\n\t\t\t\tdataTreeStartExpanded: self.cbDataTreeStartExpanded,\n\t\t\t\tdataTreeChildIndent: 15, //indent child rows by 15 px\n\t\t\t\tpersistence:{\n\t\t\t\t\tfilter: false, //persist filter sorting\n\t\t\t\t},\n\t\t\t\tcolumns: [\n\t\t\t\t\t{title: 'LV-ID', field: 'lehrveranstaltung_id', headerFilter: true, visible: false},\n\t\t\t\t\t{title: 'LV Kurzbz', field: 'kurzbz', headerFilter: true, visible:false, width: 70},\n\t\t\t\t\t{title: 'STG Kurzbz', field: 'stg_typ_kurzbz', headerFilter: \"list\", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_kurzbz'}, visible:true, width: 80},\n\t\t\t\t\t{title: 'OrgEinheit', field: 'lv_oe_bezeichnung', headerFilter: true, visible: false, width: 250},\n\t\t\t\t\t{title: 'Lehrtyp Kurzbz', field: 'lehrtyp_kurzbz', headerFilter: true, visible:false, width: 70},\n\t\t\t\t\t{title: 'Studiengangtyp', field: 'stg_typ_bezeichnung', headerFilter: \"list\", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_bezeichnung'}, width: 150},\n\t\t\t\t\t{title: 'OrgForm', field: 'orgform_kurzbz', headerFilter: \"list\", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'orgform_kurzbz'}, width: 70},\n\t\t\t\t\t{title: 'Semester', field: 'semester', headerFilter: true, width: 50},\n\t\t\t\t\t{title: 'Lehrveranstaltung', field: 'lv_bezeichnung', headerFilter: true, minWidth: 250},\n\t\t\t\t\t{title: 'Lehrveranstaltung ENG', field: 'bezeichnung_english', headerFilter: true, minWidth: 250},\n\t\t\t\t\t{title: 'ECTS', field: 'ects', headerFilter: true, width: 50, hozAlign: 'right'},\n\t\t\t\t\t{title: 'Lehrform', field: 'lehrform_kurzbz', headerFilter: true, width: 50},\n\t\t\t\t\t{title: 'Sprache', field: 'sprache', headerFilter: true, width: 100},\n\t\t\t\t\t{title: 'Aktiv', field: 'aktiv', width: 50,\n\t\t\t\t\t\tformatter:\"tickCross\",\n\t\t\t\t\t\theaderFilter:\"tickCross\",\n\t\t\t\t\t\theaderFilterParams:{\"tristate\": true},\n\t\t\t\t\t\thozAlign:\"center\",\n\t\t\t\t\t\tformatterParams: {\n\t\t\t\t\t\t\ttickElement: '',\n\t\t\t\t\t\t\tcrossElement: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{title: 'Studienplan', field: 'studienplan_bezeichnung', headerFilter: true, visible:true, width: 220},\n\t\t\t\t\t{title: 'OE Kurzbz', field: 'lv_oe_kurzbz', headerFilter: true, visible:false, minWidth: 80},\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: this.$p.t('global/aktionen'),\n\t\t\t\t\t\tfield: 'actions',\n\t\t\t\t\t\twidth: 140,\n\t\t\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\t\t\tlet container = document.createElement('div');\n\t\t\t\t\t\t\tcontainer.className = \"d-flex gap-2\";\n\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.className = 'btn btn-outline-secondary';\n\t\t\t\t\t\t\tbutton.innerHTML = ' ' + this.$p.t('global/verwalten');\n\t\t\t\t\t\t\tbutton.addEventListener('click', (event) => this.openAdminLvTemplate(event, cell.getRow()));\n\t\t\t\t\t\t\tcontainer.append(button);\n\n\t\t\t\t\t\t\treturn container;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfrozen: true\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\turlToAdminAllTemplates() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t'vilesci/lehre/lehrveranstaltung.php?stg_kz=99999&semester=-1&orgform=-1';\n\t\t}\n\t},\n\tmethods: {\n\t\tasync loadAndSetStudiensemester(){\n\t\t\tconst result = await this.$api\n\t\t\t\t.get('api/frontend/v1/organisation/Studiensemester/getAll', {start: STUDIENSEMESTER_DROPDOWN_STARTDATE, order: 'desc'})\n\t\t\t\t.then(result => this.studiensemester = result.data )\n\t\t\t\t.then(() => this.$api.get('api/frontend/v1/organisation/Studiensemester/getAktNext') ) // Get actual Studiensemester\n\t\t\t\t.then(result => this.selectedStudiensemester = result.data[0].studiensemester_kurzbz ) // Preselect Studiensemester\n\t\t\t\t.catch(error => this.$fhcAlert.handleSystemError(error) );\n\t\t},\n\t\tasync onTableBuilt(){\n\n\t\t\tthis.table = this.$refs.lvTemplateUebersichtTable.tabulator;\n\n\t\t\t// Await Studiensemester\n\t\t\tawait this.loadAndSetStudiensemester();\n\n\t\t\t// Set table data\n\t\t\tthis.table.setData(\n\t\t\t\tthis.$api.getUri() +\n\t\t\t\t'/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree' +\n\t\t\t\t'?studiensemester_kurzbz=' + this.selectedStudiensemester\n\t\t\t);\n\n\t\t\t// Await phrases categories\n\t\t\tawait this.$p.loadCategory(['lehre']);\n\n\t\t\t// Replace column titles with phrasen\n\t\t\tthis.table.updateColumnDefinition('lv_bezeichnung', {title: this.$p.t('lehre', 'lehrveranstaltung')});\n\n\t\t},\n\t\tonChangeStudiensemester(){\n\t\t\t// Reset table data\n\t\t\tthis.table.setData(\n\t\t\t\tthis.$api.getUri() +\n\t\t\t\t'/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree' +\n\t\t\t\t'?studiensemester_kurzbz=' + this.selectedStudiensemester\n\t\t\t);\n\t\t},\n\t\topenAdminLvTemplate(event, row){\n\t\t\tconst url = FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t'vilesci/lehre/lehrveranstaltung.php?stg_kz=&semester=-1&orgform=-1&lehrveranstaltung_id=' +\n\t\t\t\trow.getData().lehrveranstaltung_id;\n\n\t\t\twindow.open(url, '_blank').focus();\n\t\t},\n\t\tprepDataTreeData(data){\n\t\t\tlet toDelete = [];\n\n\t\t\t// loop through all data\n\t\t\tfor (let childIdx = 0; childIdx < data.length; childIdx++)\n\t\t\t{\n\t\t\t\tlet child = data[childIdx];\n\n\t\t\t\t// if it has parent id, it is a child\n\t\t\t\tif (child[parentIdField])\n\t\t\t\t{\n\t\t\t\t\t// append the child on the right place. If parent found, mark original sw child on 0 level for deleting\n\t\t\t\t\tif (this._appendChild(data, child)) toDelete.push(childIdx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// delete the marked children from 0 level\n\t\t\tfor (let counter = 0; counter < toDelete.length; counter++)\n\t\t\t{\n\t\t\t\t// decrease index by counter as index of data array changes after every deletion\n\t\t\t\tdata.splice(toDelete[counter] - counter, 1);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t\t_appendChild(data, child) {\n\t\t\t// get parent id\n\t\t\tlet parentId = child[parentIdField];\n\n\t\t\t// loop thorugh all data\n\t\t\tfor (let parentIdx = 0; parentIdx < data.length; parentIdx++)\n\t\t\t{\n\t\t\t\tlet parent = data[parentIdx];\n\n\t\t\t\t// if it's the parent\n\t\t\t\tif (parent[idField] == parentId)\n\t\t\t\t{\n\t\t\t\t\t// create children array if not done yet\n\t\t\t\t\tif (!parent._children) parent._children = [];\n\n\t\t\t\t\t// if child is not included in children array, append the child\n\t\t\t\t\tif (!parent._children.includes(child)) parent._children.push(child);\n\n\t\t\t\t\t// parent found\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// search children for parents\n\t\t\t\telse if (parent._children) this._appendChild(parent._children, child);\n\t\t\t}\n\n\t\t\t// parent not found\n\t\t\treturn false;\n\t\t},\n\t\treloadTabulator() {\n\t\t\tif (this.table !== null && this.table !== undefined)\n\t\t\t{\n\t\t\t\tfor (let option in this.tabulatorOptions)\n\t\t\t\t{\n\t\t\t\t\tif (this.table.options.hasOwnProperty(option))\n\t\t\t\t\t\tthis.table.options[option] = this.tabulatorOptions[option];\n\t\t\t\t}\n\t\t\t\tthis.$refs.lvTemplateUebersichtTable.reloadTable();\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\n
    \n\t
    \n\t\t
    {{ $p.t('lehre/lvTemplatesUebersicht') }}
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t
    \n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t
    \n\t
    \n\n
    \n`\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/navigation/header',\n\t\t\tparams: { navigation_page }\n\t\t};\n\t},\n\tgetMenu(navigation_page) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/navigation/menu',\n\t\t\tparams: { navigation_page }\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport {CoreFetchCmpt} from '../../components/Fetch.js';\nimport ApiNavigation from '../../api/factory/navigation.js';\n\n/**\n *\n */\nexport const CoreNavigationCmpt = {\n\tcomponents: {\n\t\tCoreFetchCmpt\n\t},\n\tprops: {\n\t\taddHeaderMenuEntries: Object, // property used to add new header menu entries from another app/component\n\t\taddSideMenuEntries: Object, // property used to add new side menu entries from another app/component\n\t\thideTopMenu: Boolean,\n\t\tleftNavCssClasses: {\n\t\t\ttype: String,\n\t\t\tdefault: 'navbar navbar-left-side'\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\theaderMenu: {}, // header menu entries\n\t\t\tsideMenu: {} // side menu entries\n\t\t};\n\t},\n\tcomputed: {\n\t\t/**\n\t\t *\n\t\t */\n\t\theaderMenuEntries() {\n\t\t\t//\n\t\t\tlet hm = this.headerMenu ? {...this.headerMenu} : {};\n\t\t\tif (this.headerMenu != null && this.addHeaderMenuEntries != null && Object.keys(this.addHeaderMenuEntries).length > 0)\n\t\t\t{\n\t\t\t\thm[this.addHeaderMenuEntries.description] = this.addHeaderMenuEntries;\n\t\t\t}\n\t\t\treturn hm;\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsideMenuEntries() {\n\t\t\t//\n\t\t\tlet sm = this.sideMenu ? {...this.sideMenu} : {};\n\t\t\tif (this.sideMenu != null && this.addSideMenuEntries != null && Object.keys(this.addSideMenuEntries).length > 0)\n\t\t\t{\n\t\t\t\tsm[this.addSideMenuEntries.description] = this.addSideMenuEntries;\n\t\t\t}\n\t\t\treturn sm;\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tgetNavigationPage() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.called_path + \"/\" + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchCmptApiFunctionHeader() {\n\t\t\treturn this.$api.call(ApiNavigation.getHeader(this.getNavigationPage()))\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchCmptApiFunctionSideMenu() {\n\t\t\treturn this.$api.call(ApiNavigation.getMenu(this.getNavigationPage()))\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchCmptDataFetchedHeader(data) {\n\t\t\tthis.headerMenu = data || {};\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchCmptDataFetchedMenu(data) {\n\t\t\tthis.sideMenu = data || {};\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tgetDataBsToggle(header) {\n\t\t\treturn !header.children ? null : 'dropdown';\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t`\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektarbeiten(uid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektarbeiten/${uid}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentProjektabgaben(detail) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getStudentProjektabgaben`\n\t\t\t, {\n\t\t\t\tprojektarbeit_id: detail.projektarbeit_id,\n\t\t\t\tstudent_uid: detail.student_uid\n\t\t\t}\n\t\t);\n\t},\n\tpostStudentProjektarbeitEndupload(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitEndupload';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tpostStudentProjektarbeitZwischenabgabe(formData) {\n\t\tconst url = '/api/frontend/v1/Lehre/postStudentProjektarbeitZwischenabgabe';\n\t\tconst headers = {Headers: { \"Content-Type\": \"multipart/form-data\" }}\n\t\treturn this.$fhcApi.post(url, formData, headers)\n\t},\n\tgetStudentProjektarbeitAbgabeFile(paabgabe_id, student_uid) {\n\t\tconst url = `/Cis/Abgabetool/getStudentProjektarbeitAbgabeFile?paabgabe_id=${paabgabe_id}&student_uid=${student_uid}`;\n\n\t\twindow.location = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + url\n\t},\n\tgetMitarbeiterProjektarbeiten(uid, all) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/getMitarbeiterProjektarbeiten?showall=${all}`\n\t\t\t, {}\n\t\t);\n\t},\n\tpostProjektarbeitAbgabe(termin) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id: termin.paabgabe_id,\n\t\t\tpaabgabetyp_kurzbz: termin.bezeichnung.paabgabetyp_kurzbz,\n\t\t\tdatum: termin.datum,\n\t\t\tfixtermin: termin.fixtermin,\n\t\t\tinsertvon: termin.insertvon,\n\t\t\tkurzbz: termin.kurzbz,\n\t\t\tprojektarbeit_id: termin.projektarbeit_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t\t\n\t},\n\tdeleteProjektarbeitAbgabe(paabgabe_id) {\n\t\tconst payload = {\n\t\t\tpaabgabe_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/deleteProjektarbeitAbgabe';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tpostSerientermin(datum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids) {\n\t\tconst payload = {\n\t\t\tdatum, paabgabetyp_kurzbz, bezeichnung, kurzbz, projektarbeit_ids\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/postSerientermin';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t},\n\tfetchDeadlines(person_id) {\n\t\tconst payload = {\n\t\t\tperson_id\n\t\t}\n\t\tconst url = '/api/frontend/v1/Lehre/fetchDeadlines';\n\n\t\treturn this.$fhcApi.post(url, payload, null)\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","/**\n * Copyright (C) 2023 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport LvTemplateUebersicht from '../../../lehre/lvplanung/LvTemplateUebersicht.js';\nimport {CoreNavigationCmpt} from '../../../components/navigation/Navigation.js';\nimport PluginsPhrasen from \"../../../plugins/Phrasen.js\";\n\n\nconst lvTemplatesApp = Vue.createApp({\n\tname: 'LvTemplatesApp',\n\tcomponents: {\n\t\tCoreNavigationCmpt,\n\t\tLvTemplateUebersicht\n\t}\n});\n\nlvTemplatesApp\n\t.use(primevue.config.default,{zIndex: {overlay: 9999}})\n\t.use(PluginsPhrasen)\n\t.mount('#main')","export default {\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: String\n\t},\n\tcomputed: {\n\t\tvalueAsBase64DataString() {\n\t\t\tif (!this.modelValue || this.modelValue.substring(0, 10) == 'data:image')\n\t\t\t\treturn this.modelValue;\n\t\t\treturn 'data:image/jpeg;charset=utf-8;base64,' + this.modelValue;\n\t\t}\n\t},\n\tmethods: {\n\t\topenUploadDialog() {\n\t\t\tthis.$refs.fileInput.click();\n\t\t},\n\t\tpickFile() {\n\t\t\tlet file = this.$refs.fileInput.files;\n\t\t\tif (file && file[0]) {\n\t\t\t\tlet reader = new FileReader();\n\t\t\t\treader.onload = e => {\n\t\t\t\t\tthis.$emit('update:modelValue', e.target.result);\n\t\t\t\t}\n\t\t\t\treader.readAsDataURL(file[0]);\n\t\t\t}\n\t\t},\n\t\tdeleteImage() {\n\t\t\tthis.$emit('update:modelValue', '');\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    `\n}","import DmsItem from './Dms/Item.js';\n\nexport default {\n\tcomponents: {\n\t\tDmsItem\n\t},\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [ FileList, Array ],\n\t\t\trequired: true\n\t\t},\n\t\tmultiple: Boolean,\n\t\tid: String,\n\t\tname: String,\n\t\tinputClass: [String, Array, Object],\n\t\tnoList: Boolean,\n\t\taccept: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tmethods: {\n\t\tstringifyFile(file) {\n\t\t\treturn JSON.stringify({\n\t\t\t\tlastModified: file.lastModified,\n\t\t\t\tlastModifiedDate: file.lastModifiedDate,\n\t\t\t\tname: file.name,\n\t\t\t\tsize: file.size,\n\t\t\t\ttype: file.type\n\t\t\t});\n\t\t},\n\t\taddFiles(event) {\n\t\t\tif (!this.multiple)\n\t\t\t\treturn this.$emit('update:modelValue', event.target.files);\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst doubles = [];\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tdt.items.add(file);\n\t\t\t\tdoubles.push(this.stringifyFile(file));\n\t\t\t}\n\t\t\tfor (var file of event.target.files) {\n\t\t\t\t// NOTE(chris): deep check (with FileReader) would require an async function so we only check the basic attributes\n\t\t\t\tif (doubles.indexOf(this.stringifyFile(file)) < 0)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t},\n\t\tremoveFile(id) {\n\t\t\tconst fileToRemove = Array.from(this.modelValue)[id];\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tif (file !== fileToRemove)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (!n)\n\t\t\t\treturn;\n\t\t\tif (n instanceof FileList) {\n\t\t\t\tif (!this.$refs.upload) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn this.$refs.upload.files = n;\n\t\t\t}\n\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst dms = [];\n\t\t\tfor (var file of n) {\n\t\t\t\tif (file instanceof File) {\n\t\t\t\t\tdt.items.add(file);\n\t\t\t\t} else {\n\t\t\t\t\tconst dmsFile = new File([JSON.stringify(file)], file.name, {\n\t\t\t\t\t\ttype: 'application/x.fhc-dms+json'\n\t\t\t\t\t});\n\t\t\t\t\tdt.items.add(dmsFile);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    `\n}","export default {\n\temits: [\n\t\t'delete'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [File, Object],\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreview: ''\n\t\t};\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (n.type == 'application/x.fhc-dms+json') {\n\t\t\t\tn.text().then(result => {\n\t\t\t\t\tconst obj = JSON.parse(result);\n\t\t\t\t\tthis.preview = obj.preview || '';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • `\n}\n"],"names":["CoreFetchCmpt","emits","props","refresh","type","Boolean","apiFunction","required","Function","apiFunctionParameters","watch","newValue","oldValue","this","fetchData","data","loading","error","errorMessage","created","methods","apiFunctionResult","Promise","then","successHandler","catch","errorHandler","finally","finallyHandler","setError","response","$emit","undefined","retval","message","template","FILTER_COMPONENT_NEW_FILTER","FilterConfig","filters","Array","default","columns","fields","switchFilter","applyFilterConfig","saveCustomFilter","currentFields","computed","types","reduce","a","c","toLowerCase","indexOf","name","n","evt","currentTarget","value","filteredFields","filter","el","condition","length","alert","addField","push","removeField","index","splice","FilterColumns","selected","names","Object","hide","show","selectedFields","toggle","field","DEFAULT_ICONS","jsonLines","xlsx","pdf","html","json","csv","DEFAULT_LABELS","TableDownload","tabulator","config","String","iconClass","currentConfig","prototype","toString","call","split","isArray","newConfig","k","v","stringToFileFormatter","icon","label","formatter","map","validateFileFormatter","input","lcInput","includes","window","XLSX","jspdf","jsPDF","autoTable","download","file","options","elementDataMap","WeakMap","collapseAutoClose","mounted","binding","open","set","contains","target","collapse","bootstrap","Collapse","getInstance","addEventListener","document","get","beforeUnmount","removeEventListener","collapsibleAutoHideFunc","Tabulator","extendModule","fitDataStretchFrozen","forced","colsWidth","tableWidth","table","rowManager","element","clientWidth","gap","lastCol","forEach","column","i","widthFixed","reinitializeWidth","responsiveLayout","modules","responsive","visible","definition","frozen","getWidth","modExists","setWidth","update","ApiFilter","wsParams","method","url","params","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","_uuid","CoreFilterCmpt","components","directives","onNwNewEntry","title","description","sideMenu","tabulatorOptions","tabulatorEvents","tableOnly","noColumnFilter","reload","reloadBtnInfotext","newBtnShow","newBtnClass","newBtnDisabled","newBtnLabel","uniqueId","idField","parentIdField","countOnly","useSelectionSpan","uuid","filterName","filterActive","dataset","datasetMetadata","availableFilters","selectedFilter","fetchCmptRefresh","fetchCmptApiFunction","fetchCmptApiFunctionParams","fetchCmptDataFetched","fetchResult","tableBuilt","tabulatorHasSelector","selectedData","persistence","sort","headerFilter","group","page","notSelectedFields","x","filteredData","JSON","parse","stringify","filteredColumns","hasOwnProperty","col","resizable","fieldIdsForVisibilty","getColumns","def","getDefinition","getField","fieldNames","res","idExtra","columnsForFilter","filterTitles","reloadTable","setData","initTabulator","placeholder","$p","loadCategory","t","resolve","location","hash","slice","resolvePromiseFunc","setRenderData","startFetchCmpt","$api","layout","movableColumns","columnDefaults","tooltip","height","minHeight","maxHeight","selectable","dataTree","$refs","on","event","handler","toDelete","childIdx","child","appendChild","counter","cols","isVisible","_setHeaderFilter","updateTabulator","_updateTabulator","setColumns","clearFilters","getHeaderFilters","setHeaderFilterValue","clearFilter","render","j","setSideMenu","setDropDownMenu","personalFilters","filtersArray","filtersCount","link","id","filter_id","desc","onClickCall","handlerGetFilterById","subscriptDescription","subscriptLinkClass","subscriptLinkValue","onClickSubscriptCall","handlerRemoveCustomFilter","children","option","dataFetchedCallback","FHC_JS_DATA_STORAGE_OBJECT","called_path","called_method","handlerSaveCustomFilter","getAttribute","substring","attr","parentId","parentIdx","parent","_children","beforeCreate","$props","CoreFormInput","inheritAttrs","FhcFragment","$slots","inject","registerToForm","from","clearValidationForName","bsFeedback","noAutoClass","noFeedback","inputGroup","containerClass","onInput","valid","feedback","modelValueDummy","hasContainer","prop","autoContainerClass","hasOwn","acc","lcType","tag","validationClass","classes","$attrs","class","feedbackClass","modelValueCmp","modelValue","idCmp","uid","clearValidation","clearValidationForThisName","setFeedback","selector","$el","parentNode","querySelectorAll","pop","_loadComponents","_","VueDatePicker","PvAutocomplete","UploadImage","UploadDms","Vue","defineAsyncComponent","primevue","autocomplete","import","beforeMount","beforeUpdate","LvTemplateUebersicht","studiensemester","selectedStudiensemester","cbDataTreeStartExpanded","fhcValuesLookup","cell","values","getTable","getData","collectvalues","rows","childvalues","row","rowvalue","vals","keys","unshift","fhctreefilter","headerValue","rowValue","rowData","filterParams","self","ajaxResponse","prepDataTreeData","autoResize","resizableColumnFit","selectableRangeMode","dataTreeStartExpanded","dataTreeChildIndent","width","headerFilterParams","valuesLookup","headerFilterFunc","headerFilterFuncParams","minWidth","hozAlign","tristate","formatterParams","tickElement","crossElement","onRendered","container","createElement","className","button","innerHTML","openAdminLvTemplate","getRow","append","urlToAdminAllTemplates","app_root","loadAndSetStudiensemester","start","order","result","studiensemester_kurzbz","$fhcAlert","handleSystemError","onTableBuilt","lvTemplateUebersichtTable","getUri","updateColumnDefinition","onChangeStudiensemester","lehrveranstaltung_id","focus","_appendChild","reloadTabulator","ApiNavigation","getHeader","navigation_page","getMenu","CoreNavigationCmpt","addHeaderMenuEntries","addSideMenuEntries","hideTopMenu","leftNavCssClasses","headerMenu","headerMenuEntries","hm","sideMenuEntries","sm","getNavigationPage","fetchCmptApiFunctionHeader","fetchCmptApiFunctionSideMenu","fetchCmptDataFetchedHeader","fetchCmptDataFetchedMenu","getDataBsToggle","header","search","searchsettings","$fhcApi","post","searchAdvanced","searchdummy","phrasen$1","category","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","filter$1","studstatus","abmeldung","getDetails","antrag_id","prestudent_id","create","stdsem","grund","errorHandling","cancel","allSettled","antrag","studierendenantrag_id","errorHeader","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","getLvs","saveLvs","forbiddenLvs","mandatoryLvs","leitung","getStgs","getAntraege","getHistory","getPrestudents","query","signal","timeout","approve","reject","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","ci_router","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","replace","getProfilRequestFiles","requestID","selectProfilRequest","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","students","encodeURIComponent","prestudent","person","person_id","relative_path","getStg","setStg","studiengang_kz","konto","tabulatorConfig","ajaxURL","ajaxParams","e","only_open","studiengang_kz_intern","stg_kz","ajaxRequestFunc","checkDoubles","form","confirmErrorHandler","insert","edit","delete","buchungsnr","getBuchungstypen","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","status","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","save","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","semester","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","formData","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","typ","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","getStudentProjektarbeiten","getStudentProjektabgaben","detail","projektarbeit_id","postStudentProjektarbeitEndupload","Headers","postStudentProjektarbeitZwischenabgabe","getStudentProjektarbeitAbgabeFile","paabgabe_id","getMitarbeiterProjektarbeiten","all","postProjektarbeitAbgabe","termin","paabgabetyp_kurzbz","bezeichnung","fixtermin","insertvon","kurzbz","deleteProjektarbeitAbgabe","postSerientermin","projektarbeit_ids","fetchDeadlines","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","ampeln","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","globalProperties","factory","console","warn","addEndpoints","_get_config","uri","TypeError","_clean_return_value","meta","fhcApiAxios","baseURL","interceptors","request","use","FormData","every","item","FileList","File","newData","entries","nd","key","jsondata","errors","err","_defaultErrorHandlers","code","handled","alertDefault","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","severity","alertSystemError","exception","db","heading","sql","join","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","bind","provide","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","isError","hasData","trim","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","helperAppContainer","helperApp","createApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","openMessagecard","getOrCreateInstance","unmounted","parentElement","removeChild","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","mount","body","FhcAlert","FhcPhrasen","alertSuccess","toast","add","summary","life","alertInfo","alertWarning","confirmDelete","$confirm","require","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","alertMultiple","messageArray","errMsg","toUpperCase","stack","handleSystemMessage","msg","resetFormValidation","Event","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","success","fail","combine","async","_format_toast","_default","msgs","b","n_errors","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","remaining","configoverwrite","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","ref","user_locale","server_languages","find","LC_Time","catArray","phrase","text","obj","elem","extractCategory","t_ref","val","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang","zIndex","overlay","Image","valueAsBase64DataString","openUploadDialog","fileInput","click","pickFile","files","reader","FileReader","onload","readAsDataURL","deleteImage","Dms","DmsItem","preview","multiple","inputClass","noList","disabled","stringifyFile","lastModified","lastModifiedDate","addFiles","dt","DataTransfer","doubles","items","removeFile","fileToRemove","upload","dmsFile"],"mappings":"seAoBO,MAAMA,EAAgB,CAC5BC,MAAO,CAAC,eACRC,MAAO,CACNC,QAAS,CACRC,KAAMC,SAEPC,YAAa,CACZC,UAAU,EACVH,KAAMI,UAEPC,sBAAuB,CAAA,GAExBC,MAAO,CAINP,QAAS,SAAUQ,EAAUC,GAC5BC,KAAKC,WACN,GAEDC,KAAM,WACL,MAAO,CACNC,SAAS,EACTC,OAAO,EACPC,aAAc,KAEhB,EACAC,QAAS,WACRN,KAAKC,WACN,EACAM,QAAS,CAIRN,UAAW,WAMV,GALAD,KAAKG,SAAU,EACfH,KAAKI,OAAQ,EACbJ,KAAKK,aAAe,KAGW,mBAApBL,KAAKP,YAChB,CAEQ,IAAIe,EAAoBR,KAAKP,YAAYO,KAAKJ,uBAGjDY,aAA6BC,QAEhCD,EACEE,KAAKV,KAAKW,gBACVC,MAAMZ,KAAKa,cACXC,QAAQd,KAAKe,gBAIff,KAAKgB,SAAS,mDAEhB,MAGChB,KAAKgB,SAAS,yCAEhB,EAIAA,SAAU,SAASX,GAClBL,KAAKG,SAAU,EACfH,KAAKI,OAAQ,EACbJ,KAAKK,aAAeA,CACrB,EAIAM,eAAgB,SAASM,GACxBjB,KAAKkB,MAAM,cAAeD,EAAWA,EAASf,UAAOiB,EACtD,EAIAN,aAAc,SAAST,GAClBA,EAAMa,UAAUf,MAAMkB,OACzBpB,KAAKgB,SAASZ,EAAMa,SAASf,KAAKkB,QAC1BhB,EAAMF,MAAMmB,QACpBrB,KAAKgB,SAASZ,EAAMF,KAAKmB,SAEzBrB,KAAKgB,SAASZ,EAAMiB,QACtB,EAIAN,eAAgB,WACff,KAAKG,SAAU,CAChB,GAEDmB,SAAU,0RClGLC,EAA8B,8BAKpC,IAAAC,EAAe,CACdnC,MAAO,CACNoC,QAAS,CACRlC,KAAMmC,MACNC,QAAS,IAEVC,QAAS,CACRrC,KAAMmC,MACNC,QAAS,IAEVE,OAAQ,CACPtC,KAAMmC,MACNC,QAAS,KAGXvC,MAAO,CACN0C,aAAc,CAAC,YACfC,kBAAmB,CAAC,gBACpBC,iBAAkB,CAAC,qBAEpB9B,KAAM,WACL,MAAO,CACN+B,cAAe,GAEjB,EACAC,SAAU,CACTC,KAAAA,GACC,OAAOnC,KAAK4B,QAAQQ,OAAO,CAACC,EAAEC,KAC7B,IAAI/C,EAAO+C,EAAE/C,KAAKgD,cAgBlB,OAfIhD,EAAKiD,QAAQ,QAAU,EAC1BH,EAAEC,EAAEG,MAAQ,UAEZlD,EAAKiD,QAAQ,YAAc,GAC3BjD,EAAKiD,QAAQ,SAAW,GACxBjD,EAAKiD,QAAQ,WAAa,EAE1BH,EAAEC,EAAEG,MAAQ,OAEZlD,EAAKiD,QAAQ,cAAgB,GAC7BjD,EAAKiD,QAAQ,SAAW,EAExBH,EAAEC,EAAEG,MAAQ,OAEZJ,EAAEC,EAAEG,MAAQ,GACNJ,GACL,CAAA,EACJ,GAEDxC,MAAO,CACNgC,MAAAA,CAAOa,GACN1C,KAAKiC,cAAgBS,CACtB,GAEDnC,QAAS,CACRuB,YAAAA,CAAaa,GACZ3C,KAAKkB,MAAM,eAAgByB,EAAIC,cAAcC,MAC9C,EACAd,iBAAAA,GACC,MAAMe,EAAiB9C,KAAKiC,cAAcc,OAAOC,GAAMA,EAAGP,MAAQlB,GAC9DuB,EAAeC,OAAOC,GAAsB,IAAhBA,EAAGC,WAAiBC,OACnDC,MAAM,sCAENnD,KAAKkB,MAAM,oBAAqB4B,EAClC,EACAM,QAAAA,CAAST,GACR3C,KAAKiC,cAAcoB,KAAK,CACvBZ,KAAMlB,GAER,EACA+B,WAAAA,CAAYC,GACXvD,KAAKiC,cAAcuB,OAAOD,EAAO,EAClC,GAEDjC,SAAU,+zJC3EXmC,EAAe,CACdpE,MAAO,CACNwC,OAAQH,MACRgC,SAAU,CACTnE,KAAMmC,MACNC,QAAS,IAEVgC,MAAO,CACNpE,KAAMqE,OACNjC,QAAS,CAAA,IAGXvC,MAAO,CACNyE,KAAM,CAAC,aACPC,KAAM,CAAC,cAER5D,KAAM,WACL,MAAO,CACN6D,eAAgB,GAElB,EACAlE,MAAO,CACN6D,QAAAA,CAAShB,GACR1C,KAAK+D,eAAiBrB,CACvB,GAEDnC,QAAS,CACRyD,MAAAA,CAAOC,IACoC,GAAtCjE,KAAK+D,eAAevB,QAAQyB,IAE/BjE,KAAK+D,eAAeP,OAAOxD,KAAK+D,eAAevB,QAAQyB,GAAQ,GAC/DjE,KAAKkB,MAAM,OAAQ+C,KAInBjE,KAAK+D,eAAeV,KAAKY,GACzBjE,KAAKkB,MAAM,OAAQ+C,GAErB,GAED3C,SAAU,meC3CX,MAAM4C,EAAgB,CACrBC,UAAW,gBACXC,KAAM,gBACNC,IAAK,cACLC,KAAM,eACNC,KAAM,UACNC,IAAK,eAEAC,EAAiB,CACtBN,UAAW,wBACXC,KAAM,mBACNC,IAAK,kBACLC,KAAM,mBACNC,KAAM,mBACNC,IAAK,oBAON,IAAAE,EAAe,CACdrF,MAAO,CACNsF,UAAWf,OACXgB,OAAQ,CACPrF,KAAM,CAACC,QAASqF,OAAQlF,SAAU+B,MAAOkC,QACzCjC,SAAS,GAEVmD,UAAW,CAACD,OAAQnD,MAAOkC,SAE5B1B,SAAU,CACT6C,aAAAA,GACC,IAAK/E,KAAK4E,OACT,OAAO,EAER,IAAIA,EAAS5E,KAAK4E,OAElB,GAAIA,aAAkBjF,SACrB,MAAO,CAACiF,GAET,GAAe,OAAXA,EACH,MAAO,GAQR,IANoB,IAAhB5E,KAAK4E,SACRA,EAAS,CAAC,QAEoC,oBAA3ChB,OAAOoB,UAAUC,SAASC,KAAKN,KAClCA,EAASA,EAAOO,MAAM,MAED,iBAAXP,IAAwBlD,MAAM0D,QAAQR,GAAS,CACzD,IAAIS,EAAY,GAChB,IAAK,IAAIC,KAAKV,EAAQ,CACrB,IAAmBrF,EAAfgG,EAAIX,EAAOU,GAEVC,IAGqC,oBAAtC3B,OAAOoB,UAAUC,SAASC,KAAKK,GAErB,QADbhG,EAAOS,KAAKwF,sBAAsBD,IAEjCF,EAAUhC,KAAK,CACdoC,KAAM,YAAcvB,EAAc3E,GAClCmG,MAAOH,IAAMD,EAAIb,EAAelF,GAAQ+F,EACxCK,UAAWpG,IAIA,QADZA,EAAOS,KAAKwF,sBAAsBF,IAEjCD,EAAUhC,KAAK,CACdoC,KAAM,YAAcvB,EAAc3E,GAClCmG,MAAOH,EACPI,UAAWpG,IAGZ4D,MAAM,WAAamC,EAAI,QAAUC,EAAI,sCAGhB,iBAANA,GAAmB7D,MAAM0D,QAAQG,GAiBrC,QADbhG,EAAOS,KAAKwF,sBAAsBF,IAEjCD,EAAUhC,KAAK,CACdoC,KAAM,YAAcvB,EAAc3E,GAClCmG,MAAOjB,EAAelF,GACtBoG,UAAWpG,IAGZ4D,MAAMmC,EAAI,0CAtBE,QADb/F,EAAOS,KAAKwF,sBAAsBF,UAEbnE,IAAhBoE,EAAEI,YACLJ,EAAEI,UAAYpG,QACC4B,IAAZoE,EAAEG,QACLH,EAAEG,MAAQjB,EAAelF,SACX4B,IAAXoE,EAAEE,OACLF,EAAEE,KAAOvB,EAAc3E,IACxB8F,EAAUhC,KAAKkC,UAECpE,IAAZoE,EAAEG,QACLH,EAAEG,MAAQJ,GACXD,EAAUhC,KAAKkC,IAclB,CACAX,EAASS,CACV,CAEA,GAAI3D,MAAM0D,QAAQR,GAClB,CA4BC,GA3BAA,EAASA,EAAOgB,IAAI5C,IACnB,GAA2C,oBAAvCY,OAAOoB,UAAUC,SAASC,KAAKlC,GAA2B,CAC7D,IAAI2C,EAAY3F,KAAKwF,sBAAsBxC,GAC3C,OAAkB,OAAd2C,EACI,KACD,CACNF,KAAM,YAAcvB,EAAcyB,GAClCD,MAAOjB,EAAekB,GACtBA,YAEF,CAEA,GAAI3C,aAAcrD,SACjB,MAAO,CACNgG,UAAW3C,GAGb,GAAkB,iBAAPA,IAAoBtB,MAAM0D,QAAQpC,IAAc,OAAPA,EAAa,CAChE,GAAIA,EAAG2C,qBAAqBhG,SAC3B,OAAOqD,EACR,GAAIhD,KAAK6F,sBAAsB7C,EAAG2C,WACjC,OAAO3C,CACT,CAEA,OAAO,OACLD,OAAOC,GAAa,OAAPA,GAEZ4B,EAAO1B,OAAS,EACnB,OAAO0B,EAER,GAAIA,EAAO7B,OAAOC,GAAMA,EAAG0C,OAAS1C,EAAGyC,MAAMvC,QAAU0B,EAAO1B,OAC7D,OAAO0B,EAERzB,MAAM,mBACP,CAEA,MAAO,EACR,GAED5C,QAAS,CACRiF,qBAAAA,CAAsBM,GACrB,IAAIC,EAAUD,EAAMvD,cAEpB,MAAe,aAAXwD,EACI,YAEJ,CAAC,OAAQ,MAAO,OAAQ,OAAQ,OAAOC,SAASD,GAC5CA,EAED,IACR,EACAF,qBAAAA,CAAsBC,GACrB,IAAIH,EAAY3F,KAAKwF,sBAAsBM,GAC3C,IAAKH,EAEJ,OADAxC,MAAM2C,EAAQ,uCACP,EAER,GAAiB,QAAbH,IACEM,OAAOC,KAEX,OADA/C,MAAM,4BACC,EAGT,GAAiB,OAAbwC,EAAoB,CACvB,IAAKM,OAAOE,MAEX,OADAhD,MAAM,6BACC,EAGR,IADU,IAAIgD,MAAMC,MAAM,CAAA,GACjBC,UAER,OADAlD,MAAM,sCACC,CAET,CACA,OAAO,CACR,EACAmD,QAAAA,CAAS1B,GACR5E,KAAK2E,UAAU2B,SAAS1B,EAAOe,UAAWf,EAAO2B,KAAM3B,EAAO4B,QAC/D,GAEDlF,SAAU,4pCC/MX,MAAMmF,EAAiB,IAAIC,QAE3B,IAAAC,EAAe,CACdC,OAAAA,CAAQ5D,EAAI6D,GACX,IAAIC,GAAO,EACXL,EAAeM,IAAI/D,EAAIL,IACtB,IAAKmE,EACJ,OAED,GAAI9D,EAAGgE,SAASrE,EAAIsE,QACnB,OAED,MAAMC,EAAWC,UAAUC,SAASC,YAAYrE,GAC5CkE,GACHA,EAASrD,SAEXb,EAAGsE,iBAAiB,oBAAqB,KACxCR,GAAO,IAER9D,EAAGsE,iBAAiB,mBAAoB,KACvCR,GAAO,IAERS,SAASD,iBAAiB,QAASb,EAAee,IAAIxE,IAAK,EAC5D,EACAyE,aAAAA,CAAczE,EAAI6D,GACjBU,SAASG,oBAAoB,QAASjB,EAAee,IAAIxE,WAClDA,EAAG2E,uBACX,GClBc1B,OAAO2B,WAAWC,aAAa,SAAU,QAAS,CAChEC,oBAAAA,CAAqBlG,EAASmG,GAC7B,IAAIC,EAAY,EAChBC,EAAajI,KAAKkI,MAAMC,WAAWC,QAAQC,YAC3CC,EAAM,EACNC,GAAU,EAEV3G,EAAQ4G,QAAQ,CAACC,EAAQC,KACnBD,EAAOE,YACXF,EAAOG,qBAGJ5I,KAAKkI,MAAM1B,QAAQqC,iBAAmBJ,EAAOK,QAAQC,WAAWC,QAAUP,EAAOO,UAAYP,EAAOQ,WAAWC,UAClHX,EAAUE,GAGPA,EAAOO,UACVhB,GAAaS,EAAOU,cAIlBZ,GACHD,EAAML,EAAaD,EAAYO,EAAQY,WAEnCnJ,KAAKkI,MAAM1B,QAAQqC,kBAAoB7I,KAAKkI,MAAMkB,UAAU,oBAAoB,KACnFb,EAAQc,SAAS,GACjBrJ,KAAKkI,MAAMY,QAAQD,iBAAiBS,UAGjChB,EAAM,EACTC,EAAQc,SAASf,GAEjBC,EAAQK,qBAGL5I,KAAKkI,MAAM1B,QAAQqC,kBAAoB7I,KAAKkI,MAAMkB,UAAU,oBAAoB,IACnFpJ,KAAKkI,MAAMY,QAAQD,iBAAiBS,QAGvC,IC/BD,IAAAC,EAAe,CACdvH,iBAAiBwH,IACT,CACNC,OAAQ,OACRC,IAAK,2CACLC,OAAQ,CACPC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBC,iBAAkBN,EAASM,oBAI9BC,mBAAmBP,IACX,CACNC,OAAQ,OACRC,IAAK,6CACLC,OAAQ,CACPC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBG,SAAUR,EAASQ,YAItBC,kBAAkBT,IACV,CACNC,OAAQ,OACRC,IAAK,4CACLC,OAAQ,CACPC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBK,aAAcV,EAASU,gBAI1BC,eAAeX,IACP,CACNC,OAAQ,OACRC,IAAK,yCACLC,OAAQ,CACPC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBO,YAAaZ,EAASY,eAIzBC,kBAAkBb,IACV,CACNC,OAAQ,OACRC,IAAK,4CACLC,OAAQ,CACPC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBO,YAAaZ,EAASY,eAIzBE,cAAcd,IACN,CACNC,OAAQ,MACRC,IAAK,oCACLC,OAAQ,CACPC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBG,SAAUR,EAASQ,YAItBO,UAAUf,IACF,CACNC,OAAQ,MACRC,IAAK,oCACLC,OAAQ,CACPC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,eC3DrBW,EAAQ,EAKL,MAAMC,EAAiB,CAC7BC,WAAY,CACXvL,gBACAqC,eACAiC,gBACAiB,iBAEDiG,WAAY,CACXhE,qBAEDvH,MAAO,CACN,aACA,YACA,aACA,eAEDC,MAAO,CACNuL,aAAcjL,SACdkL,MAAOhG,OACPiG,YAAajG,OACbkG,SAAU,CACTxL,KAAMC,QACNmC,SAAS,GAEVkI,WAAY,CACXtK,KAAMsF,QAEPmG,iBAAkBpH,OAClBqH,gBAAiBvJ,MACjBwJ,UAAW1L,QACX2L,eAAe3L,QACf4L,OAAQ5L,QACR6L,kBAAmBxG,OACnByB,SAAU,CACT/G,KAAM,CAACC,QAASqF,OAAQlF,SAAU+B,MAAOkC,QACzCjC,SAAS,GAEV2J,WAAY9L,QACZ+L,YAAa,CAAC1G,OAAQnD,MAAOkC,QAC7B4H,eAAgBhM,QAChBiM,YAAa5G,OACb6G,SAAU7G,OAEV8G,QAAS9G,OACT+G,cAAe/G,OACfgH,UAAWrM,QACXsM,iBAAkB,CACjBvM,KAAMC,QACNmC,SAAS,IAGXzB,KAAM,WACL,MAAO,CACN6L,KAAM,EAENC,WAAY,KACZC,cAAc,EACdpK,OAAQ,KACRqK,QAAS,KACTC,gBAAiB,KACjBpI,eAAgB,KAChBmG,aAAc,KAEdkC,iBAAkB,KAClBC,eAAgB,KAGhBC,kBAAkB,EAClBC,qBAAsB,KACtBC,2BAA4B,KAC5BC,qBAAsB,KAEtBC,YAAa,KAEb/H,UAAW,KACXgI,YAAY,EACZC,sBAAsB,EACtBC,aAAc,GACdC,YAAa,CACZC,MAAM,EACNnL,SAAS,EACTmB,QAAQ,EACRiK,cAAc,EACdC,OAAO,EACPC,MAAM,GAGT,EACAhL,SAAU,CACTiL,iBAAAA,GACC,OAAKnN,KAAK6B,QAAW7B,KAAK+D,eAEnB/D,KAAK6B,OAAOkB,OAAOqK,QAAKpN,KAAK+D,eAAevB,QAAQ4K,IADnD,IAET,EACAC,YAAAA,GACC,OAAKrN,KAAKkM,QAEHoB,KAAKC,MAAMD,KAAKE,UAAUxN,KAAKkM,UAD9B,EAET,EACAuB,eAAAA,GACC,IAAI5L,EAASyL,KAAKC,MAAMD,KAAKE,UAAUxN,KAAK6B,UAAY,GACpDkC,EAAiBuJ,KAAKC,MAAMD,KAAKE,UAAUxN,KAAK+D,kBAAoB,GAEpEnC,EAAU,KAOd,GAJI5B,KAAKgL,kBAAoBhL,KAAKgL,iBAAiB0C,eAAe,aACjE9L,EAAU5B,KAAKgL,iBAAiBpJ,UAG5BF,MAAM0D,QAAQxD,IAAaF,MAAM0D,QAAQxD,IAAYA,EAAQsB,OAASrB,EAAOqB,OAClF,CACCtB,EAAU,GAGV,IAAK,IAAIqC,KAASpC,EAClB,CAEC,IAAI4G,EAAS,CACZoC,MAAO5G,EACPA,MAAOA,GAIRwE,EAAOO,QAAUjF,EAAevB,QAAQyB,IAAU,EAGlDrC,EAAQyB,KAAKoF,EACd,CACD,MAIC,IAAK,IAAIkF,KAAO/L,EAKf+L,EAAI3E,QAAUjF,EAAevB,QAAQmL,EAAI1J,QAAU,IAAkC,GAA7BpC,EAAOW,QAAQmL,EAAI1J,OAEvE0J,EAAID,eAAe,eACtBC,EAAIC,UAAYD,EAAI3E,SAIvB,OAAOpH,CACR,EACAiM,oBAAAA,GACC,OAAK7N,KAAK2M,WAEH3M,KAAK2E,UAAUmJ,aAAa/K,OAAO4K,IACzC,IAAII,EAAMJ,EAAIK,gBACd,OAAQD,EAAI7E,QAAU6E,EAAIlD,OAA0B,sBAAjBkD,EAAIpI,YACrCC,IAAI+H,GAAOA,EAAIM,YAJV,EAKT,EACAC,UAAAA,GACC,OAAKlO,KAAK2M,WAEH3M,KAAK2E,UAAUmJ,aAAa1L,OAAO,CAAC+L,EAAKR,KAC/CQ,EAAIR,EAAIM,YAAcN,EAAIK,gBAAgBnD,MACnCsD,GACL,CAAA,GAJK,CAAA,CAKT,EACAC,OAAAA,GACC,OAAKpO,KAAK+L,KAEH,IAAM/L,KAAK+L,KADV,EAET,EACAsC,gBAAAA,GACC,IAAKrO,KAAKyN,kBAAoBzN,KAAKmM,gBAClC,MAAO,GACR,MAAMmC,EAAetO,KAAKyN,gBAAgBrL,OAAO,CAACC,EAAEC,KACnDD,EAAEC,EAAE2B,OAAS3B,EAAEuI,MACRxI,GACL,CAAA,GACH,OAAOrC,KAAKmM,gBAAgBvG,IAAI5C,IAAE,IAASA,EAAQ6H,MAAOyD,EAAatL,EAAGP,QAC3E,GAEDlC,QAAS,CACRgO,WAAAA,GACKvO,KAAKkL,UACRlL,KAAK2E,UAAU6J,UAEfxO,KAAKuK,WACP,EACA,mBAAMkE,GACL,IAAIC,EAAc,iCACd1O,KAAK2O,WACF3O,KAAK2O,GAAGC,aAAa,MAC3BF,EAAc1O,KAAK2O,GAAGE,EAAE,2BAGpB7O,KAAKkL,iBAEH,IAAIzK,QAAQqO,IACjB,MAAM9E,EAAW/D,OAAO8I,SAASC,KAAO/I,OAAO8I,SAASC,KAAKC,MAAM,GAAK,KAElEC,EAAqBhP,IAC1BF,KAAKmP,cAAcjP,GACnB4O,KAGgB,OAAb9E,EACHhK,KAAKoP,eACJ5F,GAAYxJ,KAAKqP,KAAKnK,KAAKqE,EAAUgB,UAAUf,IAC/C,KACA0F,GAGDlP,KAAKoP,eACJ5F,GAAYxJ,KAAKqP,KAAKnK,KAAKqE,EAAUe,cAAcd,IACnD,CAAEQ,YACFkF,KAMJ,IAAIlE,EAAmB,CACrBsE,OAAQ,uBACRC,gBAAgB,EAChBC,eAAe,CACdC,SAAS,GAEVf,cACA5B,YAAa9M,KAAK8M,eACZ9M,KAAKgL,kBAAoB,CAAA,GAmCjC,QAhCgC7J,IAA5B6J,EAAiB0E,aACWvO,IAA/B6J,EAAiB2E,gBACcxO,IAA/B6J,EAAiB4E,YACjB5E,EAAiB0E,OAAS,KAGtB1P,KAAKkL,UAITF,EAAiBpJ,QAAQ4G,QAAQmF,SACZxM,IAAhBwM,EAAI3E,UACP2E,EAAI3E,SAAU,MALhBgC,EAAiB9K,KAAOF,KAAKqN,aAC7BrC,EAAiBpJ,QAAU5B,KAAKyN,kBAQ7BzC,EAAiB6E,YAAe7E,EAAiBpJ,SAAWoJ,EAAiBpJ,QAAQmB,OAAOC,GAAsB,gBAAhBA,EAAG2C,WAA6BzC,UACrIlD,KAAK4M,sBAAuB,GAEzB5M,KAAK2L,UAEJ3L,KAAK4L,gBAAeZ,EAAiB8E,UAAW,GAEpD9E,EAAiBzH,MAAQvD,KAAK2L,SAI/B3L,KAAK2E,UAAY,IAAIiD,UACpB5H,KAAK+P,MAAM7H,MACX8C,GAGGtJ,MAAM0D,QAAQpF,KAAKiL,kBAAoBjL,KAAKiL,gBAAgB/H,OAAS,EAGxE,IAAK,IAAIP,KAAO3C,KAAKiL,gBACpBjL,KAAK2E,UAAUqL,GAAGrN,EAAIsN,MAAOtN,EAAIuN,SAEnClQ,KAAK2E,UAAUqL,GAAG,aAAc,KAAOhQ,KAAK2M,YAAa,EAAM3M,KAAKkB,MAAM,gBAC1ElB,KAAK2E,UAAUqL,GAAG,sBAAuB9P,IACxCF,KAAK6M,aAAe3M,IAIjBF,KAAK4L,eAAiB5L,KAAK2L,SAC9B3L,KAAK2E,UAAUqL,GAAG,cAAe9P,IAChC,IAAIiQ,EAAW,GAGf,IAAK,IAAIC,EAAW,EAAGA,EAAWlQ,EAAKgD,OAAQkN,IAC/C,CACC,IAAIC,EAAQnQ,EAAKkQ,GAGbC,EAAMrQ,KAAK4L,gBAGV5L,KAAKsQ,YAAYpQ,EAAMmQ,IAAQF,EAAS9M,KAAK+M,EAEnD,CAGA,IAAK,IAAIG,EAAU,EAAGA,EAAUJ,EAASjN,OAAQqN,IAGhDrQ,EAAKsD,OAAO2M,EAASI,GAAWA,EAAS,KAIxCvQ,KAAKkL,WACRlL,KAAK2E,UAAUqL,GAAG,aAAc,KAC/B,MAAMQ,EAAOxQ,KAAK2E,UAAUmJ,aAC5B9N,KAAK6B,OAAS2O,EAAK5K,IAAI+H,GAAOA,EAAIM,YAClCjO,KAAK+D,eAAiByM,EAAKzN,OAAO4K,GAAOA,EAAI8C,aAAa7K,IAAI+H,GAAOA,EAAIM,YACrEjO,KAAK2E,UAAU6B,QAAQsG,YAAYE,cACtChN,KAAK0Q,qBAKR1Q,KAAK2E,UAAUqL,GAAG,eAAgBvO,IACjCzB,KAAKiM,aAAexK,EAAQyB,OAAS,GAEvC,EACAyN,eAAAA,GACK3Q,KAAK2E,YACJ3E,KAAK2M,WACR3M,KAAK4Q,mBAEL5Q,KAAK2E,UAAUqL,GAAG,aAAchQ,KAAK4Q,kBAExC,EACAA,gBAAAA,GACC5Q,KAAK4M,qBAAuB5M,KAAKgL,iBAAiB6E,YAAc7P,KAAKyN,gBAAgB1K,OAAOC,GAAsB,gBAAhBA,EAAG2C,WAA6BzC,OAClIlD,KAAK2E,UAAUkM,WAAW7Q,KAAKyN,iBAC/BzN,KAAK2E,UAAU6J,QAAQxO,KAAKqN,cAC5BrN,KAAK0Q,kBACN,EACAI,YAAAA,GAEuB9Q,KAAK2E,UAAUoM,mBACrBvI,QAAQzF,IACvB/C,KAAK2E,UAAUqM,qBAAqBjO,EAAOkB,MAAO,MAEnDjE,KAAK2E,UAAUsM,cACfjR,KAAKiM,cAAe,CACrB,EACAyE,gBAAAA,GAEyB1Q,KAAK2E,UAAUoM,mBACvBvI,QAAQzF,IACvB/C,KAAK2E,UAAUqM,qBAAqBjO,EAAOkB,MAAOlB,EAAOF,QAE3D,EAIA0H,SAAAA,GAC6B,OAAxBvK,KAAKqM,eACRrM,KAAKoP,eACJ5F,GAAYxJ,KAAKqP,KAAKnK,KAAKqE,EAAUgB,UAAUf,IAC/C,KACAxJ,KAAKkR,QAGNlR,KAAKoP,eACJ5F,GAAYxJ,KAAKqP,KAAKnK,KAAKqE,EAAUe,cAAcd,IACnD,CACCQ,SAAUhK,KAAKqM,gBAEhBrM,KAAKkR,OAER,EACA/B,aAAAA,CAAcjP,GACbF,KAAK0M,YAAcxM,EACnBF,KAAKgM,WAAa9L,EAAK8L,WACvBhM,KAAKkM,QAAUhM,EAAKgM,QACpBlM,KAAKmM,gBAAkBjM,EAAKiM,gBAE5BnM,KAAK6B,OAAS3B,EAAK2B,OACnB7B,KAAK+D,eAAiB7D,EAAK6D,eAC3B/D,KAAKkK,aAAe,GAEpB,IAAK,IAAIxB,EAAI,EAAGA,EAAIxI,EAAKiM,gBAAgBjJ,OAAQwF,IAEhD,IAAK,IAAIyI,EAAI,EAAGA,EAAIjR,EAAKuB,QAAQyB,OAAQiO,IAExC,GAAIjR,EAAKiM,gBAAgBzD,GAAGjG,MAAQvC,EAAKuB,QAAQ0P,GAAG1O,KACpD,CACC,IAAIM,EAAS7C,EAAKuB,QAAQ0P,GAC1BpO,EAAOxD,KAAOW,EAAKiM,gBAAgBzD,GAAGnJ,KAEtCS,KAAKkK,aAAa7G,KAAKN,EAExB,CAGH,EAIAmO,MAAAA,CAAOjQ,GACN,IAAIf,EAAOe,EAEXjB,KAAKmP,cAAcjP,IAGG,IAAlBF,KAAK+K,SAER/K,KAAKoR,YAAYlR,GAIjBF,KAAKqR,gBAAgBnR,GAEtBF,KAAK2Q,iBACN,EAIAS,WAAAA,CAAYlR,GACX,IAAIuB,EAAUvB,EAAK6K,SAAStJ,QACxB6P,EAAkBpR,EAAK6K,SAASuG,gBAChCC,EAAe,GAEnB,IAAK,IAAIC,EAAe,EAAGA,EAAe/P,EAAQyB,OAAQsO,IAC1D,CACC,IAAIC,EAAOhQ,EAAQ+P,GAAcC,KAErB,MAARA,IAAcA,EAAO,KAEzBF,EAAaA,EAAarO,QAAU,CACnCwO,GAAIjQ,EAAQ+P,GAAcG,UAC1BF,KAAMA,EAAOhQ,EAAQ+P,GAAcG,UACnC7G,YAAarJ,EAAQ+P,GAAcI,KACnC7E,KAAMyE,EACNK,YAAa7R,KAAK8R,qBAEpB,CAEA,IAAK,IAAIN,EAAe,EAAGA,EAAeF,EAAgBpO,OAAQsO,IAClE,CACC,IAAIC,EAAOH,EAAgBE,GAAcC,KAE7B,MAARA,IAAcA,EAAO,KAEzBF,EAAaA,EAAarO,QAAU,CACnCwO,GAAIJ,EAAgBE,GAAcG,UAClCF,KAAMA,EAAOH,EAAgBE,GAAcG,UAC3C7G,YAAawG,EAAgBE,GAAcI,KAC3CG,qBAAsBT,EAAgBE,GAAcO,qBACpDC,mBAAoBV,EAAgBE,GAAcQ,mBAClDC,mBAAoBX,EAAgBE,GAAcS,mBAClDlF,KAAMyE,EACNK,YAAa7R,KAAK8R,qBAClBI,qBAAsBlS,KAAKmS,0BAE7B,CAEAnS,KAAKoM,iBAAmBmF,EAExBvR,KAAKkB,MACJ,aACA,CACCuQ,KAAM,IACN3G,YAAa,UACbrF,KAAM,SACN2M,SAAUb,GAGb,EAIAF,eAAAA,CAAgBnR,GACf,IAAIuB,EAAUvB,EAAK6K,SAAStJ,QACxB6P,EAAkBpR,EAAK6K,SAASuG,gBAChCC,EAAe,GAEnB,IAAK,IAAIC,EAAe,EAAGA,EAAe/P,EAAQyB,OAAQsO,IAE9C/P,EAAQ+P,GAAcC,KAIjCF,EAAaA,EAAarO,QAAU,CACnCwO,GAAIjQ,EAAQ+P,GAAcG,UAC1BU,OAAQ5Q,EAAQ+P,GAAcG,UAC9B7G,YAAarJ,EAAQ+P,GAAcI,MAIrC,IAAK,IAAIJ,EAAe,EAAGA,EAAeF,EAAgBpO,OAAQsO,IAEtDF,EAAgBE,GAAcC,KAIzCF,EAAaA,EAAarO,QAAU,CACnCwO,GAAIJ,EAAgBE,GAAcG,UAClCU,OAAQf,EAAgBE,GAAcG,UACtC7G,YAAawG,EAAgBE,GAAcI,MAI7C5R,KAAKoM,iBAAmBmF,CACzB,EAIAnC,cAAAA,CAAe3P,EAAaG,EAAuB0S,GAElDtS,KAAKuM,qBAAuB9M,EAGC,MAAzBG,IAA+BA,EAAwB,CAAA,GAG3DA,EAAsBgK,eAAiB2I,2BAA2BC,YAAc,IAAMD,2BAA2BE,cACjH7S,EAAsBiK,WAAa7J,KAAK6J,WAEpC7J,KAAK0L,WACR9L,EAAsBgK,gBAAkB,IAAM5J,KAAK0L,UAGpD1L,KAAKwM,2BAA6B5M,EAElCI,KAAKyM,qBAAuB6F,GAGF,IAA1BtS,KAAKsM,iBAA4BtM,KAAKsM,kBAAmB,EAAQtM,KAAKsM,kBAAmB,CAC1F,EAQAoG,uBAAAA,CAAwB5I,GACvB9J,KAAKqM,eAAiB,KAEtBrM,KAAKoP,eACJ5F,GAAYxJ,KAAKqP,KAAKnK,KAAKqE,EAAUvH,iBAAiBwH,IACtD,CACCM,oBAED9J,KAAKuK,UAEP,EAIA4H,yBAAAA,CAA0BlC,GACzB,IAAIjG,EAAWiG,EAAMrN,cAAc+P,aAAa,QAAQC,UAAU,GAC9D5I,IAAahK,KAAKqM,iBACrBrM,KAAKqM,eAAiB,MAEvBrM,KAAKoP,eACJ5F,GAAYxJ,KAAKqP,KAAKnK,KAAKqE,EAAUQ,mBAAmBP,IACxD,CACCQ,SAAUA,GAEXhK,KAAKuK,UAEP,EAKAuH,qBAAsB,SAAS7B,GAE9B,IAAIjG,EAAW,KAGX6I,EAAO5C,EAAMrN,cAAc+P,aAAa,QAK3C3I,EAFW,MAAR6I,EAEQ5C,EAAMrN,cAAcC,MAIpBgQ,EAAKD,UAAU,GAG3B5S,KAAK8B,aAAakI,EACnB,EACAlI,YAAAA,CAAakI,GACZhK,KAAKqM,eAAiBrC,EACtBhK,KAAKuK,WACN,EACAxI,iBAAAA,CAAkBmI,GACjBlK,KAAKqM,eAAiB,KACtBrM,KAAKoP,eACJ5F,GAAYxJ,KAAKqP,KAAKnK,KAAKqE,EAAUU,kBAAkBT,IACvD,CACCU,gBAEDlK,KAAKuK,UAEP,EAGA+F,WAAAA,CAAYpQ,EAAMmQ,GAEjB,IAAIyC,EAAWzC,EAAMrQ,KAAK4L,eAG1B,IAAK,IAAImH,EAAY,EAAGA,EAAY7S,EAAKgD,OAAQ6P,IACjD,CACC,IAAIC,EAAS9S,EAAK6S,GAGlB,GAAIC,EAAOhT,KAAK2L,UAAYmH,EAS3B,OANKE,EAAOC,YAAWD,EAAOC,UAAY,IAGrCD,EAAOC,UAAUjN,SAASqK,IAAQ2C,EAAOC,UAAU5P,KAAKgN,IAGtD,EAGC2C,EAAOC,WAAWjT,KAAKsQ,YAAY0C,EAAOC,UAAW5C,EAC/D,CAGA,OAAO,CACR,GAED6C,YAAAA,IACMlT,KAAKkL,YAAclL,KAAK6J,YAC5B1G,MAAM,qDACR,EACA7C,OAAAA,IACKN,KAAK+K,UAAc/K,KAAKmT,OAAOvI,cAAkB5K,KAAKmT,OAAOvI,wBAAwBjL,UACxFwD,MAAM,4DACPnD,KAAK+L,KAAOvB,IACZxK,KAAKkB,MAAM,cAAelB,KAAK+L,KAChC,EACAnF,OAAAA,GACC5G,KAAKyO,gBAAgB/N,KAAK,KACpBV,KAAKkL,YACTlL,KAAKqM,eAAiBpG,OAAO8I,SAASC,KAAO/I,OAAO8I,SAASC,KAAKC,MAAM,GAAK,KAC7EjP,KAAKkR,OAAOlR,KAAK0M,eAIpB,EACApL,SAAU,4wICpqBX,IAAIkJ,EAAQ,CAAA,EAEZ,IAAA4I,EAAe,CACd3Q,KAAM,YACN4Q,cAAc,EACd3I,WAAY,CACX4I,YCRa,CACdpC,MAAAA,GACC,OAAQlR,KAAKuT,QAAUvT,KAAKuT,OAAO5R,QAAW3B,KAAKuT,OAAO5R,UAAY,IACvE,IDOA6R,OAAQ,CACPC,eAAgB,CACfC,KAAM,kBACN/R,QAAS,MAEVgS,uBAAwB,CACvBD,KAAM,0BACN/R,QAAS,OAGXtC,MAAO,CACNuU,WAAYpU,QACZqU,YAAarU,QACbsU,WAAYtU,QACZuU,WAAYvU,QACZD,KAAMsF,OACNpC,KAAMoC,OACNmP,eAAgB,CAACnP,OAAQnD,MAAOkC,QAChC8B,MAAOb,OAEPoP,QAAS,CAACvS,MAAO/B,UACjB,sBAAuB,CAAC+B,MAAO/B,WAEhCO,KAAIA,KACI,CACNgU,WAAO/S,EACPgT,SAAU,GACVC,qBAAiBjT,IAGnBe,SAAU,CACTmS,YAAAA,GACC,IAAKrU,KAAK4T,WACT,OAAO,EACR,GAAI5T,KAAKgU,eACR,OAAO,EACR,IAAK,MAAMM,KAAQtU,KAAKuU,mBACvB,GAAI3Q,OAAO4Q,OAAOxU,KAAKuU,mBAAoBD,GAC1C,OAAO,EACT,OAAO,CACR,EACAG,GAAAA,GACC,OAAKzU,KAAKgU,eAEyB,iBAAxBhU,KAAKgU,gBAA+BhU,KAAKgU,0BAA0BnP,OACtE7E,KAAKgU,eAAe7O,MAAM,KAAK/C,OAAO,CAACC,EAAEC,KAAOD,EAAEC,IAAK,EAAaD,GAAI,CAAA,GAC5EX,MAAM0D,QAAQpF,KAAKgU,gBACfhU,KAAKgU,eAAe5R,OAAO,CAACC,EAAEC,KAAOD,EAAEC,IAAK,EAAaD,GAAI,CAAA,GAC9DrC,KAAKgU,eALJ,CAAA,CAMT,EACAO,kBAAAA,GACC,GAAIvU,KAAK6T,YACR,OAAO7T,KAAKyU,IAEb,MAAMA,EAAM,IAAIzU,KAAKyU,KAarB,OAXIzU,KAAK+T,aACRU,EAAI,qBAAsB,GAER,SAAfzU,KAAK0U,QAAoC,YAAf1U,KAAK0U,SAClCD,EAAI,eAAgB,GAEjBzU,KAAK+T,YAAcU,EAAI,gBAC1BA,EAAI,qBAAsB,EAC1BA,EAAI,eAAgB,EACpBA,EAAI,qBAAsB,GAEpBA,CACR,EACAC,MAAAA,GACC,OAAK1U,KAAKT,KAEHS,KAAKT,KAAKgD,cADT,MAET,EACAoS,GAAAA,GACC,OAAQ3U,KAAK0U,QACZ,IAAK,WACL,IAAK,SACJ,OAAO1U,KAAK0U,OACb,IAAK,aACJ,MAAO,gBACR,IAAK,eACJ,MAAO,iBACR,IAAK,cACJ,MAAO,cACR,IAAK,aACL,IAAK,YACJ,MAAO,YACR,QACC,MAAO,QAEV,EACAE,eAAAA,GACC,MAAMC,EAAU,GAMhB,GALI7U,KAAKkU,MACRW,EAAQxR,KAAK,aACU,IAAfrD,KAAKkU,OACbW,EAAQxR,KAAK,eAETrD,KAAK6T,YAAa,CACtB,IAAIvR,EAAItC,KAAK8U,OAAOC,MAAQ/U,KAAK8U,OAAOC,MAAM5P,MAAM,KAAO,GAC3D,OAAQnF,KAAK0U,QAEZ,IAAK,SACCpS,EAAE0D,SAAS,gBACf6O,EAAQxR,KAAK,eACd,MACD,IAAK,QACCf,EAAE0D,SAAS,eACf6O,EAAQxR,KAAK,cACd,MACD,IAAK,QACL,IAAK,WAECf,EAAE0D,SAAS,qBAAwB1D,EAAE0D,SAAS,cAClD6O,EAAQxR,KAAK,oBACd,MACD,IAAK,QACCf,EAAE0D,SAAS,uBACf6O,EAAQxR,KAAK,sBACTf,EAAE0D,SAAS,iBACf6O,EAAQxR,KAAK,gBACd,MACD,IAAK,eACL,IAAK,aACJwR,EAAQxR,KAAK,OACbwR,EAAQxR,KAAK,YACRf,EAAE0D,SAAS,iBACf6O,EAAQxR,KAAK,gBACd,MACD,IAAK,OACL,IAAK,SACL,IAAK,WACL,IAAK,WACCf,EAAE0D,SAAS,iBACf6O,EAAQxR,KAAK,gBAGjB,CAEA,OAAOwR,CACR,EACAG,aAAAA,GACC,OAAKhV,KAAKmU,WAA8B,IAAlBnU,KAAKmU,SAEtBnU,KAAK4T,WAKH,CACN,kBAAiC,IAAf5T,KAAKkU,MACvB,oBAAmC,IAAflU,KAAKkU,OANlB,CACN,iBAAgC,IAAflU,KAAKkU,MACtB,mBAAkC,IAAflU,KAAKkU,OAJlB,EAUT,EACAe,cAAe,CACdzN,GAAAA,GACC,OAAKxH,KAAK8U,OAAOpH,eAAe,cAEzB1N,KAAK8U,OAAOI,WADXlV,KAAKoU,eAEd,EACArN,GAAAA,CAAIxB,GACEvF,KAAK8U,OAAOpH,eAAe,gBAC/B1N,KAAKoU,gBAAkB7O,GACxBvF,KAAKkB,MAAM,oBAAqBqE,EACjC,GAED4P,KAAAA,GACC,IAAIpJ,EAAO/L,KAAK8U,OAAOpD,GAKvB,GAJmB,cAAf1R,KAAK0U,SACR3I,EAAO/L,KAAK8U,OAAOM,MACfrJ,GAAQ/L,KAAK0F,QACjBqG,EAAO,kBACHA,EAML,MAJmB,cAAf/L,KAAK0U,SACR3I,EAAO,YAAcA,QACF5K,IAAhBqJ,EAAMuB,KACTvB,EAAMuB,GAAQ,GACRA,EAAO,IAAOvB,EAAMuB,IAC5B,GAEDxL,QAAS,CACR8U,eAAAA,GACCrV,KAAKkU,WAAQ/S,EACbnB,KAAKmU,SAAW,EACjB,EACAmB,0BAAAA,QACoBnU,IAAfnB,KAAKkU,QAELlU,KAAK2T,wBAA0B3T,KAAKyC,KACvCzC,KAAK2T,uBAAuB3T,KAAKyC,MAEjCzC,KAAKqV,kBACP,EACAE,WAAAA,CAAYrB,EAAOC,GAOlB,GANKA,IACJA,EAAW,IACPzS,MAAM0D,QAAQ+O,KAClBA,EAAW,CAACA,IACbnU,KAAKkU,MAAQA,EAETlU,KAAKyC,OAAwB,SAAfzC,KAAK0U,QAAoC,YAAf1U,KAAK0U,QAAuB,CACvE,MAAMc,EAAW,eAAiBxV,KAAK0U,OAAS,YAAc1U,KAAKyC,KAAO,KAC1E,GAAI,IAAIzC,KAAKyV,IAAIC,WAAWC,iBAAiBH,IAAWI,OAAS5V,KAAK+P,MAAMjK,MAC3E,MACF,CACA9F,KAAKmU,SAAWA,CACjB,EACA0B,eAAAA,GACiB,iBAAZ7V,KAAK2U,KAA2B3U,KAAK8V,EAAEpL,WAAWqL,cAE/B,kBAAZ/V,KAAK2U,KAA4B3U,KAAK8V,EAAEpL,WAAWsL,eAEvC,eAAZhW,KAAK2U,KAAyB3U,KAAK8V,EAAEpL,WAAWuL,YAEpC,aAAZjW,KAAK2U,KAAuB3U,KAAK8V,EAAEpL,WAAWwL,YACxDlW,KAAK8V,EAAEpL,WAAWwL,UAAYC,IAAIC,qBAAqB,IAAM3V,gDAF7DT,KAAK8V,EAAEpL,WAAWuL,YAAcE,IAAIC,qBAAqB,IAAM3V,+CAF/DT,KAAK8V,EAAEpL,WAAWsL,eAAiBK,SAASC,aAF5CtW,KAAK8V,EAAEpL,WAAWqL,cAAgBI,IAAIC,qBAAqB,IAAMG,OAAO,gEAQ1E,GAEDC,WAAAA,GACCxW,KAAK6V,iBACN,EACAY,YAAAA,GACCzW,KAAK6V,iBACN,EACAjP,OAAAA,GACK5G,KAAKyT,gBACRzT,KAAKyT,eAAezT,KACtB,EACAsB,SAAU,g2IE7OX,MACMsK,EAAgB,gCAGtB,IAAA8K,EAAe,CACdhM,WAAY,CACXD,iBACA2I,iBAEDlT,KAAM,WACL,MAAO,CACNgI,MAAO,KACPyO,gBAAiB,GACjBC,wBAAyB,GACzBC,yBAAyB,EAE3B,EACA3U,SAAU,CACT8I,gBAAAA,GACsB,MAAM8L,EAAkB,SAASC,GAC7B,IAAIC,EACJ,MAAM/S,EAAQ8S,EAAK9I,WACb/N,EAAO6W,EAAKE,WAAWC,UACvBC,EAAgB,SAASC,EAAMnT,GACjC,IAAI+S,EAAS,CAAA,EACTK,EAAc,CAAA,EAClB,IAAI,MAAMC,KAAOF,EAAM,CACnB,MAAMG,EAA2B,OAAfD,EAAIrT,GAAmBqT,EAAIrT,GAAS,GACtD+S,EAAOO,GAAYA,EAChBD,EAAe,WAAKA,EAAe,UAAEpU,OAAS,IAC/CmU,EAAcF,EAAcG,EAAe,UAAGrT,GAC9C+S,EAAS,IAAIA,KAAWK,GAE9B,CACA,OAAOL,CACX,EACAA,EAASG,EAAcjX,EAAM+D,GAC7B,MAAMuT,EAAO5T,OAAO6T,KAAKT,GAAQjK,OAIjC,OAHwB,IAArByK,EAAKhV,QAAQ,KACZgV,EAAKE,QAAQ,IAEVF,CACX,EACMG,EAAgB,SAASC,EAAaC,EAAUC,EAASC,GAC3D,GAAID,EAAmB,WAAKA,EAAmB,UAAE5U,OAAS,EACvD,IAAK,IAAIwF,KAAKoP,EAAmB,UAC9B,OAAOD,GAAYD,GACTD,EACIC,EACAE,EAAmB,UAAEpP,GAAGqP,EAAa9T,OACrC6T,EAAmB,UAAEpP,GACrBqP,GAKpB,OAAOF,GAAYD,CACvB,EACfI,EAAOhY,KACb,MAAO,CAENiY,aAAYA,CAACvO,EAAKC,EAAQ1I,IAClB+W,EAAKE,iBAAiBjX,EAASf,MAEvCoP,OAAQ,aACR6I,YAAY,EACZC,oBAAoB,EACpB7U,MAAO,uBACPsM,YAAY,EACZwI,oBAAqB,QACrBvI,UAAU,EACVwI,sBAAuBN,EAAKnB,wBAC5B0B,oBAAqB,GACrBzL,YAAY,CACX/J,QAAQ,GAETnB,QAAS,CACR,CAACiJ,MAAO,QAAS5G,MAAO,uBAAwB+I,cAAc,EAAMhE,SAAS,GAC7E,CAAC6B,MAAO,YAAa5G,MAAO,SAAU+I,cAAc,EAAMhE,SAAQ,EAAOwP,MAAO,IAChF,CAAC3N,MAAO,aAAc5G,MAAO,iBAAkB+I,aAAc,OAAQyL,mBAAoB,CAACC,aAAc5B,GAAkB6B,iBAAkBhB,EAAeiB,uBAAwB,CAAC3U,MAAO,kBAAmB+E,SAAQ,EAAMwP,MAAO,IACnO,CAAC3N,MAAO,aAAc5G,MAAO,oBAAqB+I,cAAc,EAAMhE,SAAS,EAAOwP,MAAO,KAC7F,CAAC3N,MAAO,iBAAkB5G,MAAO,iBAAkB+I,cAAc,EAAMhE,SAAQ,EAAOwP,MAAO,IAC7F,CAAC3N,MAAO,iBAAkB5G,MAAO,sBAAuB+I,aAAc,OAAQyL,mBAAoB,CAACC,aAAc5B,GAAkB6B,iBAAkBhB,EAAeiB,uBAAwB,CAAC3U,MAAO,uBAAwBuU,MAAO,KACnO,CAAC3N,MAAO,UAAW5G,MAAO,iBAAkB+I,aAAc,OAAQyL,mBAAoB,CAACC,aAAc5B,GAAkB6B,iBAAkBhB,EAAeiB,uBAAwB,CAAC3U,MAAO,kBAAmBuU,MAAO,IAClN,CAAC3N,MAAO,WAAY5G,MAAO,WAAY+I,cAAc,EAAMwL,MAAO,IAClE,CAAC3N,MAAO,oBAAqB5G,MAAO,iBAAkB+I,cAAc,EAAM6L,SAAU,KACpF,CAAChO,MAAO,wBAAyB5G,MAAO,sBAAuB+I,cAAc,EAAM6L,SAAU,KAC7F,CAAChO,MAAO,OAAQ5G,MAAO,OAAQ+I,cAAc,EAAMwL,MAAO,GAAIM,SAAU,SACxE,CAACjO,MAAO,WAAY5G,MAAO,kBAAmB+I,cAAc,EAAMwL,MAAO,IACzE,CAAC3N,MAAO,UAAW5G,MAAO,UAAW+I,cAAc,EAAMwL,MAAO,KAChE,CAAC3N,MAAO,QAAS5G,MAAO,QAASuU,MAAO,GACvC7S,UAAU,YACVqH,aAAa,YACbyL,mBAAmB,CAACM,UAAY,GAChCD,SAAS,SACTE,gBAAiB,CAChBC,YAAa,2CACbC,aAAc,4CAGhB,CAACrO,MAAO,cAAe5G,MAAO,0BAA2B+I,cAAc,EAAMhE,SAAQ,EAAMwP,MAAO,KAClG,CAAC3N,MAAO,YAAa5G,MAAO,eAAgB+I,cAAc,EAAMhE,SAAQ,EAAO6P,SAAU,IACzF,CACChO,MAAO7K,KAAK2O,GAAGE,EAAE,mBACjB5K,MAAO,UACPuU,MAAO,IACP7S,UAAWA,CAACoR,EAAMiC,EAAiBG,KAClC,IAAIC,EAAY7R,SAAS8R,cAAc,OACvCD,EAAUE,UAAY,eAEtB,IAAIC,EAAShS,SAAS8R,cAAc,UAMpC,OALAE,EAAOD,UAAY,4BACnBC,EAAOC,UAAY,uCAAyCxZ,KAAK2O,GAAGE,EAAE,oBACtE0K,EAAOjS,iBAAiB,QAAU2I,GAAUjQ,KAAKyZ,oBAAoBxJ,EAAO8G,EAAK2C,WACjFN,EAAUO,OAAOJ,GAEVH,GAERlQ,QAAQ,IAIZ,EACA0Q,uBAAsBA,IACdrH,2BAA2BsH,SACjC,2EAGHtZ,QAAS,CACR,+BAAMuZ,SACgB9Z,KAAKqP,KACxB7H,IAAI,sDAAuD,CAACuS,MAjItB,aAiIiEC,MAAO,SAC9GtZ,KAAKuZ,GAAUja,KAAK2W,gBAAkBsD,EAAO/Z,MAC7CQ,KAAK,IAAMV,KAAKqP,KAAK7H,IAAI,4DACzB9G,KAAKuZ,GAAWja,KAAK4W,wBAA0BqD,EAAO/Z,KAAK,GAAGga,wBAC9DtZ,MAAMR,GAASJ,KAAKma,UAAUC,kBAAkBha,GACnD,EACA,kBAAMia,GAELra,KAAKkI,MAAQlI,KAAK+P,MAAMuK,0BAA0B3V,gBAG5C3E,KAAK8Z,4BAGX9Z,KAAKkI,MAAMsG,QACVxO,KAAKqP,KAAKkL,SAAVva,yFAE6BA,KAAK4W,+BAI7B5W,KAAK2O,GAAGC,aAAa,CAAC,UAG5B5O,KAAKkI,MAAMsS,uBAAuB,iBAAkB,CAAC3P,MAAO7K,KAAK2O,GAAGE,EAAE,QAAS,sBAEhF,EACA4L,uBAAAA,GAECza,KAAKkI,MAAMsG,QACVxO,KAAKqP,KAAKkL,SAAVva,yFAE6BA,KAAK4W,wBAEpC,EACA6C,mBAAAA,CAAoBxJ,EAAOqH,GAC1B,MAAM5N,EAAM6I,2BAA2BsH,SACtC,2FACAvC,EAAIJ,UAAUwD,qBAEfzU,OAAOa,KAAK4C,EAAK,UAAUiR,OAC5B,EACAzC,gBAAAA,CAAiBhY,GAChB,IAAIiQ,EAAW,GAGf,IAAK,IAAIC,EAAW,EAAGA,EAAWlQ,EAAKgD,OAAQkN,IAC/C,CACC,IAAIC,EAAQnQ,EAAKkQ,GAGbC,EAAMzE,IAGL5L,KAAK4a,aAAa1a,EAAMmQ,IAAQF,EAAS9M,KAAK+M,EAEpD,CAGA,IAAK,IAAIG,EAAU,EAAGA,EAAUJ,EAASjN,OAAQqN,IAGhDrQ,EAAKsD,OAAO2M,EAASI,GAAWA,EAAS,GAG1C,OAAOrQ,CACR,EACA0a,YAAAA,CAAa1a,EAAMmQ,GAElB,IAAIyC,EAAWzC,EAAMzE,GAGrB,IAAK,IAAImH,EAAY,EAAGA,EAAY7S,EAAKgD,OAAQ6P,IACjD,CACC,IAAIC,EAAS9S,EAAK6S,GAGlB,GAAIC,EAAc,sBAAKF,EAStB,OANKE,EAAOC,YAAWD,EAAOC,UAAY,IAGrCD,EAAOC,UAAUjN,SAASqK,IAAQ2C,EAAOC,UAAU5P,KAAKgN,IAGtD,EAGC2C,EAAOC,WAAWjT,KAAK4a,aAAa5H,EAAOC,UAAW5C,EAChE,CAGA,OAAO,CACR,EACAwK,eAAAA,GACC,GAAmB,OAAf7a,KAAKkI,YAAiC/G,IAAfnB,KAAKkI,MAChC,CACC,IAAK,IAAImK,KAAUrS,KAAKgL,iBAEnBhL,KAAKkI,MAAM1B,QAAQkH,eAAe2E,KACrCrS,KAAKkI,MAAM1B,QAAQ6L,GAAUrS,KAAKgL,iBAAiBqH,IAErDrS,KAAK+P,MAAMuK,0BAA0B/L,aACtC,CACD,GAEDjN,SAAU,+pDCjOXwZ,EAAe,CACdC,UAAUC,IACF,CACNvR,OAAQ,MACRC,IAAK,qCACLC,OAAQ,CAAEqR,qBAGZC,QAAQD,IACA,CACNvR,OAAQ,MACRC,IAAK,mCACLC,OAAQ,CAAEqR,sBCNN,MAAME,EAAqB,CACjCxQ,WAAY,CACXvL,iBAEDE,MAAO,CACN8b,qBAAsBvX,OACtBwX,mBAAoBxX,OACpByX,YAAa7b,QACb8b,kBAAmB,CAClB/b,KAAMsF,OACNlD,QAAS,4BAGXzB,KAAIA,KACI,CACNqb,WAAY,CAAA,EACZxQ,SAAU,CAAA,IAGZ7I,SAAU,CAITsZ,iBAAAA,GAEC,IAAIC,EAAKzb,KAAKub,WAAa,IAAIvb,KAAKub,YAAc,CAAA,EAKlD,OAJuB,MAAnBvb,KAAKub,YAAmD,MAA7Bvb,KAAKmb,sBAAgCvX,OAAO6T,KAAKzX,KAAKmb,sBAAsBjY,OAAS,IAEnHuY,EAAGzb,KAAKmb,qBAAqBrQ,aAAe9K,KAAKmb,sBAE3CM,CACR,EAIAC,eAAAA,GAEC,IAAIC,EAAK3b,KAAK+K,SAAW,IAAI/K,KAAK+K,UAAY,CAAA,EAK9C,OAJqB,MAAjB/K,KAAK+K,UAA+C,MAA3B/K,KAAKob,oBAA8BxX,OAAO6T,KAAKzX,KAAKob,oBAAoBlY,OAAS,IAE7GyY,EAAG3b,KAAKob,mBAAmBtQ,aAAe9K,KAAKob,oBAEzCO,CACR,GAEDpb,QAAS,CAIRqb,kBAAiBA,IACTrJ,2BAA2BC,YAAc,IAAMD,2BAA2BE,cAKlFoJ,0BAAAA,GACC,OAAO7b,KAAKqP,KAAKnK,KAAK4V,EAAcC,UAAU/a,KAAK4b,qBACpD,EAIAE,4BAAAA,GACC,OAAO9b,KAAKqP,KAAKnK,KAAK4V,EAAcG,QAAQjb,KAAK4b,qBAClD,EAIAG,0BAAAA,CAA2B7b,GAC1BF,KAAKub,WAAarb,GAAQ,CAAA,CAC3B,EAIA8b,wBAAAA,CAAyB9b,GACxBF,KAAK+K,SAAW7K,GAAQ,CAAA,CACzB,EAIA+b,gBAAgBC,GACPA,EAAO9J,SAAkB,WAAP,MAG5B9Q,SAAU,uyFCzFX,IAAA6a,EAAe,CACdA,MAAAA,CAAOC,EAAgBxX,GAEtB,OAAO5E,KAAKqc,QAAQC,KADR,oCACkBF,EAAgBxX,EAC/C,EACA2X,cAAAA,CAAeH,EAAgBxX,GAE9B,OAAO5E,KAAKqc,QAAQC,KADR,4CACkBF,EAAgBxX,EAC/C,EACA4X,WAAAA,CAAYJ,GAEX,OAAOpc,KAAKqc,QAAQC,KADR,yCACkBF,EAC/B,GCZDK,EAAe,CACd7N,YAAAA,CAAa8N,GACZ,OAAO1c,KAAKqc,QAAQ7U,IAAI,uCAAyCkV,EAClE,EACAC,WAAAA,CAAYC,EAAWC,GACtB,MAAMC,EAAU,CAACF,aAAYC,YAC7B,OAAO7c,KAAKqc,QAAQC,KAAK,uCAAwCQ,EAClE,EACAC,WAAAA,GACC,OAAO/c,KAAKqc,QAAQ7U,IAAI,uCAAwC,CAAA,EACjE,EACAwV,oBAAAA,GACC,OAAOhd,KAAKqc,QAAQ7U,IAAI,2CAA4C,CAAA,EACrE,GCbDyV,EAAe,CACdlC,SAAAA,CAAUC,GACT,OAAOhb,KAAKqc,QAAQ7U,IACnB,qCACA,CAAEwT,mBAEJ,EACAC,QAAS,SAASD,GACjB,OAAOhb,KAAKqc,QAAQ7U,IACnB,mCACA,CAAEwT,mBAEJ,GCZDkC,EAAe,CACdlb,gBAAAA,CAAiBwH,GAChB,OAAOxJ,KAAKqc,QAAQC,KACnB,2CACA,CACC1S,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBC,iBAAkBN,EAASM,kBAG9B,EACAC,kBAAAA,CAAmBP,GAClB,OAAOxJ,KAAKqc,QAAQC,KACnB,6CACA,CACC1S,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBG,SAAUR,EAASQ,UAGtB,EACAC,iBAAAA,CAAkBT,GACjB,OAAOxJ,KAAKqc,QAAQC,KACnB,4CACA,CACC1S,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBK,aAAcV,EAASU,cAG1B,EACAC,cAAAA,CAAeX,GACd,OAAOxJ,KAAKqc,QAAQC,KACnB,yCACA,CACC1S,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBO,YAAaZ,EAASY,aAGzB,EACAC,iBAAAA,CAAkBb,GACjB,OAAOxJ,KAAKqc,QAAQC,KACnB,4CACA,CACC1S,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBO,YAAaZ,EAASY,aAGzB,EACAE,aAAAA,CAAcd,GACb,OAAOxJ,KAAKqc,QAAQ7U,IACnB,oCACA,CACCoC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,WACrBG,SAAUR,EAASQ,UAGtB,EACAO,SAAAA,CAAUf,GACT,OAAOxJ,KAAKqc,QAAQ7U,IACnB,oCACA,CACCoC,eAAgBJ,EAASI,eACzBC,WAAYL,EAASK,YAGxB,GCrEDsT,EAAe,CACdC,UAAW,CACVC,UAAAA,CAAWC,EAAWC,GACrB,MAAM7T,EAAM,+CACMvI,IAAdmc,EAA0B,uBAAyBA,EAAY,0BAA4BC,GAC/F,OAAOvd,KAAKqc,QAAQ7U,IAAIkC,EACzB,EACA8T,MAAAA,CAAOC,EAAQF,EAAeG,GAC7B,OAAO1d,KAAKqc,QAAQC,KAAK,qDAAsD,CAC9E3F,gBAAiB8G,EACjBF,gBACAG,SACE,CACFC,cAAe,UAEjB,EACAC,MAAAA,CAAON,GACN,OAAK5b,MAAM0D,QAAQkY,GAKZ7c,QAAQod,WAAWP,EAAU1X,IAAIkY,GAAU9d,KAAKqc,QAAQC,KAC9D,qDACA,CAAEgB,UAAWQ,EAAOC,uBACpB,CAAEC,YAAa,IAAMF,EAAOC,0BAPrB/d,KAAKqc,QAAQC,KACnB,qDACA,CAAEgB,aAOL,GAEDW,cAAe,CACdZ,UAAAA,CAAWC,EAAWC,GACrB,MAAM7T,EAAM,mDACMvI,IAAdmc,EAA0B,uBAAyBA,EAAY,0BAA4BC,GAC/F,OAAOvd,KAAKqc,QAAQ7U,IAAIkC,EACzB,EACA8T,MAAAA,CAAO7G,EAAiB4G,EAAeG,EAAOQ,EAAsBC,GACnE,OAAOne,KAAKqc,QAAQC,KAAK,yDAA0D,CAClF3F,kBACA4G,gBACAG,QACAQ,uBACAC,cACE,CACFR,cAAe,UAEjB,EACAC,MAAAA,CAAON,GACN,OAAOtd,KAAKqc,QAAQC,KAAK,yDAA0D,CAClFgB,aACE,CACFK,cAAe,UAEjB,GAEDS,aAAc,CACbf,UAAAA,CAAWE,GACV,MAAM7T,EAAM,mEAAqE6T,EACjF,OAAOvd,KAAKqc,QAAQ7U,IAAIkC,EACzB,EACA2U,MAAAA,CAAOf,GACN,MAAM5T,EAAM,mDAAqD4T,EACjE,OAAOtd,KAAKqc,QAAQ7U,IAAIkC,EACzB,EACA8T,MAAAA,CAAOD,EAAe5G,GACrB,OAAO3W,KAAKqc,QAAQC,KAAK,wDAAyD,CACjFiB,gBACA5G,mBACE,CACFgH,cAAe,UAEjB,EACAC,MAAAA,CAAOL,EAAe5G,GACrB,OAAO3W,KAAKqc,QAAQC,KAAK,wDAAyD,CACjFiB,gBACA5G,mBACE,CACFgH,cAAe,UAEjB,EACAW,OAAAA,CAAQC,EAAcC,GACrB,OAAOxe,KAAKqc,QAAQC,KAAK,mDAAoD,CAC5EiC,eACAC,gBAEF,GAEDC,QAAS,CACRC,OAAAA,GACC,OAAO1e,KAAKqc,QAAQ7U,IAAI,oDACzB,EACAmX,WAAAA,CAAYjV,EAAK9E,EAAQ+E,GACxB,OAAO3J,KAAKqc,QACV7U,IAAI,mDAAqDkC,GACzDhJ,KAAKyN,GAAOA,EAAIjO,KACnB,EACA0e,UAAAA,CAAWtB,GACV,OAAOtd,KAAKqc,QAAQ7U,IAAI,kDAAoD8V,EAC7E,EACAuB,cAAAA,CAAeC,EAAOC,GACrB,OAAO/e,KAAKqc,QAAQC,KACnB,qDACA,CAAEwC,SACF,CACgCC,OAAQA,EACRC,QAAS,KAG3C,EACAC,OAAAA,CAAQnB,GACP,OAAKpc,MAAM0D,QAAQ0Y,GAKZrd,QAAQod,WAAWC,EAAOlY,IAAIvD,GAAKrC,KAAKqc,QAAQC,KACtD,oDACAja,EACA,CAAE2b,YAAa,IAAM3b,EAAE0b,0BAPhB/d,KAAKqc,QAAQC,KACnB,oDACAwB,EAOH,EACAoB,MAAAA,CAAOpB,GACN,OAAKpc,MAAM0D,QAAQ0Y,GAKZrd,QAAQod,WAAWC,EAAOlY,IAAIvD,GAAKrC,KAAKqc,QAAQC,KACtD,mDACAja,EACA,CAAE2b,YAAa,IAAM3b,EAAE0b,0BAPhB/d,KAAKqc,QAAQC,KACnB,mDACAwB,EAOH,EACAqB,MAAAA,CAAOrB,GACN,OAAKpc,MAAM0D,QAAQ0Y,GAKZrd,QAAQod,WAAWC,EAAOlY,IAAIvD,GAAKrC,KAAKqc,QAAQC,KACtD,mDACAja,EACA,CAAE2b,YAAa,IAAM3b,EAAE0b,0BAPhB/d,KAAKqc,QAAQC,KACnB,mDACAwB,EAOH,EACAsB,KAAAA,CAAMtB,GACL,OAAKpc,MAAM0D,QAAQ0Y,GAKZrd,QAAQod,WAAWC,EAAOlY,IAAIvD,GAAKrC,KAAKqc,QAAQC,KACtD,kDACAja,EACA,CAAE2b,YAAa,IAAM3b,EAAE0b,0BAPhB/d,KAAKqc,QAAQC,KACnB,kDACAwB,EAOH,EACAuB,OAAAA,CAAQvB,GACP,OAAKpc,MAAM0D,QAAQ0Y,GAKZrd,QAAQod,WAAWC,EAAOlY,IAAIvD,GAAKrC,KAAKqc,QAAQC,KACtD,oDACAja,EACA,CAAE2b,YAAa,IAAM3b,EAAE0b,0BAPhB/d,KAAKqc,QAAQC,KACnB,oDACAwB,EAOH,EACAwB,MAAAA,CAAOxB,GACN,OAAKpc,MAAM0D,QAAQ0Y,GAKZrd,QAAQod,WAAWC,EAAOlY,IAAIvD,GAAKrC,KAAKqc,QAAQC,KACtD,mDACAja,EACA,CAAE2b,YAAa,IAAM3b,EAAE0b,0BAPhB/d,KAAKqc,QAAQC,KACnB,mDACAwB,EAOH,EACAyB,gBAAAA,CAAiBzB,GAChB,OAAKpc,MAAM0D,QAAQ0Y,GAKZrd,QAAQod,WAAWC,EAAOlY,IAAIvD,GAAKrC,KAAKqc,QAAQC,KACtD,uDACAja,EACA,CAAE2b,YAAa,IAAM3b,EAAE0b,0BAPhB/d,KAAKqc,QAAQC,KACnB,uDACAwB,EAOH,EACA0B,aAAAA,CAAc1B,GACb,OAAKpc,MAAM0D,QAAQ0Y,GAKZrd,QAAQod,WAAWC,EAAOlY,IAAIvD,GAAKrC,KAAKqc,QAAQC,KACtD,oDACAja,EACA,CAAE2b,YAAa,IAAM3b,EAAE0b,0BAPhB/d,KAAKqc,QAAQC,KACnB,oDACAwB,EAOH,IC5NF2B,EAAe,CAEbC,QAAS,SAAUtK,GACjB,OAAOpV,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,mCAAmCvK,IAAM,CAAA,EAE7C,EAEAwK,WAAY,SAAU/c,GACpB,OAAO7C,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,sCAAsC9c,IACtC,CAAA,EAGJ,EAEAgd,UAAW,SAAUzK,GACnB,OAAOpV,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,oCACA,CACEvK,IAAIA,GAGV,EAEA0K,cAAe,SAAU1K,GACvB,OAAOpV,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,yCAAyCvK,IACzC,CAAA,EAEJ,EAEA2K,kBAAmB,WACjB,OAAO/f,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,4CAA4C,GAEhD,EAEAK,kBAAmB,WACjB,OAAOhgB,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,4CAA4C,GAEhD,EAEAM,aAAc,SAASC,EAAOC,GAC5B,OAAOngB,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,wCAAwCO,KAAUC,IAClD,CAAA,EAGJ,EACAC,eAAe,WACb,OAAOpgB,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,yCAAyC,GAE7C,GCvEFU,EAAe;;AAGXC,UAAW,WACP,OAAOtgB,KAAKqc,QAAQ7U,IACpB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,0CAA0C,GAC9C,EAEAY,SAAU,WACN,OAAOvgB,KAAKqc,QAAQ7U,IACpB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,yCAAyC,GAC7C,EAEAa,oBAAqB,UAAUC,iBAACA,EAAgBrL,IAAEA,EAAGsL,eAAEA,EAAcC,MAAEA,EAAKC,iBAAEA,IAE5E,OAAO5gB,KAAKqc,QAAQC,KAClB/J,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,oDAAoD,CAACc,mBAAkBrL,MAAKsL,iBAAgBC,QAAOC,oBACvG,EAEAC,kBAAmB,UAAUJ,iBAACA,EAAgBrL,IAAEA,EAAGuL,MAAEA,EAAKD,eAAEA,IAC1D,OAAO1gB,KAAKqc,QAAQC,KAClB/J,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,kDAAkD,CAACc,mBAAiBrL,MAAIuL,QAAMD,kBAClF,EAEAI,WAAY,SAAUC,EAAKC,EAAU,MAEnC,OAAOhhB,KAAKqc,QAAQC,KAClB/J,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,4CAA4CqB,IAC5CD,EAEJ,EAEAE,sBAAuB,SAAUC,GAC/B,OAAOlhB,KAAKqc,QAAQ7U,IAClB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,uDAAuDuB,IAAY,CAAA,EACvE,EAEAC,oBAAqB,SAAU/L,EAAM,KAAM1D,EAAK,MAE5C,OAAO1R,KAAKqc,QAAQ7U,IACpB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,oDACA,IAAKvK,EAAI,CAACA,OAAK,MACT1D,EAAG,CAACA,MAAI,CAAA,GAElB,EAEA0P,oBAAqB,SAAUT,EAAO7D,EAASuE,EAAS,MAEtD,OAAOrhB,KAAKqc,QAAQC,KAClB/J,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,oDACA,CACEgB,QACA7D,aACIuE,EAAS,CAAEA,UAAW,CAAA,GAEhC,EAEAC,oBAAqB,SAAUX,EAAO7D,EAASyE,EAAIF,EAAS,MAE1D,OAAOrhB,KAAKqc,QAAQC,KAClB/J,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,oDACA,CACEgB,QACA7D,UACAyE,QACIF,EAAS,CAAEA,OAAQA,GAAW,CAAA,GAExC,EAEAG,oBAAqB,SAAUN,GAE7B,OAAOlhB,KAAKqc,QAAQC,KAClB/J,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,oDACA,CACEuB,aAEN,GC/FJO,EAAe,CACdC,WAAAA,CAAYC,EAAYC,EAAYC,GACnC,OAAO7hB,KAAKqc,QAAQC,KACnB,sCACA,CAAGqF,aAAYC,aAAYC,YAE7B,EACAC,UAAAA,GACC,OAAO9hB,KAAKqc,QAAQ7U,IACnB,kCACA,CAAA,EAEF,EACAua,oBAAAA,CAAqBJ,EAAYC,EAAYC,GAC5C,OAAO7hB,KAAKqc,QAAQC,KACnB,6CAA6CqF,IAC7C,CAAEC,aAAYC,YAEhB,EACAG,uBAAAA,CAAwBJ,EAAYC,GACnC,OAAO7hB,KAAKqc,QAAQC,KACnB,4CACA,CAAEsF,aAAYC,YAEhB,EACAI,6BAAAA,CAA8BC,GAC7B,OAAOliB,KAAKqc,QAAQ7U,IACnB,yDAAyD0a,IACzD,GAEF,EACAC,2BAAAA,CAA4BC,GAC3B,OAAOpiB,KAAKqc,QAAQ7U,IACnB,uDAAuD4a,IACvD,GAEF,EACAC,YAAAA,CAAaT,EAAYC,EAAUS,GAClC,OAAOtiB,KAAKqc,QAAQ7U,IACnB,uCACA,CAAEoa,aAAYC,WAAUS,SAE1B,GCxBDC,EAAe,CACdC,QCpBc,CACdhb,GAAAA,GACC,OAAOxH,KAAKqc,QAAQ7U,IAAI,8BACzB,EACAib,UAAW,CACVjb,GAAAA,GACC,OAAOxH,KAAKqc,QAAQ7U,IAAI,gCACzB,EACAT,GAAAA,CAAI0b,GACH,OAAOziB,KAAKqc,QAAQC,KAAK,oCAAqC,CAC7DmG,aAEF,IDSDC,SErBc,CACdtN,GAAAA,CAAIA,EAAK8E,GACR,IAAIxQ,EAAM,gCACPiZ,mBAAmBzI,GACnB,QACAyI,mBAAmBvN,GACtB,OAAOpV,KAAKqc,QAAQ9B,OAAO7Q,EAC5B,EACAkZ,UAAAA,CAAWrF,EAAerD,GACzB,IAAIxQ,EAAM,gCACPiZ,mBAAmBzI,GACnB,eACAyI,mBAAmBpF,GACtB,OAAOvd,KAAKqc,QAAQ9B,OAAO7Q,EAC5B,EACAmZ,MAAAA,CAAOC,EAAW5I,GACjB,IAAIxQ,EAAM,gCACPiZ,mBAAmBzI,GACnB,WACAyI,mBAAmBG,GACtB,OAAO9iB,KAAKqc,QAAQ9B,OAAO7Q,EAC5B,EACA8Y,OAAAA,CAAQO,GACP,OAAO/iB,KAAKqc,QAAQ9B,OAAO,gCAAkCwI,EAC9D,GFFAhgB,OGtBc,CACdigB,MAAAA,GACC,OAAOhjB,KAAKqc,QAAQ7U,IAAI,oCACzB,EACAyb,MAAAA,CAAOC,GACN,OAAOljB,KAAKqc,QAAQC,KAAK,oCAAqC,CAC7D4G,kBAEF,GHeAC,MIvBc,CACdC,eAAAA,CAAgBxe,EAAQoT,GAavB,OAZApT,EAAOye,QAAU,gCACjBze,EAAO0e,WAAa,KACJ,CACdR,UAAW9K,EAAK9C,WAAW4N,WAAa9K,EAAK9C,WAAWtP,IAAI2d,GAAKA,EAAET,WACnEU,UAAWxL,EAAKjV,OAChBmgB,eAAgBlL,EAAKyL,sBAAwBzL,EAAK0L,OAAS,KAI7D9e,EAAO+e,gBAAkB,CAACja,EAAK9E,EAAQ+E,IAAW3J,KAAKqc,QAAQC,KAAK5S,EAAKC,EAAQ/E,GACjFA,EAAOqT,aAAe,CAACvO,EAAKC,EAAQ1I,IAAaA,EAASf,KAEnD0E,CACR,EACAgf,YAAAA,CAAaC,EAAM3jB,GAClB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,yCAA0C3jB,EAAM,CAC9E4jB,oBAAqB1jB,IAAS,GAEhC,EACA2jB,MAAAA,CAAOF,EAAM3jB,GACZ,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,mCAAoC3jB,EACpE,EACAqQ,OAAAA,CAAQrQ,GACP,OAAOF,KAAKqc,QAAQC,KAAK,oCAAqCpc,EAC/D,EACA8jB,IAAAA,CAAKH,EAAM3jB,GACV,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,mCAAoC3jB,EACpE,EACA+jB,OAAOC,GACN,OAAOlkB,KAAKqc,QAAQC,KAAK,mCAAoC,CAAC4H,cAC/D,EACAC,gBAAAA,GACC,OAAOnkB,KAAKqc,QAAQ7U,IAAI,6CACzB,GJXAyF,MKxBc,CACdmX,UAAAA,CAAW1a,EAAK9E,EAAQ+E,GACvB,OAAO3J,KAAKqc,QAAQ7U,IAAI,0CAA4CmC,EAAO+H,GAC5E,EACA2S,WAAAA,CAAY1a,GACX,OAAO3J,KAAKqc,QAAQC,KAAK,4CAA6C3S,EACvE,GLmBA2a,QMzBc,CAEdC,WAAAA,CAAa7a,EAAK9E,EAAQ+E,GACzB,OAAO3J,KAAKqc,QAAQ7U,IAAI,2CAA6CmC,EAAO+H,GAC7E,EACA8S,aAAAA,CAAcX,EAAMnS,EAAIxR,GACvB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,6CAA+CnS,EAC7ExR,EAEF,EACAukB,WAAAA,CAAYC,GACX,OAAO1kB,KAAKqc,QAAQC,KAAK,2CAA4C,CAACoI,cACvE,EACAC,aAAAA,CAAcd,EAAMa,EAAYxkB,GAC/B,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,6CAA+Ca,EAC7ExkB,EAEF,EACA0kB,aAAAA,CAAcF,GACb,OAAO1kB,KAAKqc,QAAQC,KAAK,6CAA8C,CAACoI,cACzE,EACAG,SAAAA,CAAUC,GACT,OAAO9kB,KAAKqc,QAAQ7U,IAAI,yCAA2Csd,EACpE,EACAC,SAAAA,CAAUC,GACT,OAAOhlB,KAAKqc,QAAQ7U,IAAI,yCAA2Cwd,EACpE,EACAC,UAAAA,GACC,OAAOjlB,KAAKqc,QAAQ7U,IAAI,0CACzB,EACA0d,gBAAAA,GACC,OAAOllB,KAAKqc,QAAQ7U,IAAI,gDACzB,EAGA2d,iBAAAA,CAAmBzb,EAAK9E,EAAQ+E,GAC/B,OAAO3J,KAAKqc,QAAQ7U,IAAI,iDAAmDmC,EAAO+H,GACnF,EACA0T,oBAAAA,CAAqBvB,EAAMnS,EAAIxR,GAC9B,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,oDAAsDnS,EACpFxR,EAEF,EACAmlB,kBAAAA,CAAmBC,GAClB,OAAOtlB,KAAKqc,QAAQC,KAAK,kDAAmD,CAACgJ,qBAC9E,EACAC,oBAAAA,CAAqB1B,EAAMyB,EAAmBplB,GAC7C,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,oDAAsDyB,EACpFplB,EAEF,EACAslB,oBAAAA,CAAqBF,GACpB,OAAOtlB,KAAKqc,QAAQC,KAAK,oDAAqD,CAACgJ,qBAChF,EAGAG,WAAAA,CAAa/b,EAAK9E,EAAQ+E,GACzB,OAAO3J,KAAKqc,QAAQ7U,IAAI,2CAA6CmC,EAAO+H,GAC7E,EACAgU,aAAAA,CAAc7B,EAAMnS,EAAIxR,GACvB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,6CAA+CnS,EAC7ExR,EAEF,EACAylB,WAAAA,CAAYC,GACX,OAAO5lB,KAAKqc,QAAQC,KAAK,2CAA4C,CAACsJ,cACvE,EACAC,aAAAA,CAAchC,EAAM+B,EAAY1lB,GAC/B,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,6CAA+C+B,EAC7E1lB,EAEF,EACA4lB,aAAAA,CAAcF,GACb,OAAO5lB,KAAKqc,QAAQC,KAAK,6CAA8C,CAACsJ,cACzE,EACAG,mBAAAA,CAAoBf,GACnB,OAAOhlB,KAAKqc,QAAQ7U,IAAI,mDAAqDwd,EAC9E,EACAgB,eAAAA,GACC,OAAOhmB,KAAKqc,QAAQ7U,IAAI,+CACzB,GNtDAob,WO1Bc,CAIdpb,GAAAA,CAAI+V,EAAerD,GAClB,OAAQla,KAAKqc,QAAQC,KACpB,sCACEqG,mBAAmBpF,GACnB,IACAoF,mBAAmBzI,GAEvB,EACA+L,gBAAAA,CAAiBpC,EAAMtG,EAAerd,GACrC,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,mDAAqDtG,EACnFrd,EAEF,EACAgmB,iBAAAA,GACC,OAAOlmB,KAAKqc,QAAQ7U,IAAI,oDACzB,EACA2e,kBAAAA,GACC,OAAOnmB,KAAKqc,QAAQ7U,IAAI,qDACzB,EACA4e,kBAAAA,GACC,OAAOpmB,KAAKqc,QAAQ7U,IAAI,qDACzB,EACAkX,OAAAA,GACC,OAAO1e,KAAKqc,QAAQ7U,IAAI,qCACzB,EACA6e,aAAAA,GACC,OAAOrmB,KAAKqc,QAAQ7U,IAAI,gDACzB,EACA8e,kBAAAA,GACC,OAAOtmB,KAAKqc,QAAQ7U,IAAI,qDACzB,EACA+e,mBAAAA,GACC,OAAOvmB,KAAKqc,QAAQ7U,IAAI,sDACzB,EACAgf,WAAAA,GACC,OAAOxmB,KAAKqc,QAAQ7U,IAAI,8CACzB,EACAif,cAAAA,GACC,OAAOzmB,KAAKqc,QAAQ7U,IAAI,iDACzB,EAGAkf,oBAAAA,CAAsBhd,EAAK9E,EAAQ+E,GAClC,OAAO3J,KAAKqc,QAAQ7U,IAAI,mDAAqDmC,EAAO+H,GACrF,EACAiV,SAAAA,CAAUC,GACT,OAAQ5mB,KAAKqc,QAAQC,KAAK,6CAA8C,CAACsK,mBAC1E,EACAC,aAAAA,EAActJ,cAACA,EAAauJ,cAAEA,EAAa5M,uBAAEA,EAAsB6M,oBAAEA,IACpE,OAAO/mB,KAAKqc,QAAQC,KAAK,4CACtBiB,EAAgB,IAChBuJ,EAAgB,IAChB5M,EAAyB,IACzB6M,EAEJ,EACAC,aAAAA,EAAczJ,cAACA,EAAauJ,cAAEA,EAAa5M,uBAAEA,EAAsB6M,oBAAEA,IACpE,OAAO/mB,KAAKqc,QAAQC,KAAK,4CACtBiB,EAAgB,IAChBuJ,EAAgB,IAChB5M,EAAyB,IACzB6M,EAEJ,EACAE,YAAAA,CAAavV,GACZ,OAAO1R,KAAKqc,QAAQ7U,IAAI,2CAA6CkK,EACtE,EACAwV,YAAAA,EAAa3J,cAACA,EAAauJ,cAAEA,EAAa5M,uBAAEA,EAAsB6M,oBAAEA,IACnE,OAAO/mB,KAAKqc,QAAQC,KAAK,2CACtBiB,EAAgB,IAChBuJ,EAAgB,IAChB5M,EAAyB,IACzB6M,EAEJ,EACAI,uBAAAA,GACC,OAAOnnB,KAAKqc,QAAQ7U,IAAI,sDACzB,EAGA4f,qBAAAA,CAAuB1d,EAAK9E,EAAQ+E,GACnC,OAAO3J,KAAKqc,QAAQ7U,IAAI,wDAA0DmC,EAAO+H,GAC1F,GP3DA2V,OQ3Bc,CAIdC,YAAAA,CAAazD,EAAMnS,EAAIxR,GACtB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,2CAA6CnS,EAC3ExR,EAEF,EACAqnB,UAAAA,EAAWhK,cAACA,EAAauJ,cAAEA,EAAa5M,uBAAEA,EAAsB6M,oBAAEA,IACjE,OAAO/mB,KAAKqc,QAAQC,KACnB,yCACEiB,EAAgB,IAChBuJ,EAAgB,IAChB5M,EAAyB,IACzB6M,EAEJ,EACAS,YAAAA,CAAa3D,GAAMtG,cAACA,EAAauJ,cAAEA,EAAa5M,uBAAEA,EAAsB6M,oBAAEA,GAAsB7mB,GAC/F,OAAOF,KAAKqc,QAAQC,KACnBuH,EACA,2CACEtG,EAAgB,IAChBuJ,EAAgB,IAChB5M,EAAyB,IACzB6M,EACF7mB,EAEF,EACAunB,gBAAAA,CAAiBlK,GAChB,OAAOvd,KAAKqc,QAAQ7U,IAAI,mDAAqD+V,EAC9E,EACAmK,cAAAA,CAAenK,GACd,OAAOvd,KAAKqc,QAAQ7U,IAAI,iDAAmD+V,EAC5E,EACAoK,gBAAAA,GACC,OAAO3nB,KAAKqc,QAAQ7U,IAAI,+CACzB,EACAogB,QAAAA,GACC,OAAO5nB,KAAKqc,QAAQ7U,IAAI,sCACzB,EAIAqgB,UAAAA,CAAWnW,EAAIxR,GACd,OAAOF,KAAKqc,QAAQC,KAAK,yCAA2C5K,EACnExR,EACA,CAAC8d,YAAatM,GAEhB,EACAoW,YAAAA,CAAapW,EAAIxR,GAChB,OAAOF,KAAKqc,QAAQC,KAAK,2CAA6C5K,EACrExR,EACA,CAAC8d,YAAatM,GAEhB,EACAqW,cAAAA,GACC,OAAO/nB,KAAKqc,QAAQ7U,IAAI,6CACzB,GR9BAwgB,QS5Bc,CACdxgB,GAAAA,CAAI+V,EAAerD,GAClB,IAAIxQ,EAAM,mCACPiZ,mBAAmBpF,GACnB,IACAoF,mBAAmBzI,GACtB,OAAOla,KAAKqc,QAAQC,KAAK5S,EAC1B,EACAue,IAAAA,CAAKpE,EAAMtG,EAAerD,EAAwBha,GACjD,IAAIwJ,EAAM,oCACPiZ,mBAAmBpF,GACnB,IACAoF,mBAAmBzI,GACtB,OAAOla,KAAKqc,QAAQC,KAAKuH,EAAMna,EAAKxJ,EACrC,GTeAgoB,KU7Bc,CACdC,aAAAA,CAAcze,EAAK9E,EAAQ+E,GAC1B,OAAO3J,KAAKqc,QAAQ7U,IAAI,8CAAgDmC,EAAO+H,GAChF,EACA0W,YAAAA,CAAaC,GACZ,OAAOroB,KAAKqc,QAAQ7U,IAAI,6CAA+C6gB,EACxE,EACAC,kBAAAA,GACC,OAAOtoB,KAAKqc,QAAQ7U,IAAI,kDACzB,EACA+gB,mBAAAA,CAAoBroB,GACnB,OAAOF,KAAKqc,QAAQC,KAAK,oDAAqDpc,EAC/E,EACAsoB,eAAAA,CAAgBpT,GACf,OAAOpV,KAAKqc,QAAQ7U,IAAI,gDAAkD4N,EAC3E,EACAqT,qBAAAA,CAAsBrT,EAAKsT,GAC1B,OAAO1oB,KAAKqc,QAAQ7U,IAAI,sDAAwD4N,EAAM,IAAMsT,EAC7F,EACAC,YAAAA,CAAavT,GACZ,OAAOpV,KAAKqc,QAAQ7U,IAAI,6CAA+C4N,EACxE,EACAwT,gBAAAA,CAAiBlX,GAChB,OAAO1R,KAAKqc,QAAQ7U,IAAI,iDAAmDkK,EAC5E,EACAmX,QAAAA,GACC,OAAO7oB,KAAKqc,QAAQ7U,IAAI,wCACzB,EACAshB,kBAAAA,CAAmB5oB,GAClB,OAAQF,KAAKqc,QAAQC,KAAK,mDAAoDpc,EAC/E,EACA6oB,WAAAA,CAAYlF,EAAM3jB,GACjB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAK,+CAAiD3jB,EAChF,EACA8oB,cAAAA,CAAenF,EAAMnS,EAAIxR,GACxB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAK,+CAAiDnS,EAAKxR,EACrF,EACA+oB,cAAAA,CAAevX,GACd,OAAO1R,KAAKqc,QAAQC,KAAK,+CAAiD5K,EAC3E,GVTAwX,kBW9Bc,CAEdC,oBAAAA,CAAsBzf,EAAK9E,EAAQ+E,GAClC,OAAO3J,KAAKqc,QAAQ7U,IAAI,8DAAgEmC,EAAO+H,GAChG,EACA0X,uBAAAA,CAAwBvF,EAAM3jB,GAC7B,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,iEAAkE3jB,EAElG,EACAmpB,qBAAAA,CAAsB3X,GACrB,OAAO1R,KAAKqc,QAAQC,KAAK,+DAAgE,CAAC5K,MAC3F,EACA4X,uBAAAA,CAAwBzF,EAAM3jB,GAC7B,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,iEAAkE3jB,EAElG,EACAqpB,uBAAAA,CAAwB7X,GACvB,OAAO1R,KAAKqc,QAAQC,KAAK,iEAAkE,CAAC5K,MAC7F,EACA8X,yBAAAA,GACC,OAAOxpB,KAAKqc,QAAQ7U,IAAI,mEACzB,EACAiiB,gBAAAA,GACC,OAAOzpB,KAAKqc,QAAQ7U,IAAI,0DACzB,EACAkiB,gBAAAA,GACC,OAAO1pB,KAAKqc,QAAQ7U,IAAI,0DACzB,EACAmiB,YAAAA,CAAazG,GACZ,OAAOljB,KAAKqc,QAAQC,KAAK,sDAAuD,CAAC4G,kBAClF,EACA0G,iBAAAA,CAAkB1G,GACjB,OAAOljB,KAAKqc,QAAQC,KAAK,2DAA4D,CAAC4G,kBACvF,EACA2G,cAAAA,CAAe7E,GACd,OAAOhlB,KAAKqc,QAAQ7U,IAAI,wDAA0Dwd,EACnF,EACA8E,UAAAA,CAAW9E,GACV,OAAOhlB,KAAKqc,QAAQ7U,IAAI,oDAAsDwd,EAC/E,EACA6D,QAAAA,GACC,OAAO7oB,KAAKqc,QAAQ7U,IAAI,kDACzB,EACAuiB,qBAAAA,CAAsBC,GACrB,OAAOhqB,KAAKqc,QAAQC,KAAK,+DAAgE,CAAC0N,QAE3F,GXfAC,OY/Bc,CACdC,IAAAA,GACC,OAAOlqB,KAAKqc,QAAQ7U,IAAI,kCACzB,EACA2iB,cAAAA,CAAe5M,EAAerD,GAC7B,IAAIxQ,EAAM,6CAA+CiZ,mBAAmBpF,GAI5E,OAHMrD,IACLxQ,EAAMA,EAAM,IAAMiZ,mBAAmBzI,IAE/Bla,KAAKqc,QAAQ7U,IAAIkC,EACzB,EACA0gB,kBAAAA,CAAmB7M,EAAerD,GACjC,IAAIxQ,EAAM,iDAAmDiZ,mBAAmBpF,GAIhF,OAHMrD,IACLxQ,EAAMA,EAAM,IAAMiZ,mBAAmBzI,IAE/Bla,KAAKqc,QAAQ7U,IAAIkC,EACzB,EACA2gB,iBAAAA,CAAkB9M,EAAerD,GAChC,IAAIxQ,EAAM,gDAAkDiZ,mBAAmBpF,GAI/E,OAHMrD,IACLxQ,EAAMA,EAAM,IAAMiZ,mBAAmBzI,IAE/Bla,KAAKqc,QAAQ7U,IAAIkC,EACzB,EACA4gB,iBAAAA,EAAkB5P,qBAACA,EAAoB6P,YAAEA,EAAWrQ,uBAAEA,EAAsBsQ,KAAEA,EAAIC,8BAAEA,IACnF,OAAOzqB,KAAKqc,QAAQC,KACnB,+CACA,CACC5B,uBACA6P,cACArQ,yBACAsQ,QAED,CACCxM,YAAayM,GAGhB,EACAC,iBAAAA,EAAkBhQ,qBAACA,EAAoB6P,YAAEA,EAAWrQ,uBAAEA,EAAsBuQ,8BAAEA,IAC7E,OAAOzqB,KAAKqc,QAAQC,KACnB,+CACA,CACC5B,uBACA6P,cACArQ,0BAED,CACC8D,YAAayM,GAGhB,EACAE,gCAAAA,EAAiCjQ,qBAACA,EAAoB6P,YAAEA,EAAWrQ,uBAAEA,EAAsBuQ,8BAAEA,IAC5F,OAAOzqB,KAAKqc,QAAQC,KACnB,8DACA,CACC5B,uBACA6P,cACArQ,0BAED,CACC8D,YAAayM,GAGhB,EACAG,8BAAAA,EAA+BC,wCAACA,EAAuCC,eAAEA,IACxE,OAAO9qB,KAAKqc,QAAQC,KACnB,4DACA,CACCuO,2CAED,CACC7M,YAAa8M,GAGhB,EACAC,kBAAAA,CAAmBC,EAAQtQ,EAAsBR,EAAwB+Q,GACxE,MAAMrmB,EAASqmB,EAAsB,CAACtN,eAAe,GAAS,CAAA,EAC9D,OAAO3d,KAAKqc,QAAQC,KAAK,gDACxB,CACC0O,OAAUA,EACVtQ,qBAAwBA,EACxBR,uBAA0BA,GAE3BtV,EAEF,GZtDAsmB,SahCc,CACdC,eAAAA,CAAiBzhB,EAAK9E,EAAQ+E,GAC7B,OAAO3J,KAAKqc,QAAQ7U,IAAI,gDAAkDmC,EAAO+H,GAClF,EACA0Z,mBAAAA,GACC,OAAOprB,KAAKqc,QAAQ7U,IAAI,oDACzB,EACA6jB,cAAAA,CAAexH,EAAM3jB,GACpB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,+CAAgD3jB,EAChF,EACAorB,YAAAA,CAAaC,GACZ,OAAOvrB,KAAKqc,QAAQ7U,IAAI,6CAA+C+jB,EACxE,EACAC,cAAAA,CAAe3H,EAAM3jB,GACpB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,+CAAgD3jB,EAChF,EACAurB,cAAAA,CAAeF,GACd,OAAOvrB,KAAKqc,QAAQC,KAAK,+CAAiDiP,EAC3E,EACAG,SAAAA,CAAUxI,GACT,OAAOljB,KAAKqc,QAAQ7U,IAAI,0CAA4C0b,EACrE,EACAqF,mBAAAA,CAAoBroB,GACnB,OAAOF,KAAKqc,QAAQC,KAAK,oDAAqDpc,EAC/E,EACAuoB,qBAAAA,CAAsBrT,GACrB,OAAOpV,KAAKqc,QAAQ7U,IAAI,sDAAwD4N,EACjF,EACAuW,WAAAA,CAAYjiB,EAAK9E,EAAQ+E,GACxB,OAAO3J,KAAKqc,QAAQ7U,IAAI,4CAA8CmC,EAAO+H,GAC9E,EACAka,WAAAA,CAAYliB,EAAK9E,EAAQ+E,GACxB,OAAO3J,KAAKqc,QAAQ7U,IAAI,4CAA8CmC,EAAO+H,GAC9E,EACAma,eAAAA,GACC,OAAO7rB,KAAKqc,QAAQ7U,IAAI,gDACzB,EACAskB,eAAAA,GACC,OAAO9rB,KAAKqc,QAAQ7U,IAAI,gDACzB,EACAukB,qBAAAA,CAAsBpiB,GACrB,OAAO3J,KAAKqc,QAAQC,KAAK,sDAAwD3S,EAAO4hB,SAAU5hB,EACnG,EACAqiB,kBAAAA,CAAmBriB,GAClB,OAAO3J,KAAKqc,QAAQC,KAAK,mDAAqD3S,EAAO4hB,SAAU5hB,EAChG,EACAsiB,qBAAAA,CAAsBtiB,GACrB,OAAO3J,KAAKqc,QAAQC,KAAK,sDAAwD3S,EAAO4hB,SAAU5hB,EACnG,EACAuiB,kBAAAA,CAAmBviB,GAClB,OAAO3J,KAAKqc,QAAQC,KAAK,mDAAqD3S,EAAO4hB,SAAU5hB,EAChG,GblBAwiB,OcjCc,CACd/I,eAAAA,CAAgBxe,EAAQoT,GAWvB,OAVApT,EAAOye,QAAU,iCACjBze,EAAO0e,WAAa,KACJ,CACdR,UAAW9K,EAAK9C,WAAW4N,WAAa9K,EAAK9C,WAAWtP,IAAI2d,GAAKA,EAAET,aAIrEle,EAAO+e,gBAAkB,CAACja,EAAK9E,EAAQ+E,IAAW3J,KAAKqc,QAAQC,KAAK5S,EAAKC,EAAQ/E,GACjFA,EAAOqT,aAAe,CAACvO,EAAKC,EAAQ1I,IAAaA,EAASf,KAEnD0E,CACR,EACAwnB,iBAAAA,GACC,OAAOpsB,KAAKqc,QAAQC,KAAK,+CAC1B,EACA+P,OAAAA,CAAQnsB,GACP,OAAOF,KAAKqc,QAAQC,KACnB,oCACApc,EAEF,EACAosB,aAAAA,CAAcpsB,GACb,OAAOF,KAAKqc,QAAQC,KACnB,0CACApc,EAEF,EACAoJ,MAAAA,CAAOpJ,GACN,OAAOF,KAAKqc,QAAQC,KAAK,oCAAqCpc,EAC/D,EACA+jB,QAAOsI,QAACA,EAAOrJ,eAAEA,IAChB,OAAOljB,KAAKqc,QAAQC,KAAK,oCAAqC,CAACiQ,UAASrJ,kBACzE,GdAAsJ,UelCc,CACdC,sBAAAA,CAAuB/iB,EAAK9E,EAAQ+E,GACnC,OAAO3J,KAAKqc,QAAQ7U,IAAI,wDAA0DmC,EAAO+H,GAAK,IAAM/H,EAAOuZ,eAC5G,EACAwJ,oBAAAA,CAAqBhjB,EAAK9E,EAAQ+E,GACjC,OAAO3J,KAAKqc,QAAQ7U,IAAI,sDAAwDmC,EAAO+H,GAAK,IAAM/H,EAAOuZ,eAC1G,EACAyJ,eAAAA,CAAgBhjB,GACf,OAAO3J,KAAKqc,QAAQC,KAAK,iDAAmD3S,EAAO4T,cAAgB,IAAM5T,EAAOijB,gBACjH,EACAC,eAAAA,CAAgBljB,GACf,OAAO3J,KAAKqc,QAAQC,KAAK,iDACtB3S,EAAO4T,cAAgB,IACvB5T,EAAOijB,gBACX,EACAE,QAAAA,CAASP,GACR,OAAOvsB,KAAKqc,QAAQ7U,IAAI,0CAA4C+kB,EACrE,EACAQ,WAAAA,GACC,OAAO/sB,KAAKqc,QAAQ7U,IAAI,6CACzB,EACAwlB,UAAAA,CAAWT,EAASrsB,GACnB,OAAOF,KAAKqc,QAAQC,KAAK,4CAA8CiQ,EACtErsB,EACF,EACA+sB,UAAAA,CAAWV,GACV,OAAOvsB,KAAKqc,QAAQC,KAAK,4CAA8CiQ,EACxE,EACAW,UAAAA,CAAW3P,EAAerd,GACzB,OAAOF,KAAKqc,QAAQC,KAAK,gDAAkDiB,EAC1Erd,EACF,GfIAitB,WgBnCc,CACdC,eAAAA,CAAgB1jB,EAAK9E,EAAQ+E,GAC5B,OAAO3J,KAAKqc,QAAQ7U,IAAI,oDAAsDmC,EAAO+H,GACtF,EACA2b,sBAAAA,CAAuB9P,GACtB,OAAOvd,KAAKqc,QAAQ7U,IAAI,2DAA6D+V,EACtF,EACA+P,gBAAAA,GACC,OAAOttB,KAAKqc,QAAQ7U,IAAI,qDACzB,EACA+lB,gBAAAA,CAAiBjL,GAChB,OAAOtiB,KAAKqc,QAAQ7U,IAAI,qDAAuD8a,EAChF,EACAkL,WAAAA,CAAYtK,GACX,OAAOljB,KAAKqc,QAAQ7U,IAAI,gDAAkD0b,EAC3E,EACAuK,gBAAAA,CAAiB5J,EAAM3jB,GACtB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,qDAAsD3jB,EACtF,EACAwtB,cAAAA,CAAeC,GACd,OAAO3tB,KAAKqc,QAAQ7U,IAAI,mDAAqDmmB,EAC9E,EACAC,cAAAA,CAAe/J,EAAM3jB,GACpB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAM,qDAAsD3jB,EACtF,EACA2tB,gBAAAA,CAAiBF,GAChB,OAAO3tB,KAAKqc,QAAQC,KAAK,qDAAuDqR,EACjF,GhBSAG,aiBpCc,CACdC,UAAAA,CAAWrkB,EAAK9E,EAAQ+E,GACvB,OAAO3J,KAAKqc,QAAQ7U,IAAI,oDAAsDmC,EAAO+H,GACtF,EACAsc,gBAAAA,GACC,OAAOhuB,KAAKqc,QAAQ7U,IAAI,0DACzB,EACAymB,kBAAAA,GACC,OAAOjuB,KAAKqc,QAAQ7U,IAAI,4DACzB,EACA0mB,gBAAAA,GACC,OAAOluB,KAAKqc,QAAQ7U,IAAI,6DACzB,EACA2mB,cAAAA,GACC,OAAOnuB,KAAKqc,QAAQ7U,IAAI,0DACzB,EACA4mB,kBAAAA,GACC,OAAOpuB,KAAKqc,QAAQ7U,IAAI,4DACzB,EACA6mB,SAAAA,CAAU3c,GACT,OAAO1R,KAAKqc,QAAQ7U,IAAI,oDAAsDkK,EAC/E,EACA4c,WAAAA,CAAYzK,EAAM3jB,GACjB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAK,sDAAuD3jB,EACtF,EACAquB,WAAAA,CAAY1K,EAAM3jB,GACjB,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAK,sDAAuD3jB,EACtF,EACAsuB,WAAAA,CAAY9c,GACX,OAAO1R,KAAKqc,QAAQC,KAAK,sDAAwD5K,EAClF,GjBOA+c,WkBrCc,CACdC,aAAAA,CAAchlB,EAAK9E,EAAQ+E,GAE1B,OAAO3J,KAAKqc,QAAQ7U,IAAI,gDACrBmC,EAAO4gB,YAAc,IACrB5gB,EAAOiY,WAAa,IACpBjY,EAAOkY,SAAW,IAClBlY,EAAOglB,uBAAyB,IAChChlB,EAAOilB,mBAEX,EACAX,kBAAAA,GACC,OAAOjuB,KAAKqc,QAAQ7U,IAAI,oDACzB,GlByBAqnB,aAAAA,GACC,OAAO7uB,KAAKqc,QAAQ7U,IAAI,qCACzB,EACAsnB,cAAAA,GACC,OAAO9uB,KAAKqc,QAAQ7U,IAAI,sCACzB,GmBzCDunB,EAAe,CACdlM,OCHc,CACdmM,UAAAA,CAAYtlB,EAAK9E,EAAQ+E,GACxB,OAAO3J,KAAKqc,QAAQ7U,IAAI,gDAAkDmC,EAAO+H,GAAK,IAAM/H,EAAOpK,KACpG,EACA0vB,MAAAA,GACC,OAAOjvB,KAAKqc,QAAQ7U,IAAI,4CACzB,EACA0nB,WAAAA,CAAYrL,EAAMnS,EAAIyd,GACrB,OAAOnvB,KAAKqc,QAAQC,KAAKuH,EAAK,iDAAmDnS,EAChFyd,EAEF,EACAC,SAAAA,CAAUC,GACT,OAAOrvB,KAAKqc,QAAQC,KAAK,+CAAgD,CACxE+S,YAEF,EACAC,aAAAA,CAAcD,GACb,OAAOrvB,KAAKqc,QAAQC,KAAK,mDAAoD,CAC5E+S,YAEF,EACAE,WAAAA,CAAYF,EAAUG,EAAS9d,GAC9B,OAAO1R,KAAKqc,QAAQC,KAAK,iDAAkD,CAC1E+S,WACAG,UACA9d,MAEF,EACA+d,WAAAA,CAAY5L,EAAMwL,EAAUF,GAC3B,OAAOnvB,KAAKqc,QAAQC,KAAKuH,EAAK,iDAAmDwL,EAChFF,EAEF,EACAtF,cAAAA,CAAe5Z,GACd,OAAOjQ,KAAKqc,QAAQ7U,IAAI,oDAAsDyI,EAC/E,EACAyf,YAAAA,CAAahe,EAAI8d,GAChB,OAAOxvB,KAAKqc,QAAQ7U,IAAI,kDACzB,ICrCDmoB,EAAe,CACd9M,OCHc,CACd+M,oBAAAA,CAAqBlmB,EAAK9E,EAAQ+E,GACjC,OAAO3J,KAAKqc,QAAQ7U,IAAI,uEAAyEmC,EAAOpK,KAAO,IAAMoK,EAAO+H,GAC7H,EACAme,oBAAAA,CAAqBhM,EAAMf,EAAWqM,GACrC,OAAOnvB,KAAKqc,QAAQC,KAAKuH,EAAM,uEAC9Bf,EAAWqM,EAEb,EACAW,kBAAAA,CAAmBC,GAClB,OAAO/vB,KAAKqc,QAAQC,KAAK,qEAAuEyT,EACjG,EACAC,oBAAAA,CAAqBnM,EAAMkM,EAAyBZ,GACnD,OAAOnvB,KAAKqc,QAAQC,KAAKuH,EAAM,uEAAyEkM,EACvGZ,EACF,EACAc,oBAAAA,CAAqBF,GACpB,OAAO/vB,KAAKqc,QAAQC,KAAK,uEAAyEyT,EACnG,EACAG,sBAAAA,GACC,OAAOlwB,KAAKqc,QAAQ7U,IAAI,yEACzB,EACA2oB,iBAAAA,CAAkBrR,GACjB,OAAO9e,KAAKqc,QAAQ7U,IAAI,oEAAsEsX,EAC/F,ICxBDsR,EAAe,CACdC,wBAAAA,CAAyBvN,EAAWwN,GAEnC,IACC,MAAMxT,EAAU,CAACgG,YAAWyN,OAAQD,GAC9B5mB,EAAM,oEACZ,OAAO1J,KAAKqc,QAAQC,KAAK5S,EAAKoT,EAAS,KACxC,CAAE,MAAO1c,GACR,MAAMA,CACP,CAED,EACAowB,YAAAA,CAAa1T,EAAS2T,EAAO,IAE5B,IACC,MAAM/mB,EAAM+mB,EAAO,wDACnB,OAAOC,MAAMpU,KAAK5S,EAAKoT,EACxB,CAAE,MAAO1c,GACR,MAAMA,CACP,CAED,GCrBDuwB,EAAe,CACbC,YAAAA,CAAaC,GACb,OAAO7wB,KAAKqc,QAAQ7U,IACV+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,iCACT,CAAEgC,WAAYkP,GAEhB,EACAC,QAAAA,CAASC,EAAOC,EAAKC,EAAKC,EAAKC,EAAiB,GAC/C,OAAOnxB,KAAKqc,QAAQ7U,IACnB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,gCACA,CAAEoR,QAAOC,MAAKC,MAAKC,MAAKC,kBAE1B,EACAC,YAAAA,GACC,OAAOpxB,KAAKqc,QAAQ7U,IACnB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,gCAEF,GCvBD0R,EAAe,CACXC,OAAAA,CAAQC,EAAYC,EAAQ,KAAMC,EAAQ,KAAMC,EAAS,MACrD,OAAO1xB,KAAKqc,QAAQ7U,IACzB,+BACA,CACC+pB,WAAYA,KACRC,EAAQ,CAACA,WAAS,MAClBC,EAAQ,CAACA,WAAS,MAClBC,EAAS,CAACA,YAAU,CAAA,GAGxB,EAEHC,OAAAA,CAAQzkB,EAAO,EAAG0kB,EAAY,GAAIH,GACjC,OAAOzxB,KAAKqc,QAAQ7U,IACnB,+BACA,CACC0F,OACA0kB,YACAH,WAGH,EAEAI,IAAAA,CAAKC,GACJ,OAAO9xB,KAAKqc,QAAQ7U,IACnB,4BACA,CACCsqB,MAAOA,GAGV,EACAC,gBAAiB,WAChB,OAAO/xB,KAAKqc,QAAQ7U,IACnB,uCACA,CAAA,EAEF,EACAwqB,aAAc,WACb,OAAOhyB,KAAKqc,QAAQ7U,IACnB,iDACA,CAAA,EAEF,GC3CDyqB,EAAe,CACXC,gBAAAA,CAAiBhQ,GACX,OAAOliB,KAAKqc,QAAQ7U,IAChB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,yCACA,CAAEuC,eAAgBA,GAE1B,EACLiQ,SAAAA,CAAUjY,EAAwBQ,GACjC,OAAO1a,KAAKqc,QAAQ7U,IACnB,6BAA6B0S,KAA0BQ,IACrD,GAEJ,EACA0X,oBAAAA,CAAqB1X,GACpB,OAAO1a,KAAKqc,QAAQ7U,IACnB,qCAAqCkT,IACnC,GAEJ,EACA2X,yBAAAA,CAA0Bjd,GACzB,OAAOpV,KAAKqc,QAAQ7U,IACnB,oDAAoD4N,IAClD,GAEJ,EACAkd,wBAAAA,CAAyBC,GACxB,OAAOvyB,KAAKqc,QAAQ7U,IACnB,kDACE,CACDgrB,iBAAkBD,EAAOC,iBACzBjI,YAAagI,EAAOhI,aAGvB,EACAkI,iCAAAA,CAAkCtD,GAGjC,OAAOnvB,KAAKqc,QAAQC,KAFR,2DAEkB6S,EADd,CAACuD,QAAS,CAAE,eAAgB,wBAE7C,EACAC,sCAAAA,CAAuCxD,GAGtC,OAAOnvB,KAAKqc,QAAQC,KAFR,gEAEkB6S,EADd,CAACuD,QAAS,CAAE,eAAgB,wBAE7C,EACAE,iCAAAA,CAAkCC,EAAatI,GAC9C,MAAM7gB,EAAM,iEAAiEmpB,iBAA2BtI,IAExGtkB,OAAO8I,SAAWwD,2BAA2BsH,SAAWtH,2BAA2BoN,UAAYjW,CAChG,EACAopB,6BAAAA,CAA8B1d,EAAK2d,GAClC,OAAO/yB,KAAKqc,QAAQ7U,IACnB,gEAAgEurB,IAC9D,GAEJ,EACAC,uBAAAA,CAAwBC,GACvB,MAAMnW,EAAU,CACf+V,YAAaI,EAAOJ,YACpBK,mBAAoBD,EAAOE,YAAYD,mBACvCnC,MAAOkC,EAAOlC,MACdqC,UAAWH,EAAOG,UAClBC,UAAWJ,EAAOI,UAClBC,OAAQL,EAAOK,OACfd,iBAAkBS,EAAOT,kBAI1B,OAAOxyB,KAAKqc,QAAQC,KAFR,iDAEkBQ,EAAS,KAExC,EACAyW,yBAAAA,CAA0BV,GACzB,MAAM/V,EAAU,CACf+V,eAID,OAAO7yB,KAAKqc,QAAQC,KAFR,mDAEkBQ,EAAS,KACxC,EACA0W,gBAAAA,CAAiBzC,EAAOmC,EAAoBC,EAAaG,EAAQG,GAChE,MAAM3W,EAAU,CACfiU,QAAOmC,qBAAoBC,cAAaG,SAAQG,qBAIjD,OAAOzzB,KAAKqc,QAAQC,KAFR,0CAEkBQ,EAAS,KACxC,EACA4W,cAAAA,CAAe5Q,GACd,MAAMhG,EAAU,CACfgG,aAID,OAAO9iB,KAAKqc,QAAQC,KAFR,wCAEkBQ,EAAS,KACxC,GC/FD6W,EAAe,CACXC,SAAAA,CAAUC,EAAM3Z,GACZ,OAAOla,KAAKqc,QAAQ7U,IAChB+K,2BAA2BsH,SAC3BtH,2BAA2BoN,UAC3B,qCAAqCkU,KAAQ3Z,IAC7C,CAAA,EAER,GCNJ4Z,EAAe,CACdjR,OCHc,CACbkR,WAAAA,CAAYrqB,EAAK9E,EAAQ+E,GACxB,OAAO3J,KAAKqc,QAAQ7U,IAAI,iDAAmDmC,EAAO+H,GAAK,IAAM/H,EAAOpK,KAAO,IAAMoK,EAAOqqB,KAAO,IAAMrqB,EAAOuD,KAC7I,EACA+mB,WAAAA,GACC,OAAOj0B,KAAKqc,QAAQ7U,IAAI,iDACzB,EACA0sB,sBAAAA,GACC,OAAOl0B,KAAKqc,QAAQ7U,IAAI,4DACzB,EACA2sB,oBAAAA,CAAqBxqB,GACpB,OAAO3J,KAAKqc,QAAQ7U,IAAI,0DAA4DmC,EAAO+H,GAAK,IAAM/H,EAAO6lB,QAC9G,EACA4E,oBAAAA,CAAqBzqB,GACpB,OAAO3J,KAAKqc,QAAQ7U,IAAI,0DAA4DmC,EAAO+H,GAAK,IAAM/H,EAAO6lB,QAC9G,EACA6E,WAAAA,CAAY1qB,GACX,OAAO3J,KAAKqc,QAAQ7U,IAAI,iDAAkDmC,EAAO+H,GAAK,IAAM/H,EAAO6lB,QACpG,EACAP,MAAAA,CAAOtlB,GACN,OAAO3J,KAAKqc,QAAQ7U,IAAI,4CAA6CmC,EAAO+H,GAAK,IAAM/H,EAAO6lB,QAC/F,EACA8E,cAAAA,CAAeC,GACd,OAAOv0B,KAAKqc,QAAQ7U,IAAI,oDAAsD+sB,EAC/E,EACAC,yBAAAA,CAA0B7qB,GACzB,OAAO3J,KAAKqc,QAAQ7U,IAAI,+DAAiEmC,EAAO+H,GAAK,IAAM/H,EAAO6lB,QACnH,EACAiF,cAAAA,CAAe9qB,EAAQzJ,GACtB,OAAOF,KAAKqc,QAAQC,KAAK,oDAAsD3S,EAAO+H,GAAK,IAAM/H,EAAO6lB,QACvGtvB,EACF,EACAw0B,YAAAA,CAAaC,GACZ,OAAO30B,KAAKqc,QAAQ7U,IAAI,kDAAoDmtB,EAC7E,EACAC,2BAAAA,CAA4B/Q,EAAMnS,EAAIxR,GACrC,OAAOF,KAAKqc,QAAQC,KAAKuH,EAAK,iDAAmDnS,EAChFxR,EACF,EACA20B,WAAAA,CAAYnjB,EAAIxR,GACf,OAAOF,KAAKqc,QAAQC,KAAK,iDAAmD5K,EAC3ExR,EACF,EACA40B,aAAAA,CAAcH,GACb,OAAO30B,KAAKqc,QAAQC,KAAK,mDAAqDqY,EAC/E,IC7CFI,EAAe,CACdd,WAAAA,GACC,OAAOj0B,KAAKqc,QAAQ7U,IAAI,iDACzB,EACAwtB,yBAAAA,GACC,OAAOh1B,KAAKqc,QAAQ7U,IAAI,+DACzB,GCNDytB,EAAe,CAEdhH,mBAAoB,WACnB,OAAOjuB,KAAKqc,QAAQ7U,IACnB,uCACA,CAAA,EAEF,EAEA0tB,sBAAuB,SAAUve,OAAgBxV,EAAWg0B,OAAYh0B,EAAWunB,OAASvnB,EAAWi0B,OAAYj0B,GAClH,OAAOnB,KAAKqc,QAAQ7U,IACnB,iDACA,CAACmP,kBAAiBwe,cAAazM,WAAU0M,eAE3C,EAEAC,mCAAoC,SAAU1e,GAC7C,OAAO3W,KAAKqc,QAAQ7U,IACnB,+DAA+DmP,IAC/D,GAEF,EACA2e,2BAA4B,SAAUH,EAAaxe,GAClD,OAAO3W,KAAKqc,QAAQ7U,IACnB,sDACA,CACC2tB,cACAxe,mBAGH,EACA4e,4BAA6B,SAAU5e,EAAiBkd,GACvD,OAAO7zB,KAAKqc,QAAQ7U,IACnB,uDAAuDmP,KAAmBkd,IAC1E,GAGF,EACA2B,qBAAsB,SAAUtb,EAAwB2Z,GACvD,OAAO7zB,KAAKqc,QAAQ7U,IACnB,iDAAiD0S,KAA0B2Z,IAC3E,GAGF,GCAD4B,EAAe,CACXtZ,iBACAuZ,EACAzY,aACA0Y,UChDW,CACd,iBAAMC,GAEL,OAAO51B,KAAKqc,QAAQ7U,IADR,0CACiB,KAAM,KACpC,UD6CGzE,EACAoa,aACAsC,SACAY,eACAoB,SACAoU,SEtDW,CAEXC,aAAc,WACZ,OAAO91B,KAAKqc,QAAQ7U,IAClB,yCACC,CAAA,EAEL,EAEAyc,OAAQ,SAAU8R,GAChB,OAAO/1B,KAAKqc,QAAQ7U,IAClB,oCAAoCuuB,IACnC,GAEL,EAEHzsB,OAAQ,UAAUysB,YAAEA,EAAWrsB,IAAEA,EAAGmB,MAAEA,EAAK8J,IAAEA,EAAI,OAChD,OAAO3U,KAAKqc,QAAQC,KACnB,oCAAoCyZ,IAClC,CACDrsB,IAAKA,EACLmB,MAAOA,GAGV,EAEGkZ,OAAQ,UAAUra,IAACA,EAAGmB,MAAEA,EAAK8J,IAAEA,IAC7B,OAAO3U,KAAKqc,QAAQC,KAClB,mCACC,CACC5S,IAAKA,EACLmB,MAAOA,EACP8J,IAAKA,GAGX,GFoBA4N,MACAwM,QACAY,iBACAS,cACA4F,OG3DW,CAEXlvB,KAAM,WACF,OAAO9G,KAAKqc,QAAQ7U,IACpB,+BAA+B,CAAA,EACnC,EAEAurB,IAAK,WACD,OAAO/yB,KAAKqc,QAAQ7U,IACpB,8BAA8B,CAAA,EAClC,EAEAyuB,QAAS,SAAUC,GACf,OAAOl2B,KAAKqc,QAAQ7U,IACpB,mCAAmC0uB,IAAW,GAClD,GH6CAvF,MACAU,MACAY,QACA0B,SACAG,WACAiB,WACApB,SACHwB,YInEc,CACdgB,uBAAwB,WACvB,OAAOn2B,KAAKqc,QAAQ7U,IACnB,+CACA,CAAA,EAEF,EACA4uB,mBAAoB,SAAUlT,GAC7B,OAAOljB,KAAKqc,QAAQ7U,IACnB,iEACA,CACC0b,eAAkBA,GAGrB,GJsDAmT,KKpEc,CACdpb,QAAS,WACR,OAAOjb,KAAKqc,QAAQ7U,IACnB,mCACA,CAAA,EAEF,GL+DA8uB,SMpEc,CACdC,UAAAA,GACC,OAAOv2B,KAAKqc,QAAQ7U,IACnB,uCACA,CAAA,EAEF,EACAgvB,WAAAA,GACC,OAAOx2B,KAAKqc,QAAQ7U,IACnB,wCACA,CAAA,EAEF,GNyDAytB,UACGpY,SOtDW,CACd4Z,MAAAA,GACC,OAAOz2B,KAAKqc,QAAQ7U,IAAI,gCACzB,ICbDkvB,EAAe,CACdC,QAASA,CAACC,EAAKpwB,KACd,GAAIowB,EAAIhyB,OAAOiyB,iBAAiBxa,QAO/B,YALI7V,GAASswB,UACZC,QAAQC,KAAK,0BACbJ,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQya,QAAQG,aAAazwB,EAAQswB,WAMnE,SAASI,EAAYrT,EAAMsT,EAAKj3B,EAAM0E,GACrC,GAAmB,iBAARif,QAA+B1iB,IAAXyD,GAC7BuyB,EAAKj3B,EAAM0E,GAAU,CAACif,EAAMsT,EAAKj3B,GAClC2jB,OAAO1iB,OACD,GAAI0iB,EAAM,CAChB,GAAmB,iBAARA,EACV,MAAM,IAAIuT,UAAU,iEACTj2B,IAARg2B,QAA8Bh2B,IAATjB,QAAiCiB,IAAXyD,IAC9CA,EAASif,EACTA,OAAO1iB,EAET,CACA,GAAI0iB,EAAM,CAET,IAAKA,EAAKxO,kBAAoBwO,EAAKtO,YAClC,MAAM,IAAI6hB,UAAU,kCAErBvT,EAAO,CACNxO,gBAAiBwO,EAAKxO,gBACtBE,YAAasO,EAAKtO,aAGf3Q,EACHA,EAAOif,KAAOA,EAEdjf,EAAS,CAACif,OACZ,CAEA,MAAO,CAACsT,EAAKj3B,EAAM0E,EACpB,CAEA,SAASyyB,EAAoBp2B,GAC5B,MAAMgZ,EAAShZ,EAASf,KAMxB,cALOe,EAASf,KACX+Z,EAAOqd,KAGXrd,EAAOqd,KAAKr2B,SAAWA,EAFvBgZ,EAAOqd,KAAO,CAACr2B,YAGTgZ,CACR,CACgB1H,2BAA2BsH,SAAWtH,2BAA2BoN,UACjF,MAAM4X,EAAc7G,MAAMlT,OAAO,CAChCwB,QAAS,IACTwY,QAASjlB,2BAA2BsH,SAAWtH,2BAA2BoN,UAAY,MAGvF4X,EAAYE,aAAaC,QAAQC,IAAI/yB,IACpC,GAAqB,QAAjBA,EAAO6E,SAAqB7E,EAAO1E,KACtC,OAAO0E,EAER,GAAIA,EAAO1E,gBAAgB03B,SAC1B,OAAOhzB,EAER,IAAKhB,OAAOoT,OAAOpS,EAAO1E,MAAM23B,MAAMC,KACjCA,aAAgBC,aAEhBr2B,MAAM0D,QAAQ0yB,IACVA,EAAKD,MAAMnvB,KAAOA,aAAasvB,SAEpC,CACH,MAAMC,EAAUr0B,OAAOs0B,QAAQtzB,EAAO1E,MAAMkC,OAAO,CAAC+1B,GAAKC,EAAKN,MAC7D,GAAIA,aAAgBC,SACnB,IAAK,MAAMxxB,KAAQuxB,EAClBK,EAAGP,SAASje,OAAOye,GAAON,EAAK50B,OAAS,EAAI,KAAO,IAAKqD,QAC/C7E,MAAM0D,QAAQ0yB,GACpBA,EAAKD,MAAMnvB,KAAOA,aAAasvB,OAClCG,EAAGE,SAASD,GAAON,EAEnBA,EAAKtvB,QAAQjC,GAAQ4xB,EAAGP,SAASje,OAAOye,GAAON,EAAK50B,OAAS,EAAI,KAAO,IAAKqD,IAG9E4xB,EAAGE,SAASD,GAAON,EAEpB,OAAOK,GACL,CACFP,SAAU,IAAIA,SACdS,SAAU,CAAA,IAEXJ,EAAQL,SAASje,OAAO,YAAarM,KAAKE,UAAUyqB,EAAQI,WAC5DzzB,EAAO1E,KAAO+3B,EAAQL,QACvB,CAEA,OAAOhzB,IAGR2yB,EAAYE,aAAax2B,SAAS02B,IAAI12B,IACC,OAAlCA,EAAS2D,QAAQ+Y,gBACkB,IAAnC1c,EAAS2D,QAAQ+Y,eACiB,QAAlC1c,EAAS2D,QAAQ+Y,eAIjB1c,EAASf,KAAKo4B,SACjBr3B,EAASf,KAAKo4B,OAASr3B,EAASf,KAAKo4B,OAAOv1B,OAC3Cw1B,IAAQt3B,EAAS2D,OAAO2zB,EAAIh5B,KAAO,iBAAmBq3B,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQmc,sBAAsBD,EAAIh5B,OAAOg5B,EAAKt3B,EAAS2D,UALnIyyB,EAAoBp2B,IAS1Bb,GACgB,gBAAdA,EAAMq4B,KACFh4B,QAAQye,OAAO,CAAKwZ,SAAS,KAAUt4B,IAEZ,OAA/BA,EAAMwE,QAAQ+Y,gBACkB,IAAhCvd,EAAMwE,QAAQ+Y,eACiB,WAA/Bvd,EAAMwE,QAAQ+Y,cACVld,QAAQye,OAAO9e,GAEnBA,EAAMa,SACoB,KAAzBb,EAAMa,SAASomB,QAClBuP,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUwe,aAAa,QAASv4B,EAAMiB,QAASjB,EAAMs3B,QAAQkB,aAAa,GAC/Fn4B,QAAQye,OAAO,CAAKwZ,SAAS,KAAUt4B,MAI/CA,EAAMa,SAASf,KAAKo4B,OAASl4B,EAAMa,SAASf,KAAKo4B,OAAOv1B,OACvDw1B,IAAQn4B,EAAMwE,OAAO2zB,EAAIh5B,KAAO,iBAAmBq3B,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQmc,sBAAsBD,EAAIh5B,OAAOg5B,EAAKn4B,EAAMwE,SAE/HxE,EAAMa,SAASf,KAAKo4B,OAAOp1B,OAU1BzC,QAAQye,OAAO9e,GATbK,QAAQye,OAAO,CAAKwZ,SAAS,KAAUt4B,KACrCA,EAAMs3B,SAChBd,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUwe,aAAa,QAASv4B,EAAMiB,QAASjB,EAAMs3B,QAAQkB,aAClFn4B,QAAQye,OAAO,CAAKwZ,SAAS,KAAUt4B,MAE9Cw2B,EAAIhyB,OAAOiyB,iBAAiB1c,UAAU0e,WAAWz4B,EAAMiB,SAChDZ,QAAQye,OAAO,CAAKwZ,SAAS,KAAUt4B,MAMhDw2B,EAAIhyB,OAAOiyB,iBAAiBxa,QAAU,CACrC9B,OAAO7Q,IACNqtB,QAAQC,KAAK,0DACNO,EAAYhd,OAAO,CAAC7Q,SAE5BlC,IAAGA,CAACqc,EAAMsT,EAAKxtB,EAAQ/E,KACtBmyB,QAAQC,KAAK,qDACZG,EAAKxtB,EAAQ/E,GAAUsyB,EAAYrT,EAAMsT,EAAKxtB,EAAQ/E,GACnD+E,IACC/E,EACHA,EAAO+E,OAASA,EAEhB/E,EAAS,CAAC+E,WAEL4tB,EAAY/vB,IAAI2vB,EAAKvyB,IAE7B0X,KAAIA,CAACuH,EAAMsT,EAAKj3B,EAAM0E,KACrBmyB,QAAQC,KAAK,uDACZG,EAAKj3B,EAAM0E,GAAUsyB,EAAYrT,EAAMsT,EAAKj3B,EAAM0E,GAC5C2yB,EAAYjb,KAAK6a,EAAKj3B,EAAM0E,IAEpC4zB,sBAAuB,CACtBM,UAAAA,CAAW14B,EAAOwE,GACjB,MAAMuV,EAAYyc,EAAIhyB,OAAOiyB,iBAAiB1c,UAE9C,OAAIvV,GAAQif,MACXjf,EAAOif,KAAKxO,kBACZzQ,EAAOif,KAAKtO,aAAY,EAAOnV,EAAM0zB,WAC9B,GAEJpyB,MAAM0D,QAAQhF,EAAM0zB,WACvB1zB,EAAM0zB,SAAStrB,QAAQ2R,EAAU0e,aAC1B,GAC4B,iBAAlBz4B,EAAM0zB,WACnBlvB,GAAQoZ,YACXpa,OAAOoT,OAAO5W,EAAM0zB,UAAUtrB,QAC7B3F,GAASsX,EAAUwe,aAClB,QACAj3B,MAAM0D,QAAQR,EAAOoZ,aAAe4Y,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAEkqB,MAAM,KAAMn0B,EAAOoZ,aAAepZ,EAAOoZ,YAC9Gnb,GACA,IAIFe,OAAOs0B,QAAQ93B,EAAM0zB,UAAUtrB,QAC9B,EAAE4vB,EAAKv1B,KAAWsX,EAAUwe,aAAa,QAASP,EAAKv1B,GAAO,KAEzD,EAGT,EACAm2B,OAAAA,CAAQ54B,EAAOwE,GACd,MAAMuV,EAAYyc,EAAIhyB,OAAOiyB,iBAAiB1c,UAE1CvV,GAAQif,KACXjf,EAAOif,KAAKtO,aAAY,EAAOnV,EAAMiB,SAC7BuD,GAAQoZ,YAChB7D,EAAUwe,aACT,QACAj3B,MAAM0D,QAAQR,EAAOoZ,aAAe4Y,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAEkqB,MAAM,KAAMn0B,EAAOoZ,aAAepZ,EAAOoZ,YAC9G5d,EAAMiB,SACN,GAGD8Y,EAAU0e,WAAWz4B,EAAMiB,QAC7B,EACA43B,GAAAA,CAAI74B,GACH,MAAM+Z,EAAYyc,EAAIhyB,OAAOiyB,iBAAiB1c,UAE9C,IAAI9Y,EAAU,GAYd,OAXAA,GAAW,YAAcjB,EAAMiB,QAAU,OACzCA,GAAW,aAAejB,EAAM84B,SAAW,KAC3C73B,GAAW,gBAAkBjB,EAAM+4B,KAAO,KACtC/4B,EAAMg5B,WAAah5B,EAAMg5B,UAAUl2B,SACtC7B,GAAW,gBACXjB,EAAMg5B,UAAU5wB,QAAQ+vB,IACvBl3B,GAAW,aAAek3B,EAAIhyB,KAAO,KACrClF,GAAW,WAAak3B,EAAIY,KAAO,KACnC93B,GAAW,eAAiBk3B,EAAIc,SAAW,QAGrCj5B,EAAMk5B,UACb,IAAK,UACL,IAAK,eACL,IAAK,kBACL,IAAK,eACJnf,EAAUwe,aAAa,OAAQ,OAASv4B,EAAMk5B,SAAUj4B,GAAS,GACjE,MACD,IAAK,SACL,IAAK,cACL,IAAK,iBACJ8Y,EAAUwe,aAAa,OAAQ,OAASv4B,EAAMk5B,SAAUj4B,GAAS,GACjE,MACD,QACCA,EAAU,aAAejB,EAAMk5B,SAAW,OAASj4B,EACnD8Y,EAAUof,iBAAiBl4B,GAG9B,EACAm4B,SAAAA,CAAUp5B,GACT,MAAM+Z,EAAYyc,EAAIhyB,OAAOiyB,iBAAiB1c,UAE9C,IAAI9Y,EAAU,GACdA,GAAW,SAAWjB,EAAM2U,MAAQ,OACpC1T,GAAW,YAAcjB,EAAMiB,QAAU,OACzCA,GAAW,aAAejB,EAAM84B,SAAW,KAC3C73B,GAAW,gBAAkBjB,EAAM+4B,KAAO,KACtC/4B,EAAMg5B,WAAah5B,EAAMg5B,UAAUl2B,SACtC7B,GAAW,gBACXjB,EAAMg5B,UAAU5wB,QAAQ+vB,IACvBl3B,GAAW,aAAek3B,EAAIhyB,KAAO,KACrClF,GAAW,WAAak3B,EAAIY,KAAO,KACnC93B,GAAW,eAAiBk3B,EAAIc,SAAW,QAG7Clf,EAAUof,iBAAiBl4B,EAC5B,EACAo4B,EAAAA,CAAGr5B,GACF,MAAM+Z,EAAYyc,EAAIhyB,OAAOiyB,iBAAiB1c,UAE9C,IAAI9Y,EAAU,QACQF,IAAlBf,EAAMs5B,UACTr4B,GAAWjB,EAAMs5B,QAAU,aACTv4B,IAAff,EAAMq4B,OACTp3B,GAAW,SAAWjB,EAAMq4B,KAAO,aAClBt3B,IAAdf,EAAMu5B,MACTt4B,GAAW,QAAUjB,EAAMu5B,IAAM,aACZx4B,IAAlBf,EAAMiB,QACTA,GAAW,YAAcjB,EAAMiB,QAAU,YACdF,IAAnBf,EAAM0zB,WACdzyB,GAAW,aAAejB,EAAM0zB,SAAS8F,KAAK,QAAU,aAClCz4B,IAAnBf,EAAM84B,WACT73B,GAAW,aAAejB,EAAM84B,SAAW,WACzB/3B,IAAff,EAAM+4B,OACT93B,GAAW,gBAAkBjB,EAAM+4B,KAAO,MAE3Chf,EAAUof,iBAAiBl4B,EAC5B,EACAw4B,IAAAA,CAAKz5B,EAAOwE,GACX,MAAMuV,EAAYyc,EAAIhyB,OAAOiyB,iBAAiB1c,UAE9C,IAAI9Y,EAAU,GACdA,GAAW,oBAAsBjB,EAAM05B,WAAa,KACpDz4B,GAAW,gBAAkBjB,EAAMqJ,OAAS,KAC5CpI,GAAW,yBAA2BjB,EAAM25B,qBACxCn1B,GAAQoZ,YACX7D,EAAUwe,aACT,QACAj3B,MAAM0D,QAAQR,EAAOoZ,aAAe4Y,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAEkqB,MAAM,KAAMn0B,EAAOoZ,aAAepZ,EAAOoZ,YAC9G5d,EAAMiB,SACN,GAGD8Y,EAAUwe,aAAa,QAASv4B,EAAMiB,QAASA,EACjD,IAKF,MAAM24B,EACLC,WAAAA,CAAYC,EAAaC,QACXh5B,IAATg5B,GACHn6B,KAAKqc,QAAU,CACd9B,OAAO7Q,IACNqtB,QAAQC,KAAK,kCACNJ,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQ9B,OAAO7Q,IAEnDlC,IAAGA,CAACqc,EAAMsT,EAAKxtB,EAAQ/E,KACtBmyB,QAAQC,KAAK,kCACNJ,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQ7U,IAAIqc,EAAMsT,EAAKxtB,EAAQ/E,IAEnE0X,KAAIA,CAACuH,EAAMsT,EAAKj3B,EAAM0E,KACrBmyB,QAAQC,KAAK,kCACNJ,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQC,KAAKuH,EAAMsT,EAAKj3B,EAAM0E,KAGnEhB,OAAOw2B,eAAep6B,KAAKqc,QAAS,UAAW,CAC9C7U,IAAGA,KACFuvB,QAAQC,KAAK,kCACNJ,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQya,WAG7CF,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQya,QAAU92B,MAE9C4D,OAAOw2B,eAAep6B,KAAM,UAAW,CACtCwH,GAAAA,GACC,OAAQ2yB,GAAQn6B,MAAMqc,OACvB,IAIFrc,KAAKi3B,aAAaiD,GAAa,EAChC,CAEAjD,YAAAA,CAAaiD,EAAaG,GACzBz2B,OAAO6T,KAAKyiB,GAAa1xB,QAAQ4vB,IAChCx0B,OAAOw2B,eAAep6B,KAAMo4B,EAAK,CAChC5wB,GAAAA,GACC,MAA+B,mBAApB0yB,EAAY9B,GACf8B,EAAY9B,GAAKkC,KAAKt6B,MACvB,IAAIg6B,EAAqBE,EAAY9B,GAAMp4B,KAAKqc,QAAQya,QAChE,MAGGuD,GAAQtD,QAAQC,KAAK,gDAC3B,EAGD,MAAMF,EAAU,IAAIkD,EAAqBvE,GACrCjvB,GAASswB,UACZC,QAAQC,KAAK,0BACbF,EAAQG,aAAazwB,EAAQswB,UAG9BF,EAAIhyB,OAAOiyB,iBAAiBxa,QAAQya,QAAUA,EAG9CF,EAAI2D,QAAQ,UAAW3D,EAAIhyB,OAAOiyB,iBAAiBxa,WCtVrD,MASMme,EAAyB,QACzBC,EAA0B,SASnBC,EAAiB,CAS7BlzB,IAAK,SAASmzB,EAAOC,EAAcC,EAAkB,MACpD,OAAOH,EAAeI,WAAWH,EAAOC,EAhBd,MAgBiDC,EAC5E,EAOAve,KAAM,SAASqe,EAAOC,EAAcC,EAAkB,MACrD,OAAOH,EAAeI,WAAWH,EAAOC,EAxBb,OAwBiDC,EAC7E,EAKAE,UAAW,SAAS95B,GAEnB,QAAwB,iBAAbA,IAAyBA,EAASyM,eAAe8sB,KACxDv5B,EAASyM,eAAe+sB,IAzCG,GAyCyBx5B,EAASb,MAMlE,EAKA46B,QAAS,SAAS/5B,GACjB,OAAQy5B,EAAeK,UAAU95B,EAClC,EAKAg6B,QAAS,SAASh6B,GAEjB,SAAIy5B,EAAeK,UAAU95B,MAEsB,iBAAtCA,EAASw5B,IAAyC72B,OAAO6T,KAAKxW,EAASw5B,IAA0Bv3B,OAAS,GACpE,gBAAtCjC,EAASw5B,IAAwCx5B,EAASw5B,GAAyBv3B,OAAS,GACtD,iBAAtCjC,EAASw5B,IAAqF,IAA5Cx5B,EAASw5B,GAAyBS,QAC/C,iBAAtCj6B,EAASw5B,IAOtB,EAKAvjB,QAAS,SAASjW,GAEjB,OAAIy5B,EAAeO,QAAQh6B,GAEnBA,EAASw5B,GAGV,IACR,EAKAU,SAAU,SAASl6B,GAElB,MAAwB,iBAAbA,GACP2C,OAAO6T,KAAKxW,GAAUiC,OAAS,GAC/BjC,EAASyM,eAAe+sB,GAEpBx5B,EAASw5B,GAGV,eACR,EAKAW,aAAc,SAASn6B,GAEtB,MAAwB,iBAAbA,GAAyBA,EAASyM,eAAe8sB,GAEpDv5B,EAASu5B,GAGV,CACR,EAQAa,mBAAoB,SAASV,GAC5B,IAAIxD,EAAM,KAQV,MAL0C,oBAA/B5kB,6BAEV4kB,EAAM5kB,2BAA2BsH,SAAWtH,2BAA2BoN,UAAY,IAAMgb,GAGnFxD,CACR,EAKAmE,YAAa,SAASC,EAAYt6B,EAAUu6B,GAqB5C,EASAV,WAAY,SAASH,EAAOC,EAAcr7B,EAAMs7B,GAG/C,IAAIY,EAAe,CAClBhyB,OAAQlK,EACRmK,IAAKgxB,EAAeW,mBAAmBV,GACvC3b,QAnL8B,KAkM/B,GArL0B,OA0KtBzf,EAEHk8B,EAAa9xB,OAASixB,EAKtBa,EAAav7B,KAAO06B,EAIU,iBAApBC,EAGV,IAAK,IAAIvmB,KAAQumB,EAAiBY,EAAannB,GAAQumB,EAAgBvmB,GAIxE,OAAOoc,MAAM+K,EACd,GC5HKC,EAAqBn0B,SAAS8R,cAAc,OAE5CsiB,EAAYxlB,IAAIylB,UAAU,CAC/Bn5B,KAAM,cACNiI,WAAY,CACXmxB,UACAC,aAEDv7B,QAAS,CACRw7B,UAAUC,GAgBF,UAfMzpB,2BAA2B0pB,mBAejC,yCAbI,koBAQM1pB,2BAA2BC,YAAc,IAAMD,2BAA2BE,cAAgB,mCACtFupB,EAAU36B,QAAQkxB,OAAS,mOAMjD2J,eAAAA,CAAgB3Y,GACfpc,UAAUC,SAAS+0B,oBAAoB5Y,EAAEtc,OAAO0L,aAAa,SAAS3O,QACvE,GAEDo4B,SAAAA,GACCV,EAAmBW,cAAcC,YAAYZ,EAC9C,EACAx5B,SAAU,CACTq6B,aAAc,WACb,MAAyD,KAAlDhqB,2BAA2B0pB,kBACnC,GAED36B,SAAoB,4+DAiDrBq6B,EAAUhE,IAAI6E,GACdb,EAAUhE,IAAI8E,GAGd,MAAMC,EAAoBf,EAAUgB,MAAMjB,GAE1Cn0B,SAASq1B,KAAKtsB,YAAYorB,GAG1B,IAAAmB,EAAe,CACdlG,QAASA,CAACC,EAAKpwB,KACTowB,EAAIhyB,OAAOiyB,iBAAiBloB,IAChCioB,EAAIe,IAAImF,IAET,MAAM3iB,EAAY,CACjB4iB,YAAAA,CAAa17B,GACZ,GAAIK,MAAM0D,QAAQ/D,GACjB,OAAOA,EAAQmH,QAAQxI,KAAK+8B,cAC7BL,EAAkB3sB,MAAMitB,MAAMC,IAAI,CAAE3D,SAAU,UAAW4D,QAAS,OAAQ3K,OAAQlxB,EAAS87B,KAAM,KAClG,EACAC,SAAAA,CAAU/7B,GACT,GAAIK,MAAM0D,QAAQ/D,GACjB,OAAOA,EAAQmH,QAAQxI,KAAKo9B,WAC7BV,EAAkB3sB,MAAMitB,MAAMC,IAAI,CAAE3D,SAAU,OAAQ4D,QAAS,OAAQ3K,OAAQlxB,EAAS87B,KAAM,KAC/F,EACAE,YAAAA,CAAah8B,GACZ,GAAIK,MAAM0D,QAAQ/D,GACjB,OAAOA,EAAQmH,QAAQxI,KAAKq9B,cAC7BX,EAAkB3sB,MAAMitB,MAAMC,IAAI,CAAE3D,SAAU,OAAQ4D,QAAS,UAAW3K,OAAQlxB,GACnF,EACAw3B,UAAAA,CAAWx3B,GACV,GAAIK,MAAM0D,QAAQ/D,GACjB,OAAOA,EAAQmH,QAAQxI,KAAK64B,YAC7B6D,EAAkB3sB,MAAMitB,MAAMC,IAAI,CAAE3D,SAAU,QAAS4D,QAAS,UAAW3K,OAAQlxB,GACpF,EACAk4B,gBAAAA,CAAiBl4B,GAIhB,GAAIK,MAAM0D,QAAQ/D,GACjB,OAAOA,EAAQmH,QAAQxI,KAAKu5B,kBAC7BmD,EAAkB3sB,MAAM5M,MAAM85B,IAAI,CACjC3D,SAAU,QACV4D,QAAS/mB,IAAIjU,SAAS,IAAM00B,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAE,sBAC7D0jB,OAAQlxB,GACV,EACAi8B,cAAaA,IACL,IAAI78B,QAAQ,CAACqO,EAASoQ,KAC5Bwd,EAAkBa,SAASC,QAAQ,CAClCvwB,MAAO,kBACPiP,OAAQ/F,IAAIjU,SAAS,IAAM00B,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAE,oBAC5DxN,QAAS8U,IAAIjU,SAAS,IAAM00B,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAE,yBAC7D4uB,YAAatnB,IAAIjU,SAAS,IAAM00B,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAE,gBACjE6uB,YAAa,kBACbC,YAAaxnB,IAAIjU,SAAS,IAAM00B,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAE,iBACjE+uB,YAAa,qBACbC,MAAAA,GACC/uB,GAAQ,EACT,EACAoQ,MAAAA,GACCpQ,GAAQ,EACT,MAIHmnB,QAAQzvB,GACA,IAAI/F,QAAQ,CAACqO,EAASoQ,KAC5Bwd,EAAkBa,SAASC,QAAQ,CAClCvwB,MAAOzG,GAASyG,OAAS,kBACzBiP,OAAQ1V,GAAS0V,QAAU/F,IAAIjU,SAAS,IAAM00B,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAE,oBAC/ExN,QAASmF,GAASnF,SAAW,GAC7Bo8B,YAAaj3B,GAASi3B,aAAe,KACrCC,YAAal3B,GAASk3B,aAAe,kBACrCC,YAAan3B,GAASm3B,aAAexnB,IAAIjU,SAAS,IAAM00B,EAAIhyB,OAAOiyB,iBAAiBloB,GAAGE,EAAE,iBACzF+uB,YAAap3B,GAASo3B,aAAe,4BACrCC,MAAAA,GACC/uB,GAAQ,EACT,EACAoQ,MAAAA,GACCpQ,GAAQ,EACT,MAIH6pB,YAAAA,CAAaW,EAAUzuB,EAAOxJ,EAASy8B,GAAS,EAAOx5B,GAAO,GAC7D,IAAIkC,EAAU,CAAE8yB,SAAUA,EAAU4D,QAASryB,EAAO0nB,OAAQlxB,EAASiD,QAEhEw5B,IACJt3B,EAAQ22B,KAAO,KAEhBT,EAAkB3sB,MAAMitB,MAAMC,IAAIz2B,EACnC,EACAu3B,aAAAA,CAAcC,EAAc1E,EAAW,OAAQzuB,EAAQ,OAAQizB,GAAS,EAAOx5B,GAAO,GAErF,QAAI05B,EAAanG,MAAMx2B,GAA8B,iBAAZA,KACxC28B,EAAax1B,QAAQnH,GAAWrB,KAAK24B,aAAaW,EAAUzuB,EAAOxJ,EAASy8B,EAAQx5B,KAC7E,EAGT,EACA8V,iBAAAA,CAAkBha,GAEjB,IAAGA,EAAMsN,eAAe,SAAWtN,EAAMqC,KAAKF,gBAAkB,aAAaA,cAA7E,CAIA,GAAqB,iBAAVnC,EACV,OAAO+Z,EAAUof,iBAAiBn5B,GAGnC,GAAIsB,MAAM0D,QAAQhF,IAAUA,EAAMy3B,MAAMU,GAAsB,iBAARA,GACrD,OAAOn4B,EAAMy3B,MAAM1d,EAAUof,kBAG9B,IAAIn5B,EAAMsN,eAAe,aAActN,EAAMs4B,QAA7C,CAIA,GAAqB,iBAAVt4B,GAAgC,OAAVA,EAAgB,CAChD,IAAI69B,EAAS,GAoBb,OAjBI79B,EAAMsN,eAAe,aAAetN,EAAMa,UAAUf,MAAMkB,OAC7D68B,GAAU,mBAAqB79B,EAAMa,SAASf,KAAKkB,OAAOC,SAAWjB,EAAMa,SAASf,KAAKkB,QAAU,OAC3FhB,EAAMsN,eAAe,aAC7BuwB,GAAU,kBAAoB79B,EAAMiB,QAAQ68B,cAAgB,QAEzD99B,EAAMsN,eAAe,WAAatN,EAAMwE,OAAO8I,eAAe,SACjEuwB,GAAU,oBAAsB79B,EAAMwE,OAAO8E,IAAM,QAEhDtJ,EAAMsN,eAAe,WACxBuwB,GAAU,gBAAkB79B,EAAM+9B,MAAQ,QAG7B,IAAVF,IACHA,EAAS,kBAAoB3wB,KAAKE,UAAUpN,GAAS,QAEtD69B,GAAU,0BAA4B1rB,2BAA2BC,YAAc,IAAMD,2BAA2BE,cAEzG0H,EAAUof,iBAAiB0E,EACnC,CAGA9jB,EAAUof,iBAAiB,mEAAqEhnB,2BAA2BC,YAAc,IAAMD,2BAA2BE,cA5BzK,CAZA,CAyCF,EACA2rB,mBAAAA,CAAoB/8B,GAEnB,GAAuB,iBAAZA,EACV,OAAO8Y,EAAUkjB,aAAah8B,GAG/B,GAAIK,MAAM0D,QAAQ/D,GAAU,CAE3B,GAAIA,EAAQw2B,MAAMwG,GAAsB,iBAARA,GAC/B,OAAOh9B,EAAQw2B,MAAM1d,EAAUkjB,cAGhC,GAAIh8B,EAAQw2B,MAAMwG,GAAsB,iBAARA,IAA6B,OAARA,IACpD,OAAOh9B,EAAQw2B,MAAMwG,IAChBA,EAAI3wB,eAAe,SAAW2wB,EAAIn+B,KAAKwN,eAAe,UACzDyM,EAAUkjB,aAAa/vB,KAAKE,UAAU6wB,EAAIn+B,KAAKkB,SAE/C+Y,EAAUof,iBAAiBjsB,KAAKE,UAAU6wB,KAI9C,CAGuB,iBAAZh9B,GAAoC,OAAZA,EAWnC8Y,EAAUof,iBAAiB,mEAAqEhnB,2BAA2BC,YAAc,IAAOD,2BAA2BE,eAVtKpR,EAAQqM,eAAe,SAAWrM,EAAQnB,KAAKwN,eAAe,UAEjEyM,EAAUkjB,aAAa/vB,KAAKE,UAAUnM,EAAQnB,KAAKkB,SAEnD+Y,EAAUof,iBAAiBjsB,KAAKE,UAAUnM,GAO7C,EACAi9B,mBAAAA,CAAoBza,GACnB,MAAM5T,EAAQ,IAAIsuB,MAAM,kBACxB1a,EAAKlO,iBAAiB,CAAC,mDAAmDnN,QAAQxF,GAAMA,EAAGw7B,cAAcvuB,GAS1G,EACAwuB,oBAAAA,CAAqBr+B,EAAOyjB,GAC3B,QAAa1iB,IAAT0iB,GACH,GAAIzjB,GAASA,EAAMs+B,WAAaC,KAAKC,aACpC,OAAOrG,GAAOpe,EAAUskB,qBAAqBlG,EAAKn4B,QAEnD,GAA+B,KAA3BA,GAAOa,UAAUomB,OAAe,CACnC,IAAIiR,EAASoC,EAAeS,SAAS/6B,EAAMa,SAASf,MAC9B,iBAAXo4B,IACVA,EAASl4B,EAAMa,SAASf,MAGzBia,EAAUmkB,oBAAoBza,GAG9B,MAAMgb,EAAWj7B,OAAOs0B,QAAQI,GAAQv1B,OAAO,EAAEq1B,EAAK7F,MACrD,MAAMzsB,EAAQ+d,EAAKib,cAAc,4BAA8B1G,EAAM,MACrE,OAAKtyB,IAGLA,EAAM04B,cAAc,IAAIO,YAAY,sBAAuB,CAACxM,aAUrD,KACL3sB,IAAIo5B,GAAOA,EAAI,IAIZ77B,EAAQ0gB,EAAKib,cAAc,yBAgBjC,YAfI37B,GAAS07B,EAAS37B,OACrBC,EAAMq7B,cAAc,IAAIO,YAAY,iBAAkB,CAACxM,OAAQsM,KAY/DA,EAASr2B,QAAQ2R,EAAU0e,YAG7B,CAGD,GAA+B,KAA3Bz4B,GAAOa,UAAUomB,OAAe,CACnC,IAAIiR,EAASoC,EAAeS,SAAS/6B,EAAMa,SAASf,MACpDia,EAAU0e,WAA8B,iBAAXP,EAAuB10B,OAAOoT,OAAOshB,GAAUA,EAC7E,MACCne,EAAUC,kBAAkBha,EAE9B,GAEDw2B,EAAIhyB,OAAOiyB,iBAAiB1c,UAAYA,EACxCyc,EAAI2D,QAAQ,YAAa3D,EAAIhyB,OAAOiyB,iBAAiB1c,aC5bvD8kB,EAAe,CACdtI,QAASA,CAACC,EAAKpwB,KACd,GAAIowB,EAAIhyB,OAAOiyB,iBAAiBxnB,KAC/B,OAMD,SAAS6vB,EAAsB5G,EAAQ6G,GAClCz9B,MAAM0D,QAAQkzB,GACjBA,EAAO9vB,QAAQ22B,GAEfv7B,OAAOs0B,QAAQI,GAAQ9vB,QACtB,EAAEqC,EAAOu0B,KAAUA,EAAK52B,QACvBpI,GAAS++B,EAAK/+B,EAAOyK,IAGzB,CAZK+rB,EAAIhyB,OAAOiyB,iBAAiB1c,WAChCyc,EAAIe,IAAIkF,GAYT,IAAIwC,EAAuB,CAC1BC,SAAS,EACTC,MAAM,EACNC,QAAS,CACR3b,KAAM,CAAC,aAAc,WACrBmZ,MAAO,CAAC,aAAc,UAAW,YAAa,gBAE/C9sB,QAAS,CACR2T,IAAAA,CAAKA,EAAMyU,GACVzU,EAAKxO,kBACLijB,EAAO9vB,QAAQ+vB,GAAO1U,EAAKtO,aAC1B,EACAgjB,EAAIzE,UAAYyE,EAAIl3B,SAEtB,EACA,WAAM27B,CAAM1E,GACX,MAAM3pB,EAAKioB,EAAIhyB,OAAOiyB,iBAAiBloB,GACvC,IAAKA,EACJ,OAAOlO,QAAQye,OAAO,8BAEvBugB,eAAeC,EAAcpH,GAC5BA,EAASA,EAAOl2B,OAAO,CAAC6X,EAAQse,KAC/B,OAAQA,EAAIh5B,MACZ,IAAK,YACL,IAAK,cACAg5B,EAAIl3B,QACP4Y,EAAOse,EAAIl3B,SAAW,CAACk3B,EAAI7uB,KAE3BuQ,EAAO0lB,SAAW,CAACpH,EAAI7uB,KACxB,MACD,IAAK,UACCuQ,EAAO0lB,WACX1lB,EAAO0lB,SAAW,IACnB1lB,EAAO0lB,SAASt8B,KAAKk1B,EAAIl3B,SACzB,MACD,IAAK,aACJuC,OAAOs0B,QAAQK,EAAIzE,UACjBtrB,QAAQ,EAAEvE,EAAOo6B,MACZpkB,EAAOhW,KACXgW,EAAOhW,GAAS,IACbvC,MAAM0D,QAAQi5B,GACjBpkB,EAAOhW,GAAOZ,QAAQg7B,GAEtBpkB,EAAOhW,GAAOZ,KAAKg7B,KAIvB,OAAOpkB,GACL,CAAA,GACH,IAAI1J,EAAU,EACd,MAAMqvB,QAAan/B,QAAQsyB,IAAInvB,OAAOs0B,QAAQI,GAC5CvrB,KAAK,CAAC1K,EAAGw9B,IAAM,CAAC,YAAYr9B,QAAQq9B,EAAE,IAAM,CAAC,YAAYr9B,QAAQH,EAAE,KACnEuD,IAAI65B,OAAQx7B,EAAO27B,MACnB,GAAa,YAAT37B,EAAqB,OAClB0K,EAAGC,aAAa,aAEtB3K,EAAQ,sBADQ0K,EAAGE,EAAE,qBACqB,OAC3C,MACC5K,EAAQ,OAASA,EAAQ,QAG1B,OADAsM,GAAWqvB,EAAK18B,OACTe,EACJ,OACA27B,EAAKhG,KAAK,aACV,WAEL,MAAO,CACNrpB,UACAqvB,OAEF,CAEA,IAAIrvB,EAASqvB,EACTl+B,MAAM0D,QAAQkzB,KACd/nB,UAASqvB,cAAeF,EAAcpH,MAEtC/nB,UAASqvB,cAAeh8B,OAAOs0B,QAAQI,GACxCl2B,OAAOq9B,MAAOtxB,GAAMtD,EAAOu0B,MAC3B,MAAMnlB,QAAe9L,GACfoC,QAAEA,EAAOqvB,KAAEA,SAAeF,EAAcN,GAO9C,OANAnlB,EAAO1J,SAAWA,EAClB0J,EAAO2lB,KAAKv8B,KAAK,OACdwH,EACA,gBACA+0B,EAAKhG,KAAK,IACV,cACI3f,GACLxZ,QAAQqO,QAAQ,CAAEyB,QAAS,EAAGqvB,KAAM,aAGnCjxB,EAAGC,aAAa,MACtB,MAAMkxB,EAAWnxB,EAAGE,EAAE,cAAe,CAAEnM,EAAG6N,IAE1CqmB,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUwe,aACrC,QACAmH,EACA,OAASF,EAAKhG,KAAK,IAAM,SACzB,GACA,EAEF,EACAX,GAAAA,CAAIX,GACH4G,EAAsB5G,EAAQ,CAACl4B,EAAOyK,KACrC,IAAIxJ,EAAU,GAYd,OAXAA,GAAW,YAAcjB,EAAMiB,QAAU,OACzCA,GAAW,aAAejB,EAAM84B,SAAW,KAC3C73B,GAAW,gBAAkBjB,EAAM+4B,KAAO,KACtC/4B,EAAMg5B,WAAah5B,EAAMg5B,UAAUl2B,SACtC7B,GAAW,gBACXjB,EAAMg5B,UAAU5wB,QAAQ+vB,IACvBl3B,GAAW,aAAek3B,EAAIhyB,KAAO,KACrClF,GAAW,WAAak3B,EAAIY,KAAO,KACnC93B,GAAW,eAAiBk3B,EAAIc,SAAW,QAGrCj5B,EAAMk5B,UACb,IAAK,UACL,IAAK,eACL,IAAK,kBACL,IAAK,eACAzuB,EACHA,GAAS,SAAWzK,EAAMk5B,SAE1BzuB,EAAQ,OAASzK,EAAMk5B,SACxB1C,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUwe,aAAa,OAAQ9tB,EAAOxJ,GAAS,GAC3E,MACD,IAAK,SACL,IAAK,cACL,IAAK,iBACAwJ,EACHA,GAAS,SAAWzK,EAAMk5B,SAE1BzuB,EAAQ,OAASzK,EAAMk5B,SACxB1C,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUwe,aAAa,OAAQ9tB,EAAOxJ,GAAS,GAC3E,MACD,QACCA,EAAU,aAAejB,EAAMk5B,SAAW,OAASj4B,EAC/CwJ,IACHxJ,EAAUwJ,EAAQ,OAASxJ,GAC5Bu1B,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUof,iBAAiBl4B,KAI3D,EACAm4B,SAAAA,CAAUlB,GACT4G,EAAsB5G,EAAQ,CAACl4B,EAAOyK,KACrC,IAAIxJ,EAAU,GACVwJ,IACHxJ,GAAWwJ,EAAQ,QACpBxJ,GAAW,SAAWjB,EAAM2U,MAAQ,OACpC1T,GAAW,YAAcjB,EAAMiB,QAAU,OACzCA,GAAW,aAAejB,EAAM84B,SAAW,KAC3C73B,GAAW,gBAAkBjB,EAAM+4B,KAAO,KACtC/4B,EAAMg5B,WAAah5B,EAAMg5B,UAAUl2B,SACtC7B,GAAW,gBACXjB,EAAMg5B,UAAU5wB,QAAQ+vB,IACvBl3B,GAAW,aAAek3B,EAAIhyB,KAAO,KACrClF,GAAW,WAAak3B,EAAIY,KAAO,KACnC93B,GAAW,eAAiBk3B,EAAIc,SAAW,QAG7CzC,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUof,iBAAiBl4B,IAEzD,EACAo4B,EAAAA,CAAGnB,GACF4G,EAAsB5G,EAAQ,CAACl4B,EAAOyK,KACrC,IAAIxJ,EAAU,GACVwJ,IACHxJ,GAAWwJ,EAAQ,aACE1J,IAAlBf,EAAMs5B,UACTr4B,GAAWjB,EAAMs5B,QAAU,aACTv4B,IAAff,EAAMq4B,OACTp3B,GAAW,SAAWjB,EAAMq4B,KAAO,aAClBt3B,IAAdf,EAAMu5B,MACTt4B,GAAW,QAAUjB,EAAMu5B,IAAM,aACZx4B,IAAlBf,EAAMiB,QACTA,GAAW,YAAcjB,EAAMiB,QAAU,YACdF,IAAnBf,EAAM0zB,WACdzyB,GAAW,aAAejB,EAAM0zB,SAAS8F,KAAK,QAAU,aAClCz4B,IAAnBf,EAAM84B,WACT73B,GAAW,aAAejB,EAAM84B,SAAW,WACzB/3B,IAAff,EAAM+4B,OACT93B,GAAW,gBAAkBjB,EAAM+4B,KAAO,MAE3CvC,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUof,iBAAiBl4B,IAEzD,EACAw4B,IAAAA,CAAKvB,GACJ4G,EAAsB5G,EAAQ,CAACl4B,EAAOyK,KACjCA,EACHA,GAAS,KAAOzK,EAAMiB,QAEtBwJ,EAAQzK,EAAMiB,QAEf,IAAIA,EAAU,GACdA,GAAW,oBAAsBjB,EAAM05B,WAAa,KACpDz4B,GAAW,gBAAkBjB,EAAMqJ,OAAS,KAC5CpI,GAAW,yBAA2BjB,EAAM25B,qBAE5CnD,EAAIhyB,OAAOiyB,iBAAiB1c,UAAUwe,aACrC,QACA9tB,EACAxJ,GACA,IAGH,IAOF,SAAS0+B,EAAWlc,EAAMsT,EAAKj3B,EAAM0E,GACpC,GAAmB,iBAARif,QAA+B1iB,IAAXyD,GAC7BuyB,EAAKj3B,EAAM0E,GAAU,CAACif,EAAMsT,EAAKj3B,GAClC2jB,OAAO1iB,OACD,GAAI0iB,EAAM,CAChB,GAAmB,iBAARA,EACV,MAAM,IAAIuT,UAAU,iEACTj2B,IAARg2B,QAA8Bh2B,IAATjB,QAAiCiB,IAAXyD,IAC9CA,EAASif,EACTA,OAAO1iB,EAET,CACA,GAAI0iB,EAAM,CAET,IAAKA,EAAKxO,kBAAoBwO,EAAKtO,YAClC,MAAM,IAAI6hB,UAAU,kCAErBvT,EAAO,CACNxO,gBAAiBwO,EAAKxO,gBACtBE,YAAasO,EAAKtO,aAGf3Q,EACHA,EAAOif,KAAOA,EAEdjf,EAAS,CAACif,OACZ,CAEA,MAAO,CAACsT,EAAKj3B,EAAM0E,EACpB,CACA,SAASo7B,EAAmB/+B,GAC3B,GAA6B,iBAAlBA,EAASf,MAAqBe,EAASf,gBAAgB2E,OACjE,OAAOm7B,EAAmB,CAAE9/B,KAAMe,IAEnC,MAAMgZ,EAAShZ,EAASf,KAExB,cADOe,EAASf,KACX+Z,GAEAA,EAAOqd,KAGXrd,EAAOqd,KAAKr2B,SAAWA,EAFvBgZ,EAAOqd,KAAO,CAAEr2B,YAGVgZ,GALC,CAACqd,KAAM,CAACr2B,YAAWf,KAAM,KAMlC,CACA,SAAS+/B,EAAoBr7B,GAC5B,IAAe,IAAXA,GAA+B,QAAXA,EACvB,MAAO,IAAKy6B,EAAsBC,SAAS,EAAOC,MAAM,GAEzD,IAAK36B,IAAqB,IAAXA,EACd,MAAO,IAAKy6B,GAEb,GAAe,YAAXz6B,EACH,MAAO,IAAKy6B,EAAsBE,MAAM,GAEzC,GAAe,SAAX36B,EACH,MAAO,IAAKy6B,EAAsBC,SAAS,GAE5C,MAAMA,QAAEA,EAAOC,KAAEA,EAAIrvB,QAAEA,EAAOsvB,QAAEA,GAAY56B,EAa5C,OAXAA,EAAS,IAAKy6B,GAEdz7B,OAAOs0B,QAAQ,CAAEqH,OAAMD,YAAW92B,QAAQ,EAAE4vB,EAAKv1B,WAClC1B,IAAV0B,IACH+B,EAAOwzB,GAAOv1B,KAEhBe,OAAOs0B,QAAQ,CAAEhoB,UAASsvB,YAAWh3B,QAAQ,EAAE4vB,EAAKv1B,WACrC1B,IAAV0B,IACH+B,EAAOwzB,GAAO,IAAKxzB,EAAOwzB,MAASv1B,MAG9B+B,CACR,CACA,SAASs7B,EAAkBt7B,GAC1B,MAAMqV,EAASgmB,EAAoBr7B,GAAQ+Y,eAE3C,GAAK/Y,GAAQif,KAEN,CACN,MAAMsc,EAAclmB,EAAO/J,QAAQ2T,KACnC5J,EAAO/J,QAAU,IAAK+J,EAAO/J,QAAS2T,KAAMyU,GAAU6H,EAAYv7B,EAAOif,KAAMyU,GAChF,MAJCre,EAAOulB,QAAU,IAAKvlB,EAAOulB,QAAS3b,KAAM,IAM7C,OAAO5J,CACR,CACA,SAASmmB,EAAehgC,GACvB,OAAIA,EAAMa,SACoB,KAAzBb,EAAMa,SAASomB,OACX,CAAC,CACP9nB,KAAM,YACN8B,QAASjB,EAAMiB,QACfqI,IAAKtJ,EAAMs3B,QAAQkB,cAGcz3B,MAA9Bf,EAAMa,SAASf,KAAKo4B,OAA4B,GAC7Cl4B,EAAMa,SAASf,KAAKo4B,OAElBl4B,EAAMs3B,QACT,CAAC,CACPn4B,KAAM,cACN8B,QAASjB,EAAMiB,QACfqI,IAAKtJ,EAAMs3B,QAAQkB,cAGb,CAAC,CACPr5B,KAAM,SACN8B,QAASjB,EAAMiB,SAGlB,CACA,SAASg/B,EAAoB1iB,EAAe2a,GAC3C,MAAMre,EAAS,CAAA,EACTqmB,EAAO,GAEb,GAAcn/B,MAAVm3B,EAAqB,MAAO,CAAA,EAEhC,KAAOA,EAAOp1B,QACbo9B,EAAKj9B,KAAKi1B,EAAO1iB,OAClB,IAAK,IAAIxV,KAASkgC,EAAM,CACvB,IAAI/gC,EAAOa,EAAMb,KACbghC,EAAU,KACd,IAAK,IAAI1xB,KAAK8O,EAAc6hB,QAAS,CACpC,IAAIgB,EAAsB7iB,EACxB6hB,QAAQ3wB,GACR7I,SAASzG,GACPkhC,EAAoB9iB,EAAczN,QAAQrB,GAC9C,GAAI2xB,GAAuBC,IAC1BF,EAAU1xB,EACK,QAAX0xB,GACH,KAEH,CACIA,IACHhhC,EAAOghC,GACQ5iB,EAAczN,QAAQ3Q,IAEhC0a,EAAO1a,KACX0a,EAAO1a,GAAQ,IACZmC,MAAM0D,QAAQhF,GACjB6Z,EAAO1a,GAAM8D,QAAQjD,GAErB6Z,EAAO1a,GAAM8D,KAAKjD,IAGpBk4B,EAAOj1B,KAAKjD,EACb,CACA,OAAO6Z,CACR,MArJ+B9Y,IAA3BqF,GAASmX,gBACZ0hB,EAAuBY,EAAoBz5B,EAAQmX,gBAsJpD,MAAM4Z,EAAc7G,MAAMlT,OAAO,CAChCwB,QAAS,IACTwY,QAASjlB,2BAA2BsH,SACjCtH,2BAA2BoN,UAC3B,MAGJ4X,EAAYE,aAAaC,QAAQC,IAAI/yB,IACpC,GAAqB,QAAjBA,EAAO6E,SAAqB7E,EAAO1E,KACtC,OAAO0E,EAER,GAAIA,EAAO1E,gBAAgB03B,SAC1B,OAAOhzB,EAER,IAAKhB,OAAOoT,OAAOpS,EAAO1E,MAAM23B,MAAMC,KACjCA,aAAgBC,aAEhBr2B,MAAM0D,QAAQ0yB,IACVA,EAAKD,MAAMnvB,KAAOA,aAAasvB,SAEpC,CACH,MAAMC,EAAUr0B,OAAOs0B,QAAQtzB,EAAO1E,MAAMkC,OAAO,CAAC+1B,GAAKC,EAAKN,MAC7D,GAAIA,aAAgBC,SACnB,IAAK,MAAMxxB,KAAQuxB,EAClBK,EAAGP,SAASje,OAAOye,GAAON,EAAK50B,OAAS,EAAI,KAAO,IAAKqD,QAC/C7E,MAAM0D,QAAQ0yB,GACpBA,EAAKD,MAAMnvB,KAAOA,aAAasvB,OAClCG,EAAGE,SAASD,GAAON,EAEnBA,EAAKtvB,QAAQjC,GAAQ4xB,EAAGP,SAASje,OAAOye,GAAON,EAAK50B,OAAS,EAAI,KAAO,IAAKqD,IAG9E4xB,EAAGE,SAASD,GAAON,EAEpB,OAAOK,GACL,CACFP,SAAU,IAAIA,SACdS,SAAU,CAAA,IAEXJ,EAAQL,SAASje,OAAO,YAAarM,KAAKE,UAAUyqB,EAAQI,WAC5DzzB,EAAO1E,KAAO+3B,EAAQL,QACvB,CAEA,OAAOhzB,IAGR2yB,EAAYE,aAAax2B,SAAS02B,IACjC12B,IACuC,OAAlCA,EAAS2D,QAAQ+Y,gBACkB,IAAnC1c,EAAS2D,QAAQ+Y,eACiB,QAAlC1c,EAAS2D,QAAQ+Y,eAIjB1c,EAASf,KAAKo4B,SACjBr3B,EAASf,KAAKo4B,OAASr3B,EAASf,KAAKo4B,OAAOv1B,OAC3Cw1B,IAAQt3B,EAAS2D,OAAO2zB,EAAIh5B,KAAO,iBAAmBq3B,EAAIhyB,OAAOiyB,iBAAiBxnB,KAAKmpB,sBAAsBD,EAAIh5B,OAAOg5B,EAAKt3B,EAAS2D,UALhIo7B,EAAmB/+B,IAU5Bb,IACC,GAAkB,gBAAdA,EAAMq4B,KACT,OAAOh4B,QAAQye,OAAO,CAAEwZ,SAAS,KAASt4B,IAE3C,MAAMsgC,EAAcR,EAAkB9/B,EAAMwE,QAE5C,IAAK87B,EAAYnB,KAChB,OAAO9+B,QAAQye,OAAO9e,GAEvB,MAAMugC,EAAYP,EAAehgC,GAE3Bk4B,EAAS+H,EAAoBK,EAAaC,GAEhD,IAAK,IAAIphC,KAAQ+4B,EAChBoI,EAAYxwB,QAAQ3Q,GAAM+4B,EAAO/4B,IAGlC,OAAIohC,EAAUz9B,OACNzC,QAAQye,OAAO9e,GAEhBK,QAAQye,OAAO,CAAEwZ,SAAS,KAASt4B,MAI5Cw2B,EAAIhyB,OAAOiyB,iBAAiBxnB,KAAO,CAClCkL,OAAO7Q,GACC6tB,EAAYhd,OAAO,CAAC7Q,QAE5BlC,IAAGA,CAACqc,EAAMsT,EAAKxtB,EAAQ/E,MACrBuyB,EAAKxtB,EAAQ/E,GAAUm7B,EAAWlc,EAAMsT,EAAKxtB,EAAQ/E,GAClD+E,IACC/E,EACHA,EAAO+E,OAASA,EAEhB/E,EAAS,CAAC+E,WAEL4tB,EAAY/vB,IAAI2vB,EAAKvyB,IAE7B0X,KAAIA,CAACuH,EAAMsT,EAAKj3B,EAAM0E,MACpBuyB,EAAKj3B,EAAM0E,GAAUm7B,EAAWlc,EAAMsT,EAAKj3B,EAAM0E,GAC3C2yB,EAAYjb,KAAK6a,EAAKj3B,EAAM0E,IAEpCM,IAAAA,CAAK4xB,EAAS8J,EAAiB/c,GAC9B,GAAIniB,MAAM0D,QAAQ0xB,GAAU,CAC3B,MAAMznB,EAAOunB,EAAIhyB,OAAOiyB,iBAAiBxnB,KAEzC,OAAO5O,QACLod,WAAWiZ,EAAQlxB,IAAI,CAAChB,EAAQrB,KAC3B7B,MAAM0D,QAAQR,KAClBA,EAAS,CAAC,IAAMrB,EAAOqB,IACjByK,EAAKnK,KAAKN,EAAO,GAAI,CAC3BoZ,YAAapZ,EAAO,GACpB+Y,eAAe,OAGhBjd,KAAKuZ,IACL,MAAM,CAAA,CAAMrV,GAAWm7B,EAAWlc,OAAM1iB,OAAWA,EAAWy/B,GAAmB,IAC3EF,EAAcR,EAAkBt7B,GAEtC,IAAK87B,EAAYpB,UAAYoB,EAAYnB,KACxC,OAAOtlB,EAGR,MAAM4mB,EAAc,CAAA,EACpB,IAAK,IAAI1yB,KAAO8L,EAAQ,CACvB,MAAQ6mB,EAAShJ,GAAwB,cAAf3pB,EAAIkZ,OAC3B,CAAEqZ,EAAYpB,QAASnxB,EAAItL,OAC3B,CAAE69B,EAAYnB,KAAMpxB,EAAI4yB,QAC3B,IAAKD,EACJ,OAED,MAAMxI,EAAS+H,EAAoBK,EAAaN,EAAetI,IAE/D,IAAK,IAAIv4B,KAAQ+4B,EACXuI,EAAYthC,GAKhBshC,EAAYthC,GAAMu4B,EAAKlzB,OAAOoZ,aAAesa,EAAO/4B,GAJpDshC,EAAYthC,GAAQ,CACnB,CAACu4B,EAAKlzB,OAAOoZ,aAAcsa,EAAO/4B,GAKtC,CAEA,IAAK,IAAIyhC,KAAWH,EACnBH,EAAYxwB,QAAQ8wB,GAASH,EAAYG,IAG1C,OAAO/mB,GAEV,CACA,IAAIxQ,OAAEA,EAAMC,IAAEA,EAAGC,OAAEA,EAAM/E,OAAEA,GAAWkyB,EAStC,YARwB31B,IAApBy/B,IACHh8B,EAASg8B,GAELn3B,IACJA,EAAS,OAENA,EAAOlH,cACVkH,EAASA,EAAOlH,eACH,OAAVkH,EACIzJ,KAAKwH,IAAIqc,EAAMna,EAAKC,EAAQ/E,GACf,QAAV6E,EACHzJ,KAAKsc,KAAKuH,EAAMna,EAAKC,EAAQ/E,QAEpCmyB,QAAQ32B,MAAM,8BAA+BqJ,EAE/C,EACAw3B,gBAAgBr8B,GACRs7B,EAAkBt7B,IAI3BgyB,EAAI2D,QAAQ,OAAQ3D,EAAIhyB,OAAOiyB,iBAAiBxnB,QC3hBlD6xB,EAAe,CACdtyB,aAAa8N,IACL,CACNjT,OAAQ,MACRC,IAAK,uCAAyCgT,IAGhDC,YAAWA,CAACC,EAAWC,KAEf,CACNpT,OAAQ,OACRC,IAAK,uCACLC,OAJc,CAACiT,aAAYC,cAO7BE,YAAWA,KACH,CACNtT,OAAQ,MACRC,IAAK,yCAGPsT,qBAAoBA,KACZ,CACNvT,OAAQ,MACRC,IAAK,8CCrCR,MAAMkT,EAAazG,IAAIgrB,SAAS,IAC1BC,EAAiB,CAAA,EACvB,IAAIC,GAAgBlrB,IAAImrB,IAAI/uB,2BAA2B8uB,eAC5CE,GAAcprB,IAAIjU,SAAS,IACjCm/B,GAAcx+B,MACX0P,2BAA2BivB,iBAAiBC,KAAK5kB,GAAYA,EAAS4U,SAAW4P,GAAcx+B,OAAO6+B,QAD7E,MAoBjC,MAAMhM,GAAU,CACf2L,iBACAE,eACA5kB,WAAAA,CAAYE,GACX,MAAM8kB,EAAW/9B,OAAO6T,KAAKmF,GAC7B,OAAO5c,KAAK4E,OAAOiyB,iBAAiBxnB,KAClCnK,KAAKg8B,EAAWvkB,YAAYglB,EAAU9kB,IACtCnc,KAAKyN,IACLA,EAAIjO,KAAKsI,QAAQ8O,IAChBsF,EAAWtF,EAAIoF,UAAUpF,EAAIsqB,QAAUtqB,EAAIuqB,OAI5CR,GAAcx+B,MAAQga,EAEf1O,GAEV,EACAS,YAAAA,CAAa8N,GACZ,OAAIhb,MAAM0D,QAAQsX,GACVjc,QAAQsyB,IAAIrW,EAAS9W,IAAI5F,KAAK4E,OAAOiyB,iBAC1CloB,GAAGC,gBAEDwyB,EAAe1kB,KACnB0kB,EAAe1kB,GAAY1c,KAAK4E,OAAOiyB,iBAAiBxnB,KACtDnK,KAAKg8B,EAAWtyB,aAAa8N,IAC7Bhc,KAAKyN,GAAOA,GAAKjO,KA1CtB,SAAyB4hC,EAAKplB,GAC7B,OAAOolB,EAAI/+B,OAAOwgB,GAAKA,EAAE7G,UAAYA,GAAUta,OAAO,CAAC+L,EAAK4zB,KACtD5zB,EAAI4zB,EAAKH,UACbzzB,EAAI4zB,EAAKH,QAAUG,EAAKF,MAClB1zB,GACL,CAAA,EACJ,CAoC6B6zB,CAAgB7zB,EAAIjO,KAAMwc,GAAY,CAAA,GAC9Dhc,KAAKyN,IACLyO,EAAWF,GAAYvO,KAEnBizB,EAAe1kB,GACvB,EACAulB,KAAAA,CAAMvlB,EAAUklB,EAAQj4B,GAEvB,OADAotB,QAAQC,KAAK,cACN7gB,IAAIjU,SAAS,IAAMlC,KAAK6O,EAAE6N,EAAUklB,EAAQj4B,GACpD,EACAkF,CAAAA,CAAE6N,EAAUklB,EAAQj4B,GAQnB,QAPexI,IAAXwI,IACFjI,MAAM0D,QAAQsX,IAAgC,GAAnBA,EAASxZ,QACpCwZ,EAASvX,OAAuC,GAA9BuX,EAASvX,MAAM,KAAKjC,UAEvCyG,EAASi4B,GACRllB,EAAUklB,GAAUllB,EAASvX,MAAQuX,EAASvX,MAAM,KAAOuX,QAE9Cvb,IAAXygC,EAEH,OADA7K,QAAQ32B,MAAM,gBAAiBsc,EAAUklB,EAAQj4B,GAC1C,GAER,IAAIu4B,EAAM/rB,IAAIjU,SAAS,IACjB0a,EAAWF,GA1DnB,SAAiCA,EAAUklB,EAAQj4B,GAClD,IAAIsQ,EAAS2C,EAAWF,GAAUklB,GAClC,OAAK3nB,GAEDtQ,IACHsQ,EAASA,EAAO+G,QAAQ,eAAgB,CAACmhB,EAAOC,SAAsBjhC,IAAfwI,EAAOy4B,GAAoBD,EAAQx4B,EAAOy4B,KAC3FnoB,GAHC,aAAe2nB,EAAS,IAIjC,CAqDUS,CAAwB3lB,EAAUklB,EAAQj4B,GADzC,IAKT,OAFKiT,EAAWF,IACf1c,KAAK4O,aAAa8N,GACZwlB,EAAIr/B,KACZ,GAGD,IAAAy/B,GAAe,CACd3L,OAAAA,CAAQC,EAAKpwB,GACPowB,EAAIhyB,OAAOiyB,iBAAiBxa,SAChCua,EAAIe,IAAIjB,GACJE,EAAIhyB,OAAOiyB,iBAAiBxnB,MAChCunB,EAAIe,IAAIsH,GACTrI,EAAIhyB,OAAOiyB,iBAAiBloB,GAAK,CAChCE,EAAG6mB,GAAQ7mB,EACXD,aAAc2zB,GAAO7M,GAAQ9mB,aAAa1J,KAAK0xB,EAAK2L,GACpD5lB,YAAa6lB,GAAQ9M,GAAQ/Y,YAAYzX,KAAK0xB,EAAK4L,GACnDnB,cAAeA,GACfE,eACAU,MAAOvM,GAAQuM,OAEhBrL,EAAI2D,QAAQ,KAAM3D,EAAIhyB,OAAOiyB,iBAAiBloB,GAC/C,GChFsBwH,IAAIylB,UAAU,CACpCn5B,KAAM,iBACNiI,WAAY,CACXwQ,qBACAxE,0BAKAihB,IAAIthB,SAASzR,OAAOjD,QAAQ,CAAC8gC,OAAQ,CAACC,QAAS,QAC/C/K,IAAI2K,IACJ3F,MAAM,SCjCR,IAAAgG,GAAe,CACdvjC,MAAO,CACN,qBAEDC,MAAO,CACN6V,WAAYrQ,QAEb3C,SAAU,CACT0gC,uBAAAA,GACC,OAAK5iC,KAAKkV,YAAkD,cAApClV,KAAKkV,WAAWtC,UAAU,EAAG,IAE9C,wCAA0C5S,KAAKkV,WAD9ClV,KAAKkV,UAEd,GAED3U,QAAS,CACRsiC,gBAAAA,GACC7iC,KAAK+P,MAAM+yB,UAAUC,OACtB,EACAC,QAAAA,GACC,IAAIz8B,EAAOvG,KAAK+P,MAAM+yB,UAAUG,MAChC,GAAI18B,GAAQA,EAAK,GAAI,CACpB,IAAI28B,EAAS,IAAIC,WACjBD,EAAOE,OAAS7f,IACfvjB,KAAKkB,MAAM,oBAAqBqiB,EAAEtc,OAAOgT,SAE1CipB,EAAOG,cAAc98B,EAAK,GAC3B,CACD,EACA+8B,WAAAA,GACCtjC,KAAKkB,MAAM,oBAAqB,GACjC,GAEDI,SAAU,inDC9BXiiC,GAAe,CACd74B,WAAY,CACX84B,QCJa,CACdpkC,MAAO,CACN,UAEDC,MAAO,CACN6V,WAAY,CACX3V,KAAM,CAACy4B,KAAMp0B,QACblE,UAAU,IAGZQ,KAAIA,KACI,CACNujC,QAAS,KAGX5jC,MAAO,CACNqV,UAAAA,CAAWxS,GACI,8BAAVA,EAAEnD,MACLmD,EAAEm/B,OAAOnhC,KAAKuZ,IACb,MAAM6nB,EAAMx0B,KAAKC,MAAM0M,GACvBja,KAAKyjC,QAAU3B,EAAI2B,SAAW,IAGjC,GAEDniC,SAAU,wdDnBVlC,MAAO,CACN,qBAEDC,MAAO,CACN6V,WAAY,CACX3V,KAAM,CAAEw4B,SAAUr2B,OAClBhC,UAAU,GAEXgkC,SAAUlkC,QACVkS,GAAI7M,OACJpC,KAAMoC,OACN8+B,WAAY,CAAC9+B,OAAQnD,MAAOkC,QAC5BggC,OAAQpkC,QACRq+B,OAAQ,CACPt+B,KAAMsF,OACNlD,QAAS,IAEVkiC,SAAU,CACTtkC,KAAMC,QACNmC,SAAS,IAGXpB,QAAS,CACRujC,cAAcv9B,GACN+G,KAAKE,UAAU,CACrBu2B,aAAcx9B,EAAKw9B,aACnBC,iBAAkBz9B,EAAKy9B,iBACvBvhC,KAAM8D,EAAK9D,KACXuxB,KAAMztB,EAAKytB,KACXz0B,KAAMgH,EAAKhH,OAGb0kC,QAAAA,CAASh0B,GACR,IAAKjQ,KAAK0jC,SACT,OAAO1jC,KAAKkB,MAAM,oBAAqB+O,EAAMhJ,OAAOg8B,OAErD,MAAMiB,EAAK,IAAIC,aACTC,EAAU,GAChB,IAAK,IAAI79B,KAAQvG,KAAKkV,WACrBgvB,EAAGG,MAAMpH,IAAI12B,GACb69B,EAAQ/gC,KAAKrD,KAAK8jC,cAAcv9B,IAEjC,IAAK,IAAIA,KAAQ0J,EAAMhJ,OAAOg8B,MAEzBmB,EAAQ5hC,QAAQxC,KAAK8jC,cAAcv9B,IAAS,GAC/C29B,EAAGG,MAAMpH,IAAI12B,GAEfvG,KAAKkB,MAAM,oBAAqBgjC,EAAGjB,MACpC,EACAqB,UAAAA,CAAW5yB,GACV,MAAM6yB,EAAe7iC,MAAMgS,KAAK1T,KAAKkV,YAAYxD,GAE3CwyB,EAAK,IAAIC,aACf,IAAK,IAAI59B,KAAQvG,KAAKkV,WACjB3O,IAASg+B,GACZL,EAAGG,MAAMpH,IAAI12B,GAEfvG,KAAKkB,MAAM,oBAAqBgjC,EAAGjB,MACpC,GAEDpjC,MAAO,CACNqV,UAAAA,CAAWxS,GACV,IAAKA,EACJ,OACD,GAAIA,aAAaq1B,SAAU,CAC1B,IAAK/3B,KAAK+P,MAAMy0B,OACf,OAED,OAAOxkC,KAAK+P,MAAMy0B,OAAOvB,MAAQvgC,CAClC,CAEA,MAAMwhC,EAAK,IAAIC,aAEf,IAAK,IAAI59B,KAAQ7D,EAChB,GAAI6D,aAAgByxB,KACnBkM,EAAGG,MAAMpH,IAAI12B,OACP,CACN,MAAMk+B,EAAU,IAAIzM,KAAK,CAAC1qB,KAAKE,UAAUjH,IAAQA,EAAK9D,KAAM,CAC3DlD,KAAM,+BAEP2kC,EAAGG,MAAMpH,IAAIwH,EACd,CAEDzkC,KAAKkB,MAAM,oBAAqBgjC,EAAGjB,MACpC,GAED3hC,SAAU"} \ No newline at end of file +{"version":3,"file":"LvTemplates.js","sources":["../../../../../js/components/Fetch.js","../../../../../js/components/filter/Filter/Config.js","../../../../../js/components/filter/Filter/Columns.js","../../../../../js/components/filter/Table/Download.js","../../../../../js/directives/collapseAutoClose.js","../../../../../js/tabulator/layouts/fitDataStretchFrozen.js","../../../../../js/api/factory/filter.js","../../../../../js/components/filter/Filter.js","../../../../../js/components/Form/Input.js","../../../../../js/components/Fragment.js","../../../../../js/lehre/lvplanung/LvTemplateUebersicht.js","../../../../../js/api/factory/navigation.js","../../../../../js/components/navigation/Navigation.js","../../../../../js/api/search.js","../../../../../js/api/phrasen.js","../../../../../js/api/navigation.js","../../../../../js/api/filter.js","../../../../../js/api/studstatus.js","../../../../../js/api/profil.js","../../../../../js/api/profilUpdate.js","../../../../../js/api/lvPlan.js","../../../../../js/api/stv.js","../../../../../js/api/stv/verband.js","../../../../../js/api/stv/students.js","../../../../../js/api/stv/filter.js","../../../../../js/api/stv/konto.js","../../../../../js/api/stv/group.js","../../../../../js/api/stv/kontakt.js","../../../../../js/api/stv/prestudent.js","../../../../../js/api/stv/status.js","../../../../../js/api/stv/details.js","../../../../../js/api/stv/exam.js","../../../../../js/api/stv/abschlusspruefung.js","../../../../../js/api/stv/grades.js","../../../../../js/api/stv/mobility.js","../../../../../js/api/stv/archiv.js","../../../../../js/api/stv/documents.js","../../../../../js/api/stv/exemptions.js","../../../../../js/api/stv/jointstudies.js","../../../../../js/api/stv/courselist.js","../../../../../js/api/notiz.js","../../../../../js/api/notiz/person.js","../../../../../js/api/betriebsmittel.js","../../../../../js/api/betriebsmittel/person.js","../../../../../js/api/checkperson.js","../../../../../js/api/ort.js","../../../../../js/api/cms.js","../../../../../js/api/lehre.js","../../../../../js/api/addons.js","../../../../../js/api/messages.js","../../../../../js/api/messages/person.js","../../../../../js/api/vorlagen.js","../../../../../js/api/studium.js","../../../../../js/api/fhcapifactory.js","../../../../../js/api/dashboard.js","../../../../../js/api/bookmark.js","../../../../../js/api/ampeln.js","../../../../../js/api/studiengang.js","../../../../../js/api/menu.js","../../../../../js/api/authinfo.js","../../../../../js/api/language.js","../../../../../js/plugin/OldFhcApi.js","../../../../../js/RESTClient.js","../../../../../js/plugins/FhcAlert.js","../../../../../js/plugins/Api.js","../../../../../js/api/factory/phrasen.js","../../../../../js/plugins/Phrasen.js","../../../../../js/apps/lehre/lvplanung/LvTemplates.js","../../../../../js/components/Form/Upload/Image.js","../../../../../js/components/Form/Upload/Dms.js","../../../../../js/components/Form/Upload/Dms/Item.js"],"sourcesContent":["/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport const CoreFetchCmpt = {\n\temits: ['dataFetched'], // this component can emit the event dataFetched that it is catched by this component itself\n\tprops: {\n\t\trefresh: { // to refresh this component\n\t\t\ttype: Boolean\n\t\t},\n\t\tapiFunction: { // the function to call, must return a Promise\n\t\t\trequired: true,\n\t\t\ttype: Function\n\t\t},\n\t\tapiFunctionParameters: {} // parameters for the apiFunction, type mixed, optional\n\t},\n\twatch: {\n\t\t/**\n\t\t * If the refresh property is changed then call fetchData\n\t\t */\n\t\trefresh: function (newValue, oldValue) {\n\t\t\tthis.fetchData();\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tloading: false, // if in loading or not\n\t\t\terror: false, // if an error occurred while loading data\n\t\t\terrorMessage: null // the error message\n\t\t};\n\t},\n\tcreated: function() {\n\t\tthis.fetchData();\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchData: function() {\n\t\t\tthis.loading = true; // loader started\n\t\t\tthis.error = false;\n\t\t\tthis.errorMessage = null;\n\n\t\t\t// Checks if the apifunction is a callable function\n\t\t\tif (typeof this.apiFunction == \"function\")\n\t\t\t{\n\t\t\t\t// Call the function stored in apiFunction\n\t \t\tlet apiFunctionResult = this.apiFunction(this.apiFunctionParameters);\n\n\t\t\t\t// It is expected that the function returns a Promise\n\t\t\t\tif (apiFunctionResult instanceof Promise)\n\t\t\t\t{\n\t\t\t\t\tapiFunctionResult\n\t\t\t\t\t\t.then(this.successHandler) // on success\n\t\t\t\t\t\t.catch(this.errorHandler) // on error\n\t\t\t\t\t\t.finally(this.finallyHandler); // finally in any case\n\t\t\t\t}\n\t\t\t\telse // otherwise display an error\n\t\t\t\t{\n\t\t\t\t\tthis.setError(\"The called apiFunction does not return a Promise\");\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // otherwise display an error\n\t\t\t{\n\t\t\t\tthis.setError(\"Property apiFunction is not a function\");\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsetError: function(errorMessage) {\n\t\t\tthis.loading = false; // loading ended\n\t\t\tthis.error = true; // error occurred\n\t\t\tthis.errorMessage = errorMessage; // save the error message\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsuccessHandler: function(response) {\n\t\t\tthis.$emit('dataFetched', response ? response.data : undefined); // trigger the event dataFetched\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\terrorHandler: function(error) {\n\t\t\tif (error.response?.data?.retval)\n\t\t\t\tthis.setError(error.response.data.retval);\n\t\t\telse if (error.data?.message)\n\t\t\t\tthis.setError(error.data.message);\n\t\t\telse\n\t\t\t\tthis.setError(error.message);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfinallyHandler: function() {\n\t\t\tthis.loading = false; // loading ended\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
    Loading...
    \n\t\t
    \n\t\t\n\t\t\t
    {{ errorMessage }}
    \n\t\t
    \n\t\t\n\t`\n};\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nconst FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\tfilters: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tcolumns: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tfields: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t}\n\t},\n\temits: {\n\t\tswitchFilter: ['filterId'],\n\t\tapplyFilterConfig: ['filterFields'],\n\t\tsaveCustomFilter: ['customFilterName']\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tcurrentFields: []\n\t\t};\n\t},\n\tcomputed: {\n\t\ttypes() {\n\t\t\treturn this.columns.reduce((a,c) => {\n\t\t\t\tlet type = c.type.toLowerCase();\n\t\t\t\tif (type.indexOf('int') >= 0)\n\t\t\t\t\ta[c.name] = 'Numeric';\n\t\t\t\telse if (\n\t\t\t\t\ttype.indexOf('varchar') >= 0 || \n\t\t\t\t\ttype.indexOf('text') >= 0 || \n\t\t\t\t\ttype.indexOf('bpchar') >= 0\n\t\t\t\t)\n\t\t\t\t\ta[c.name] = 'Text';\n\t\t\t\telse if (\n\t\t\t\t\ttype.indexOf('timestamp') >= 0 || \n\t\t\t\t\ttype.indexOf('date') >= 0\n\t\t\t\t)\n\t\t\t\t\ta[c.name] = 'Date';\n\t\t\t\telse\n\t\t\t\t\ta[c.name] = '';\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t}\n\t},\n\twatch: {\n\t\tfields(n) {\n\t\t\tthis.currentFields = n;\n\t\t}\n\t},\n\tmethods: {\n\t\tswitchFilter(evt) {\n\t\t\tthis.$emit('switchFilter', evt.currentTarget.value);\n\t\t},\n\t\tapplyFilterConfig() {\n\t\t\tconst filteredFields = this.currentFields.filter(el => el.name != FILTER_COMPONENT_NEW_FILTER);\n\t\t\tif (filteredFields.filter(el => el.condition == \"\").length)\n\t\t\t\talert(\"Please fill all the filter options\");\n\t\t\telse\n\t\t\t\tthis.$emit('applyFilterConfig', filteredFields);\n\t\t},\n\t\taddField(evt) {\n\t\t\tthis.currentFields.push({\n\t\t\t\tname: FILTER_COMPONENT_NEW_FILTER\n\t\t\t});\n\t\t},\n\t\tremoveField(index) {\n\t\t\tthis.currentFields.splice(index, 1);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tFilter {{ index + 1 }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t
    \n\t`\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\tfields: Array,\n\t\tselected: {\n\t\t\ttype: Array,\n\t\t\tdefault: []\n\t\t},\n\t\tnames: {\n\t\t\ttype: Object,\n\t\t\tdefault: {}\n\t\t}\n\t},\n\temits: {\n\t\thide: ['fieldName'],\n\t\tshow: ['fieldName']\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tselectedFields: []\n\t\t};\n\t},\n\twatch: {\n\t\tselected(n) {\n\t\t\tthis.selectedFields = n;\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggle(field) {\n\t\t\tif (this.selectedFields.indexOf(field) != -1)\n\t\t\t{\n\t\t\t\tthis.selectedFields.splice(this.selectedFields.indexOf(field), 1);\n\t\t\t\tthis.$emit('hide', field);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.selectedFields.push(field);\n\t\t\t\tthis.$emit('show', field);\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{{ names[fieldToDisplay] || fieldToDisplay }}\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t\n\t`\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nconst DEFAULT_ICONS = {\n\tjsonLines: 'fa-file-lines',\n\txlsx: 'fa-file-excel',\n\tpdf: 'fa-file-pdf',\n\thtml: 'fa-file-code',\n\tjson: 'fa-file',\n\tcsv: 'fa-file-csv'\n};\nconst DEFAULT_LABELS = {\n\tjsonLines: 'Download as JSONLINES',\n\txlsx: 'Download as XLSX',\n\tpdf: 'Download as PDF',\n\thtml: 'Download as HTML',\n\tjson: 'Download as JSON',\n\tcsv: 'Download as CSV '\n};\n\n\n/**\n *\n */\nexport default {\n\tprops: {\n\t\ttabulator: Object,\n\t\tconfig: {\n\t\t\ttype: [Boolean, String, Function, Array, Object],\n\t\t\tdefault: false\n\t\t},\n\t\ticonClass: [String, Array, Object]\n\t},\n\tcomputed: {\n\t\tcurrentConfig() {\n\t\t\tif (!this.config)\n\t\t\t\treturn false;\n\n\t\t\tlet config = this.config;\n\n\t\t\tif (config instanceof Function)\n\t\t\t\treturn [config];\n\n\t\t\tif (config === null)\n\t\t\t\treturn [];\n\n\t\t\tif (this.config === true)\n\t\t\t\tconfig = ['csv'];\n\n\t\t\tif (Object.prototype.toString.call(config) === \"[object String]\")\n\t\t\t\tconfig = config.split(',');\n\n\t\t\tif (typeof config === 'object' && !Array.isArray(config)) {\n\t\t\t\tlet newConfig = [];\n\t\t\t\tfor (var k in config) {\n\t\t\t\t\tvar v = config[k], type;\n\t\t\t\t\t\n\t\t\t\t\tif (!v)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\n\t\t\t\t\tif (Object.prototype.toString.call(v) === \"[object String]\") {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(v);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\tlabel: v === k ? DEFAULT_LABELS[type] : k,\n\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\t\tif(type !== null) {\n\t\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\t\tlabel: v,\n\t\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\talert('neither ' + k + ' nor ' + v + ' are supported download file types');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (typeof v === 'object' && !Array.isArray(v)) {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tif (v.formatter === undefined)\n\t\t\t\t\t\t\t\tv.formatter = type;\n\t\t\t\t\t\t\tif (v.label === undefined)\n\t\t\t\t\t\t\t\tv.label = DEFAULT_LABELS[type];\n\t\t\t\t\t\t\tif (v.icon === undefined)\n\t\t\t\t\t\t\t\tv.icon = DEFAULT_ICONS[type];\n\t\t\t\t\t\t\tnewConfig.push(v);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (v.label === undefined)\n\t\t\t\t\t\t\t\tv.label = k;\n\t\t\t\t\t\t\tnewConfig.push(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttype = this.stringToFileFormatter(k);\n\t\t\t\t\t\tif (type !== null) {\n\t\t\t\t\t\t\tnewConfig.push({\n\t\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[type],\n\t\t\t\t\t\t\t\tlabel: DEFAULT_LABELS[type],\n\t\t\t\t\t\t\t\tformatter: type\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\talert(k + ' is not a supported download file type');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconfig = newConfig;\n\t\t\t}\n\n\t\t\tif (Array.isArray(config))\n\t\t\t{\n\t\t\t\tconfig = config.map(el => {\n\t\t\t\t\tif (Object.prototype.toString.call(el) === \"[object String]\") {\n\t\t\t\t\t\tlet formatter = this.stringToFileFormatter(el);\n\t\t\t\t\t\tif (formatter === null)\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ticon: 'fa-solid ' + DEFAULT_ICONS[formatter],\n\t\t\t\t\t\t\tlabel: DEFAULT_LABELS[formatter],\n\t\t\t\t\t\t\tformatter\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (el instanceof Function)\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tformatter: el\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (typeof el === 'object' && !Array.isArray(el) && el !== null) {\n\t\t\t\t\t\tif (el.formatter instanceof Function)\n\t\t\t\t\t\t\treturn el;\n\t\t\t\t\t\tif (this.validateFileFormatter(el.formatter))\n\t\t\t\t\t\t\treturn el;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn null;\n\t\t\t\t}).filter(el => el !== null);\n\n\t\t\t\tif (config.length < 2)\n\t\t\t\t\treturn config;\n\n\t\t\t\tif (config.filter(el => el.label || el.icon).length == config.length)\n\t\t\t\t\treturn config;\n\n\t\t\t\talert('Config not valid');\n\t\t\t}\n\n\t\t\treturn [];\n\t\t}\n\t},\n\tmethods: {\n\t\tstringToFileFormatter(input) {\n\t\t\tlet lcInput = input.toLowerCase();\n\t\t\t\n\t\t\tif (lcInput == 'jsonlines')\n\t\t\t\treturn 'jsonLines';\n\t\t\t\n\t\t\tif (['xlsx', 'pdf', 'html', 'json', 'csv'].includes(lcInput))\n\t\t\t\treturn lcInput;\n\n\t\t\treturn null;\n\t\t},\n\t\tvalidateFileFormatter(input) {\n\t\t\tlet formatter = this.stringToFileFormatter(input);\n\t\t\tif (!formatter) {\n\t\t\t\talert(input + ' is not a supported file formatter');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (formatter == 'xlsx') {\n\t\t\t\tif (!window.XLSX) {\n\t\t\t\t\talert('XLSX Library not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (formatter == 'pdf') {\n\t\t\t\tif (!window.jspdf) {\n\t\t\t\t\talert('jsPDF Library not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar doc = new jspdf.jsPDF({});\n\t\t\t\tif (!doc.autoTable) {\n\t\t\t\t\talert('jsPDF-AutoTable Plugin not loaded');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\tdownload(config) {\n\t\t\tthis.tabulator.download(config.formatter, config.file, config.options)\n\t\t}\n\t},\n\ttemplate: `\n\t\n\t`\n};\n\n","const elementDataMap = new WeakMap();\n\nexport default {\n\tmounted(el, binding) {\n\t\tlet open = false;\n\t\telementDataMap.set(el, evt => {\n\t\t\tif (!open)\n\t\t\t\treturn;\n\n\t\t\tif (el.contains(evt.target))\n\t\t\t\treturn;\n\n\t\t\tconst collapse = bootstrap.Collapse.getInstance(el)\n\t\t\tif (collapse)\n\t\t\t\tcollapse.hide();\n\t\t});\n\t\tel.addEventListener('shown.bs.collapse', () => {\n\t\t\topen = true;\n\t\t});\n\t\tel.addEventListener('hide.bs.collapse', () => {\n\t\t\topen = false;\n\t\t});\n\t\tdocument.addEventListener('click', elementDataMap.get(el), true);\n\t},\n\tbeforeUnmount(el, binding) {\n\t\tdocument.removeEventListener('click', elementDataMap.get(el));\n\t\tdelete el.collapsibleAutoHideFunc;\n\t}\n}","/**\n * This may need changes if Tabulator gets updated!\n *\n * Current working Version: 5.5.2\n * \n * This is a copy of the fitDataStretch function. The only difference\n * is the check for frozen columns on line 22.\n */\n\nexport default window.Tabulator?.extendModule(\"layout\", \"modes\", {\n\tfitDataStretchFrozen(columns, forced) {\n\t\tvar colsWidth = 0,\n\t\ttableWidth = this.table.rowManager.element.clientWidth,\n\t\tgap = 0,\n\t\tlastCol = false;\n\n\t\tcolumns.forEach((column, i) => {\n\t\t\tif (!column.widthFixed) {\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\n\t\t\tif (this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible && !column.definition.frozen) {\n\t\t\t\tlastCol = column;\n\t\t\t}\n\n\t\t\tif (column.visible) {\n\t\t\t\tcolsWidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\tif (lastCol){\n\t\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\t\tlastCol.setWidth(0);\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\n\t\t\tif (gap > 0) {\n\t\t\t\tlastCol.setWidth(gap);\n\t\t\t} else {\n\t\t\t\tlastCol.reinitializeWidth();\n\t\t\t}\n\t\t} else {\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t}\n\t}\n});\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/saveCustomFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t};\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/removeCustomFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t};\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/applyFilterFields',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t};\n\t},\n\taddFilterField(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/addFilterField',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t};\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/filter/removeFilterField',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t};\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/filter/getFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t};\n\t},\n\tgetFilter(wsParams) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/filter/getFilter',\n\t\t\tparams: {\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport {CoreFetchCmpt} from '../../components/Fetch.js';\nimport FilterConfig from './Filter/Config.js';\nimport FilterColumns from './Filter/Columns.js';\nimport TableDownload from './Table/Download.js';\nimport collapseAutoClose from '../../directives/collapseAutoClose.js';\n\nimport moduleLayoutFitDataStretchFrozen from '../../tabulator/layouts/fitDataStretchFrozen.js';\n\nimport ApiFilter from '../../api/factory/filter.js';\n\n//\nconst FILTER_COMPONENT_NEW_FILTER = 'Filter Component New Filter';\nconst FILTER_COMPONENT_NEW_FILTER_TYPE = 'Filter Component New Filter Type';\n\nvar _uuid = 0;\n\n/**\n *\n */\nexport const CoreFilterCmpt = {\n\tcomponents: {\n\t\tCoreFetchCmpt,\n\t\tFilterConfig,\n\t\tFilterColumns,\n\t\tTableDownload\n\t},\n\tdirectives: {\n\t\tcollapseAutoClose\n\t},\n\temits: [\n\t\t'nwNewEntry',\n\t\t'click:new',\n\t\t'tableBuilt',\n\t\t'uuidDefined'\n\t],\n\tprops: {\n\t\tonNwNewEntry: Function, // NOTE(chris): Hack to get the nwNewEntry listener into $props\n\t\ttitle: String,\n\t\tdescription: String,\n\t\tsideMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t},\n\t\tfilterType: {\n\t\t\ttype: String\n\t\t},\n\t\ttabulatorOptions: Object,\n\t\ttabulatorEvents: Array,\n\t\ttableOnly: Boolean,\n\t\tnoColumnFilter:Boolean,\n\t\treload: Boolean,\n\t\treloadBtnInfotext: String,\n\t\tdownload: {\n\t\t\ttype: [Boolean, String, Function, Array, Object],\n\t\t\tdefault: false\n\t\t},\n\t\tnewBtnShow: Boolean,\n\t\tnewBtnClass: [String, Array, Object],\n\t\tnewBtnDisabled: Boolean,\n\t\tnewBtnLabel: String,\n\t\tuniqueId: String,\n\n\t\tidField: String,\n\t\tparentIdField: String,\n\t\tcountOnly: Boolean,\n\t\tuseSelectionSpan: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t}\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tuuid: 0,\n\t\t\t// FilterCmpt properties\n\t\t\tfilterName: null,\n\t\t\tfilterActive: false,\n\t\t\tfields: null,\n\t\t\tdataset: null,\n\t\t\tdatasetMetadata: null,\n\t\t\tselectedFields: null,\n\t\t\tfilterFields: null,\n\n\t\t\tavailableFilters: null,\n\t\t\tselectedFilter: null,\n\n\t\t\t// FetchCmpt binded properties\n\t\t\tfetchCmptRefresh: false,\n\t\t\tfetchCmptApiFunction: null,\n\t\t\tfetchCmptApiFunctionParams: null,\n\t\t\tfetchCmptDataFetched: null,\n\n\t\t\tfetchResult: null,\n\n\t\t\ttabulator: null,\n\t\t\ttableBuilt: false,\n\t\t\ttabulatorHasSelector: false,\n\t\t\tselectedData: [],\n\t\t\tpersistence: {\n\t\t\t\tsort: true,\n\t\t\t\tcolumns: true,\n\t\t\t\tfilter: false,\n\t\t\t\theaderFilter: false,\n\t\t\t\tgroup: false,\n\t\t\t\tpage: false,\n\t\t\t}\n\t\t};\n\t},\n\tcomputed: {\n\t\tnotSelectedFields() {\n\t\t\tif (!this.fields || !this.selectedFields)\n\t\t\t\treturn null;\n\t\t\treturn this.fields.filter(x => this.selectedFields.indexOf(x) === -1)\n\t\t},\n\t\tfilteredData() {\n\t\t\tif (!this.dataset)\n\t\t\t\treturn [];\n\t\t\treturn JSON.parse(JSON.stringify(this.dataset));\n\t\t},\n\t\tfilteredColumns() {\n\t\t\tlet fields = JSON.parse(JSON.stringify(this.fields)) || [];\n\t\t\tlet selectedFields = JSON.parse(JSON.stringify(this.selectedFields)) || [];\n\n\t\t\tlet columns = null;\n\n\t\t\t// If the tabulator options has been provided and it contains the property columns\n\t\t\tif (this.tabulatorOptions && this.tabulatorOptions.hasOwnProperty('columns'))\n\t\t\t\tcolumns = this.tabulatorOptions.columns;\n\n\t\t\t// If columns is not an array or it is an array with less elements then the array fields\n\t\t\tif (!Array.isArray(columns) || (Array.isArray(columns) && columns.length < fields.length))\n\t\t\t{\n\t\t\t\tcolumns = []; // set it as an empty array\n\n\t\t\t\t// Loop throught all the retrieved columns from database\n\t\t\t\tfor (let field of fields)\n\t\t\t\t{\n\t\t\t\t\t// Create a new column having the title equal to the field name\n\t\t\t\t\tlet column = {\n\t\t\t\t\t\ttitle: field,\n\t\t\t\t\t\tfield: field\n\t\t\t\t\t};\n\n\t\t\t\t\t// If the column has to be displayed or not\n\t\t\t\t\tcolumn.visible = selectedFields.indexOf(field) >= 0;\n\n\t\t\t\t\t// Add the new column to the list of columns\n\t\t\t\t\tcolumns.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse // the property columns has been provided in the tabulator options\n\t\t\t{\n\t\t\t\t// Loop throught the property columns of the tabulator options\n\t\t\t\tfor (let col of columns)\n\t\t\t\t{\n\t\t\t\t\t// If the column has to be displayed or not\n\t\t\t\t\t/* fields.indexOf(col.field) == -1; ensures displaying formatter colums\n\t\t\t\t\te.g. column with rowSelection checkboxes or with custom formatted action buttons */\n\t\t\t\t\tcol.visible = selectedFields.indexOf(col.field) >= 0 || fields.indexOf(col.field) == -1;\n\n\t\t\t\t\tif (col.hasOwnProperty('resizable'))\n\t\t\t\t\t\tcol.resizable = col.visible;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn columns;\n\t\t},\n\t\tfieldIdsForVisibilty() {\n\t\t\tif (!this.tableBuilt)\n\t\t\t\treturn [];\n\t\t\treturn this.tabulator.getColumns().filter(col => {\n\t\t\t\tlet def = col.getDefinition();\n\t\t\t\treturn !def.frozen && def.title && def.formatter != \"responsiveCollapse\";\n\t\t\t}).map(col => col.getField());\n\t\t},\n\t\tfieldNames() {\n\t\t\tif (!this.tableBuilt)\n\t\t\t\treturn {};\n\t\t\treturn this.tabulator.getColumns().reduce((res, col) => {\n\t\t\t\tres[col.getField()] = col.getDefinition().title;\n\t\t\t\treturn res;\n\t\t\t}, {});\n\t\t},\n\t\tidExtra() {\n\t\t\tif (!this.uuid)\n\t\t\t\treturn '';\n\t\t\treturn '-' + this.uuid;\n\t\t},\n\t\tcolumnsForFilter() {\n\t\t\tif (!this.filteredColumns || !this.datasetMetadata)\n\t\t\t\treturn [];\n\t\t\tconst filterTitles = this.filteredColumns.reduce((a,c) => {\n\t\t\t\ta[c.field] = c.title;\n\t\t\t\treturn a;\n\t\t\t}, {});\n\t\t\treturn this.datasetMetadata.map(el => ({...el, ...{title: filterTitles[el.name]}}));\n\t\t}\n\t},\n\tmethods: {\n\t\treloadTable() {\n\t\t\tif (this.tableOnly)\n\t\t\t\tthis.tabulator.setData();\n\t\t\telse\n\t\t\t\tthis.getFilter();\n\t\t},\n\t\tasync initTabulator() {\n\t\t\tlet placeholder = '< Phrasen Plugin not loaded! >';\n\t\t\tif (this.$p) {\n\t\t\t\tawait this.$p.loadCategory('ui');\n\t\t\t\tplaceholder = this.$p.t('ui/keineDatenVorhanden');\n\t\t\t}\n\n\t\t\tif (!this.tableOnly) {\n\t\t\t\t// prefetch data to get fields & selectedFields for filteredColumns & filteredData\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tconst filterId = window.location.hash ? window.location.hash.slice(1) : null;\n\n\t\t\t\t\tconst resolvePromiseFunc = data => {\n\t\t\t\t\t\tthis.setRenderData(data);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\t// get the filter data\n\t\t\t\t\tif (filterId === null)\n\t\t\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilter(wsParams)),\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tresolvePromiseFunc\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilterById(wsParams)),\n\t\t\t\t\t\t\t{ filterId },\n\t\t\t\t\t\t\tresolvePromiseFunc\n\t\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Define a default tabulator options in case it was not provided\n\t\t\tlet tabulatorOptions = {...{\n\t\t\t\t\tlayout: \"fitDataStretchFrozen\",\n\t\t\t\t\tmovableColumns: true,\n\t\t\t\t\tcolumnDefaults:{\n\t\t\t\t\t\ttooltip: true\n\t\t\t\t\t},\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tpersistence: this.persistence,\n\t\t\t\t}, ...(this.tabulatorOptions || {})};\n\n\t\t\t// set default height if no height property is set\n\t\t\tif (tabulatorOptions.height === undefined &&\n\t\t\t\ttabulatorOptions.minHeight === undefined &&\n\t\t\t\ttabulatorOptions.maxHeight === undefined) {\n\t\t\t\ttabulatorOptions.height = 500;\n\t\t\t}\n\n\t\t\tif (!this.tableOnly) {\n\t\t\t\ttabulatorOptions.data = this.filteredData;\n\t\t\t\ttabulatorOptions.columns = this.filteredColumns;\n\t\t\t} else {\n\t\t\t\ttabulatorOptions.columns.forEach(col => {\n\t\t\t\t\tif (col.visible === undefined)\n\t\t\t\t\t\tcol.visible = true;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (tabulatorOptions.selectable || (tabulatorOptions.columns && tabulatorOptions.columns.filter(el => el.formatter == 'rowSelection').length))\n\t\t\t\tthis.tabulatorHasSelector = true;\n\n\t\t\tif (this.idField) {\n\t\t\t\t// enable nested tabulator if parent Id given\n\t\t\t\tif (this.parentIdField) tabulatorOptions.dataTree = true;\n\t\t\t\t// set tabulator index\n\t\t\t\ttabulatorOptions.index = this.idField;\n\t\t\t}\n\n\t\t\t// Start the tabulator with the build options\n\t\t\tthis.tabulator = new Tabulator(\n\t\t\t\tthis.$refs.table,\n\t\t\t\ttabulatorOptions\n\t\t\t);\n\t\t\t// If event handlers have been provided\n\t\t\tif (Array.isArray(this.tabulatorEvents) && this.tabulatorEvents.length > 0)\n\t\t\t{\n\t\t\t\t// Attach all the provided event handlers to the started tabulator\n\t\t\t\tfor (let evt of this.tabulatorEvents)\n\t\t\t\t\tthis.tabulator.on(evt.event, evt.handler);\n\t\t\t}\n\t\t\tthis.tabulator.on('tableBuilt', () => {this.tableBuilt = true; this.$emit('tableBuilt');});\n\t\t\tthis.tabulator.on(\"rowSelectionChanged\", data => {\n\t\t\t\tthis.selectedData = data;\n\t\t\t});\n\n\t\t\t// if nested tabulator, restructure data\n\t\t\tif (this.parentIdField && this.idField) {\n\t\t\t\tthis.tabulator.on(\"dataLoading\", data => {\n\t\t\t\t\tlet toDelete = [];\n\n\t\t\t\t\t// loop through all data\n\t\t\t\t\tfor (let childIdx = 0; childIdx < data.length; childIdx++)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet child = data[childIdx];\n\n\t\t\t\t\t\t// if it has parent id, it is a child\n\t\t\t\t\t\tif (child[this.parentIdField])\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// append the child on the right place. If parent found, mark original sw child on 0 level for deleting\n\t\t\t\t\t\t\tif (this.appendChild(data, child)) toDelete.push(childIdx);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// delete the marked children from 0 level\n\t\t\t\t\tfor (let counter = 0; counter < toDelete.length; counter++)\n\t\t\t\t\t{\n\t\t\t\t\t\t// decrease index by counter as index of data array changes after every deletion\n\t\t\t\t\t\tdata.splice(toDelete[counter] - counter, 1);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this.tableOnly) {\n\t\t\t\tthis.tabulator.on('tableBuilt', () => {\n\t\t\t\t\tconst cols = this.tabulator.getColumns();\n\t\t\t\t\tthis.fields = cols.map(col => col.getField());\n\t\t\t\t\tthis.selectedFields = cols.filter(col => col.isVisible()).map(col => col.getField());\n\t\t\t\t\tif (this.tabulator.options.persistence.headerFilter)\n\t\t\t\t\t\tthis._setHeaderFilter();\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t\tthis.tabulator.on(\"dataFiltered\", filters => {\n\t\t\t\tthis.filterActive = filters.length > 0;\n\t\t\t});\n\t\t},\n\t\tupdateTabulator() {\n\t\t\tif (this.tabulator) {\n\t\t\t\tif (this.tableBuilt)\n\t\t\t\t\tthis._updateTabulator();\n\t\t\t\telse\n\t\t\t\t\tthis.tabulator.on('tableBuilt', this._updateTabulator);\n\t\t\t}\n\t\t},\n\t\t_updateTabulator() {\n\t\t\tthis.tabulatorHasSelector = this.tabulatorOptions.selectable || this.filteredColumns.filter(el => el.formatter == 'rowSelection').length;\n\t\t\tthis.tabulator.setColumns(this.filteredColumns);\n\t\t\tthis.tabulator.setData(this.filteredData);\n\t\t\tthis._setHeaderFilter()\n\t\t},\n\t\tclearFilters()\n\t\t{\n\t\t\tlet existingFilters = this.tabulator.getHeaderFilters();\n\t\t\texistingFilters.forEach(filter => {\n\t\t\t\tthis.tabulator.setHeaderFilterValue(filter.field, \"\");\n\t\t\t});\n\t\t\tthis.tabulator.clearFilter();\n\t\t\tthis.filterActive = false;\n\t\t},\n\t\t_setHeaderFilter()\n\t\t{\n\t\t\tconst existingFilters = this.tabulator.getHeaderFilters();\n\t\t\texistingFilters.forEach(filter => {\n\t\t\t\tthis.tabulator.setHeaderFilterValue(filter.field, filter.value);\n\t\t\t});\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tgetFilter() {\n\t\t\tif (this.selectedFilter === null)\n\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilter(wsParams)),\n\t\t\t\t\tnull,\n\t\t\t\t\tthis.render\n\t\t\t\t);\n\t\t\telse\n\t\t\t\tthis.startFetchCmpt(\n\t\t\t\t\twsParams => this.$api.call(ApiFilter.getFilterById(wsParams)),\n\t\t\t\t\t{\n\t\t\t\t\t\tfilterId: this.selectedFilter\n\t\t\t\t\t},\n\t\t\t\t\tthis.render\n\t\t\t\t);\n\t\t},\n\t\tsetRenderData(data) {\n\t\t\tthis.fetchResult = data;\n\t\t\tthis.filterName = data.filterName;\n\t\t\tthis.dataset = data.dataset;\n\t\t\tthis.datasetMetadata = data.datasetMetadata;\n\n\t\t\tthis.fields = data.fields;\n\t\t\tthis.selectedFields = data.selectedFields;\n\t\t\tthis.filterFields = [];\n\n\t\t\tfor (let i = 0; i < data.datasetMetadata.length; i++)\n\t\t\t{\n\t\t\t\tfor (let j = 0; j < data.filters.length; j++)\n\t\t\t\t{\n\t\t\t\t\tif (data.datasetMetadata[i].name == data.filters[j].name)\n\t\t\t\t\t{\n\t\t\t\t\t\tlet filter = data.filters[j];\n\t\t\t\t\t\tfilter.type = data.datasetMetadata[i].type;\n\n\t\t\t\t\t\tthis.filterFields.push(filter);\n\t\t\t\t\t\t//break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\trender(response) {\n\t\t\tlet data = response;\n\n\t\t\tthis.setRenderData(data);\n\n\t\t\t// If the side menu is active\n\t\t\tif (this.sideMenu === true)\n\t\t\t{\n\t\t\t\tthis.setSideMenu(data);\n\t\t\t}\n\t\t\telse // otherwise use the dropdown in the filter options\n\t\t\t{\n\t\t\t\tthis.setDropDownMenu(data);\n\t\t\t}\n\t\t\tthis.updateTabulator();\n\t\t},\n\t\t/**\n\t\t * Set the menu\n\t\t */\n\t\tsetSideMenu(data) {\n\t\t\tlet filters = data.sideMenu.filters;\n\t\t\tlet personalFilters = data.sideMenu.personalFilters;\n\t\t\tlet filtersArray = [];\n\n\t\t\tfor (let filtersCount = 0; filtersCount < filters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = filters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: filters[filtersCount].filter_id,\n\t\t\t\t\tlink: link + filters[filtersCount].filter_id,\n\t\t\t\t\tdescription: filters[filtersCount].desc,\n\t\t\t\t\tsort: filtersCount,\n\t\t\t\t\tonClickCall: this.handlerGetFilterById\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = personalFilters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: personalFilters[filtersCount].filter_id,\n\t\t\t\t\tlink: link + personalFilters[filtersCount].filter_id,\n\t\t\t\t\tdescription: personalFilters[filtersCount].desc,\n\t\t\t\t\tsubscriptDescription: personalFilters[filtersCount].subscriptDescription,\n\t\t\t\t\tsubscriptLinkClass: personalFilters[filtersCount].subscriptLinkClass,\n\t\t\t\t\tsubscriptLinkValue: personalFilters[filtersCount].subscriptLinkValue,\n\t\t\t\t\tsort: filtersCount,\n\t\t\t\t\tonClickCall: this.handlerGetFilterById,\n\t\t\t\t\tonClickSubscriptCall: this.handlerRemoveCustomFilter\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.availableFilters = filtersArray;\n\n\t\t\tthis.$emit(\n\t\t\t\t'nwNewEntry',\n\t\t\t\t{\n\t\t\t\t\tlink: \"#\",\n\t\t\t\t\tdescription: \"Filters\",\n\t\t\t\t\ticon: \"filter\",\n\t\t\t\t\tchildren: filtersArray\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t * Set the drop down menu\n\t\t */\n\t\tsetDropDownMenu(data) {\n\t\t\tlet filters = data.sideMenu.filters;\n\t\t\tlet personalFilters = data.sideMenu.personalFilters;\n\t\t\tlet filtersArray = [];\n\n\t\t\tfor (let filtersCount = 0; filtersCount < filters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = filters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: filters[filtersCount].filter_id,\n\t\t\t\t\toption: filters[filtersCount].filter_id,\n\t\t\t\t\tdescription: filters[filtersCount].desc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfor (let filtersCount = 0; filtersCount < personalFilters.length; filtersCount++)\n\t\t\t{\n\t\t\t\tlet link = personalFilters[filtersCount].link;\n\n\t\t\t\tif (link == null) link = '#';\n\n\t\t\t\tfiltersArray[filtersArray.length] = {\n\t\t\t\t\tid: personalFilters[filtersCount].filter_id,\n\t\t\t\t\toption: personalFilters[filtersCount].filter_id,\n\t\t\t\t\tdescription: personalFilters[filtersCount].desc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.availableFilters = filtersArray;\n\t\t},\n\t\t/**\n\t\t * Used to start/refresh the FetchCmpt\n\t\t */\n\t\tstartFetchCmpt(apiFunction, apiFunctionParameters, dataFetchedCallback) {\n\t\t\t// Assign the function api of the FetchCmpt binded property\n\t\t\tthis.fetchCmptApiFunction = apiFunction;\n\n\t\t\t// In case a null value is provided set the parameters as an empty object\n\t\t\tif (apiFunctionParameters == null) apiFunctionParameters = {};\n\n\t\t\t// Always needed parameters\n\t\t\tapiFunctionParameters.filterUniqueId = FHC_JS_DATA_STORAGE_OBJECT.called_path + \"/\" + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\t\t\tapiFunctionParameters.filterType = this.filterType;\n\n\t\t\tif (this.uniqueId)\n\t\t\t\tapiFunctionParameters.filterUniqueId += '_' + this.uniqueId;\n\n\t\t\t// Assign parameters to the FetchCmpt binded properties\n\t\t\tthis.fetchCmptApiFunctionParams = apiFunctionParameters;\n\t\t\t// Assign data fetch callback to the FetchCmpt binded properties\n\t\t\tthis.fetchCmptDataFetched = dataFetchedCallback;\n\t\t\t// Set the FetchCmpt binded property refresh to have the component to refresh\n\t\t\t// NOTE: this should be the last one to be called because it triggers the FetchCmpt to start to refresh\n\t\t\tthis.fetchCmptRefresh === true ? this.fetchCmptRefresh = false : this.fetchCmptRefresh = true;\n\t\t},\n\n\t\t// ------------------------------------------------------------------------------------------------------------------\n\t\t// Event handlers\n\n\t\t/**\n\t\t *\n\t\t */\n\t\thandlerSaveCustomFilter(customFilterName) {\n\t\t\tthis.selectedFilter = null;\n\t\t\t//\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.saveCustomFilter(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tcustomFilterName\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\thandlerRemoveCustomFilter(event) {\n\t\t\tlet filterId = event.currentTarget.getAttribute(\"href\").substring(1);\n\t\t\tif (filterId === this.selectedFilter)\n\t\t\t\tthis.selectedFilter = null;\n\t\t\t//\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.removeCustomFilter(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tfilterId: filterId\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\n\t\t/*\n\t\t *\n\t\t */\n\t\thandlerGetFilterById: function(event) {\n\n\t\t\tlet filterId = null;\n\n\t\t\t// Get the attribute href if side menu is rendered\n\t\t\tlet attr = event.currentTarget.getAttribute(\"href\");\n\n\t\t\t// Otherwise get the value of the drop down menu\n\t\t\tif (attr == null)\n\t\t\t{\n\t\t\t\tfilterId = event.currentTarget.value;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfilterId = attr.substring(1);\n\t\t\t}\n\n\t\t\tthis.switchFilter(filterId);\n\t\t},\n\t\tswitchFilter(filterId) {\n\t\t\tthis.selectedFilter = filterId;\n\t\t\tthis.getFilter();\n\t\t},\n\t\tapplyFilterConfig(filterFields) {\n\t\t\tthis.selectedFilter = null;\n\t\t\tthis.startFetchCmpt(\n\t\t\t\twsParams => this.$api.call(ApiFilter.applyFilterFields(wsParams)),\n\t\t\t\t{\n\t\t\t\t\tfilterFields\n\t\t\t\t},\n\t\t\t\tthis.getFilter\n\t\t\t);\n\t\t},\n\n\t\t// append child to it's parent\n\t\tappendChild(data, child) {\n\t\t\t// get parent id\n\t\t\tlet parentId = child[this.parentIdField];\n\n\t\t\t// loop thorugh all data\n\t\t\tfor (let parentIdx = 0; parentIdx < data.length; parentIdx++)\n\t\t\t{\n\t\t\t\tlet parent = data[parentIdx];\n\n\t\t\t\t// if it's the parent\n\t\t\t\tif (parent[this.idField] == parentId)\n\t\t\t\t{\n\t\t\t\t\t// create children array if not done yet\n\t\t\t\t\tif (!parent._children) parent._children = [];\n\n\t\t\t\t\t// if child is not included in children array, append the child\n\t\t\t\t\tif (!parent._children.includes(child)) parent._children.push(child);\n\n\t\t\t\t\t// parent found\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// search children for parents\n\t\t\t\telse if (parent._children) this.appendChild(parent._children, child);\n\t\t\t}\n\n\t\t\t// parent not found\n\t\t\treturn false;\n\t\t}\n\t},\n\tbeforeCreate() {\n\t\tif (!this.tableOnly == !this.filterType)\n\t\t\talert('You can not have a filter-type in table-only mode!');\n\t},\n\tcreated() {\n\t\tif (this.sideMenu && (!this.$props.onNwNewEntry || !(this.$props.onNwNewEntry instanceof Function)))\n\t\t\talert('\"nwNewEntry\" listener is mandatory when sideMenu is true');\n\t\tthis.uuid = _uuid++;\n\t\tthis.$emit('uuidDefined', this.uuid)\n\t},\n\tmounted() {\n\t\tthis.initTabulator().then(() => {\n\t\t\tif (!this.tableOnly) {\n\t\t\t\tthis.selectedFilter = window.location.hash ? window.location.hash.slice(1) : null;\n\t\t\t\tthis.render(this.fetchResult);\n\t\t\t}\n\t\t});\n\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\n\t\t
    \n\t\t\t
    \n\t\t\t\t

    \n\t\t\t\t\t{{ title }}\n\t\t\t\t

    \n\t\t\t
    \n\t\t
    \n\t\t
    \n\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{{ selectedData.length }} ausgewählt\n\t\t\t\t\t\t Mit {{ selectedData.length }} ausgewählten:\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t[ {{ filterName }} ]\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\n\n\t\t\n\t\t
    \n\t`\n};\n","import FhcFragment from \"../Fragment.js\";\n\nlet _uuid = {};\n\nexport default {\n\tname: \"FormInput\",\n\tinheritAttrs: false,\n\tcomponents: {\n\t\tFhcFragment\n\t},\n\tinject: {\n\t\tregisterToForm: {\n\t\t\tfrom: '$registerToForm',\n\t\t\tdefault: null\n\t\t},\n\t\tclearValidationForName: {\n\t\t\tfrom: '$clearValidationForName',\n\t\t\tdefault: null\n\t\t}\n\t},\n\tprops: {\n\t\tbsFeedback: Boolean,\n\t\tnoAutoClass: Boolean,\n\t\tnoFeedback: Boolean,\n\t\tinputGroup: Boolean,\n\t\ttype: String,\n\t\tname: String,\n\t\tcontainerClass: [String, Array, Object],\n\t\tlabel: String,\n\t\t// NOTE(chris): remove these from $attrs array to prevent doubled event listeners\n\t\tonInput: [Array, Function],\n\t\t'onUpdate:modelValue': [Array, Function]\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tvalid: undefined,\n\t\t\tfeedback: [],\n\t\t\tmodelValueDummy: undefined\n\t\t}\n\t},\n\tcomputed: {\n\t\thasContainer() {\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn true;\n\t\t\tif (this.containerClass)\n\t\t\t\treturn true;\n\t\t\tfor (const prop in this.autoContainerClass)\n\t\t\t\tif (Object.hasOwn(this.autoContainerClass, prop))\n\t\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t},\n\t\tacc() {\n\t\t\tif (!this.containerClass)\n\t\t\t\treturn {};\n\t\t\tif (typeof this.containerClass === 'string' || this.containerClass instanceof String)\n\t\t\t\treturn this.containerClass.split(' ').reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\tif (Array.isArray(this.containerClass))\n\t\t\t\treturn this.containerClass.reduce((a,c) => {a[c] = true; return a}, {});\n\t\t\treturn this.containerClass;\n\t\t},\n\t\tautoContainerClass() {\n\t\t\tif (this.noAutoClass)\n\t\t\t\treturn this.acc;\n\t\t\t\n\t\t\tconst acc = {...this.acc};\n\t\t\t\n\t\t\tif (this.inputGroup)\n\t\t\t\tacc['input-group-item'] = true;\n\n\t\t\tif (this.lcType == 'radio' || this.lcType == 'checkbox')\n\t\t\t\tacc['form-check'] = true;\n\t\t\t\n\t\t\tif (this.inputGroup && acc['form-check']) {\n\t\t\t\tacc['input-group-item'] = false;\n\t\t\t\tacc['form-check'] = false;\n\t\t\t\tacc['input-group-text'] = true;\n\t\t\t}\n\t\t\treturn acc;\n\t\t},\n\t\tlcType() {\n\t\t\tif (!this.type)\n\t\t\t\treturn 'text';\n\t\t\treturn this.type.toLowerCase();\n\t\t},\n\t\ttag() {\n\t\t\tswitch (this.lcType) {\n\t\t\t\tcase 'textarea':\n\t\t\t\tcase 'select':\n\t\t\t\t\treturn this.lcType;\n\t\t\t\tcase 'datepicker':\n\t\t\t\t\treturn 'VueDatePicker';\n\t\t\t\tcase 'autocomplete':\n\t\t\t\t\treturn 'PvAutocomplete';\n\t\t\t\tcase 'uploadimage':\n\t\t\t\t\treturn 'UploadImage';\n\t\t\t\tcase 'uploadfile':\n\t\t\t\tcase 'uploaddms':\n\t\t\t\t\treturn 'UploadDms';\n\t\t\t\tdefault:\n\t\t\t\t\treturn 'input';\n\t\t\t}\n\t\t},\n\t\tvalidationClass() {\n\t\t\tconst classes = [];\n\t\t\tif (this.valid)\n\t\t\t\tclasses.push('is-valid');\n\t\t\telse if (this.valid === false)\n\t\t\t\tclasses.push('is-invalid');\n\t\t\t\n\t\t\tif (!this.noAutoClass) {\n\t\t\t\tlet c = this.$attrs.class ? this.$attrs.class.split(' ') : [];\n\t\t\t\tswitch (this.lcType) {\n\t\t\t\t\t// TODO(chris): complete list!\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tif (!c.includes('form-select'))\n\t\t\t\t\t\t\tclasses.push('form-select');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'range':\n\t\t\t\t\t\tif (!c.includes('form-range'))\n\t\t\t\t\t\t\tclasses.push('form-range');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\tcase 'checkbox':\n\t\t\t\t\t\t// TODO(chris): maybe different handling?\n\t\t\t\t\t\tif (!c.includes('form-check-input') && !c.includes('btn-check'))\n\t\t\t\t\t\t\tclasses.push('form-check-input');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'color':\n\t\t\t\t\t\tif (!c.includes('form-control-color'))\n\t\t\t\t\t\t\tclasses.push('form-control-color');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'autocomplete':\n\t\t\t\t\tcase 'datepicker':\n\t\t\t\t\t\tclasses.push('p-0');\n\t\t\t\t\t\tclasses.push('border-0');\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'text':\n\t\t\t\t\tcase 'number':\n\t\t\t\t\tcase 'password':\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tif (!c.includes('form-control'))\n\t\t\t\t\t\t\tclasses.push('form-control');\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn classes;\n\t\t},\n\t\tfeedbackClass() {\n\t\t\tif (!this.feedback || this.feedback === true)\n\t\t\t\treturn '';\n\t\t\tif (!this.bsFeedback)\n\t\t\t\treturn {\n\t\t\t\t\t'valid-tooltip': this.valid === true,\n\t\t\t\t\t'invalid-tooltip': this.valid === false\n\t\t\t\t};\n\t\t\treturn {\n\t\t\t\t'valid-feedback': this.valid === true,\n\t\t\t\t'invalid-feedback': this.valid === false\n\t\t\t};\n\t\t},\n\t\tmodelValueCmp: {\n\t\t\tget() {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\treturn this.modelValueDummy;\n\t\t\t\treturn this.$attrs.modelValue;\n\t\t\t},\n\t\t\tset(v) {\n\t\t\t\tif (!this.$attrs.hasOwnProperty('modelValue'))\n\t\t\t\t\tthis.modelValueDummy = v;\n\t\t\t\tthis.$emit('update:modelValue', v);\n\t\t\t}\n\t\t},\n\t\tidCmp() {\n\t\t\tlet uuid = this.$attrs.id;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = this.$attrs.uid;\n\t\t\tif (!uuid && this.label)\n\t\t\t\tuuid = 'fhc-form-input';\n\t\t\tif (!uuid)\n\t\t\t\treturn undefined;\n\t\t\tif (this.lcType == 'datepicker')\n\t\t\t\tuuid = 'dp-input-' + uuid;\n\t\t\tif (_uuid[uuid] === undefined)\n\t\t\t\t_uuid[uuid] = 0;\n\t\t\treturn uuid + '-' + (_uuid[uuid]++);\n\t\t}\n\t},\n\tmethods: {\n\t\tclearValidation() {\n\t\t\tthis.valid = undefined;\n\t\t\tthis.feedback = [];\n\t\t},\n\t\tclearValidationForThisName() {\n\t\t\tif (this.valid === undefined)\n\t\t\t\treturn;\n\t\t\tif (this.clearValidationForName && this.name)\n\t\t\t\tthis.clearValidationForName(this.name);\n\t\t\telse\n\t\t\t\tthis.clearValidation();\n\t\t},\n\t\tsetFeedback(valid, feedback) {\n\t\t\tif (!feedback)\n\t\t\t\tfeedback = [];\n\t\t\tif (!Array.isArray(feedback))\n\t\t\t\tfeedback = [feedback];\n\t\t\tthis.valid = valid;\n\t\t\t// NOTE(chris): On a list of radios/checkboxes only add the feedback message to the last item\n\t\t\tif (this.name && (this.lcType == 'radio' || this.lcType == 'checkbox')) {\n\t\t\t\tconst selector = 'input[type=\"' + this.lcType + '\"][name=\"' + this.name + '\"]';\n\t\t\t\tif ([...this.$el.parentNode.querySelectorAll(selector)].pop() != this.$refs.input)\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.feedback = feedback;\n\t\t},\n\t\t_loadComponents() {\n\t\t\tif (this.tag == 'VueDatePicker' && !this._.components.VueDatePicker) {\n\t\t\t\tthis._.components.VueDatePicker = Vue.defineAsyncComponent(() => import(\"../vueDatepicker.js.php\"));\n\t\t\t} else if (this.tag == 'PvAutocomplete' && !this._.components.PvAutocomplete) {\n\t\t\t\tthis._.components.PvAutocomplete = primevue.autocomplete;\n\t\t\t} else if (this.tag == 'UploadImage' && !this._.components.UploadImage) {\n\t\t\t\tthis._.components.UploadImage = Vue.defineAsyncComponent(() => import(\"./Upload/Image.js\"));\n\t\t\t} else if (this.tag == 'UploadDms' && !this._.components.UploadDms) {\n\t\t\t\tthis._.components.UploadDms = Vue.defineAsyncComponent(() => import(\"./Upload/Dms.js\"));\n\t\t\t}\n\t\t}\n\t},\n\tbeforeMount() {\n\t\tthis._loadComponents();\n\t},\n\tbeforeUpdate() {\n\t\tthis._loadComponents();\n\t},\n\tmounted() {\n\t\tif (this.registerToForm)\n\t\t\tthis.registerToForm(this);\n\t},\n\ttemplate: `\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class-name'] ? $attrs['input-class-name'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\n\t\t {if(v) a.push(k);return a}, []), ...($attrs['input-class'] ? $attrs['input-class'].split(' ') : [])].join(' ')\"\n\t\t\t@update:model-value=\"clearValidationForThisName\"\n\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t
    \n\t\t\t\n\t\t
    \n\t\n\t`\n}\n","export default {\n\trender() {\n\t\treturn (this.$slots && this.$slots.default) ? this.$slots.default() : null;\n\t}\n};","import {CoreFilterCmpt} from '../../components/filter/Filter.js';\nimport CoreFormInput from \"../../components/Form/Input.js\";\n\n// Fields used to restructure table data for dataTree\nconst idField = 'lehrveranstaltung_id';\nconst parentIdField = 'lehrveranstaltung_template_id';\nconst STUDIENSEMESTER_DROPDOWN_STARTDATE = '2011-01-01';\n\nexport default {\n\tcomponents: {\n\t\tCoreFilterCmpt,\n\t\tCoreFormInput\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\ttable: null,\n\t\t\tstudiensemester: [],\n\t\t\tselectedStudiensemester: '',\n\t\t\tcbDataTreeStartExpanded: false\t// checkbox expand dataTree or not\n\t\t}\n\t},\n\tcomputed: {\n\t\ttabulatorOptions() {\n const fhcValuesLookup = function(cell) {\n var values = {};\n const field = cell.getField();\n const data = cell.getTable().getData();\n const collectvalues = function(rows, field) {\n var values = {};\n var childvalues = {};\n for(const row of rows) {\n const rowvalue = (row[field] !== null) ? row[field] : '';\n values[rowvalue] = rowvalue;\n if(row['_children'] && row['_children'].length > 0) {\n childvalues = collectvalues(row['_children'], field);\n values = {...values, ...childvalues}\n }\n }\n return values;\n }\n values = collectvalues(data, field);\n const vals = Object.keys(values).sort();\n if(vals.indexOf('') === -1) {\n vals.unshift('');\n }\n return vals;\n };\n const fhctreefilter = function(headerValue, rowValue, rowData, filterParams){\n if (rowData['_children'] && rowData['_children'].length > 0) {\n for (var i in rowData['_children']) {\n return rowValue == headerValue || \n fhctreefilter(\n headerValue, \n rowData['_children'][i][filterParams.field], \n rowData['_children'][i], \n filterParams\n );\n }\n }\n\n return rowValue == headerValue;\n };\n\t\t\tconst self = this;\n\t\t\treturn {\n\t\t\t\t// NOTE: data is set on table built to await preselected actual Studiensemester\n\t\t\t\tajaxResponse(url, params, response) {\n\t\t\t\t\treturn self.prepDataTreeData(response.data) // Prepare data for dataTree view\n\t\t\t\t},\n\t\t\t\tlayout: 'fitColumns',\n\t\t\t\tautoResize: false, // prevent auto resizing of table\n\t\t\t\tresizableColumnFit: true, //maintain the fit of columns when resizing\n\t\t\t\tindex: 'lehrveranstaltung_id',\n\t\t\t\tselectable: true,\n\t\t\t\tselectableRangeMode: 'click',\n\t\t\t\tdataTree: true,\n\t\t\t\tdataTreeStartExpanded: self.cbDataTreeStartExpanded,\n\t\t\t\tdataTreeChildIndent: 15, //indent child rows by 15 px\n\t\t\t\tpersistence:{\n\t\t\t\t\tfilter: false, //persist filter sorting\n\t\t\t\t},\n\t\t\t\tcolumns: [\n\t\t\t\t\t{title: 'LV-ID', field: 'lehrveranstaltung_id', headerFilter: true, visible: false},\n\t\t\t\t\t{title: 'LV Kurzbz', field: 'kurzbz', headerFilter: true, visible:false, width: 70},\n\t\t\t\t\t{title: 'STG Kurzbz', field: 'stg_typ_kurzbz', headerFilter: \"list\", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_kurzbz'}, visible:true, width: 80},\n\t\t\t\t\t{title: 'OrgEinheit', field: 'lv_oe_bezeichnung', headerFilter: true, visible: false, width: 250},\n\t\t\t\t\t{title: 'Lehrtyp Kurzbz', field: 'lehrtyp_kurzbz', headerFilter: true, visible:false, width: 70},\n\t\t\t\t\t{title: 'Studiengangtyp', field: 'stg_typ_bezeichnung', headerFilter: \"list\", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_bezeichnung'}, width: 150},\n\t\t\t\t\t{title: 'OrgForm', field: 'orgform_kurzbz', headerFilter: \"list\", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'orgform_kurzbz'}, width: 70},\n\t\t\t\t\t{title: 'Semester', field: 'semester', headerFilter: true, width: 50},\n\t\t\t\t\t{title: 'Lehrveranstaltung', field: 'lv_bezeichnung', headerFilter: true, minWidth: 250},\n\t\t\t\t\t{title: 'Lehrveranstaltung ENG', field: 'bezeichnung_english', headerFilter: true, minWidth: 250},\n\t\t\t\t\t{title: 'ECTS', field: 'ects', headerFilter: true, width: 50, hozAlign: 'right'},\n\t\t\t\t\t{title: 'Lehrform', field: 'lehrform_kurzbz', headerFilter: true, width: 50},\n\t\t\t\t\t{title: 'Sprache', field: 'sprache', headerFilter: true, width: 100},\n\t\t\t\t\t{title: 'Aktiv', field: 'aktiv', width: 50,\n\t\t\t\t\t\tformatter:\"tickCross\",\n\t\t\t\t\t\theaderFilter:\"tickCross\",\n\t\t\t\t\t\theaderFilterParams:{\"tristate\": true},\n\t\t\t\t\t\thozAlign:\"center\",\n\t\t\t\t\t\tformatterParams: {\n\t\t\t\t\t\t\ttickElement: '',\n\t\t\t\t\t\t\tcrossElement: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{title: 'Studienplan', field: 'studienplan_bezeichnung', headerFilter: true, visible:true, width: 220},\n\t\t\t\t\t{title: 'OE Kurzbz', field: 'lv_oe_kurzbz', headerFilter: true, visible:false, minWidth: 80},\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: this.$p.t('global/aktionen'),\n\t\t\t\t\t\tfield: 'actions',\n\t\t\t\t\t\twidth: 140,\n\t\t\t\t\t\tformatter: (cell, formatterParams, onRendered) => {\n\t\t\t\t\t\t\tlet container = document.createElement('div');\n\t\t\t\t\t\t\tcontainer.className = \"d-flex gap-2\";\n\n\t\t\t\t\t\t\tlet button = document.createElement('button');\n\t\t\t\t\t\t\tbutton.className = 'btn btn-outline-secondary';\n\t\t\t\t\t\t\tbutton.innerHTML = ' ' + this.$p.t('global/verwalten');\n\t\t\t\t\t\t\tbutton.addEventListener('click', (event) => this.openAdminLvTemplate(event, cell.getRow()));\n\t\t\t\t\t\t\tcontainer.append(button);\n\n\t\t\t\t\t\t\treturn container;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfrozen: true\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\turlToAdminAllTemplates() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t'vilesci/lehre/lehrveranstaltung.php?stg_kz=99999&semester=-1&orgform=-1';\n\t\t}\n\t},\n\tmethods: {\n\t\tasync loadAndSetStudiensemester(){\n\t\t\tconst result = await this.$api\n\t\t\t\t.get('api/frontend/v1/organisation/Studiensemester/getAll', {start: STUDIENSEMESTER_DROPDOWN_STARTDATE, order: 'desc'})\n\t\t\t\t.then(result => this.studiensemester = result.data )\n\t\t\t\t.then(() => this.$api.get('api/frontend/v1/organisation/Studiensemester/getAktNext') ) // Get actual Studiensemester\n\t\t\t\t.then(result => this.selectedStudiensemester = result.data[0].studiensemester_kurzbz ) // Preselect Studiensemester\n\t\t\t\t.catch(error => this.$fhcAlert.handleSystemError(error) );\n\t\t},\n\t\tasync onTableBuilt(){\n\n\t\t\tthis.table = this.$refs.lvTemplateUebersichtTable.tabulator;\n\n\t\t\t// Await Studiensemester\n\t\t\tawait this.loadAndSetStudiensemester();\n\n\t\t\t// Set table data\n\t\t\tthis.table.setData(\n\t\t\t\tthis.$api.getUri() +\n\t\t\t\t'/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree' +\n\t\t\t\t'?studiensemester_kurzbz=' + this.selectedStudiensemester\n\t\t\t);\n\n\t\t\t// Await phrases categories\n\t\t\tawait this.$p.loadCategory(['lehre']);\n\n\t\t\t// Replace column titles with phrasen\n\t\t\tthis.table.updateColumnDefinition('lv_bezeichnung', {title: this.$p.t('lehre', 'lehrveranstaltung')});\n\n\t\t},\n\t\tonChangeStudiensemester(){\n\t\t\t// Reset table data\n\t\t\tthis.table.setData(\n\t\t\t\tthis.$api.getUri() +\n\t\t\t\t'/api/frontend/v1/education/Lehrveranstaltung/getTemplateLvTree' +\n\t\t\t\t'?studiensemester_kurzbz=' + this.selectedStudiensemester\n\t\t\t);\n\t\t},\n\t\topenAdminLvTemplate(event, row){\n\t\t\tconst url = FHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\t\t'vilesci/lehre/lehrveranstaltung.php?stg_kz=&semester=-1&orgform=-1&lehrveranstaltung_id=' +\n\t\t\t\trow.getData().lehrveranstaltung_id;\n\n\t\t\twindow.open(url, '_blank').focus();\n\t\t},\n\t\tprepDataTreeData(data){\n\t\t\tlet toDelete = [];\n\n\t\t\t// loop through all data\n\t\t\tfor (let childIdx = 0; childIdx < data.length; childIdx++)\n\t\t\t{\n\t\t\t\tlet child = data[childIdx];\n\n\t\t\t\t// if it has parent id, it is a child\n\t\t\t\tif (child[parentIdField])\n\t\t\t\t{\n\t\t\t\t\t// append the child on the right place. If parent found, mark original sw child on 0 level for deleting\n\t\t\t\t\tif (this._appendChild(data, child)) toDelete.push(childIdx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// delete the marked children from 0 level\n\t\t\tfor (let counter = 0; counter < toDelete.length; counter++)\n\t\t\t{\n\t\t\t\t// decrease index by counter as index of data array changes after every deletion\n\t\t\t\tdata.splice(toDelete[counter] - counter, 1);\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t\t_appendChild(data, child) {\n\t\t\t// get parent id\n\t\t\tlet parentId = child[parentIdField];\n\n\t\t\t// loop thorugh all data\n\t\t\tfor (let parentIdx = 0; parentIdx < data.length; parentIdx++)\n\t\t\t{\n\t\t\t\tlet parent = data[parentIdx];\n\n\t\t\t\t// if it's the parent\n\t\t\t\tif (parent[idField] == parentId)\n\t\t\t\t{\n\t\t\t\t\t// create children array if not done yet\n\t\t\t\t\tif (!parent._children) parent._children = [];\n\n\t\t\t\t\t// if child is not included in children array, append the child\n\t\t\t\t\tif (!parent._children.includes(child)) parent._children.push(child);\n\n\t\t\t\t\t// parent found\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// search children for parents\n\t\t\t\telse if (parent._children) this._appendChild(parent._children, child);\n\t\t\t}\n\n\t\t\t// parent not found\n\t\t\treturn false;\n\t\t},\n\t\treloadTabulator() {\n\t\t\tif (this.table !== null && this.table !== undefined)\n\t\t\t{\n\t\t\t\tfor (let option in this.tabulatorOptions)\n\t\t\t\t{\n\t\t\t\t\tif (this.table.options.hasOwnProperty(option))\n\t\t\t\t\t\tthis.table.options[option] = this.tabulatorOptions[option];\n\t\t\t\t}\n\t\t\t\tthis.$refs.lvTemplateUebersichtTable.reloadTable();\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\n
    \n\t
    \n\t\t
    {{ $p.t('lehre/lvTemplatesUebersicht') }}
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t
    \n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t
    \n\t
    \n\n
    \n`\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/navigation/header',\n\t\t\tparams: { navigation_page }\n\t\t};\n\t},\n\tgetMenu(navigation_page) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/navigation/menu',\n\t\t\tparams: { navigation_page }\n\t\t};\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport {CoreFetchCmpt} from '../../components/Fetch.js';\nimport ApiNavigation from '../../api/factory/navigation.js';\n\n/**\n *\n */\nexport const CoreNavigationCmpt = {\n\tcomponents: {\n\t\tCoreFetchCmpt\n\t},\n\tprops: {\n\t\taddHeaderMenuEntries: Object, // property used to add new header menu entries from another app/component\n\t\taddSideMenuEntries: Object, // property used to add new side menu entries from another app/component\n\t\thideTopMenu: Boolean,\n\t\tleftNavCssClasses: {\n\t\t\ttype: String,\n\t\t\tdefault: 'navbar navbar-left-side'\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\theaderMenu: {}, // header menu entries\n\t\t\tsideMenu: {} // side menu entries\n\t\t};\n\t},\n\tcomputed: {\n\t\t/**\n\t\t *\n\t\t */\n\t\theaderMenuEntries() {\n\t\t\t//\n\t\t\tlet hm = this.headerMenu ? {...this.headerMenu} : {};\n\t\t\tif (this.headerMenu != null && this.addHeaderMenuEntries != null && Object.keys(this.addHeaderMenuEntries).length > 0)\n\t\t\t{\n\t\t\t\thm[this.addHeaderMenuEntries.description] = this.addHeaderMenuEntries;\n\t\t\t}\n\t\t\treturn hm;\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tsideMenuEntries() {\n\t\t\t//\n\t\t\tlet sm = this.sideMenu ? {...this.sideMenu} : {};\n\t\t\tif (this.sideMenu != null && this.addSideMenuEntries != null && Object.keys(this.addSideMenuEntries).length > 0)\n\t\t\t{\n\t\t\t\tsm[this.addSideMenuEntries.description] = this.addSideMenuEntries;\n\t\t\t}\n\t\t\treturn sm;\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t *\n\t\t */\n\t\tgetNavigationPage() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.called_path + \"/\" + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchCmptApiFunctionHeader() {\n\t\t\treturn this.$api.call(ApiNavigation.getHeader(this.getNavigationPage()))\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchCmptApiFunctionSideMenu() {\n\t\t\treturn this.$api.call(ApiNavigation.getMenu(this.getNavigationPage()))\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchCmptDataFetchedHeader(data) {\n\t\t\tthis.headerMenu = data || {};\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tfetchCmptDataFetchedMenu(data) {\n\t\t\tthis.sideMenu = data || {};\n\t\t},\n\t\t/**\n\t\t *\n\t\t */\n\t\tgetDataBsToggle(header) {\n\t\t\treturn !header.children ? null : 'dropdown';\n\t\t}\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t\t\n\n\t\t\n\t\t\n\n\t\t\n\t\t\n\t`\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsearch(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/search';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchAdvanced(searchsettings, config) {\n\t\tconst url = '/api/frontend/v1/searchbar/searchAdvanced';\n\t\treturn this.$fhcApi.post(url, searchsettings, config);\n\t},\n\tsearchdummy(searchsettings) {\n\t\tconst url = 'public/js/apps/api/dummyapi.php/Search';\n\t\treturn this.$fhcApi.post(url, searchsettings);\n\t}\n};\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/loadModule/' + category);\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst payload = {categories, language}\n\t\treturn this.$fhcApi.post('/api/frontend/v1/phrasen/setLanguage', payload);\n\t},\n\tgetLanguage() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getLanguage', {});\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/phrasen/getAllLanguages', {});\n\t}\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetHeader(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/header',\n\t\t\t{ navigation_page }\n\t\t);\n\t},\n\tgetMenu: function(navigation_page) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/navigation/menu',\n\t\t\t{ navigation_page }\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tsaveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/saveCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tcustomFilterName: wsParams.customFilterName\n\t\t\t}\n\t\t);\n\t},\n\tremoveCustomFilter(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeCustomFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tapplyFilterFields(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/applyFilterFields',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterFields: wsParams.filterFields\n\t\t\t}\n\t\t);\n\t},\n\taddFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/addFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tremoveFilterField(wsParams) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/filter/removeFilterField',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterField: wsParams.filterField\n\t\t\t}\n\t\t);\n\t},\n\tgetFilterById(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType,\n\t\t\t\tfilterId: wsParams.filterId\n\t\t\t}\n\t\t);\n\t},\n\tgetFilter(wsParams) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/filter/getFilter',\n\t\t\t{\n\t\t\t\tfilterUniqueId: wsParams.filterUniqueId,\n\t\t\t\tfilterType: wsParams.filterType\n\t\t\t}\n\t\t);\n\t}\n};\n\n","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tabmeldung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/abmeldung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(stdsem, prestudent_id, grund) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/abmeldung/createAntrag', {\n\t\t\t\tstudiensemester: stdsem,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\tif (!Array.isArray(antrag_id))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t\t{ antrag_id }\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag_id.map(antrag => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/abmeldung/cancelAntrag',\n\t\t\t\t{ antrag_id: antrag.studierendenantrag_id },\n\t\t\t\t{ errorHeader: '#' + antrag.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t},\n\tunterbrechung: {\n\t\tgetDetails(antrag_id, prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/unterbrechung/'\n\t\t\t\t+ (antrag_id !== undefined ? 'getDetailsForAntrag/' + antrag_id : 'getDetailsForNewAntrag/' + prestudent_id);\n\t\t\treturn this.$fhcApi.get(url);\n\t\t},\n\t\tcreate(studiensemester, prestudent_id, grund, datum_wiedereinstieg, attachment) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/createAntrag', {\n\t\t\t\tstudiensemester,\n\t\t\t\tprestudent_id,\n\t\t\t\tgrund,\n\t\t\t\tdatum_wiedereinstieg,\n\t\t\t\tattachment\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(antrag_id) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/unterbrechung/cancelAntrag', {\n\t\t\t\tantrag_id\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t}\n\t},\n\twiederholung: {\n\t\tgetDetails(prestudent_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getDetailsForNewAntrag/' + prestudent_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tgetLvs(antrag_id) {\n\t\t\tconst url = '/api/frontend/v1/studstatus/wiederholung/getLvs/' + antrag_id;\n\t\t\treturn this.$fhcApi.get(url)\n\t\t},\n\t\tcreate(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/createAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tcancel(prestudent_id, studiensemester) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/cancelAntrag', {\n\t\t\t\tprestudent_id,\n\t\t\t\tstudiensemester\n\t\t\t}, {\n\t\t\t\terrorHandling: 'strict'\n\t\t\t});\n\t\t},\n\t\tsaveLvs(forbiddenLvs, mandatoryLvs) {\n\t\t\treturn this.$fhcApi.post('/api/frontend/v1/studstatus/wiederholung/saveLvs', {\n\t\t\t\tforbiddenLvs,\n\t\t\t\tmandatoryLvs\n\t\t\t});\n\t\t}\n\t},\n\tleitung: {\n\t\tgetStgs() {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getActiveStgs');\n\t\t},\n\t\tgetAntraege(url, config, params) {\n\t\t\treturn this.$fhcApi\n\t\t\t\t.get('/api/frontend/v1/studstatus/leitung/getAntraege/' + url)\n\t\t\t\t.then(res => res.data); // Return data for tabulator\n\t\t},\n\t\tgetHistory(antrag_id) {\n\t\t\treturn this.$fhcApi.get('/api/frontend/v1/studstatus/leitung/getHistory/' + antrag_id)\n\t\t},\n\t\tgetPrestudents(query, signal) {\n\t\t\treturn this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/getPrestudents',\n\t\t\t\t{ query },\n\t\t\t\t{\n signal: signal,\n timeout: 30000\n }\n\t\t\t);\n\t\t},\n\t\tapprove(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/rejectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\treopen(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/reopenAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/pauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tunpause(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/unpauseAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tobject(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/objectAntrag',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tapproveObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/approveObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t},\n\t\tdenyObjection(antrag) {\n\t\t\tif (!Array.isArray(antrag))\n\t\t\t\treturn this.$fhcApi.post(\n\t\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\t\tantrag\n\t\t\t\t);\n\t\t\treturn Promise.allSettled(antrag.map(a => this.$fhcApi.post(\n\t\t\t\t'/api/frontend/v1/studstatus/leitung/denyObjection',\n\t\t\t\ta,\n\t\t\t\t{ errorHeader: '#' + a.studierendenantrag_id }\n\t\t\t)));\n\t\t}\n\t}\n};","export default {\n\n getView: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getView/${uid}`,{}\n );\n },\n\n fotoSperre: function (value) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/fotoSperre/${value}`,\n {}\n );\n \n },\n\n isStudent: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isStudent`,\n {\n uid:uid,\n }\n );\n },\n\n isMitarbeiter: function (uid) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/isMitarbeiter/${uid}`,\n {}\n );\n },\n\n getZustellAdresse: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellAdresse`,{}\n );\n },\n\n getZustellKontakt: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getZustellKontakt`,{}\n );\n },\n\n getGemeinden: function(nation,zip){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/Profil/getGemeinden/${nation}/${zip}`,\n {}\n );\n \n },\n getAllNationen:function(){\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root + \n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Profil/getAllNationen\",{}\n );\n },\n}","export default {\n //! API calls for profil update requests\n \n getStatus: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getStatus`,{});\n },\n \n getTopic: function () {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getTopic`,{});\n },\n \n acceptProfilRequest: function ({profil_update_id, uid, status_message, topic, requested_change}) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/acceptProfilRequest\",{profil_update_id, uid, status_message, topic, requested_change});\n },\n \n denyProfilRequest: function ({profil_update_id, uid, topic, status_message}) {\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/denyProfilRequest\",{profil_update_id,uid,topic,status_message});\n },\n \n insertFile: function (dms, replace = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/insertFile/${replace}`,\n dms);\n\n },\n \n getProfilRequestFiles: function (requestID) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/getProfilRequestFiles/${requestID}`,{});\n },\n \n selectProfilRequest: function (uid = null, id = null) {\n\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/selectProfilRequest`,\n {...(uid?{uid}:{}),\n ...(id?{id}:{})\n });\n },\n \n insertProfilRequest: function (topic, payload, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/ProfilUpdate/insertProfilRequest\",\n {\n topic,\n payload,\n ...(fileID ? { fileID } : {}),\n });\n },\n \n updateProfilRequest: function (topic, payload, ID, fileID = null) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/updateProfilRequest`,\n {\n topic,\n payload,\n ID,\n ...(fileID ? { fileID: fileID } : {}),\n });\n },\n \n deleteProfilRequest: function (requestID) {\n\n return this.$fhcApi.post(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/ProfilUpdate/deleteProfilRequest`,\n {\n requestID,\n });\n },\n };\n ","\nexport default {\n\tgetRoomInfo(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getRoomplan',\n\t\t\t{ ort_kurzbz, start_date, end_date}\n\t\t);\n\t},\n\tgetStunden() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/Stunden',\n\t\t\t{}\n\t\t);\n\t},\n\tgetOrtReservierungen(ort_kurzbz, start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/LvPlan/getReservierungen/${ort_kurzbz}`,\n\t\t\t{ start_date, end_date}\n\t\t);\n\t},\n\tgetLvPlanReservierungen(start_date, end_date) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'/api/frontend/v1/LvPlan/getReservierungen',\n\t\t\t{ start_date, end_date }\n\t\t);\n\t},\n\tgetLehreinheitStudiensemester(lehreinheit_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLehreinheitStudiensemester/${lehreinheit_id}`,\n\t\t\t{}\n\t\t);\n\t},\n\tstudiensemesterDateInterval(date) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/studiensemesterDateInterval/${date}`,\n\t\t\t{}\n\t\t);\n\t},\n\tLvPlanEvents(start_date, end_date, lv_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/LvPlan/LvPlanEvents',\n\t\t\t{ start_date, end_date, lv_id }\n\t\t);\n\t},\n\t\n\t\n};","import verband from './stv/verband.js';\nimport students from './stv/students.js';\nimport filter from './stv/filter.js';\nimport konto from './stv/konto.js';\nimport group from './stv/group.js';\nimport kontakt from './stv/kontakt.js';\nimport prestudent from './stv/prestudent.js';\nimport status from './stv/status.js';\nimport details from './stv/details.js';\nimport exam from './stv/exam.js';\nimport abschlusspruefung from './stv/abschlusspruefung.js';\nimport grades from './stv/grades.js';\nimport mobility from './stv/mobility.js';\nimport archiv from './stv/archiv.js';\nimport documents from './stv/documents.js';\nimport exemptions from './stv/exemptions.js';\nimport jointstudies from \"./stv/jointstudies.js\";\nimport courselist from './stv/courselist.js';\n\nexport default {\n\tverband,\n\tstudents,\n\tfilter,\n\tkonto,\n\tgroup,\n\tkontakt,\n\tprestudent,\n\tstatus,\n\tdetails,\n\texam,\n\tabschlusspruefung,\n\tgrades,\n\tmobility,\n\tarchiv,\n\tdocuments,\n\texemptions,\n\tjointstudies,\n\tcourselist,\n\tconfigStudent() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/student');\n\t},\n\tconfigStudents() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/config/students');\n\t}\n};\n","export default {\n\tget() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/verband');\n\t},\n\tfavorites: {\n\t\tget() {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/stv/favorites');\n\t\t},\n\t\tset(favorites) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/stv/favorites/set', {\n\t\t\t\tfavorites\n\t\t\t});\n\t\t}\n\t}\n}","export default {\n\tuid(uid, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/uid/'\n\t\t\t+ encodeURIComponent(uid);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tprestudent(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/prestudent/'\n\t\t\t+ encodeURIComponent(prestudent_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tperson(person_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/students/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t+ '/person/'\n\t\t\t+ encodeURIComponent(person_id);\n\t\treturn this.$fhcApi.getUri(url);\n\t},\n\tverband(relative_path) {\n\t\treturn this.$fhcApi.getUri('api/frontend/v1/stv/students/' + relative_path);\n\t}\n}","export default {\n\tgetStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/filter/getStg');\n\t},\n\tsetStg(studiengang_kz) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/filter/setStg', {\n\t\t\tstudiengang_kz\n\t\t});\n\t}\n};","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/konto/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id),\n\t\t\t\tonly_open: self.filter,\n\t\t\t\tstudiengang_kz: self.studiengang_kz_intern ? self.stg_kz : ''\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tcheckDoubles(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/checkDoubles', data, {\n\t\t\tconfirmErrorHandler: error => true\n\t\t});\n\t},\n\tinsert(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/insert', data);\n\t},\n\tcounter(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/counter', data);\n\t},\n\tedit(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/konto/update', data);\n\t},\n\tdelete(buchungsnr) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/konto/delete', {buchungsnr});\n\t},\n\tgetBuchungstypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/konto/getBuchungstypen');\n\t}\n};","export default {\n\tgetGruppen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/Gruppen/getGruppen/' + params.id);\n\t},\n\tdeleteGroup(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/Gruppen/deleteGruppe/', params);\n\t}\n}","export default {\n\t//------------- address.js-----------\n\tgetAdressen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressen/' + params.id);\n\t},\n\taddNewAddress(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewAddress/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadAddress(address_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadAddress/', {address_id});\n\t},\n\tupdateAddress(form, address_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateAddress/' + address_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteAddress(address_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteAddress/', {address_id});\n\t},\n\tgetPlaces(plz) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getPlaces/' + plz);\n\t},\n\tgetFirmen(searchString) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getFirmen/' + searchString);\n\t},\n\tgetNations() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/address/getNations/');\n\t},\n\tgetAdressentypen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getAdressentypen/');\n\t},\n\n\t//------------- bankverbindung.js-----------\n\tgetBankverbindung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getBankverbindung/' + params.id);\n\t},\n\taddNewBankverbindung(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewBankverbindung/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadBankverbindung(bankverbindung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadBankverbindung/', {bankverbindung_id});\n\t},\n\tupdateBankverbindung(form, bankverbindung_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateBankverbindung/' + bankverbindung_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteBankverbindung(bankverbindung_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteBankverbindung/', {bankverbindung_id});\n\t},\n\n\t//------------- contact.js-----------\n\tgetKontakte (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakte/' + params.id);\n\t},\n\taddNewContact(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/addNewContact/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadContact(kontakt_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/loadContact/', {kontakt_id});\n\t},\n\tupdateContact(form, kontakt_id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/kontakt/updateContact/' + kontakt_id,\n\t\t\tdata\n\t\t);\n\t},\n\tdeleteContact(kontakt_id) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/kontakt/deleteContact/', {kontakt_id});\n\t},\n\tgetStandorteByFirma(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getStandorteByFirma/' + searchString);\n\t},\n\tgetKontakttypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/kontakt/getKontakttypen/');\n\t}\n};","export default {\n\n//------------- Prestudent.js------------------------------------------------------\n\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\treturn \tthis.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/prestudent/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz)\n\t\t\t);\n\t},\n\tupdatePrestudent(form, prestudent_id, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/prestudent/updatePrestudent/' + prestudent_id,\n\t\t\tdata\n\t\t);\n\t},\n\tgetBezeichnungZGV() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungZGV/');\n\t},\n\tgetBezeichnungMZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungMZgv/');\n\t},\n\tgetBezeichnungDZgv() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBezeichnungDZgv/');\n\t},\n\tgetStgs() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStgs/');\n\t},\n\tgetAusbildung() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAusbildung/');\n\t},\n\tgetAufmerksamdurch() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getAufmerksamdurch/');\n\t},\n\tgetBerufstaetigkeit() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBerufstaetigkeit/');\n\t},\n\tgetTypenStg() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getTypenStg/');\n\t},\n\tgetBisstandort() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getBisstandort/');\n\t},\n\n//------------- MultiStatus.js------------------------------------------------------\n\tgetHistoryPrestudent (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getHistoryPrestudent/' + params.id);\n\t},\n\tgetMaxSem(studiengang_kzs) {\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/status/getMaxSemester/', {studiengang_kzs});\n\t},\n\tadvanceStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/advanceStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tconfirmStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/confirmStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tisLastStatus(id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/isLastStatus/' + id);\n\t},\n\tdeleteStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/deleteStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tgetLastBismeldestichtag() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getLastBismeldestichtag/');\n\t},\n\n//------------- History.js------------------------------------------------------\n\tgetHistoryPrestudents (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getHistoryPrestudents/' + params.id);\n\t},\n\n}","export default {\n\n//------------- Modal.js------------------------------------------------------\n\n\tinsertStatus(form, id, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/status/insertStatus/' + id,\n\t\t\tdata\n\t\t);\n\t},\n\tloadStatus({prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/status/loadStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester\n\t\t);\n\t},\n\tupdateStatus(form, {prestudent_id, status_kurzbz, studiensemester_kurzbz, ausbildungssemester}, data) {\n\t\treturn this.$fhcApi.post(\n\t\t\tform,\n\t\t\t'api/frontend/v1/stv/status/updateStatus/'\n\t\t\t+ prestudent_id + '/'\n\t\t\t+ status_kurzbz + '/'\n\t\t\t+ studiensemester_kurzbz + '/'\n\t\t\t+ ausbildungssemester,\n\t\t\tdata\n\t\t);\n\t},\n\tgetStudienplaene(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudienplaene/' + prestudent_id);\n\t},\n\tgetStudiengang(prestudent_id) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/prestudent/getStudiengang/' + prestudent_id);\n\t},\n\tgetStatusgruende() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusgruende/');\n\t},\n\tgetStati() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/lists/getStati/');\n\t},\n\n//------------- Dropdown.js------------------------------------------------------\n\n\taddStudent(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/addStudent/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tchangeStatus(id, data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/status/changeStatus/' + id,\n\t\t\tdata,\n\t\t\t{errorHeader: id}\n\t\t);\n\t},\n\tgetStatusarray() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/status/getStatusarray/');\n\t}\n}","export default {\n\tget(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/student/get/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(url);\n\t},\n\tsave(form, prestudent_id, studiensemester_kurzbz, data) {\n\t\tlet url = 'api/frontend/v1/stv/student/save/'\n\t\t\t+ encodeURIComponent(prestudent_id)\n\t\t\t+ '/'\n\t\t\t+ encodeURIComponent(studiensemester_kurzbz);\n\t\treturn this.$fhcApi.post(form, url, data);\n\t},\n}\n","export default {\n\tgetPruefungen(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getPruefungen/' + params.id);\n\t},\n\tloadPruefung(pruefung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/loadPruefung/' + pruefung_id);\n\t},\n\tgetTypenPruefungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getTypenPruefungen');\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/getAllLehreinheiten/', data)\n\t},\n\tgetLvsByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsByStudent/' + uid)\n\t},\n\tgetLvsandLesByStudent(uid, semester){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsandLesByStudent/' + uid + '/' + semester);\n\t},\n\tgetLvsAndMas(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getLvsAndMas/' + uid)\n\t},\n\tgetMitarbeiterLv(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getMitarbeiterLv/' + id)\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/pruefung/getNoten');\n\t},\n\tcheckZeugnisnoteLv(data){\n\t\treturn \tthis.$fhcApi.post('api/frontend/v1/stv/pruefung/checkZeugnisnoteLv/', data)\n\t},\n\taddPruefung(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/insertPruefung/', data);\n\t},\n\tupdatePruefung(form, id, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/pruefung/updatePruefung/' + id, data);\n\t},\n\tdeletePruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/pruefung/deletePruefung/' + id)\n\t}\n}","export default {\n\n\tgetAbschlusspruefung (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getAbschlusspruefung/' + params.id);\n\t},\n\taddNewAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/insertAbschlusspruefung/', data\n\t\t);\n\t},\n\tloadAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/loadAbschlusspruefung/', {id});\n\t},\n\tupdateAbschlusspruefung(form, data) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/abschlusspruefung/updateAbschlusspruefung/', data\n\t\t);\n\t},\n\tdeleteAbschlusspruefung(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/deleteAbschlusspruefung/', {id});\n\t},\n\tgetTypenAbschlusspruefung(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAbschlusspruefung/');\n\t},\n\tgetTypenAntritte(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getTypenAntritte/');\n\t},\n\tgetBeurteilungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getBeurteilungen/');\n\t},\n\tgetAkadGrade(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getAkadGrade/', {studiengang_kz});\n\t},\n\tgetTypStudiengang(studiengang_kz){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/getTypStudiengang/', {studiengang_kz});\n\t},\n\tgetMitarbeiter(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getMitarbeiter/' + searchString);\n\t},\n\tgetPruefer(searchString){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getPruefer/' + searchString);\n\t},\n\tgetNoten(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/abschlusspruefung/getNoten/');\n\t},\n\tcheckForExistingExams(uids) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/abschlusspruefung/checkForExistingExams/', {uids}\n\t\t);\n\t}\n}","export default {\n\tlist() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/grades/list');\n\t},\n\tgetCertificate(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getCertificate/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetTeacherProposal(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getTeacherProposal/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tgetRepeaterGrades(prestudent_id, studiensemester_kurzbz) {\n\t\tlet url = 'api/frontend/v1/stv/grades/getRepeaterGrades/' + encodeURIComponent(prestudent_id);\n\t\tif (!!studiensemester_kurzbz) {\n\t\t\turl = url + '/' + encodeURIComponent(studiensemester_kurzbz);\n\t\t}\n\t\treturn this.$fhcApi.get(url);\n\t},\n\tupdateCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, note, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/updateCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz,\n\t\t\t\tnote\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tdeleteCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/deleteCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyTeacherProposalToCertificate({lehrveranstaltung_id, student_uid, studiensemester_kurzbz, lehrveranstaltung_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyTeacherProposalToCertificate',\n\t\t\t{\n\t\t\t\tlehrveranstaltung_id,\n\t\t\t\tstudent_uid,\n\t\t\t\tstudiensemester_kurzbz\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lehrveranstaltung_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tcopyRepeaterGradeToCertificate({studierendenantrag_lehrveranstaltung_id, lv_bezeichnung}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/stv/grades/copyRepeaterGradeToCertificate',\n\t\t\t{\n\t\t\t\tstudierendenantrag_lehrveranstaltung_id\n\t\t\t},\n\t\t\t{\n\t\t\t\terrorHeader: lv_bezeichnung\n\t\t\t}\n\t\t);\n\t},\n\tgetGradeFromPoints(points, lehrveranstaltung_id, studiensemester_kurzbz, manualErrorHandling) {\n\t\tconst config = manualErrorHandling ? {errorHandling: false} : {};\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/grades/getGradeFromPoints',\n\t\t\t{\n\t\t\t\t\"points\": points,\n\t\t\t\t\"lehrveranstaltung_id\": lehrveranstaltung_id,\n\t\t\t\t\"studiensemester_kurzbz\": studiensemester_kurzbz\n\t\t\t},\n\t\t\tconfig\n\t\t\t);\n\t}\n}","export default {\n\tgetMobilitaeten (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getMobilitaeten/' + params.id);\n\t},\n\tgetProgramsMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getProgramsMobility/');\n\t},\n\taddNewMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/insertMobility/', data);\n\t},\n\tloadMobility(bisio_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/loadMobility/' + bisio_id);\n\t},\n\tupdateMobility(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/mobility/updateMobility/', data);\n\t},\n\tdeleteMobility(bisio_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobility/' + bisio_id);\n\t},\n\tgetLVList(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLVList/' + studiengang_kz);\n\t},\n\tgetAllLehreinheiten(data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/getAllLehreinheiten/', data)\n\t},\n\tgetLvsandLesByStudent(uid){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getLvsandLesByStudent/' + uid);\n\t},\n\tgetPurposes(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getPurposes/' + params.id);\n\t},\n\tgetSupports(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getSupports/' + params.id);\n\t},\n\tgetListPurposes() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListPurposes/');\n\t},\n\tgetListSupports() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/mobility/getListSupports/');\n\t},\n\tdeleteMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilityPurpose/' + params.bisio_id, params);\n\t},\n\taddMobilityPurpose(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilityPurpose/' + params.bisio_id, params);\n\t},\n\tdeleteMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/deleteMobilitySupport/' + params.bisio_id, params);\n\t},\n\taddMobilitySupport(params) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/mobility/addMobilitySupport/' + params.bisio_id, params);\n\t},\n\n}","export default {\n\ttabulatorConfig(config, self) {\n\t\tconfig.ajaxURL = 'api/frontend/v1/stv/archiv/get';\n\t\tconfig.ajaxParams = () => {\n\t\t\tconst params = {\n\t\t\t\tperson_id: self.modelValue.person_id || self.modelValue.map(e => e.person_id)\n\t\t\t};\n\t\t\treturn params;\n\t\t};\n\t\tconfig.ajaxRequestFunc = (url, config, params) => this.$fhcApi.post(url, params, config);\n\t\tconfig.ajaxResponse = (url, params, response) => response.data;\n\n\t\treturn config;\n\t},\n\tgetArchivVorlagen() {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/getArchivVorlagen');\n\t},\n\tarchive(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archive',\n\t\t\tdata\n\t\t);\n\t},\n\tarchiveSigned(data) {\n\t\treturn this.$fhcApi.post(\n\t\t\t'api/frontend/v1/documents/archiveSigned',\n\t\t\tdata\n\t\t);\n\t},\n\tupdate(data) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/update', data);\n\t},\n\tdelete({akte_id, studiengang_kz}) {\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/archiv/delete', {akte_id, studiengang_kz});\n\t}\n};\n","export default {\n\tgetDocumentsUnaccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsUnaccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tgetDocumentsAccepted(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDocumentsAccepted/' + params.id + '/' + params.studiengang_kz);\n\t},\n\tdeleteZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteZuordnung/' + params.prestudent_id + '/' + params.dokument_kurzbz);\n\t},\n\tcreateZuordnung(params){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/createZuordnung/'\n\t\t\t+ params.prestudent_id + '/'\n\t\t\t+ params.dokument_kurzbz);\n\t},\n\tloadAkte(akte_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/loadAkte/' + akte_id);\n\t},\n\tgetDoktypen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/dokumente/getDoktypen/');\n\t},\n\tupdateFile(akte_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/updateAkte/' + akte_id,\n\t\t\tdata);\n\t},\n\tdeleteFile(akte_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/deleteAkte/' + akte_id);\n\t},\n\tuploadFile(prestudent_id, data){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/dokumente/uploadDokument/' + prestudent_id,\n\t\t\tdata);\n\t},\n}","export default {\n\tgetAnrechnungen(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getAnrechnungen/' + params.id);\n\t},\n\tgetLehrveranstaltungen(prestudent_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLehrveranstaltungen/' + prestudent_id);\n\t},\n\tgetBegruendungen(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getBegruendungen/');\n\t},\n\tgetLvsKompatibel(lv_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLvsKompatibel/' + lv_id);\n\t},\n\tgetLektoren(studiengang_kz){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/getLektoren/' + studiengang_kz);\n\t},\n\taddNewAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/insertAnrechnung/', data);\n\t},\n\tloadAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/anrechnungen/loadAnrechnung/' + anrechnung_id);\n\t},\n\teditAnrechnung(form, data){\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/stv/anrechnungen/updateAnrechnung/', data);\n\t},\n\tdeleteAnrechnung(anrechnung_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/anrechnungen/deleteAnrechnung/' + anrechnung_id);\n\t},\n}","export default {\n\tgetStudies(url, config, params) {\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudien/' + params.id);\n\t},\n\tgetTypenMobility(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getTypenMobility/');\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudiensemester/');\n\t},\n\tgetStudyprograms(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStudienprogramme/');\n\t},\n\tgetListPartner(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getPartnerfirmen/');\n\t},\n\tgetStatiPrestudent(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/getStatiPrestudent/');\n\t},\n\tloadStudy(id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/GemeinsameStudien/loadStudie/' + id);\n\t},\n\tinsertStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/insertStudie/', data);\n\t},\n\tupdateStudy(form, data){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/stv/GemeinsameStudien/updateStudie/', data);\n\t},\n\tdeleteStudy(id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/stv/GemeinsameStudien/deleteStudie/' + id);\n\t},\n\n}","export default {\n\tgetCourselist(url, config, params) {\n\t\t//corresponding logic controller Stundenplan.php\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStundenplan/'\n\t\t\t+ params.student_uid + '/'\n\t\t\t+ params.start_date + '/'\n\t\t\t+ params.end_date + '/'\n\t\t\t+ params.group_consecutiveHours + '/'\n\t\t\t+ params.dbStundenplanTable\n\t\t);\n\t},\n\tgetStudiensemester(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/stv/LvTermine/getStudiensemester/');\n\t},\n}","import person from \"./notiz/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetNotizen (url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getNotizen/' + params.id + '/' + params.type);\n\t},\n\tgetUid(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getUid/');\n\t},\n\taddNewNotiz(form, id, formData) {\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/addNewNotiz/' + id,\n\t\t\tformData\n\t\t);\n\t},\n\tloadNotiz(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadNotiz/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tloadDokumente(notiz_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/loadDokumente/', {\n\t\t\tnotiz_id\n\t\t});\n\t},\n\tdeleteNotiz(notiz_id, type_id, id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/notiz/notizPerson/deleteNotiz/', {\n\t\t\tnotiz_id,\n\t\t\ttype_id,\n\t\t\tid\n\t\t});\n\t},\n\tupdateNotiz(form, notiz_id, formData){\n\t\treturn this.$fhcApi.post(form,'api/frontend/v1/notiz/notizPerson/updateNotiz/' + notiz_id,\n\t\t\tformData\n\t\t);\n\t},\n\tgetMitarbeiter(event){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/getMitarbeiter/' + event);\n\t},\n\tisBerechtigt(id, type_id){\n\t\treturn this.$fhcApi.get('api/frontend/v1/notiz/notizPerson/isBerechtigt/');\n\t}\n}","import person from \"./betriebsmittel/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\tgetAllBetriebsmittel(url, config, params){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getAllBetriebsmittel/' + params.type + '/' + params.id);\n\t},\n\taddNewBetriebsmittel(form, person_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/addNewBetriebsmittel/' +\n\t\t\tperson_id, formData\n\t\t);\n\t},\n\tloadBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/loadBetriebsmittel/' + betriebsmittelperson_id);\n\t},\n\tupdateBetriebsmittel(form, betriebsmittelperson_id, formData) {\n\t\treturn this.$fhcApi.post(form, 'api/frontend/v1/betriebsmittel/betriebsmittelP/updateBetriebsmittel/' + betriebsmittelperson_id,\n\t\t\tformData);\n\t},\n\tdeleteBetriebsmittel(betriebsmittelperson_id){\n\t\treturn this.$fhcApi.post('api/frontend/v1/betriebsmittel/betriebsmittelP/deleteBetriebsmittel/' +\tbetriebsmittelperson_id);\n\t},\n\tgetTypenBetriebsmittel(){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/getTypenBetriebsmittel/');\n\t},\n\tloadInventarliste(query){\n\t\treturn this.$fhcApi.get('api/frontend/v1/betriebsmittel/betriebsmittelP/loadInventarliste/' +\tquery);\n\t}\n}","export default {\n\tupdatePersonUnrulyStatus(person_id, unrulyParam) {\n\n\t\ttry {\n\t\t\tconst payload = {person_id, unruly: unrulyParam}\n\t\t\tconst url = '/api/frontend/v1/checkperson/CheckPerson/updatePersonUnrulyStatus';\n\t\t\treturn this.$fhcApi.post(url, payload, null);\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t},\n\tfilterPerson(payload, base = ''){\n\n\t\ttry {\n\t\t\tconst url = base + '/api/frontend/v1/checkperson/CheckPerson/filterPerson';\n\t\t\treturn axios.post(url, payload)\n\t\t} catch (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t}\n}","export default {\n getContentID(ort_kurbz) {\n\t\treturn this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Ort/ContentID\",\n\t\t\t{ ort_kurzbz: ort_kurbz }\n\t\t);\n\t},\n\tgetRooms(datum, von, bis, typ, personenanzahl = 0) {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getRooms\",\n\t\t\t{ datum, von, bis, typ, personenanzahl }\n\t\t);\n\t},\n\tgetRoomTypes() {\n\t\treturn this.$fhcApi.get(\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.app_root +\n\t\t\tFHC_JS_DATA_STORAGE_OBJECT.ci_router +\n\t\t\t\"/api/frontend/v1/Ort/getTypes\"\n\t\t);\n\t}\n}","export default {\n content(content_id, version=null, sprache=null, sichtbar=null) {\n return this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/content\",\n\t\t\t{ \n\t\t\t\tcontent_id: content_id,\n\t\t\t\t...(version?{version}:{}),\n\t\t\t\t...(sprache?{sprache}:{}),\n\t\t\t\t...(sichtbar?{sichtbar}:{}),\n }\n );\n },\n\t//api function used for the news View that renders the html\n\tgetNews(page = 1, page_size = 10, sprache) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNews\",\n\t\t\t{\n\t\t\t\tpage,\n\t\t\t\tpage_size,\n\t\t\t\tsprache,\n\t\t\t},\n\t\t);\n\t},\n\t//api function used for the widget component\n\tnews(limit) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/news\",\n\t\t\t{\n\t\t\t\tlimit: limit\n\t\t\t}\n\t\t);\n\t},\n\tgetNewsRowCount: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getNewsRowCount\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetNewsExtra: function(){\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Cms/getStudiengangInfoForNews\",\n\t\t\t{}\n\t\t);\n\t}\n }","export default {\n getStudentenMail(lehreinheit_id) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n \"/api/frontend/v1/Lehre/lvStudentenMail\",\n { lehreinheit_id: lehreinheit_id }\n );\n },\n\tgetLvInfo(studiensemester_kurzbz, lehrveranstaltung_id) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/LV/${studiensemester_kurzbz}/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t},\n\tgetStudentPruefungen(lehrveranstaltung_id){\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Lehre/Pruefungen/${lehrveranstaltung_id}`\n\t\t\t, {}\n\t\t);\n\t}\n }","export default {\n getLvMenu(lvid, studiensemester_kurzbz) {\n return this.$fhcApi.get(\n FHC_JS_DATA_STORAGE_OBJECT.app_root +\n FHC_JS_DATA_STORAGE_OBJECT.ci_router +\n `/api/frontend/v1/LvMenu/getLvMenu/${lvid}/${studiensemester_kurzbz}`,\n {}\n );\n },\n\n \n }","import person from \"./messages/person.js\";\n\nexport default {\n\tperson\n}","export default {\n\t\tgetMessages(url, config, params) {\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessages/' + params.id + '/' + params.type + '/' + params.size + '/' + params.page);\n\t\t},\n\t\tgetVorlagen(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getVorlagen/');\n\t\t},\n\t\tgetMsgVarsLoggedInUser(){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsLoggedInUser/');\n\t\t},\n\t\tgetMessageVarsPerson(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMessageVarsPerson/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetMsgVarsPrestudent(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getMsgVarsPrestudent/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPersonId(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getPersonId/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetUid(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getUid/'+ params.id + '/' + params.type_id);\n\t\t},\n\t\tgetDataVorlage(vorlage_kurzbz){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getDataVorlage/' + vorlage_kurzbz);\n\t\t},\n\t\tgetNameOfDefaultRecipient(params){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getNameOfDefaultRecipient/' + params.id + '/' + params.type_id);\n\t\t},\n\t\tgetPreviewText(params, data){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/getPreviewText/' + params.id + '/' + params.type_id,\n\t\t\t\tdata);\n\t\t},\n\t\tgetReplyData(messageId){\n\t\t\treturn this.$fhcApi.get('api/frontend/v1/messages/messages/getReplyData/' + messageId);\n\t\t},\n\t\tsendMessageFromModalContext(form, id, data) {\n\t\t\treturn this.$fhcApi.post(form,'api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tsendMessage(id, data) {\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/sendMessage/' + id,\n\t\t\t\tdata);\n\t\t},\n\t\tdeleteMessage(messageId){\n\t\t\treturn this.$fhcApi.post('api/frontend/v1/messages/messages/deleteMessage/' + messageId);\n\t\t}\n}","export default {\n\tgetVorlagen() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagen/');\n\t},\n\tgetVorlagenByLoggedInUser() {\n\t\treturn this.$fhcApi.get('api/frontend/v1/vorlagen/vorlagen/getVorlagenByLoggedInUser/');\n\t}\n}","export default {\n\n\tgetStudiensemester: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/components/Cis/Mylv/Studiensemester',\n\t\t\t{}\n\t\t);\n\t},\n\n\tgetAllStudienSemester: function (studiensemester=undefined, studiengang=undefined, semester=undefined, studienplan=undefined) {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/Studium/getStudienAllSemester',\n\t\t\t{studiensemester, studiengang, semester, studienplan}\n\t\t);\n\t},\n\n\tgetStudiengaengeForStudienSemester: function (studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudiengaengeForStudienSemester/${studiensemester}`,\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudienplaeneBySemester: function (studiengang, studiensemester) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getStudienplaeneBySemester`,\n\t\t\t{\n\t\t\t\tstudiengang,\n\t\t\t\tstudiensemester,\n\t\t\t}\n\t\t);\n\t},\n\tgetLvPlanForStudiensemester: function (studiensemester, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/LvPlan/getLvPlanForStudiensemester/${studiensemester}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\tgetLvEvaluierungInfo: function (studiensemester_kurzbz, lvid) {\n\t\treturn this.$fhcApi.get(\n\t\t\t`/api/frontend/v1/Studium/getLvEvaluierungInfo/${studiensemester_kurzbz}/${lvid}`,\n\t\t\t{\n\t\t\t}\n\t\t);\n\t},\n\t\n}","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport search from \"./search.js\";\nimport phrasen from \"./phrasen.js\";\nimport navigation from \"./navigation.js\";\nimport filter from \"./filter.js\";\nimport studstatus from \"./studstatus.js\";\nimport profil from \"./profil.js\";\nimport profilUpdate from \"./profilUpdate.js\";\nimport lvPlan from \"./lvPlan.js\";\nimport bookmark from \"./bookmark.js\";\nimport stv from \"./stv.js\";\nimport notiz from \"./notiz.js\";\nimport betriebsmittel from \"./betriebsmittel.js\";\nimport checkperson from \"./checkperson.js\";\nimport ampeln from \"./ampeln.js\";\nimport ort from \"./ort.js\";\nimport cms from \"./cms.js\";\nimport lehre from \"./lehre.js\";\nimport addons from \"./addons.js\";\nimport messages from \"./messages.js\";\nimport vorlagen from \"./vorlagen.js\";\nimport studiengang from \"./studiengang.js\";\nimport menu from \"./menu.js\";\nimport dashboard from \"./dashboard.js\";\nimport authinfo from \"./authinfo.js\";\nimport studium from \"./studium.js\";\nimport language from \"./language.js\";\n\nexport default {\n search,\n phrasen,\n navigation,\n dashboard,\n filter,\n studstatus,\n profil,\n profilUpdate,\n lvPlan,\n bookmark,\n stv,\n notiz,\n betriebsmittel,\n checkperson,\n ampeln,\n ort,\n cms,\n lehre,\n addons,\n messages,\n vorlagen,\n addons,\n\tstudiengang,\n\tmenu,\n\tauthinfo,\n\tstudium,\n language\n};\n","export default {\n\tasync getViewData() {\n\t\tconst url = `/api/frontend/v1/Cis4FhcApi/getViewData`;\n\t\treturn this.$fhcApi.get(url, null, null)\n\t},\n}","export default {\n\n getBookmarks: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/getBookmarks`\n ,{}\n );\n },\n \n delete: function (bookmark_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Bookmark/delete/${bookmark_id}`\n ,{}\n ); \n },\n\n\tupdate: function ({ bookmark_id, url, title, tag=null}) {\n\t\treturn this.$fhcApi.post(\n\t\t\t`/api/frontend/v1/Bookmark/update/${bookmark_id}`\n\t\t\t, {\n\t\t\t\turl: url,\n\t\t\t\ttitle: title\n\t\t\t}\n\t\t);\n\t},\n\n insert: function ({url, title, tag}) {\n return this.$fhcApi.post(\n `/api/frontend/v1/Bookmark/insert`\n ,{\n url: url,\n title: title,\n tag: tag\n }\n ); \n },\n}","export default {\n \n open: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/open`,{});\n },\n\n all: function () {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/all`,{});\n },\n\n confirm: function (ampel_id) {\n return this.$fhcApi.get(\n `/api/frontend/v1/Ampeln/confirm/${ampel_id}`,{});\n },\n\n}","export default {\n\tstudiengangInformation: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/Studgang/getStudiengangInfo\",\n\t\t\t{}\n\t\t);\n\t},\n\tgetStudiengangByKz: function (studiengang_kz) {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/organisation/StudiengangEP/getStudiengangByKz\",\n\t\t\t{\n\t\t\t\t\"studiengang_kz\": studiengang_kz\n\t\t\t}\n\t\t);\n\t}\n}","export default {\n\tgetMenu: function () {\n\t\treturn this.$fhcApi.get(\n\t\t\t\"/api/frontend/v1/CisMenu/getMenu\",\n\t\t\t{}\n\t\t);\n\t}\n\n}","\nexport default {\n\tgetAuthUID() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthUID',\n\t\t\t{ }\n\t\t);\n\t},\n\tgetAuthInfo() {\n\t\treturn this.$fhcApi.get(\n\t\t\t'/api/frontend/v1/AuthInfo/getAuthInfo',\n\t\t\t{}\n\t\t);\n\t},\n};","/**\n * Copyright (C) 2024 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tgetAll() {\n\t\treturn this.$fhcApi.get('/api/frontend/v1/language/get');\n\t}\n};","/** TODO(chris):\n * when deleting this file be sure to\n * remove line 1 & 90 from ../plugins/Phrasen.js\n */\nimport FhcApiFactory from '../api/fhcapifactory.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$fhcApi) {\n\t\t\t/* Deprecated Code start */\n\t\t\tif (options?.factory) {\n\t\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\t\tapp.config.globalProperties.$fhcApi.factory.addEndpoints(options.factory);\n\t\t\t}\n\t\t\t/* Deprecated Code end */\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\n\t\tfunction _clean_return_value(response) {\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = {response};\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tconst baseURL = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\";\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(response => {\n\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\treturn _clean_return_value(response);\n\n\t\t\t// NOTE(chris): loop through errors\n\t\t\tif (response.data.errors)\n\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t);\n\n\t\t\treturn _clean_return_value(response);\n\t\t}, error => {\n\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\n\t\t\tif (error.config?.errorHandling == 'off'\n\t\t\t\t|| error.config?.errorHandling === false\n\t\t\t\t|| error.config?.errorHandling == 'success')\n\t\t\t\treturn Promise.reject(error);\n\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL, true);\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t\t}\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\terror.response.data.errors = error.response.data.errors.filter(\n\t\t\t\t\terr => (error.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$fhcApi._defaultErrorHandlers[err.type])(err, error.config)\n\t\t\t\t);\n\t\t\t\tif (!error.response.data.errors.length)\n\t\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else if (error.request) {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('error', error.message, error.request.responseURL);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t} else {\n\t\t\t\tapp.config.globalProperties.$fhcAlert.alertError(error.message);\n\t\t\t\treturn Promise.reject({...{handled: true}, ...error});\n\t\t\t}\n\n\t\t\treturn Promise.reject(error);\n\t\t});\n\n\t\tapp.config.globalProperties.$fhcApi = {\n\t\t\tgetUri(url) {\n\t\t\t\tconsole.warn('$fhcApi.getUri is DEPRECATED! Use $api.getUri instead.');\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\tconsole.warn('$fhcApi.get is DEPRECATED! Use $api.get instead.');\n\t\t\t\t[uri, params, config] = _get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\tconsole.warn('$fhcApi.post is DEPRECATED! Use $api.post instead.');\n\t\t\t\t[uri, data, config] = _get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\t_defaultErrorHandlers: {\n\t\t\t\tvalidation(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form) {\n\t\t\t\t\t\tconfig.form.clearValidation();\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.messages);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(error.messages)) {\n\t\t\t\t\t\terror.messages.forEach($fhcAlert.alertError);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} else if (typeof error.messages == 'object') {\n\t\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t\tObject.values(error.messages).forEach(\n\t\t\t\t\t\t\t\tvalue => $fhcAlert.alertDefault(\n\t\t\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tObject.entries(error.messages).forEach(\n\t\t\t\t\t\t\t\t([key, value]) => $fhcAlert.alertDefault('error', key, value, true)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tgeneral(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tif (config?.form)\n\t\t\t\t\t\tconfig.form.setFeedback(false, error.message);\n\t\t\t\t\telse if (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertError(error.message);\n\t\t\t\t},\n\t\t\t\tphp(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('warn', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t$fhcAlert.alertDefault('info', 'PHP ' + error.severity, message, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\texception(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tdb(error) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t$fhcAlert.alertSystemError(message);\n\t\t\t\t},\n\t\t\t\tauth(error, config) {\n\t\t\t\t\tconst $fhcAlert = app.config.globalProperties.$fhcAlert;\n\n\t\t\t\t\tvar message = '';\n\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\t\t\t\t\tif (config?.errorHeader)\n\t\t\t\t\t\t$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\tArray.isArray(config.errorHeader) ? app.config.globalProperties.$p.t.apply(null, config.errorHeader) : config.errorHeader,\n\t\t\t\t\t\t\terror.message,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\telse\n\t\t\t\t\t\t$fhcAlert.alertDefault('error', error.message, message);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/* Deprecated Code start */\n\t\tclass FhcApiFactoryWrapper {\n\t\t\tconstructor(factorypart, root) {\n\t\t\t\tif (root === undefined) {\n\t\t\t\t\tthis.$fhcApi = {\n\t\t\t\t\t\tgetUri(url) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.getUri(url);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tget(form, uri, params, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.get(form, uri, params, config);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpost(form, uri, data, config) {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.post(form, uri, data, config);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(this.$fhcApi, 'factory', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tconsole.warn('$fhcApi.factory is DEPRECATED!');\n\t\t\t\t\t\t\treturn app.config.globalProperties.$fhcApi.factory;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tapp.config.globalProperties.$fhcApi.factory = this;\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(this, '$fhcApi', {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn (root || this).$fhcApi;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.addEndpoints(factorypart, true)\n\t\t\t}\n\n\t\t\taddEndpoints(factorypart, noWarn) {\n\t\t\t\tObject.keys(factorypart).forEach(key => {\n\t\t\t\t\tObject.defineProperty(this, key, {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\tif (typeof factorypart[key] == 'function')\n\t\t\t\t\t\t\t\treturn factorypart[key].bind(this);\n\t\t\t\t\t\t\treturn new FhcApiFactoryWrapper(factorypart[key], this.$fhcApi.factory);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (!noWarn) console.warn('$fhcApi.factory.addEndpoints() is DEPRECATED!');\n\t\t\t}\n\t\t}\n\n\t\tconst factory = new FhcApiFactoryWrapper(FhcApiFactory);\n\t\tif (options?.factory) {\n\t\t\tconsole.warn(\"$fhcApi is DEPRECATED!\");\n\t\t\tfactory.addEndpoints(options.factory);\n\t\t}\n\n\t\tapp.config.globalProperties.$fhcApi.factory = factory;\n\t\t/* Deprecated Code end */\n\t\t\n\t\tapp.provide('$fhcApi', app.config.globalProperties.$fhcApi);\n\t}\n};","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\n//--------------------------------------------------------------------------------------------------------------------\n// Configs\n\n// To see debug messages into the browser console set this parameter as true\nconst CORE_REST_CLIENT_DEBUG = false;\n\n// Default timeout (milliseconds)\nconst CORE_REST_CLIENT_TIMEOUT = 5000;\n\n//--------------------------------------------------------------------------------------------------------------------\n// Constants\n\n// Success\nconst CORE_REST_CLIENT_SUCCESS = 0;\n\n// Properties present in a response\nconst CORE_REST_CLIENT_ERROR = \"error\";\nconst CORE_REST_CLIENT_RETVAL = \"retval\";\n\n// HTTP method parameters\nconst CRC_HTTP_GET_METHOD = \"get\";\nconst CRC_HTTP_POST_METHOD = \"post\";\n\n/**\n * Definition and initialization of the object CoreRESTClient\n */\nexport const CoreRESTClient = {\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Public methods\n\n\t/**\n\t * Performs a call using the HTTP GET method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tget: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_GET_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Performs a call using the HTTP POST method\n\t * wsParameters is an object\n\t * axiosParameters is an object\n\t */\n\tpost: function(wsURL, wsParameters, axiosParameters = null) {\n\t\treturn CoreRESTClient._axiosCall(wsURL, wsParameters, CRC_HTTP_POST_METHOD, axiosParameters);\n\t},\n\n\t/**\n\t * Checks if the response is a success\n\t */\n\tisSuccess: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR)\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL) && response.error == CORE_REST_CLIENT_SUCCESS)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Checks if the response is an error\n\t */\n\tisError: function(response) {\n\t\treturn !CoreRESTClient.isSuccess(response);\n\t},\n\n\t/**\n\t * Checks if the response has data\n\t */\n\thasData: function(response) {\n\n\t\tif (CoreRESTClient.isSuccess(response))\n\t\t{\n\t\t\tif ((typeof response[CORE_REST_CLIENT_RETVAL] === \"object\" && Object.keys(response[CORE_REST_CLIENT_RETVAL]).length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"array\" && response[CORE_REST_CLIENT_RETVAL].length > 0)\n\t\t\t\t|| (typeof response[CORE_REST_CLIENT_RETVAL] === \"string\" && response[CORE_REST_CLIENT_RETVAL].trim() != \"\")\n\t\t\t\t|| typeof response[CORE_REST_CLIENT_RETVAL] === \"number\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Retrives data from response object\n\t */\n\tgetData: function(response) {\n\n\t\tif (CoreRESTClient.hasData(response))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Retrives error message from response object\n\t */\n\tgetError: function(response) {\n\n\t\tif (typeof response === \"object\"\n\t\t\t&& Object.keys(response).length > 0\n\t\t\t&& response.hasOwnProperty(CORE_REST_CLIENT_RETVAL))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_RETVAL];\n\t\t}\n\n\t\treturn \"Generic error\";\n\t},\n\n\t/**\n\t * Retrives code from response object\n\t */\n\tgetErrorCode: function(response) {\n\n\t\tif (typeof response === \"object\" && response.hasOwnProperty(CORE_REST_CLIENT_ERROR))\n\t\t{\n\t\t\treturn response[CORE_REST_CLIENT_ERROR];\n\t\t}\n\n\t\treturn 1; // Generic error\n\t},\n\n\t//------------------------------------------------------------------------------------------------------------------\n\t// Private methods\n\n\t/**\n\t * Generate the router URI using the connection parameters\n\t */\n\t_generateRouterURI: function(wsURL) {\n\t\tvar uri = null;\n\n\t\t// Checks if global JS object FHC_JS_DATA_STORAGE_OBJECT exists\n\t\tif (typeof FHC_JS_DATA_STORAGE_OBJECT !== \"undefined\")\n\t\t{\n\t\t\turi = FHC_JS_DATA_STORAGE_OBJECT.app_root + FHC_JS_DATA_STORAGE_OBJECT.ci_router + \"/\" + wsURL;\n\t\t}\n\n\t\treturn uri;\n\t},\n\n\t/**\n\t * Method to print debug info after a controller has been called\n\t */\n\t_printDebug: function(parameters, response, errorThrown) {\n\n\t\tif (CORE_REST_CLIENT_DEBUG === true) // If global const CORE_REST_CLIENT_DEBUG is true, but really true!\n\t\t{\n\t\t\t// Print info about called controller\n\t\t\tconsole.log(\"Called controller: \" + parameters.remoteController);\n\t\t\tconsole.log(\"Call parameters:\"); // parameters given to this call\n\t\t\tconsole.log(parameters);\n\n\t\t\tif (response != null) // if there is a response...\n\t\t\t{\n\t\t\t\tconsole.log(\"Controller Response:\");\n\t\t\t\tconsole.log(response); // ...print it\n\t\t\t}\n\t\t\tif (errorThrown != null) // if there is a jQuery error...\n\t\t\t{\n\t\t\t\tconsole.log(\"jQuery error:\");\n\t\t\t\tconsole.log(errorThrown); // ...print it\n\t\t\t}\n\t\t\tconsole.log(\"--------------------------------------------------------------------------------------------\");\n\t\t}\n\t},\n\n\t/**\n\t * Performs a call to the server were the CI PHP layer is running\n\t * - wsURL: alias of the core controller to call\n\t * - wsParameters: parameters to give to the called controller\n\t * - type: POST or GET HTTP method\n\t * - axiosParameters: an object to configure the axios call\n\t */\n\t_axiosCall: function(wsURL, wsParameters, type, axiosParameters) {\n\n\t\t// Axios config object\n\t\tlet axiosCallObj = {\n\t\t\tmethod: type,\n\t\t\turl: CoreRESTClient._generateRouterURI(wsURL),\n\t\t\ttimeout: CORE_REST_CLIENT_TIMEOUT // default time out\n\t\t};\n\n\t\t// The ajax call is HTTP GET\n\t\tif (type == CRC_HTTP_GET_METHOD)\n\t\t{\n\t\t\taxiosCallObj.params = wsParameters;\n\t\t}\n\t\t// The ajax call is HTTP POST\n\t\telse\n\t\t{\n\t\t\taxiosCallObj.data = wsParameters;\n\t\t}\n\n\t\t// Check if axiosParameters is an object\n\t\tif (typeof axiosParameters === \"object\")\n\t\t{\n\t\t\t// And then copies the its properties into axiosCallObj\n\t\t\tfor (var prop in axiosParameters) axiosCallObj[prop] = axiosParameters[prop];\n\t\t}\n\n\t\t// Perform the ajax call via axios\n\t\treturn axios(axiosCallObj);\n\t}\n};\n\n","/**\n * Copyright (C) 2022 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n * \n * @usage:\n * Preperations:\n * Be sure to have PrimeVue loaded with the toast and confirmdialog\n * components as primevue variable\n * Install:\n * Import this Plugin and install it with the app.use() function.\n * Use:\n * In your component you can call now the global property $fhcAlert\n * which has the following functions:\n * \n * alertSuccess\n * ------------\n * Displays a success message\n * @param string\tmessage\n * @return void\n * \n * alertInfo\n * ---------\n * Displays an info message\n * @param string\tmessage\n * @return void\n * \n * alertWarning\n * ------------\n * Displays a warning\n * @param string\tmessage\n * @return void\n * \n * alertError\n * ----------\n * Displays an error\n * @param string\tmessage\n * @return void\n * \n * alertSystemError\n * ----------------\n * Displays an alert with the error details and a button to mail\n * the error to the Support Team\n * @param string\tmessage\n * @return void\n * \n * confirmDelete\n * -------------\n * Displays a confirmation dialog and returns a Promise which resolves\n * with true or false depending und the pressed button.\n * @return Promise\n * \n * alertDefault\n * ------------\n * Displays an alert\n * @param string\tseverity\t\tcan be 'success', 'info', 'warning', 'error'\n * @param string\ttitle\n * @param string\tmessage\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * alertMultiple\n * -------------\n * Displays multiple alerts\n * @param array\t\tmessageArray\n * @param string\tseverity\t\t(optional) defaults to 'info'\n * @param string\ttitle\t\t\t(optional) defaults to 'Info'\n * @param boolean\tsticky\t\t\t(optional) defaults to false\n * @return void\n * \n * handleSystemError\n * -----------------\n * Automatiticly determine how to display an system error and display it.\n * This would be used in a catch block of an ajax call.\n * @param mixed\t\terror\n * @return void\n * \n * handleSystemMessage\n * -------------------\n * Automatiticly determine how to display a message and display it.\n * @param mixed\t\tmessage\n * @return void\n */\nimport PvConfig from \"../../../index.ci.php/public/js/components/primevue/config/config.esm.min.js\";\nimport PvToast from \"../../../index.ci.php/public/js/components/primevue/toast/toast.esm.min.js\";\nimport PvConfirm from \"../../../index.ci.php/public/js/components/primevue/confirmdialog/confirmdialog.esm.min.js\";\nimport PvConfirmationService from \"../../../index.ci.php/public/js/components/primevue/confirmationservice/confirmationservice.esm.min.js\";\nimport FhcPhrasen from \"./Phrasen.js\";\n\nimport {CoreRESTClient} from '../RESTClient.js';\n\nconst helperAppContainer = document.createElement('div');\n\nconst helperApp = Vue.createApp({\n\tname: \"FhcAlertApp\",\n\tcomponents: {\n\t\tPvToast,\n\t\tPvConfirm\n\t},\n\tmethods: {\n\t\tmailToUrl(slotProps) {\n\t\t\tlet mailTo = FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto;\n\t\t\tlet subject = 'Meldung%20Systemfehler';\n\t\t\tlet 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: ` + slotProps.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!`\n\n\t\t\treturn \"mailto:\" + mailTo + \"?subject=\" + subject + \"&body=\" + body;\n\t\t},\n\t\topenMessagecard(e) {\n\t\t\tbootstrap.Collapse.getOrCreateInstance(e.target.getAttribute('href')).toggle();\n\t\t}\n\t},\n\tunmounted() {\n\t\thelperAppContainer.parentElement.removeChild(helperAppContainer);\n\t},\n\tcomputed: {\n\t\tshowmaillink: function() {\n\t\t\treturn FHC_JS_DATA_STORAGE_OBJECT.systemerror_mailto !== '';\n\t\t}\n\t},\n\ttemplate: /* html */`\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\t`\n});\n\nhelperApp.use(PvConfig);\nhelperApp.use(PvConfirmationService);\n//helperApp.use(FhcPhrasen);\n\nconst helperAppInstance = helperApp.mount(helperAppContainer);\n\ndocument.body.appendChild(helperAppContainer);\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (!app.config.globalProperties.$p)\n\t\t\tapp.use(FhcPhrasen);\n\n\t\tconst $fhcAlert = {\n\t\t\talertSuccess(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSuccess);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'success', summary: 'Info', detail: message, life: 1000});\n\t\t\t},\n\t\t\talertInfo(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertInfo);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'info', summary: 'Info', detail: message, life: 3000 });\n\t\t\t},\n\t\t\talertWarning(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertWarning);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'warn', summary: 'Achtung', detail: message});\n\t\t\t},\n\t\t\talertError(message) {\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertError);\n\t\t\t\thelperAppInstance.$refs.toast.add({ severity: 'error', summary: 'Achtung', detail: message });\n\t\t\t},\n\t\t\talertSystemError(message) {\n\t\t\t\t//TODO(Manu) for translation of content of template: restructure in data\n\t\t\t\t//and update definitions with translations\n\n\t\t\t\tif (Array.isArray(message))\n\t\t\t\t\treturn message.forEach(this.alertSystemError);\n\t\t\t\thelperAppInstance.$refs.alert.add({\n\t\t\t\t\tseverity: 'error',\n\t\t\t\t\tsummary: Vue.computed(() => app.config.globalProperties.$p.t('alert/systemerror')),\n\t\t\t\t\tdetail: message});\n\t\t\t},\n\t\t\tconfirmDelete() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: 'fhcAlertConfirm',\n\t\t\t\t\t\theader: Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: Vue.computed(() => app.config.globalProperties.$p.t('alert/confirm_delete')),\n\t\t\t\t\t\tacceptLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/loeschen')),\n\t\t\t\t\t\tacceptClass: 'p-button-danger',\n\t\t\t\t\t\trejectLabel: Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: 'p-button-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tconfirm(options) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\thelperAppInstance.$confirm.require({\n\t\t\t\t\t\tgroup: options?.group ?? 'fhcAlertConfirm',\n\t\t\t\t\t\theader: options?.header ?? Vue.computed(() => app.config.globalProperties.$p.t('alert/attention')),\n\t\t\t\t\t\tmessage: options?.message ?? '',\n\t\t\t\t\t\tacceptLabel: options?.acceptLabel ?? 'Ok',\n\t\t\t\t\t\tacceptClass: options?.acceptClass ?? 'btn btn-primary',\n\t\t\t\t\t\trejectLabel: options?.rejectLabel ?? Vue.computed(() => app.config.globalProperties.$p.t('ui/abbrechen')),\n\t\t\t\t\t\trejectClass: options?.rejectClass ?? 'btn btn-outline-secondary',\n\t\t\t\t\t\taccept() {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t},\n\t\t\t\t\t\treject() {\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\talertDefault(severity, title, message, sticky = false, html = false) {\n\t\t\t\tlet options = { severity: severity, summary: title, detail: message, html };\n\t\t\t\t\n\t\t\t\tif (!sticky)\n\t\t\t\t\toptions.life = 3000;\n\n\t\t\t\thelperAppInstance.$refs.toast.add(options);\n\t\t\t},\n\t\t\talertMultiple(messageArray, severity = 'info', title = 'Info', sticky = false, html = false){\n\t\t\t\t// Check, if array has only string values\n\t\t\t\tif (messageArray.every(message => typeof message === 'string')) {\n\t\t\t\t\tmessageArray.forEach(message => this.alertDefault(severity, title, message, sticky, html));\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\thandleSystemError(error) {\n\t\t\t\t// don't show an error message to the user if the error was an aborted request\n\t\t\t\tif(error.hasOwnProperty('name') && error.name.toLowerCase() === \"AbortError\".toLowerCase())\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is string\n\t\t\t\tif (typeof error === 'string')\n\t\t\t\t\treturn $fhcAlert.alertSystemError(error);\n\n\t\t\t\t// Error is array of strings\n\t\t\t\tif (Array.isArray(error) && error.every(err => typeof err === 'string'))\n\t\t\t\t\treturn error.every($fhcAlert.alertSystemError);\n\n\t\t\t\t// Error has been handled already\n\t\t\t\tif (error.hasOwnProperty('handled') && error.handled)\n\t\t\t\t\treturn;\n\t\t\t\t\n\t\t\t\t// Error is object\n\t\t\t\tif (typeof error === 'object' && error !== null) {\n\t\t\t\t\tlet errMsg = '';\n\n\n\t\t\t\t\tif (error.hasOwnProperty('response') && error.response?.data?.retval)\n\t\t\t\t\t\terrMsg += 'Error Message: ' + (error.response.data.retval.message || error.response.data.retval) + '\\r\\n';\n\t\t\t\t\telse if (error.hasOwnProperty('message'))\n\t\t\t\t\t\terrMsg += 'Error Message: ' + error.message.toUpperCase() + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('config') && error.config.hasOwnProperty('url'))\n\t\t\t\t\t\terrMsg += 'Error ConfigURL: ' + error.config.url + '\\r\\n';\n\n\t\t\t\t\tif (error.hasOwnProperty('stack'))\n\t\t\t\t\t\terrMsg += 'Error Stack: ' + error.stack + '\\r\\n';\n\t\t\t\t\t\n\t\t\t\t\t// Fallback object error message\n\t\t\t\t\tif (errMsg == '')\n\t\t\t\t\t\terrMsg = 'Error Message: ' + JSON.stringify(error) + '\\r\\n';\n\n\t\t\t\t\terrMsg += 'Error Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method;\n\n\t\t\t\t\treturn $fhcAlert.alertSystemError(errMsg);\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\thandleSystemMessage(message) {\n\t\t\t\t// Message is string\n\t\t\t\tif (typeof message === 'string')\n\t\t\t\t\treturn $fhcAlert.alertWarning(message);\n\n\t\t\t\t// Message is array of strings\n\t\t\t\tif (Array.isArray(message)) {\n\t\t\t\t\t// If Array has only Strings\n\t\t\t\t\tif (message.every(msg => typeof msg === 'string'))\n\t\t\t\t\t\treturn message.every($fhcAlert.alertWarning);\n\n\t\t\t\t\t// If Array has only Objects\n\t\t\t\t\tif (message.every(msg => typeof msg === 'object') && msg !== null) {\n\t\t\t\t\t\treturn message.every(msg => {\n\t\t\t\t\t\t\tif (msg.hasOwnProperty('data') && msg.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(msg.data.retval));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(msg));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Message is Object with data property\n\t\t\t\tif (typeof message === 'object' && message !== null){\n\t\t\t\t\tif (message.hasOwnProperty('data') && message.data.hasOwnProperty('retval')) {\n\t\t\t\t\t\t// NOTE(chris): changed: alertSystemError => alertWarning\n\t\t\t\t\t\t$fhcAlert.alertWarning(JSON.stringify(message.data.retval));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$fhcAlert.alertSystemError(JSON.stringify(message));\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Fallback\n\t\t\t\t$fhcAlert.alertSystemError('alertSystemError throws Generic Error\\r\\nError Controller Path: ' + FHC_JS_DATA_STORAGE_OBJECT.called_path + '/' + FHC_JS_DATA_STORAGE_OBJECT.called_method);\n\t\t\t},\n\t\t\tresetFormValidation(form) {\n\t\t\t\tconst event = new Event('fhc-form-reset');\n\t\t\t\tform.querySelectorAll(['[data-fhc-form-validate],[data-fhc-form-error]']).forEach(el => el.dispatchEvent(event));\n\t\t\t\t/*const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\tif (alert) {\n\t\t\t\t\talert.innerHTML = '';\n\t\t\t\t\talert.classList.add('d-none');\n\t\t\t\t}\n\t\t\t\tform.querySelectorAll('.invalid-feedback').forEach(n => n.remove());\n\t\t\t\tform.querySelectorAll('.is-invalid').forEach(n => n.classList.remove('is-invalid'));\n\t\t\t\tform.querySelectorAll('.is-valid').forEach(n => n.classList.remove('is-valid'));*/\n\t\t\t},\n\t\t\thandleFormValidation(error, form) {\n\t\t\t\tif (form === undefined) {\n\t\t\t\t\tif (error && error.nodeType === Node.ELEMENT_NODE)\n\t\t\t\t\t\treturn err => $fhcAlert.handleFormValidation(err, error);\n\t\t\t\t} else {\n\t\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t\tif (typeof errors !== \"object\")\n\t\t\t\t\t\t\terrors = error.response.data;\n\n\t\t\t\t\t\t// NOTE(chris): reset form validation\n\t\t\t\t\t\t$fhcAlert.resetFormValidation(form);\n\t\t\t\t\t\t\n\t\t\t\t\t\t// NOTE(chris): set form input validation\n\t\t\t\t\t\tconst notFound = Object.entries(errors).filter(([key, detail]) => {\n\t\t\t\t\t\t\tconst input = form.querySelector('[data-fhc-form-validate=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\n\t\t\t\t\t\t\tinput.dispatchEvent(new CustomEvent('fhc-form-invalidate', {detail}));\n\n\t\t\t\t\t\t\t/*const input = form.querySelector('[name=\"' + key + '\"]');\n\t\t\t\t\t\t\tif (!input)\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\tinput.classList.add('is-invalid');\n\t\t\t\t\t\t\tconst feedback = document.createElement('div');\n\t\t\t\t\t\t\tfeedback.classList.add('invalid-feedback');\n\t\t\t\t\t\t\tfeedback.innerHTML = detail;\n\t\t\t\t\t\t\tinput.after(feedback);*/\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}).map(arr => arr[1]);\n\n\n\t\t\t\t\t\t//const alert = form.querySelector('div.alert.alert-danger[role=\"alert\"]');\n\t\t\t\t\t\tconst alert = form.querySelector('[data-fhc-form-error]');\n\t\t\t\t\t\tif (alert && notFound.length) {\n\t\t\t\t\t\t\talert.dispatchEvent(new CustomEvent('fhc-form-error', {detail: notFound}));\n\t\t\t\t\t\t\t/*notFound.forEach(txt => {\n\t\t\t\t\t\t\t\tconst p = document.createElement('p');\n\t\t\t\t\t\t\t\tp.innerHTML = txt;\n\t\t\t\t\t\t\t\talert.append(p);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (notFound.length) {\n\t\t\t\t\t\t\t\talert.lastChild.classList.add('mb-0');\n\t\t\t\t\t\t\t\talert.classList.remove('d-none');\n\t\t\t\t\t\t\t}*/\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnotFound.forEach($fhcAlert.alertError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (error?.response?.status == 400) {\n\t\t\t\t\tlet errors = CoreRESTClient.getError(error.response.data);\n\t\t\t\t\t$fhcAlert.alertError((typeof errors === 'object') ? Object.values(errors) : errors);\n\t\t\t\t} else {\n\t\t\t\t\t$fhcAlert.handleSystemError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tapp.config.globalProperties.$fhcAlert = $fhcAlert;\n\t\tapp.provide('$fhcAlert', app.config.globalProperties.$fhcAlert);\n\t}\n}","import FhcAlert from './FhcAlert.js';\n\n\nexport default {\n\tinstall: (app, options) => {\n\t\tif (app.config.globalProperties.$api) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!app.config.globalProperties.$fhcAlert)\n\t\t\tapp.use(FhcAlert);\n\n\t\tfunction _send_array_or_object(errors, func) {\n\t\t\tif (Array.isArray(errors))\n\t\t\t\terrors.forEach(func);\n\t\t\telse\n\t\t\t\tObject.entries(errors).forEach(\n\t\t\t\t\t([title, errs]) => errs.forEach(\n\t\t\t\t\t\terror => func(error, title)\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t}\n\t\tlet DEFAULT_ERROR_CONFIG = {\n\t\t\tsuccess: true,\n\t\t\tfail: true,\n\t\t\tcombine: {\n\t\t\t\tform: ['validation', 'general'],\n\t\t\t\ttoast: ['validation', 'general', 'not_found', 'site_failed']\n\t\t\t},\n\t\t\thandler: {\n\t\t\t\tform(form, errors) {\n\t\t\t\t\tform.clearValidation();\n\t\t\t\t\terrors.forEach(err => form.setFeedback(\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\terr.messages || err.message\n\t\t\t\t\t));\n\t\t\t\t},\n\t\t\t\tasync toast(errors) {\n\t\t\t\t\tconst $p = app.config.globalProperties.$p;\n\t\t\t\t\tif (!$p)\n\t\t\t\t\t\treturn Promise.reject('Phrasen plugin not loaded!');\n\t\t\t\t\n\t\t\t\t\tasync function _format_toast(errors) {\n\t\t\t\t\t\terrors = errors.reduce((result, err) => {\n\t\t\t\t\t\t\tswitch (err.type) {\n\t\t\t\t\t\t\tcase 'not_found':\n\t\t\t\t\t\t\tcase 'site_failed':\n\t\t\t\t\t\t\t\tif (err.message)\n\t\t\t\t\t\t\t\t\tresult[err.message] = [err.url];\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\tresult._default = [err.url];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'general':\n\t\t\t\t\t\t\t\tif (!result._default)\n\t\t\t\t\t\t\t\t\tresult._default = [];\n\t\t\t\t\t\t\t\tresult._default.push(err.message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'validation':\n\t\t\t\t\t\t\t\tObject.entries(err.messages)\n\t\t\t\t\t\t\t\t\t.forEach(([field, msg]) => {\n\t\t\t\t\t\t\t\t\t\tif (!result[field])\n\t\t\t\t\t\t\t\t\t\t\tresult[field] = [];\n\t\t\t\t\t\t\t\t\t\tif (Array.isArray(msg))\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(...msg);\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t\tresult[field].push(msg);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}, {});\n\t\t\t\t\t\tlet counter = 0;\n\t\t\t\t\t\tconst msgs = await Promise.all(Object.entries(errors)\n\t\t\t\t\t\t\t.sort((a, b) => ['_default'].indexOf(b[0]) - ['_default'].indexOf(a[0])) // sort _default first\n\t\t\t\t\t\t\t.map(async ([field, msgs]) => {\n\t\t\t\t\t\t\t\tif (field == '_default') {\n\t\t\t\t\t\t\t\t\tawait $p.loadCategory('dashboard');\n\t\t\t\t\t\t\t\t\tconst general = $p.t('dashboard/general');\n\t\t\t\t\t\t\t\t\tfield = '
    ' + general + '
    ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfield = '
    ' + field + '
    ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcounter += msgs.length;\n\t\t\t\t\t\t\t\treturn field\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('
    ')\n\t\t\t\t\t\t\t\t\t+ '
    ';\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcounter,\n\t\t\t\t\t\t\tmsgs\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet counter, msgs;\n\t\t\t\t\tif (Array.isArray(errors)) {\n\t\t\t\t\t\t({ counter, msgs } = await _format_toast(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t({ counter, msgs } = await Object.entries(errors)\n\t\t\t\t\t\t\t.reduce(async (res, [title, errs]) => {\n\t\t\t\t\t\t\t\tconst result = await res;\n\t\t\t\t\t\t\t\tconst { counter, msgs } = await _format_toast(errs);\n\t\t\t\t\t\t\t\tresult.counter += counter;\n\t\t\t\t\t\t\t\tresult.msgs.push('
    '\n\t\t\t\t\t\t\t\t\t+ title\n\t\t\t\t\t\t\t\t\t+ '
    '\n\t\t\t\t\t\t\t\t\t+ msgs.join('')\n\t\t\t\t\t\t\t\t\t+ '
    ');\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}, Promise.resolve({ counter: 0, msgs: []})));\n\t\t\t\t\t}\n\n\t\t\t\t\tawait $p.loadCategory('ui');\n\t\t\t\t\tconst n_errors = $p.t('ui/n_errors', { n: counter });\n\n\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t'error',\n\t\t\t\t\t\tn_errors,\n\t\t\t\t\t\t'
    ' + msgs.join('') + '
    ',\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tphp(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (error.severity) {\n\t\t\t\t\t\t\tcase 'Warning':\n\t\t\t\t\t\t\tcase 'Core Warning':\n\t\t\t\t\t\t\tcase 'Compile Warning':\n\t\t\t\t\t\t\tcase 'User Warning':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('warn', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'Notice':\n\t\t\t\t\t\t\tcase 'User Notice':\n\t\t\t\t\t\t\tcase 'Runtime Notice':\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\ttitle += ': PHP ' + error.severity;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttitle = 'PHP ' + error.severity;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault('info', title, message, true);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tmessage = 'Type: PHP ' + error.severity + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\t\t\tmessage = title + '\\n\\n' + message;\n\t\t\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\texception(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Type: ' + error.class + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\t\t\t\t\t\tif (error.backtrace && error.backtrace.length) {\n\t\t\t\t\t\t\tmessage += '\\nBacktrace: ';\n\t\t\t\t\t\t\terror.backtrace.forEach(err => {\n\t\t\t\t\t\t\t\tmessage += '\\n\\tFile: ' + err.file + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tLine: ' + err.line + '\\n';\n\t\t\t\t\t\t\t\tmessage += '\\tFunction: ' + err.function + '\\n';\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tdb(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\tmessage += title + '\\n\\n';\n\t\t\t\t\t\tif (error.heading !== undefined)\n\t\t\t\t\t\t\tmessage += error.heading + '\\n\\n';\n\t\t\t\t\t\tif (error.code !== undefined)\n\t\t\t\t\t\t\tmessage += 'Code: ' + error.code + '\\n\\n';\n\t\t\t\t\t\tif (error.sql !== undefined)\n\t\t\t\t\t\t\tmessage += 'SQL: ' + error.sql + '\\n\\n';\n\t\t\t\t\t\tif (error.message !== undefined)\n\t\t\t\t\t\t\tmessage += 'Message: ' + error.message + '\\n\\n';\n\t\t\t\t\t\telse if (error.messages !== undefined)\n\t\t\t\t\t\t\tmessage += 'Messages: ' + error.messages.join('\\n\\t') + '\\n\\n';\n\t\t\t\t\t\tif (error.filename !== undefined)\n\t\t\t\t\t\t\tmessage += 'Filename: ' + error.filename + '\\n';\n\t\t\t\t\t\tif (error.line !== undefined)\n\t\t\t\t\t\t\tmessage += 'Line Number: ' + error.line + '\\n';\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertSystemError(message);\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\tauth(errors) {\n\t\t\t\t\t_send_array_or_object(errors, (error, title) => {\n\t\t\t\t\t\tif (title)\n\t\t\t\t\t\t\ttitle += ': ' + error.message;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttitle = error.message;\n\n\t\t\t\t\t\tvar message = '';\n\t\t\t\t\t\tmessage += 'Controller name: ' + error.controller + '\\n';\n\t\t\t\t\t\tmessage += 'Method name: ' + error.method + '\\n';\n\t\t\t\t\t\tmessage += 'Required permissions: ' + error.required_permissions;\n\n\t\t\t\t\t\tapp.config.globalProperties.$fhcAlert.alertDefault(\n\t\t\t\t\t\t\t'error',\n\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (options?.errorHandling !== undefined)\n\t\t\tDEFAULT_ERROR_CONFIG = _merge_error_config(options.errorHandling);\n\t\t\n\t\tfunction get_config(form, uri, data, config) {\n\t\t\tif (typeof form == 'string' && config === undefined) {\n\t\t\t\t[uri, data, config] = [form, uri, data];\n\t\t\t\tform = undefined;\n\t\t\t} else if (form) {\n\t\t\t\tif (typeof form != 'object')\n\t\t\t\t\tthrow new TypeError('Parameter 1 of _get_config must be an object or a string');\n\t\t\t\tif (uri === undefined && data === undefined && config === undefined) {\n\t\t\t\t\tconfig = form;\n\t\t\t\t\tform = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (form) {\n\t\t\t\t// NOTE(chris): check if form is fhc-form\n\t\t\t\tif (!form.clearValidation || !form.setFeedback)\n\t\t\t\t\tthrow new TypeError(\"'form' is not a Form Component\");\n\n\t\t\t\tform = {\n\t\t\t\t\tclearValidation: form.clearValidation,\n\t\t\t\t\tsetFeedback: form.setFeedback\n\t\t\t\t};\n\n\t\t\t\tif (config)\n\t\t\t\t\tconfig.form = form;\n\t\t\t\telse\n\t\t\t\t\tconfig = {form};\n\t\t\t}\n\n\t\t\treturn [uri, data, config];\n\t\t}\n\t\tfunction clean_return_value(response) {\n\t\t\tif (typeof response.data === 'string' || response.data instanceof String)\n\t\t\t\treturn clean_return_value({ data: response });\n\n\t\t\tconst result = response.data;\n\t\t\tdelete response.data;\n\t\t\tif (!result)\n\t\t\t\treturn {meta: {response}, data: null};\n\t\t\tif (!result.meta)\n\t\t\t\tresult.meta = { response };\n\t\t\telse\n\t\t\t\tresult.meta.response = response;\n\t\t\treturn result;\n\t\t}\n\t\tfunction _merge_error_config(config) {\n\t\t\tif (config === false || config === 'off')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false, fail: false };\n\t\t\t\n\t\t\tif (!config || config === true)\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tif (config === 'success')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, fail: false };\n\t\t\t\n\t\t\tif (config === 'fail')\n\t\t\t\treturn { ...DEFAULT_ERROR_CONFIG, success: false };\n\t\t\t\n\t\t\tconst { success, fail, handler, combine } = config;\n\t\t\t\n\t\t\tconfig = { ...DEFAULT_ERROR_CONFIG };\n\n\t\t\tObject.entries({ fail, success }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = value;\n\t\t\t});\n\t\t\tObject.entries({ handler, combine }).forEach(([key, value]) => {\n\t\t\t\tif (value !== undefined)\n\t\t\t\t\tconfig[key] = { ...config[key], ...value };\n\t\t\t});\n\n\t\t\treturn config;\n\t\t}\n\t\tfunction get_error_handler(config) {\n\t\t\tconst result = _merge_error_config(config?.errorHandling);\n\n\t\t\tif (!config?.form) {\n\t\t\t\tresult.combine = { ...result.combine, form: [] };\n\t\t\t} else {\n\t\t\t\tconst formHandler = result.handler.form;\n\t\t\t\tresult.handler = { ...result.handler, form: errors => formHandler(config.form, errors) };\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t\tfunction get_error_list(error) {\n\t\t\tif (error.response) {\n\t\t\t\tif (error.response.status == 404) {\n\t\t\t\t\treturn [{\n\t\t\t\t\t\ttype: 'not_found',\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t\t}];\n\t\t\t\t} else {\n\t\t\t\t\tif (error.response.data.errors == undefined) return [];\n\t\t\t\t\treturn error.response.data.errors;\n\t\t\t\t}\n\t\t\t} else if (error.request) {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'site_failed',\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\turl: error.request.responseURL\n\t\t\t\t}];\n\t\t\t} else {\n\t\t\t\treturn [{\n\t\t\t\t\ttype: 'script',\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}];\n\t\t\t}\n\t\t}\n\t\tfunction popHandleableErrors(errorHandling, errors) {\n\t\t\tconst result = {};\n\t\t\tconst copy = [];\n\n\t\t\tif (errors == undefined) return {};\n\n\t\t\twhile (errors.length)\n\t\t\t\tcopy.push(errors.pop());\n\t\t\tfor (var error of copy) {\n\t\t\t\tlet type = error.type;\n\t\t\t\tlet newType = null;\n\t\t\t\tfor (var t in errorHandling.combine) {\n\t\t\t\t\tlet newTypeCombinesType = errorHandling\n\t\t\t\t\t\t.combine[t]\n\t\t\t\t\t\t.includes(type);\n\t\t\t\t\tlet newTypeHasHandler = errorHandling.handler[t];\n\t\t\t\t\tif (newTypeCombinesType && newTypeHasHandler) {\n\t\t\t\t\t\tnewType = t;\n\t\t\t\t\t\tif (newType == 'form')\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newType)\n\t\t\t\t\ttype = newType;\n\t\t\t\tconst handler = errorHandling.handler[type];\n\t\t\t\tif (handler) {\n\t\t\t\t\tif (!result[type])\n\t\t\t\t\t\tresult[type] = [];\n\t\t\t\t\tif (Array.isArray(error))\n\t\t\t\t\t\tresult[type].push(...error);\n\t\t\t\t\telse\n\t\t\t\t\t\tresult[type].push(error);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\terrors.push(error);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\t\n\t\t\n\t\tconst fhcApiAxios = axios.create({\n\t\t\ttimeout: 500000,\n\t\t\tbaseURL: FHC_JS_DATA_STORAGE_OBJECT.app_root\n\t\t\t\t+ FHC_JS_DATA_STORAGE_OBJECT.ci_router\n\t\t\t\t+ \"/\"\n\t\t});\n\n\t\tfhcApiAxios.interceptors.request.use(config => {\n\t\t\tif (config.method != 'post' || !config.data)\n\t\t\t\treturn config;\n\n\t\t\tif (config.data instanceof FormData)\n\t\t\t\treturn config;\n\n\t\t\tif (!Object.values(config.data).every(item => {\n\t\t\t\tif (item instanceof FileList)\n\t\t\t\t\treturn false;\n\t\t\t\tif (Array.isArray(item))\n\t\t\t\t\treturn item.every(i => !(i instanceof File));\n\t\t\t\treturn true;\n\t\t\t})) {\n\t\t\t\tconst newData = Object.entries(config.data).reduce((nd, [key, item]) => {\n\t\t\t\t\tif (item instanceof FileList) {\n\t\t\t\t\t\tfor (const file of item)\n\t\t\t\t\t\t\tnd.FormData.append(key + (item.length > 1 ? '[]' : ''), file);\n\t\t\t\t\t} else if (Array.isArray(item)) {\n\t\t\t\t\t\tif (item.every(i => !(i instanceof File))) {\n\t\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\titem.forEach(file => nd.FormData.append(key + (item.length > 1 ? '[]' : ''), file));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnd.jsondata[key] = item;\n\t\t\t\t\t}\n\t\t\t\t\treturn nd;\n\t\t\t\t}, {\n\t\t\t\t\tFormData: new FormData(),\n\t\t\t\t\tjsondata: {}\n\t\t\t\t});\n\t\t\t\tnewData.FormData.append('_jsondata', JSON.stringify(newData.jsondata));\n\t\t\t\tconfig.data = newData.FormData;\n\t\t\t}\n\n\t\t\treturn config;\n\t\t});\n\n\t\tfhcApiAxios.interceptors.response.use(\n\t\t\tresponse => {\n\t\t\t\tif (response.config?.errorHandling == 'off'\n\t\t\t\t\t|| response.config?.errorHandling === false\n\t\t\t\t\t|| response.config?.errorHandling == 'fail')\n\t\t\t\t\treturn clean_return_value(response);\n\n\t\t\t\t// NOTE(chris): loop through errors\n\t\t\t\tif (response.data.errors)\n\t\t\t\t\tresponse.data.errors = response.data.errors.filter(\n\t\t\t\t\t\terr => (response.config[err.type + 'ErrorHandler'] || app.config.globalProperties.$api._defaultErrorHandlers[err.type])(err, response.config)\n\t\t\t\t\t);\n\n\t\t\t\treturn clean_return_value(response);\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tif (error.code == 'ERR_CANCELED')\n\t\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\n\t\t\t\tconst errorConfig = get_error_handler(error.config);\n\n\t\t\t\tif (!errorConfig.fail)\n\t\t\t\t\treturn Promise.reject(error);\n\n\t\t\t\tconst remaining = get_error_list(error);\n\n\t\t\t\tconst errors = popHandleableErrors(errorConfig, remaining);\n\n\t\t\t\tfor (var type in errors) {\n\t\t\t\t\terrorConfig.handler[type](errors[type]);\n\t\t\t\t}\n\n\t\t\t\tif (remaining.length)\n\t\t\t\t\treturn Promise.reject(error);\n\t\t\t\t\n\t\t\t\treturn Promise.reject({ handled: true, ...error });\n\t\t\t}\n\t\t);\n\n\t\tapp.config.globalProperties.$api = {\n\t\t\tgetUri(url) {\n\t\t\t\treturn fhcApiAxios.getUri({url});\n\t\t\t},\n\t\t\tget(form, uri, params, config) {\n\t\t\t\t[uri, params, config] = get_config(form, uri, params, config);\n\t\t\t\tif (params) {\n\t\t\t\t\tif (config)\n\t\t\t\t\t\tconfig.params = params;\n\t\t\t\t\telse\n\t\t\t\t\t\tconfig = {params};\n\t\t\t\t}\n\t\t\t\treturn fhcApiAxios.get(uri, config);\n\t\t\t},\n\t\t\tpost(form, uri, data, config) {\n\t\t\t\t[uri, data, config] = get_config(form, uri, data, config);\n\t\t\t\treturn fhcApiAxios.post(uri, data, config);\n\t\t\t},\n\t\t\tcall(factory, configoverwrite, form) {\n\t\t\t\tif (Array.isArray(factory)) {\n\t\t\t\t\tconst $api = app.config.globalProperties.$api;\n\n\t\t\t\t\treturn Promise\n\t\t\t\t\t\t.allSettled(factory.map((config, index) => {\n\t\t\t\t\t\t\tif (!Array.isArray(config))\n\t\t\t\t\t\t\t\tconfig = ['#' + index, config];\n\t\t\t\t\t\t\treturn $api.call(config[1], {\n\t\t\t\t\t\t\t\terrorHeader: config[0],\n\t\t\t\t\t\t\t\terrorHandling: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.then(result => {\n\t\t\t\t\t\t\tconst [ , , config ] = get_config(form, undefined, undefined, configoverwrite || {});\n\t\t\t\t\t\t\tconst errorConfig = get_error_handler(config);\n\n\t\t\t\t\t\t\tif (!errorConfig.success && !errorConfig.fail) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst typedErrors = {};\n\t\t\t\t\t\t\tfor (var res of result) {\n\t\t\t\t\t\t\t\tconst [ allowed, item ] = res.status === 'fulfilled'\n\t\t\t\t\t\t\t\t\t? [ errorConfig.success, res.value ]\n\t\t\t\t\t\t\t\t\t: [ errorConfig.fail, res.reason ];\n\t\t\t\t\t\t\t\tif (!allowed)\n\t\t\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t\t\tconst errors = popHandleableErrors(errorConfig, get_error_list(item));\n\n\t\t\t\t\t\t\t\tfor (var type in errors) {\n\t\t\t\t\t\t\t\t\tif (!typedErrors[type])\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type] = {\n\t\t\t\t\t\t\t\t\t\t\t[item.config.errorHeader]: errors[type]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\ttypedErrors[type][item.config.errorHeader] = errors[type];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tfor (var errType in typedErrors) {\n\t\t\t\t\t\t\t\terrorConfig.handler[errType](typedErrors[errType]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet { method, url, params, config } = factory;\n\t\t\t\tif (configoverwrite !== undefined) {\n\t\t\t\t\tconfig = configoverwrite;\n\t\t\t\t}\n\t\t\t\tif (!method) {\n\t\t\t\t\tmethod = 'get';\n\t\t\t\t}\n\t\t\t\tif (method.toLowerCase)\n\t\t\t\t\tmethod = method.toLowerCase();\n\t\t\t\tif (method == 'get') {\n\t\t\t\t\treturn this.get(form, url, params, config);\n\t\t\t\t} else if (method == 'post') {\n\t\t\t\t\treturn this.post(form, url, params, config);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"FhcApi: method not allowed:\", method);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetErrorHandler(config) {\n\t\t\t\treturn get_error_handler(config);\n\t\t\t}\n\t\t};\n\n\t\tapp.provide('$api', app.config.globalProperties.$api);\n\t}\n};\n","/**\n * Copyright (C) 2025 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nexport default {\n\tloadCategory(category) {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/loadModule/' + category\n\t\t};\n\t},\n\tsetLanguage(categories,language) {\n\t\tconst params = {categories, language}\n\t\treturn {\n\t\t\tmethod: 'post',\n\t\t\turl: '/api/frontend/v1/phrasen/setLanguage',\n\t\t\tparams\n\t\t};\n\t},\n\tgetLanguage() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getLanguage'\n\t\t};\n\t},\n\tgetActiveDbLanguages() {\n\t\treturn {\n\t\t\tmethod: 'get',\n\t\t\turl: '/api/frontend/v1/phrasen/getAllLanguages'\n\t\t};\n\t}\n};","import OldFhcApi from '../plugin/OldFhcApi.js'; // TODO(chris): remove at some point\nimport PluginsApi from './Api.js';\nimport ApiPhrasen from '../api/factory/phrasen.js';\n\nconst categories = Vue.reactive({});\nconst loadingModules = {};\nlet user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);\nexport let user_locale = Vue.computed(()=>{\n\tif(!user_language.value) return null;\n\treturn FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;\n});\n\nfunction extractCategory(obj, category) {\n\treturn obj.filter(e => e.category == category).reduce((res, elem) => {\n\t\tif (!res[elem.phrase])\n\t\t\tres[elem.phrase] = elem.text;\n\t\treturn res;\n\t}, {});\n}\nfunction getValueForLoadedPhrase(category, phrase, params) {\n\tlet result = categories[category][phrase];\n\tif (!result)\n\t\treturn '<< PHRASE ' + phrase + '>>';\n\tif (params)\n\t\tresult = result.replace(/\\{([^}]*)\\}/g, (match, p1) => params[p1] === undefined ? match : params[p1]);\n\treturn result;\n}\n\nconst phrasen = {\n\tuser_language,\n\tuser_locale,\n\tsetLanguage(language) {\n\t\tconst catArray = Object.keys(categories)\n\t\treturn this.config.globalProperties.$api\n\t\t\t.call(ApiPhrasen.setLanguage(catArray, language))\n\t\t\t.then(res => {\n\t\t\t\tres.data.forEach(row => {\n\t\t\t\t\tcategories[row.category][row.phrase] = row.text\n\t\t\t\t})\n\n\t\t\t\t// update the reactive data that holds the current active user_language\n\t\t\t\tuser_language.value = language;\n\n\t\t\t\treturn res\n\t\t\t})\n\t},\n\tloadCategory(category) {\n\t\tif (Array.isArray(category))\n\t\t\treturn Promise.all(category.map(this.config.globalProperties\n\t\t\t\t.$p.loadCategory));\n\n\t\tif (!loadingModules[category])\n\t\t\tloadingModules[category] = this.config.globalProperties.$api\n\t\t\t\t.call(ApiPhrasen.loadCategory(category))\n\t\t\t\t.then(res => res?.data ? extractCategory(res.data, category) : {})\n\t\t\t\t.then(res => {\n\t\t\t\t\tcategories[category] = res;\n\t\t\t\t});\n\t\treturn loadingModules[category];\n\t},\n\tt_ref(category, phrase, params) {\n\t\tconsole.warn('deprecated');\n\t\treturn Vue.computed(() => this.t(category, phrase, params));\n\t},\n\tt(category, phrase, params) {\n\t\tif (params === undefined && (\n\t\t\t(Array.isArray(category) && category.length == 2) ||\n\t\t\t(category.split && category.split('/').length == 2))\n\t\t\t) {\n\t\t\tparams = phrase;\n\t\t\t[category, phrase] = category.split ? category.split('/') : category;\n\t\t}\n\t\tif (phrase === undefined) {\n\t\t\tconsole.error('invalid input', category, phrase, params);\n\t\t\treturn '';\n\t\t}\n\t\tlet val = Vue.computed(() => {\n\t\t\tif (!categories[category])\n\t\t\t\treturn '';\n\t\t\treturn getValueForLoadedPhrase(category, phrase, params);\n\t\t});\n\t\tif (!categories[category])\n\t\t\tthis.loadCategory(category);\n\t\treturn val.value;\n\t}\n};\n\nexport default {\n\tinstall(app, options) {\n\t\tif (!app.config.globalProperties.$fhcApi)\n\t\t\tapp.use(OldFhcApi); // TODO(chris): remove at some point\n\t\tif (!app.config.globalProperties.$api)\n\t\t\tapp.use(PluginsApi);\n\t\tapp.config.globalProperties.$p = {\n\t\t\tt: phrasen.t,\n\t\t\tloadCategory: cat => phrasen.loadCategory.call(app, cat),\n\t\t\tsetLanguage: lang => phrasen.setLanguage.call(app, lang),\n\t\t\tuser_language: user_language,\n\t\t\tuser_locale,\n\t\t\tt_ref: phrasen.t_ref\n\t\t};\n\t\tapp.provide('$p', app.config.globalProperties.$p);\n\t}\n}","/**\n * Copyright (C) 2023 fhcomplete.org\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see .\n */\n\nimport LvTemplateUebersicht from '../../../lehre/lvplanung/LvTemplateUebersicht.js';\nimport {CoreNavigationCmpt} from '../../../components/navigation/Navigation.js';\nimport PluginsPhrasen from \"../../../plugins/Phrasen.js\";\n\n\nconst lvTemplatesApp = Vue.createApp({\n\tname: 'LvTemplatesApp',\n\tcomponents: {\n\t\tCoreNavigationCmpt,\n\t\tLvTemplateUebersicht\n\t}\n});\n\nlvTemplatesApp\n\t.use(primevue.config.default,{zIndex: {overlay: 9999}})\n\t.use(PluginsPhrasen)\n\t.mount('#main')","export default {\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: String\n\t},\n\tcomputed: {\n\t\tvalueAsBase64DataString() {\n\t\t\tif (!this.modelValue || this.modelValue.substring(0, 10) == 'data:image')\n\t\t\t\treturn this.modelValue;\n\t\t\treturn 'data:image/jpeg;charset=utf-8;base64,' + this.modelValue;\n\t\t}\n\t},\n\tmethods: {\n\t\topenUploadDialog() {\n\t\t\tthis.$refs.fileInput.click();\n\t\t},\n\t\tpickFile() {\n\t\t\tlet file = this.$refs.fileInput.files;\n\t\t\tif (file && file[0]) {\n\t\t\t\tlet reader = new FileReader();\n\t\t\t\treader.onload = e => {\n\t\t\t\t\tthis.$emit('update:modelValue', e.target.result);\n\t\t\t\t}\n\t\t\t\treader.readAsDataURL(file[0]);\n\t\t\t}\n\t\t},\n\t\tdeleteImage() {\n\t\t\tthis.$emit('update:modelValue', '');\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t\n\t\t\n\t
    `\n}","import DmsItem from './Dms/Item.js';\n\nexport default {\n\tcomponents: {\n\t\tDmsItem\n\t},\n\temits: [\n\t\t'update:modelValue'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [ FileList, Array ],\n\t\t\trequired: true\n\t\t},\n\t\tmultiple: Boolean,\n\t\tid: String,\n\t\tname: String,\n\t\tinputClass: [String, Array, Object],\n\t\tnoList: Boolean,\n\t\taccept: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false\n\t\t}\n\t},\n\tmethods: {\n\t\tstringifyFile(file) {\n\t\t\treturn JSON.stringify({\n\t\t\t\tlastModified: file.lastModified,\n\t\t\t\tlastModifiedDate: file.lastModifiedDate,\n\t\t\t\tname: file.name,\n\t\t\t\tsize: file.size,\n\t\t\t\ttype: file.type\n\t\t\t});\n\t\t},\n\t\taddFiles(event) {\n\t\t\tif (!this.multiple)\n\t\t\t\treturn this.$emit('update:modelValue', event.target.files);\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst doubles = [];\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tdt.items.add(file);\n\t\t\t\tdoubles.push(this.stringifyFile(file));\n\t\t\t}\n\t\t\tfor (var file of event.target.files) {\n\t\t\t\t// NOTE(chris): deep check (with FileReader) would require an async function so we only check the basic attributes\n\t\t\t\tif (doubles.indexOf(this.stringifyFile(file)) < 0)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t},\n\t\tremoveFile(id) {\n\t\t\tconst fileToRemove = Array.from(this.modelValue)[id];\n\t\t\t\n\t\t\tconst dt = new DataTransfer();\n\t\t\tfor (var file of this.modelValue) {\n\t\t\t\tif (file !== fileToRemove)\n\t\t\t\t\tdt.items.add(file);\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (!n)\n\t\t\t\treturn;\n\t\t\tif (n instanceof FileList) {\n\t\t\t\tif (!this.$refs.upload) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn this.$refs.upload.files = n;\n\t\t\t}\n\n\t\t\tconst dt = new DataTransfer();\n\t\t\tconst dms = [];\n\t\t\tfor (var file of n) {\n\t\t\t\tif (file instanceof File) {\n\t\t\t\t\tdt.items.add(file);\n\t\t\t\t} else {\n\t\t\t\t\tconst dmsFile = new File([JSON.stringify(file)], file.name, {\n\t\t\t\t\t\ttype: 'application/x.fhc-dms+json'\n\t\t\t\t\t});\n\t\t\t\t\tdt.items.add(dmsFile);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.$emit('update:modelValue', dt.files);\n\t\t}\n\t},\n\ttemplate: `\n\t
    \n\t\t\n\t\t
      \n\t\t\t\n\t\t\t\n\t\t
    \n\t
    `\n}","export default {\n\temits: [\n\t\t'delete'\n\t],\n\tprops: {\n\t\tmodelValue: {\n\t\t\ttype: [File, Object],\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreview: ''\n\t\t};\n\t},\n\twatch: {\n\t\tmodelValue(n) {\n\t\t\tif (n.type == 'application/x.fhc-dms+json') {\n\t\t\t\tn.text().then(result => {\n\t\t\t\t\tconst obj = JSON.parse(result);\n\t\t\t\t\tthis.preview = obj.preview || '';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n\ttemplate: `\n\t
  • \n\t\t\n\t\t{{ modelValue.name }}\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t
  • `\n}\n"],"names":["CoreFetchCmpt","emits","props","refresh","type","Boolean","apiFunction","required","Function","apiFunctionParameters","watch","newValue","oldValue","this","fetchData","data","loading","error","errorMessage","created","methods","apiFunctionResult","Promise","then","successHandler","catch","errorHandler","finally","finallyHandler","setError","response","$emit","undefined","retval","message","template","FILTER_COMPONENT_NEW_FILTER","FilterConfig","filters","Array","default","columns","fields","switchFilter","applyFilterConfig","saveCustomFilter","currentFields","computed","types","reduce","a","c","toLowerCase","indexOf","name","n","evt","currentTarget","value","filteredFields","filter","el","condition","length","alert","addField","push","removeField","index","splice","FilterColumns","selected","names","Object","hide","show","selectedFields","toggle","field","DEFAULT_ICONS","jsonLines","xlsx","pdf","html","json","csv","DEFAULT_LABELS","TableDownload","tabulator","config","String","iconClass","currentConfig","prototype","toString","call","split","isArray","newConfig","k","v","stringToFileFormatter","icon","label","formatter","map","validateFileFormatter","input","lcInput","includes","window","XLSX","jspdf","jsPDF","autoTable","download","file","options","elementDataMap","WeakMap","collapseAutoClose","mounted","binding","open","set","contains","target","collapse","bootstrap","Collapse","getInstance","addEventListener","document","get","beforeUnmount","removeEventListener","collapsibleAutoHideFunc","Tabulator","extendModule","fitDataStretchFrozen","forced","colsWidth","tableWidth","table","rowManager","element","clientWidth","gap","lastCol","forEach","column","i","widthFixed","reinitializeWidth","responsiveLayout","modules","responsive","visible","definition","frozen","getWidth","modExists","setWidth","update","ApiFilter","wsParams","method","url","params","filterUniqueId","filterType","customFilterName","removeCustomFilter","filterId","applyFilterFields","filterFields","addFilterField","filterField","removeFilterField","getFilterById","getFilter","_uuid","CoreFilterCmpt","components","directives","onNwNewEntry","title","description","sideMenu","tabulatorOptions","tabulatorEvents","tableOnly","noColumnFilter","reload","reloadBtnInfotext","newBtnShow","newBtnClass","newBtnDisabled","newBtnLabel","uniqueId","idField","parentIdField","countOnly","useSelectionSpan","uuid","filterName","filterActive","dataset","datasetMetadata","availableFilters","selectedFilter","fetchCmptRefresh","fetchCmptApiFunction","fetchCmptApiFunctionParams","fetchCmptDataFetched","fetchResult","tableBuilt","tabulatorHasSelector","selectedData","persistence","sort","headerFilter","group","page","notSelectedFields","x","filteredData","JSON","parse","stringify","filteredColumns","hasOwnProperty","col","resizable","fieldIdsForVisibilty","getColumns","def","getDefinition","getField","fieldNames","res","idExtra","columnsForFilter","filterTitles","reloadTable","setData","initTabulator","placeholder","$p","loadCategory","t","resolve","location","hash","slice","resolvePromiseFunc","setRenderData","startFetchCmpt","$api","layout","movableColumns","columnDefaults","tooltip","height","minHeight","maxHeight","selectable","dataTree","$refs","on","event","handler","toDelete","childIdx","child","appendChild","counter","cols","isVisible","_setHeaderFilter","updateTabulator","_updateTabulator","setColumns","clearFilters","getHeaderFilters","setHeaderFilterValue","clearFilter","render","j","setSideMenu","setDropDownMenu","personalFilters","filtersArray","filtersCount","link","id","filter_id","desc","onClickCall","handlerGetFilterById","subscriptDescription","subscriptLinkClass","subscriptLinkValue","onClickSubscriptCall","handlerRemoveCustomFilter","children","option","dataFetchedCallback","FHC_JS_DATA_STORAGE_OBJECT","called_path","called_method","handlerSaveCustomFilter","getAttribute","substring","attr","parentId","parentIdx","parent","_children","beforeCreate","$props","CoreFormInput","inheritAttrs","FhcFragment","$slots","inject","registerToForm","from","clearValidationForName","bsFeedback","noAutoClass","noFeedback","inputGroup","containerClass","onInput","valid","feedback","modelValueDummy","hasContainer","prop","autoContainerClass","hasOwn","acc","lcType","tag","validationClass","classes","$attrs","class","feedbackClass","modelValueCmp","modelValue","idCmp","uid","clearValidation","clearValidationForThisName","setFeedback","selector","$el","parentNode","querySelectorAll","pop","_loadComponents","_","VueDatePicker","PvAutocomplete","UploadImage","UploadDms","Vue","defineAsyncComponent","primevue","autocomplete","import","beforeMount","beforeUpdate","LvTemplateUebersicht","studiensemester","selectedStudiensemester","cbDataTreeStartExpanded","fhcValuesLookup","cell","values","getTable","getData","collectvalues","rows","childvalues","row","rowvalue","vals","keys","unshift","fhctreefilter","headerValue","rowValue","rowData","filterParams","self","ajaxResponse","prepDataTreeData","autoResize","resizableColumnFit","selectableRangeMode","dataTreeStartExpanded","dataTreeChildIndent","width","headerFilterParams","valuesLookup","headerFilterFunc","headerFilterFuncParams","minWidth","hozAlign","tristate","formatterParams","tickElement","crossElement","onRendered","container","createElement","className","button","innerHTML","openAdminLvTemplate","getRow","append","urlToAdminAllTemplates","app_root","loadAndSetStudiensemester","start","order","result","studiensemester_kurzbz","$fhcAlert","handleSystemError","onTableBuilt","lvTemplateUebersichtTable","getUri","updateColumnDefinition","onChangeStudiensemester","lehrveranstaltung_id","focus","_appendChild","reloadTabulator","ApiNavigation","getHeader","navigation_page","getMenu","CoreNavigationCmpt","addHeaderMenuEntries","addSideMenuEntries","hideTopMenu","leftNavCssClasses","headerMenu","headerMenuEntries","hm","sideMenuEntries","sm","getNavigationPage","fetchCmptApiFunctionHeader","fetchCmptApiFunctionSideMenu","fetchCmptDataFetchedHeader","fetchCmptDataFetchedMenu","getDataBsToggle","header","search","searchsettings","$fhcApi","post","searchAdvanced","searchdummy","phrasen$1","category","setLanguage","categories","language","payload","getLanguage","getActiveDbLanguages","navigation","filter$1","studstatus","abmeldung","getDetails","antrag_id","prestudent_id","create","stdsem","grund","errorHandling","cancel","allSettled","antrag","studierendenantrag_id","errorHeader","unterbrechung","datum_wiedereinstieg","attachment","wiederholung","getLvs","saveLvs","forbiddenLvs","mandatoryLvs","leitung","getStgs","getAntraege","getHistory","getPrestudents","query","signal","timeout","approve","reject","reopen","pause","unpause","object","approveObjection","denyObjection","profil","getView","ci_router","fotoSperre","isStudent","isMitarbeiter","getZustellAdresse","getZustellKontakt","getGemeinden","nation","zip","getAllNationen","profilUpdate","getStatus","getTopic","acceptProfilRequest","profil_update_id","status_message","topic","requested_change","denyProfilRequest","insertFile","dms","replace","getProfilRequestFiles","requestID","selectProfilRequest","insertProfilRequest","fileID","updateProfilRequest","ID","deleteProfilRequest","lvPlan","getRoomInfo","ort_kurzbz","start_date","end_date","getStunden","getOrtReservierungen","getLvPlanReservierungen","getLehreinheitStudiensemester","lehreinheit_id","studiensemesterDateInterval","date","LvPlanEvents","lv_id","stv","verband","favorites","students","encodeURIComponent","prestudent","person","person_id","relative_path","getStg","setStg","studiengang_kz","konto","tabulatorConfig","ajaxURL","ajaxParams","e","only_open","studiengang_kz_intern","stg_kz","ajaxRequestFunc","checkDoubles","form","confirmErrorHandler","insert","edit","delete","buchungsnr","getBuchungstypen","getGruppen","deleteGroup","kontakt","getAdressen","addNewAddress","loadAddress","address_id","updateAddress","deleteAddress","getPlaces","plz","getFirmen","searchString","getNations","getAdressentypen","getBankverbindung","addNewBankverbindung","loadBankverbindung","bankverbindung_id","updateBankverbindung","deleteBankverbindung","getKontakte","addNewContact","loadContact","kontakt_id","updateContact","deleteContact","getStandorteByFirma","getKontakttypen","updatePrestudent","getBezeichnungZGV","getBezeichnungMZgv","getBezeichnungDZgv","getAusbildung","getAufmerksamdurch","getBerufstaetigkeit","getTypenStg","getBisstandort","getHistoryPrestudent","getMaxSem","studiengang_kzs","advanceStatus","status_kurzbz","ausbildungssemester","confirmStatus","isLastStatus","deleteStatus","getLastBismeldestichtag","getHistoryPrestudents","status","insertStatus","loadStatus","updateStatus","getStudienplaene","getStudiengang","getStatusgruende","getStati","addStudent","changeStatus","getStatusarray","details","save","exam","getPruefungen","loadPruefung","pruefung_id","getTypenPruefungen","getAllLehreinheiten","getLvsByStudent","getLvsandLesByStudent","semester","getLvsAndMas","getMitarbeiterLv","getNoten","checkZeugnisnoteLv","addPruefung","updatePruefung","deletePruefung","abschlusspruefung","getAbschlusspruefung","addNewAbschlusspruefung","loadAbschlusspruefung","updateAbschlusspruefung","deleteAbschlusspruefung","getTypenAbschlusspruefung","getTypenAntritte","getBeurteilungen","getAkadGrade","getTypStudiengang","getMitarbeiter","getPruefer","checkForExistingExams","uids","grades","list","getCertificate","getTeacherProposal","getRepeaterGrades","updateCertificate","student_uid","note","lehrveranstaltung_bezeichnung","deleteCertificate","copyTeacherProposalToCertificate","copyRepeaterGradeToCertificate","studierendenantrag_lehrveranstaltung_id","lv_bezeichnung","getGradeFromPoints","points","manualErrorHandling","mobility","getMobilitaeten","getProgramsMobility","addNewMobility","loadMobility","bisio_id","updateMobility","deleteMobility","getLVList","getPurposes","getSupports","getListPurposes","getListSupports","deleteMobilityPurpose","addMobilityPurpose","deleteMobilitySupport","addMobilitySupport","archiv","getArchivVorlagen","archive","archiveSigned","akte_id","documents","getDocumentsUnaccepted","getDocumentsAccepted","deleteZuordnung","dokument_kurzbz","createZuordnung","loadAkte","getDoktypen","updateFile","deleteFile","uploadFile","exemptions","getAnrechnungen","getLehrveranstaltungen","getBegruendungen","getLvsKompatibel","getLektoren","addNewAnrechnung","loadAnrechnung","anrechnung_id","editAnrechnung","deleteAnrechnung","jointstudies","getStudies","getTypenMobility","getStudiensemester","getStudyprograms","getListPartner","getStatiPrestudent","loadStudy","insertStudy","updateStudy","deleteStudy","courselist","getCourselist","group_consecutiveHours","dbStundenplanTable","configStudent","configStudents","notiz","getNotizen","getUid","addNewNotiz","formData","loadNotiz","notiz_id","loadDokumente","deleteNotiz","type_id","updateNotiz","isBerechtigt","betriebsmittel","getAllBetriebsmittel","addNewBetriebsmittel","loadBetriebsmittel","betriebsmittelperson_id","updateBetriebsmittel","deleteBetriebsmittel","getTypenBetriebsmittel","loadInventarliste","checkperson","updatePersonUnrulyStatus","unrulyParam","unruly","filterPerson","base","axios","ort","getContentID","ort_kurbz","getRooms","datum","von","bis","typ","personenanzahl","getRoomTypes","cms","content","content_id","version","sprache","sichtbar","getNews","page_size","news","limit","getNewsRowCount","getNewsExtra","lehre","getStudentenMail","getLvInfo","getStudentPruefungen","addons","getLvMenu","lvid","messages","getMessages","size","getVorlagen","getMsgVarsLoggedInUser","getMessageVarsPerson","getMsgVarsPrestudent","getPersonId","getDataVorlage","vorlage_kurzbz","getNameOfDefaultRecipient","getPreviewText","getReplyData","messageId","sendMessageFromModalContext","sendMessage","deleteMessage","vorlagen","getVorlagenByLoggedInUser","studium","getAllStudienSemester","studiengang","studienplan","getStudiengaengeForStudienSemester","getStudienplaeneBySemester","getLvPlanForStudiensemester","getLvEvaluierungInfo","FhcApiFactory","phrasen","dashboard","getViewData","bookmark","getBookmarks","bookmark_id","ampeln","all","confirm","ampel_id","studiengangInformation","getStudiengangByKz","menu","authinfo","getAuthUID","getAuthInfo","getAll","OldFhcApi","install","app","globalProperties","factory","console","warn","addEndpoints","_get_config","uri","TypeError","_clean_return_value","meta","fhcApiAxios","baseURL","interceptors","request","use","FormData","every","item","FileList","File","newData","entries","nd","key","jsondata","errors","err","_defaultErrorHandlers","code","handled","alertDefault","responseURL","alertError","validation","apply","general","php","filename","line","backtrace","function","severity","alertSystemError","exception","db","heading","sql","join","auth","controller","required_permissions","FhcApiFactoryWrapper","constructor","factorypart","root","defineProperty","noWarn","bind","provide","CORE_REST_CLIENT_ERROR","CORE_REST_CLIENT_RETVAL","CoreRESTClient","wsURL","wsParameters","axiosParameters","_axiosCall","isSuccess","isError","hasData","trim","getError","getErrorCode","_generateRouterURI","_printDebug","parameters","errorThrown","axiosCallObj","helperAppContainer","helperApp","createApp","PvToast","PvConfirm","mailToUrl","slotProps","systemerror_mailto","detail","openMessagecard","getOrCreateInstance","unmounted","parentElement","removeChild","showmaillink","PvConfig","PvConfirmationService","helperAppInstance","mount","body","FhcAlert","FhcPhrasen","alertSuccess","toast","add","summary","life","alertInfo","alertWarning","confirmDelete","$confirm","require","acceptLabel","acceptClass","rejectLabel","rejectClass","accept","sticky","alertMultiple","messageArray","errMsg","toUpperCase","stack","handleSystemMessage","msg","resetFormValidation","Event","dispatchEvent","handleFormValidation","nodeType","Node","ELEMENT_NODE","notFound","querySelector","CustomEvent","arr","PluginsApi","_send_array_or_object","func","errs","DEFAULT_ERROR_CONFIG","success","fail","combine","async","_format_toast","_default","msgs","b","n_errors","get_config","clean_return_value","_merge_error_config","get_error_handler","formHandler","get_error_list","popHandleableErrors","copy","newType","newTypeCombinesType","newTypeHasHandler","errorConfig","remaining","configoverwrite","typedErrors","allowed","reason","errType","getErrorHandler","ApiPhrasen","reactive","loadingModules","user_language","ref","user_locale","server_languages","find","LC_Time","catArray","phrase","text","obj","elem","extractCategory","t_ref","val","match","p1","getValueForLoadedPhrase","PluginsPhrasen","cat","lang","zIndex","overlay","Image","valueAsBase64DataString","openUploadDialog","fileInput","click","pickFile","files","reader","FileReader","onload","readAsDataURL","deleteImage","Dms","DmsItem","preview","multiple","inputClass","noList","disabled","stringifyFile","lastModified","lastModifiedDate","addFiles","dt","DataTransfer","doubles","items","removeFile","fileToRemove","upload","dmsFile"],"mappings":"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"} \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js index 06efb3ea4..fb752baaf 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,4 +1,3 @@ -import fhcBuildConfig from './rollup.fhcbuildconfig.js'; import babel from '@rollup/plugin-babel'; import { globSync } from 'glob'; import path from 'node:path'; @@ -10,7 +9,6 @@ import json from '@rollup/plugin-json'; const debug = (process.env.DEBUG !== undefined) && (process.env.DEBUG === "true"); -const buildversion = fhcBuildConfig.fhcBuildVersion; const fhcbasepath = import.meta.dirname; let apps = {}; @@ -43,7 +41,7 @@ function FhcResolver () { if( source.includes('index.ci.php') ) { let source_abs = fhcbasepath + '/' + source.replace(/(\.\.\/)+/, ''); - let source_rel = path.relative(path.dirname(curapp), source_abs) + '?' + buildversion; + let source_rel = path.relative(path.dirname(curapp), source_abs); debug && console.log('SOURCE_ABS:' + source_abs + 'APP: ' + curapp + 'SOURCE_REL: ' + source_rel); @@ -55,7 +53,7 @@ function FhcResolver () { if(source_abs.match(/\/FHC-Core-[^\/]+\/public\//)) { source_abs = fhcbasepath + source_abs.replace(/^.+?\/(FHC-Core-[^\/]+)\/public\//, '/public/extensions/$1/'); } - let source_rel = path.relative(path.dirname(curapp), source_abs) + '?' + buildversion; + let source_rel = path.relative(path.dirname(curapp), source_abs); debug && console.log('SOURCE_ABS:' + source_abs + 'APP: ' + curapp + 'SOURCE_REL: ' + source_rel); diff --git a/rollup.fhcbuildconfig.js b/rollup.fhcbuildconfig.js deleted file mode 100644 index d65950021..000000000 --- a/rollup.fhcbuildconfig.js +++ /dev/null @@ -1,5 +0,0 @@ -const fhcBuildConfig = { - fhcBuildVersion: '2025121701' -} - -export default fhcBuildConfig;