From f2ec48682b414a2b10c937f251bf84b31b28f206 Mon Sep 17 00:00:00 2001 From: KarpAlex Date: Sat, 9 Apr 2022 18:32:47 +0200 Subject: [PATCH] =?UTF-8?q?Fehler=20Zust=C3=A4ndigkeiten=20assignment=20pa?= =?UTF-8?q?ge=20improvements:=20-=20added=20the=20page=20to=20navigation?= =?UTF-8?q?=20-=20added=20organisationseinheiten=20type=20to=20oe=20dropdo?= =?UTF-8?q?wn=20-=20correct=20order=20of=20oe=20and=20funktion=20dropdown?= =?UTF-8?q?=20entries=20-=20bugfix:=20delete=20button=20was=20not=20shown?= =?UTF-8?q?=20when=20german=20language=20-=20mitarbeiter=20autocomplete=20?= =?UTF-8?q?search=20also=20works=20for=20"vorname=20nachname"=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/config/navigation.php | 10 +++ .../system/issues/IssuesZustaendigkeiten.php | 2 +- .../system/Fehlerzustaendigkeiten_model.php | 6 +- .../issues/issuesZustaendigkeitenData.php | 4 +- public/js/issues/issuesZustaendigkeiten.js | 75 ++++++++++++++----- 5 files changed, 73 insertions(+), 24 deletions(-) diff --git a/application/config/navigation.php b/application/config/navigation.php index d76b8a7f2..5d0be2925 100644 --- a/application/config/navigation.php +++ b/application/config/navigation.php @@ -235,3 +235,13 @@ $config['navigation_menu']['lehre/lehrauftrag/LehrauftragErteilen/*'] = array( 'requiredPermissions' => array('lehre/lehrauftrag_erteilen:r') ) ); + +$config['navigation_menu']['system/issues/Issues/*'] = array( + 'fehlerzustaendigkeiten' => array( + 'link' => site_url('system/issues/IssuesZustaendigkeiten'), + 'description' => 'Fehler Zuständigkeiten', + 'icon' => 'cogs', + 'sort' => 100, + 'requiredPermissions' => array('admin:rw') + ) +); diff --git a/application/controllers/system/issues/IssuesZustaendigkeiten.php b/application/controllers/system/issues/IssuesZustaendigkeiten.php index 0af1d5e89..635fda2bc 100644 --- a/application/controllers/system/issues/IssuesZustaendigkeiten.php +++ b/application/controllers/system/issues/IssuesZustaendigkeiten.php @@ -108,7 +108,7 @@ class IssuesZustaendigkeiten extends Auth_Controller $result = array( 'mitarbeiter' => getData($mitarbeiterRes), - 'oe_kurzbz' => getData($oeRes), + 'oe' => getData($oeRes), 'funktion' => getData($funktionRes), ); diff --git a/application/models/system/Fehlerzustaendigkeiten_model.php b/application/models/system/Fehlerzustaendigkeiten_model.php index 201e69e67..75eb810ea 100644 --- a/application/models/system/Fehlerzustaendigkeiten_model.php +++ b/application/models/system/Fehlerzustaendigkeiten_model.php @@ -41,7 +41,7 @@ class Fehlerzustaendigkeiten_model extends DB_Model */ public function getNonAssignedOes($fehlercode) { - $query = "SELECT oe_kurzbz, bezeichnung + $query = "SELECT oe_kurzbz, bezeichnung, organisationseinheittyp_kurzbz FROM public.tbl_organisationseinheit oe WHERE aktiv AND NOT EXISTS ( @@ -49,7 +49,7 @@ class Fehlerzustaendigkeiten_model extends DB_Model WHERE oe_kurzbz = oe.oe_kurzbz AND fehlercode = ? ) - ORDER BY bezeichnung"; + ORDER BY organisationseinheittyp_kurzbz, bezeichnung"; return $this->execReadOnlyQuery($query, array($fehlercode)); } @@ -69,7 +69,7 @@ class Fehlerzustaendigkeiten_model extends DB_Model WHERE funktion_kurzbz = funk.funktion_kurzbz AND fehlercode = ? ) - ORDER BY funktion_kurzbz"; + ORDER BY beschreibung"; return $this->execReadOnlyQuery($query, array($fehlercode)); } diff --git a/application/views/system/issues/issuesZustaendigkeitenData.php b/application/views/system/issues/issuesZustaendigkeitenData.php index c844734cf..d4cedd192 100644 --- a/application/views/system/issues/issuesZustaendigkeitenData.php +++ b/application/views/system/issues/issuesZustaendigkeitenData.php @@ -19,7 +19,7 @@ $filterWidgetArray = array( 'tableUniqueId' => 'issuesZustaendigkeiten', 'requiredPermissions' => 'admin', 'datasetRepresentation' => 'tablesorter', - 'additionalColumns' => array(ucfirst($this->p->t('ui', 'loeschen'))), + 'additionalColumns' => array('Delete'), 'columnsAliases' => array( 'ID', ucfirst($this->p->t('fehlermonitoring', 'fehlercode')), @@ -38,7 +38,7 @@ $filterWidgetArray = array( ), 'formatRow' => function($datasetRaw) { - $datasetRaw->{ucfirst($this->p->t('ui', 'loeschen'))} = + $datasetRaw->{'Delete'} = ""; diff --git a/public/js/issues/issuesZustaendigkeiten.js b/public/js/issues/issuesZustaendigkeiten.js index 4a919f242..83b5005bc 100644 --- a/public/js/issues/issuesZustaendigkeiten.js +++ b/public/js/issues/issuesZustaendigkeiten.js @@ -1,18 +1,17 @@ /** - * Javascript file for issues Zuständigkeiten page + * Javascript file for Issues Zuständigkeiten assignment page */ const FEHLERAPP_DROPDOWN_ID = "fehlerappSelect"; const FEHLERCODE_DROPDOWN_ID = "fehlercodeSelect"; const MITARBEITER_AUTOCOMPLETE_ID = "mitarbeiterSelect"; -const MITARBEITER_HIDENFIELD_ID = "mitarbeiter_person_id"; +const MITARBEITER_HIDDENFIELD_ID = "mitarbeiter_person_id"; const ORGANISATIONSEINHEIT_DROPDOWN_ID = "oeSelect"; const FUNKTION_DROPDOWN_ID = "funktionSelect"; var IssuesZustaendigkeiten = { - mitarbeiterArr: [], - fehlercodesArr: [], + fehlercodesArr: [], // for saving received fehlercodes getApps: function() { @@ -62,7 +61,6 @@ var IssuesZustaendigkeiten = { // save fehlercodes data for displaying info later IssuesZustaendigkeiten.fehlercodesArr = fehlerCodesData; - // display fehlercodes in dropdown let fehlerCodes = []; @@ -109,36 +107,74 @@ var IssuesZustaendigkeiten = { // save loaded data let zustaendigkeitenData = FHC_AjaxClient.getData(data); - // fill dropdowns with data + let zustaendigkeiten = []; + + for (let i = 0; i < zustaendigkeitenData.oe.length; i++) + { + let zustaendigkeit = zustaendigkeitenData.oe[i]; + + zustaendigkeiten.push( + { + oe_kurzbz: zustaendigkeit.oe_kurzbz, + fullOeBezeichnung: zustaendigkeit.organisationseinheittyp_kurzbz + ' ' + zustaendigkeit.bezeichnung + } + ); + } + + // fill oe dropdown with data IssuesZustaendigkeiten._fillDropdown( "oeSelect", "oe_kurzbz", - zustaendigkeitenData.oe_kurzbz, - "bezeichnung", + zustaendigkeiten, + "fullOeBezeichnung", true ); - IssuesZustaendigkeiten._fillDropdown("funktionSelect", "funktion_kurzbz", zustaendigkeitenData.funktion, "beschreibung", true); - // save Mitarbeiter in array - IssuesZustaendigkeiten.mitarbeiterArr = []; + // fill funktion dropdown with data + IssuesZustaendigkeiten._fillDropdown( + "funktionSelect", + "funktion_kurzbz", + zustaendigkeitenData.funktion, + "beschreibung", + true + ); + + // save Mitarbeiter data for autocomplete field in array + let autocompleteMitarbeiterArr = []; for (let i = 0; i < zustaendigkeitenData.mitarbeiter.length; i++) { let ma = zustaendigkeitenData.mitarbeiter[i]; - IssuesZustaendigkeiten.mitarbeiterArr.push( + autocompleteMitarbeiterArr.push( { + vorname: ma.vorname, + nachname: ma.nachname, + uid: ma.uid, label: ma.nachname + " " + ma.vorname + " (" + ma.uid + ")", id: ma.person_id } ); } + // callback for searching source mitarbeiter array correctly + let sourceCallback = function(request, response) + { + // case insensitive matcher + var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); + + // match vorname nachname OR nachname vorname OR uid + response($.grep(autocompleteMitarbeiterArr, function (value) { + return matcher.test(value.nachname + ' '+value.vorname + ' ' + value.nachname) + || matcher.test(value.uid); + })); + } + // fill autocomplete field with mitarbeiter data IssuesZustaendigkeiten._fillAutocomplete( MITARBEITER_AUTOCOMPLETE_ID, - MITARBEITER_HIDENFIELD_ID, - IssuesZustaendigkeiten.mitarbeiterArr + MITARBEITER_HIDDENFIELD_ID, + sourceCallback ); // set events to delete buttons @@ -229,7 +265,8 @@ var IssuesZustaendigkeiten = { for (let i = 0; i < data.length; i++) { let val = data[i]; - // value selected by default + + // the value selected by default let selected = val === defaultValue ? " selected" : ""; // append option @@ -241,9 +278,11 @@ var IssuesZustaendigkeiten = { // jQuery ui autocomplete for employees $("#"+autocompleteId).autocomplete( { + // custom matcher source: source, autoFocus: true, - select: function( event, ui ) { + select: function(event, ui) + { // when autocmplete entry selected, display label text in autocomplete, fill hidden value field $("#"+autocompleteId).val(ui.item.label); $("#"+idFieldId).val(ui.item.id); @@ -290,7 +329,7 @@ var IssuesZustaendigkeiten = { { // clear all input fields $("#"+MITARBEITER_AUTOCOMPLETE_ID).val(''); - $("#"+MITARBEITER_HIDENFIELD_ID).val(''); + $("#"+MITARBEITER_HIDDENFIELD_ID).val(''); $("#"+ORGANISATIONSEINHEIT_DROPDOWN_ID).val(''); $("#"+FUNKTION_DROPDOWN_ID).val(''); } @@ -324,7 +363,7 @@ $(document).ready(function() { fehlercode: $("#"+FEHLERCODE_DROPDOWN_ID).val() } - let mitarbeiter_person_id = $("#"+MITARBEITER_HIDENFIELD_ID).val(); + let mitarbeiter_person_id = $("#"+MITARBEITER_HIDDENFIELD_ID).val(); let oe_kurzbz = $("#"+ORGANISATIONSEINHEIT_DROPDOWN_ID).val(); // if person id set, send it, otherwise oe_kurzbz