From 455d154b6317808531270d893e5cf52b6daa3c8e Mon Sep 17 00:00:00 2001 From: Harald Bamberger Date: Tue, 8 Oct 2024 16:19:57 +0200 Subject: [PATCH] =?UTF-8?q?recht=20lehre/lehrveranstaltung=20statt=20basis?= =?UTF-8?q?/vilesci,=20schriftgr=C3=B6=C3=9Fe=20verkleinern,=20menuepunkt?= =?UTF-8?q?=20in=20vilesci,=20headerfilter=20angepasst?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lehre/lvplanung/LvTemplateUebersicht.php | 2 +- .../lehre/lvplanung/lvTemplateUebersicht.php | 5 ++- include/tw/vilesci_menu_main.inc.php | 1 + public/css/lvTemplateUebersicht.css | 3 ++ .../lehre/lvplanung/LvTemplateUebersicht.js | 45 +++++++++++++++++-- 5 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 public/css/lvTemplateUebersicht.css diff --git a/application/controllers/lehre/lvplanung/LvTemplateUebersicht.php b/application/controllers/lehre/lvplanung/LvTemplateUebersicht.php index eb01d90c8..b1ab2fe26 100644 --- a/application/controllers/lehre/lvplanung/LvTemplateUebersicht.php +++ b/application/controllers/lehre/lvplanung/LvTemplateUebersicht.php @@ -8,7 +8,7 @@ class LvTemplateUebersicht extends Auth_Controller // Set required permissions parent::__construct( array( - 'index' => 'basis/vilesci:rw', + 'index' => 'lehre/lehrveranstaltung:rw', ) ); diff --git a/application/views/lehre/lvplanung/lvTemplateUebersicht.php b/application/views/lehre/lvplanung/lvTemplateUebersicht.php index 54afad0a5..5c873486c 100644 --- a/application/views/lehre/lvplanung/lvTemplateUebersicht.php +++ b/application/views/lehre/lvplanung/lvTemplateUebersicht.php @@ -10,7 +10,10 @@ $includesArray = array( 'navigationcomponent' => true, 'filtercomponent' => true, 'customJSModules' => array('public/js/apps/lehre/lvplanung/LvTemplates.js'), - 'customCSSs' => array('public/css/Fhc.css') + 'customCSSs' => array( + 'public/css/Fhc.css', + 'public/css/lvTemplateUebersicht.css' + ) ); $this->load->view('templates/FHC-Header', $includesArray); diff --git a/include/tw/vilesci_menu_main.inc.php b/include/tw/vilesci_menu_main.inc.php index 2aa2e67d3..2a1ca74ae 100644 --- a/include/tw/vilesci_menu_main.inc.php +++ b/include/tw/vilesci_menu_main.inc.php @@ -70,6 +70,7 @@ $menu=array 'link'=>'left.php?categorie=Lehre', 'target'=>'nav', 'Gruppenverwaltung'=>array('name'=>'Gruppen', 'permissions'=>array('admin','lv-plan','support','lehre/gruppe'), 'link'=>'stammdaten/lvbgruppenverwaltung.php', 'target'=>'main'), 'Lehrveranstaltung'=>array('name'=>'Lehrveranstaltung', 'link'=>'lehre/lehrveranstaltung_frameset.html', 'target'=>'main'), + 'lvTemplateUebersicht'=>array('name'=>'LV-Template Übersicht', 'link'=>'../index.ci.php/lehre/lvplanung/LvTemplateUebersicht', 'target'=>'_blank'), 'Studienordnung'=>array('name'=>'Studienordnung', 'link'=>'lehre/studienordnung.php', 'target'=>'_blank','permissions'=>array('lehre/studienordnung')), 'StudienplanGueltigkeit'=>array('name'=>'Studienplan Gültigkeit', 'link'=>'lehre/studienplan_gueltigkeit.php', 'target'=>'main','permissions'=>array('lehre/studienordnung')), 'StudienplanVorruecken'=>array('name'=>'Studienplan vorrücken', 'link'=>'lehre/studienplan_vorrueckung.php', 'target'=>'main','permissions'=>array('lehre/studienplan')), diff --git a/public/css/lvTemplateUebersicht.css b/public/css/lvTemplateUebersicht.css new file mode 100644 index 000000000..af279b8cb --- /dev/null +++ b/public/css/lvTemplateUebersicht.css @@ -0,0 +1,3 @@ +html { + font-size: .75em; +} \ No newline at end of file diff --git a/public/js/lehre/lvplanung/LvTemplateUebersicht.js b/public/js/lehre/lvplanung/LvTemplateUebersicht.js index 414434904..be0da75b8 100644 --- a/public/js/lehre/lvplanung/LvTemplateUebersicht.js +++ b/public/js/lehre/lvplanung/LvTemplateUebersicht.js @@ -21,6 +21,45 @@ export default { }, computed: { tabulatorOptions() { + const fhcValuesLookup = function(cell) { + var values = {}; + const field = cell.getField(); + const data = cell.getTable().getData(); + const collectvalues = function(rows, field) { + var values = {}; + var childvalues = {}; + for(const row of rows) { + const rowvalue = (row[field] !== null) ? row[field] : ''; + values[rowvalue] = rowvalue; + if(row['_children'] && row['_children'].length > 0) { + childvalues = collectvalues(row['_children'], field); + values = {...values, ...childvalues} + } + } + return values; + } + values = collectvalues(data, field); + const vals = Object.keys(values).sort(); + if(vals.indexOf('') === -1) { + vals.unshift(''); + } + return vals; + }; + const fhctreefilter = function(headerValue, rowValue, rowData, filterParams){ + if (rowData['_children'] && rowData['_children'].length > 0) { + for (var i in rowData['_children']) { + return rowValue == headerValue || + fhctreefilter( + headerValue, + rowData['_children'][i][filterParams.field], + rowData['_children'][i], + filterParams + ); + } + } + + return rowValue == headerValue; + }; const self = this; return { // NOTE: data is set on table built to await preselected actual Studiensemester @@ -42,11 +81,11 @@ export default { columns: [ {title: 'LV-ID', field: 'lehrveranstaltung_id', headerFilter: true, visible: false}, {title: 'LV Kurzbz', field: 'kurzbz', headerFilter: true, visible:false, width: 70}, - {title: 'STG Kurzbz', field: 'stg_typ_kurzbz', headerFilter: true, visible:true, width: 80}, + {title: 'STG Kurzbz', field: 'stg_typ_kurzbz', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_kurzbz'}, visible:true, width: 80}, {title: 'OrgEinheit', field: 'lv_oe_bezeichnung', headerFilter: true, visible: false, width: 250}, {title: 'Lehrtyp Kurzbz', field: 'lehrtyp_kurzbz', headerFilter: true, visible:false, width: 70}, - {title: 'Studiengangtyp', field: 'stg_typ_bezeichnung', headerFilter: true, width: 150}, - {title: 'OrgForm', field: 'orgform_kurzbz', headerFilter: true, width: 70}, + {title: 'Studiengangtyp', field: 'stg_typ_bezeichnung', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'stg_typ_bezeichnung'}, width: 150}, + {title: 'OrgForm', field: 'orgform_kurzbz', headerFilter: "list", headerFilterParams: {valuesLookup: fhcValuesLookup}, headerFilterFunc: fhctreefilter, headerFilterFuncParams: {field: 'orgform_kurzbz'}, width: 70}, {title: 'Semester', field: 'semester', headerFilter: true, width: 50}, {title: 'Lehrveranstaltung', field: 'lv_bezeichnung', headerFilter: true, minWidth: 250}, {title: 'Lehrveranstaltung ENG', field: 'bezeichnung_english', headerFilter: true, minWidth: 250},