Fehler Zuständigkeiten assignment page improvements:

- added the page to navigation
- added organisationseinheiten type to oe dropdown
- correct order of oe and funktion dropdown entries
- bugfix: delete button was not shown when german language
- mitarbeiter autocomplete search also works for "vorname nachname" form
This commit is contained in:
KarpAlex
2022-04-09 18:32:47 +02:00
parent df3cab593c
commit f2ec48682b
5 changed files with 73 additions and 24 deletions
+10
View File
@@ -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')
)
);
@@ -108,7 +108,7 @@ class IssuesZustaendigkeiten extends Auth_Controller
$result = array(
'mitarbeiter' => getData($mitarbeiterRes),
'oe_kurzbz' => getData($oeRes),
'oe' => getData($oeRes),
'funktion' => getData($funktionRes),
);
@@ -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));
}
@@ -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'} =
"<button id='".$datasetRaw->{'fehlerzustaendigkeiten_id'}."' class='btn btn-default deleteBtn'>"
.ucfirst($this->p->t('ui', 'loeschen'))."</button>";
+57 -18
View File
@@ -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