mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-24 15:39:28 +00:00
studiensemester_kurzbz aus dem fronted beruecksichtigen
extendedHeaderFilter suche in mehreren spalten moeglich getAllOe sql abfrage richtig gestellt
This commit is contained in:
@@ -27,8 +27,8 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct([
|
||||
'loadByEmployee' => ['admin:r', 'assistenz:r'],
|
||||
'loadByStudiengang' => ['admin:r', 'assistenz:r'],
|
||||
'getByEmp' => ['admin:r', 'assistenz:r'],
|
||||
'getByStg' => ['admin:r', 'assistenz:r'],
|
||||
'loadByLV' => ['admin:r', 'assistenz:r'],
|
||||
]);
|
||||
|
||||
@@ -37,6 +37,7 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
||||
|
||||
$this->_ci->load->model('education/Lehreinheit_model', 'LehreinheitModel');
|
||||
$this->_ci->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
|
||||
$this->_ci->load->model('organisation/Studiensemester_model', 'StudiensemesterModel');
|
||||
|
||||
$this->_ci->load->library('VariableLib', ['uid' => $this->_uid]);
|
||||
|
||||
@@ -46,12 +47,14 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
||||
)
|
||||
);
|
||||
}
|
||||
public function loadByEmployee($mitarbeiter_uid = null, $stg_kz = null)
|
||||
{
|
||||
if (is_null($mitarbeiter_uid))
|
||||
$this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$studiensemester_kurzbz = $this->_ci->variablelib->getVar('semester_aktuell');
|
||||
public function getByEmp($studiensemester_kurzbz = null, $mitarbeiter_uid = null, $stg_kz = null)
|
||||
{
|
||||
|
||||
if (is_null($mitarbeiter_uid))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
$studiensemester_kurzbz = $this->getStudiensemesterKurzbz($studiensemester_kurzbz);
|
||||
|
||||
$lehrveranstaltungen = $this->_ci->LehreinheitModel->getLvsByEmployee($mitarbeiter_uid, $studiensemester_kurzbz, $stg_kz);
|
||||
$lehrveranstaltungen_data = $this->getDataOrTerminateWithError($lehrveranstaltungen);
|
||||
@@ -72,8 +75,7 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
||||
|
||||
$this->terminateWithSuccess($tree);
|
||||
}
|
||||
|
||||
public function loadByStudiengang($studiengang_kz = null, $semester = null)
|
||||
public function getByStg($studiensemester_kurzbz = null, $studiengang_kz = null, $semester = null)
|
||||
{
|
||||
if (is_null($studiengang_kz) || !preg_match("/^-?[1-9][0-9]*$/", (string)$studiengang_kz))
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
@@ -87,7 +89,7 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
||||
|
||||
$this->_ci->load->model('organisation/Studienplan_model', 'StudienplanModel');
|
||||
|
||||
$studiensemester_kurzbz = $this->_ci->variablelib->getVar('semester_aktuell');
|
||||
$studiensemester_kurzbz = $this->getStudiensemesterKurzbz($studiensemester_kurzbz);
|
||||
$studienplan_data = $this->_ci->StudienplanModel->getStudienplaeneBySemester($studiengang_kz, $studiensemester_kurzbz, $semester, $verband);
|
||||
|
||||
$studienplan_ids = array();
|
||||
@@ -107,7 +109,6 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
||||
$lehrveranstaltungen_data = $this->_ci->LehrveranstaltungModel->getLvsByStudiengang($studienplan_ids, $placeholders, $only_ids, $studiengang_kz, $studiensemester_kurzbz, $semester, $verband);
|
||||
$lehrveranstaltungen_data = hasData($lehrveranstaltungen_data) ? getData($lehrveranstaltungen_data) : array();
|
||||
|
||||
|
||||
$tree = [];
|
||||
foreach ($lehrveranstaltungen_data as $row)
|
||||
{
|
||||
@@ -246,4 +247,19 @@ class Lehrveranstaltung extends FHCAPI_Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function getStudiensemesterKurzbz($studiensemester_kurzbz = null)
|
||||
{
|
||||
if (!is_null($studiensemester_kurzbz))
|
||||
{
|
||||
$studiensemester_result = $this->_ci->StudiensemesterModel->load($studiensemester_kurzbz);
|
||||
|
||||
if (isError($studiensemester_result) || !hasData($studiensemester_result))
|
||||
$this->terminateWithError( $this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
|
||||
return getData($studiensemester_result)[0]->studiensemester_kurzbz;
|
||||
}
|
||||
|
||||
$this->terminateWithError($this->p->t('ui', 'ungueltigeParameter'), self::ERROR_TYPE_GENERAL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -356,6 +356,8 @@ EOSQL;
|
||||
gruppen.gruppen,
|
||||
mitarbeiter.lektoren,
|
||||
mitarbeiter.le_planstunden,
|
||||
mitarbeiter.vorname,
|
||||
mitarbeiter.nachname,
|
||||
mitarbeiter.semesterstunden,
|
||||
fachbereich.bezeichnung as fachbereich,
|
||||
UPPER(CONCAT(tbl_studiengang.typ,tbl_studiengang.kurzbz)) as studiengang,
|
||||
@@ -659,11 +661,15 @@ EOSQL;
|
||||
SELECT
|
||||
tbl_lehreinheitmitarbeiter.lehreinheit_id,
|
||||
STRING_AGG(m.kurzbz, ' ') AS lektoren,
|
||||
STRING_AGG(tbl_person.vorname, ' ') AS vorname,
|
||||
STRING_AGG(tbl_person.nachname, ' ') AS nachname,
|
||||
STRING_AGG(tbl_lehreinheitmitarbeiter.semesterstunden::text, ' ') AS semesterstunden,
|
||||
STRING_AGG(tbl_lehreinheitmitarbeiter.planstunden::text, ' ') AS le_planstunden
|
||||
FROM lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN public.tbl_mitarbeiter m USING (mitarbeiter_uid)
|
||||
JOIN lehreinheiten USING(lehreinheit_id)
|
||||
JOIN public.tbl_benutzer ON mitarbeiter_uid = uid
|
||||
JOIN public.tbl_person ON tbl_benutzer.person_id = tbl_person.person_id
|
||||
GROUP BY tbl_lehreinheitmitarbeiter.lehreinheit_id
|
||||
)";
|
||||
}
|
||||
|
||||
@@ -1200,19 +1200,29 @@ class Lehrveranstaltung_model extends DB_Model
|
||||
|
||||
public function getAllOe($lv_id, $stg_kz = null)
|
||||
{
|
||||
$qry = "SELECT DISTINCT oe_kurzbz
|
||||
$qry = "(SELECT DISTINCT oe_kurzbz
|
||||
FROM lehre.tbl_studienplan_lehrveranstaltung
|
||||
JOIN lehre.tbl_studienplan USING(studienplan_id)
|
||||
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE lehrveranstaltung_id = ? ";
|
||||
WHERE lehrveranstaltung_id = ?)";
|
||||
|
||||
$params = array($lv_id);
|
||||
if (!is_null($stg_kz))
|
||||
{
|
||||
$qry .= ' OR studiengang_kz = ?';
|
||||
$qry .= ' UNION
|
||||
(SELECT oe_kurzbz
|
||||
FROM public.tbl_studiengang WHERE studiengang_kz = ?)';
|
||||
$params[] = $stg_kz;
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry .= ' UNION
|
||||
(SELECT oe_kurzbz
|
||||
FROM public.tbl_studiengang WHERE studiengang_kz = (SELECT tbl_lehrveranstaltung.studiengang_kz FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id = ?))
|
||||
';
|
||||
$params[] = $lv_id;
|
||||
}
|
||||
|
||||
return $this->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
|
||||
@@ -7,16 +7,24 @@ export default {
|
||||
url: '/api/frontend/v1/Lehrveranstaltung/loadByLV/' + encodeURIComponent(lehrveranstaltung_id)
|
||||
};
|
||||
},
|
||||
getByStg(studiengang_kz, semester)
|
||||
getByStg(studiensemester_kurzbz, studiengang_kz, semester = null)
|
||||
{
|
||||
return ("/api/frontend/v1/Lehrveranstaltung/loadByStudiengang/" + encodeURIComponent(studiengang_kz) + "/" + encodeURIComponent(semester));
|
||||
},
|
||||
let path = "/api/frontend/v1/Lehrveranstaltung/getByStg/" + encodeURIComponent(studiensemester_kurzbz) + "/" + encodeURIComponent(studiengang_kz);
|
||||
|
||||
getByEmpStg(mitarbeiter_uid, stg)
|
||||
if (semester)
|
||||
path += "/" + encodeURIComponent(semester);
|
||||
|
||||
return path;
|
||||
},
|
||||
getByEmp(studiensemester_kurzbz, mitarbeiter_uid, stg = null)
|
||||
{
|
||||
return ("/api/frontend/v1/Lehrveranstaltung/loadByEmployee/" + encodeURIComponent(mitarbeiter_uid) + "/" + encodeURIComponent(stg));
|
||||
},
|
||||
let path = "/api/frontend/v1/Lehrveranstaltung/getByEmp/" + encodeURIComponent(studiensemester_kurzbz) + "/" + encodeURIComponent(mitarbeiter_uid);
|
||||
|
||||
if (stg)
|
||||
path += "/" + encodeURIComponent(stg);
|
||||
|
||||
return path;
|
||||
},
|
||||
getTable(url)
|
||||
{
|
||||
return {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import LVVerwaltung from "../components/LVVerwaltung/LVVerwaltung.js";
|
||||
import Phrasen from "../plugins/Phrasen.js";
|
||||
import {DEFAULT_MODE_RAUMINFO} from "../components/Cis/Mylv/RoomInformation";
|
||||
|
||||
const ciPath = FHC_JS_DATA_STORAGE_OBJECT.app_root.replace(/(https:|)(^|\/\/)(.*?\/)/g, '') + FHC_JS_DATA_STORAGE_OBJECT.ci_router;
|
||||
|
||||
@@ -13,8 +14,35 @@ const router = VueRouter.createRouter({
|
||||
},
|
||||
{
|
||||
name: `byEmp`,
|
||||
path: `/emp/:emp/:stg?`,
|
||||
component: LVVerwaltung
|
||||
path: `/emp/:studiensemester_kurzbz/:emp/:stg?/:semester?`,
|
||||
component: LVVerwaltung,
|
||||
props: route => {
|
||||
let {emp, stg, semester, studiensemester_kurzbz} = route.params;
|
||||
|
||||
if (emp === '')
|
||||
emp = undefined;
|
||||
|
||||
if (stg === '')
|
||||
stg = undefined;
|
||||
|
||||
if (studiensemester_kurzbz === '')
|
||||
studiensemester_kurzbz = undefined;
|
||||
|
||||
return {
|
||||
studiensemester_kurzbz: studiensemester_kurzbz,
|
||||
emp: emp,
|
||||
stg: stg,
|
||||
};
|
||||
},
|
||||
beforeEnter: (to, from, next) => {
|
||||
const { studiensemester_kurzbz } = to.params;
|
||||
const isSemester = /^(SS|WS)\d{4}$/.test(studiensemester_kurzbz);
|
||||
|
||||
if (!isSemester)
|
||||
return next({ path: '/' });
|
||||
else
|
||||
next();
|
||||
}
|
||||
},
|
||||
/*{
|
||||
name: `byFachbereich`,
|
||||
@@ -23,13 +51,41 @@ const router = VueRouter.createRouter({
|
||||
},*/
|
||||
{
|
||||
name: `byStg`,
|
||||
path: `/stg/:stg/:semester?`,
|
||||
component: LVVerwaltung
|
||||
path: '/stg/:studiensemester_kurzbz/:stg?/:semester?/',
|
||||
component: LVVerwaltung,
|
||||
props: route => {
|
||||
let { studiensemester_kurzbz, stg, semester } = route.params;
|
||||
|
||||
if (semester === '')
|
||||
semester = undefined;
|
||||
|
||||
if (studiensemester_kurzbz === '')
|
||||
studiensemester_kurzbz = undefined;
|
||||
|
||||
if (stg === '')
|
||||
semester = undefined;
|
||||
|
||||
return {
|
||||
studiensemester_kurzbz: studiensemester_kurzbz,
|
||||
stg: stg,
|
||||
semester: semester != null ? Number(semester) : null,
|
||||
};
|
||||
},
|
||||
beforeEnter: (to, from, next) => {
|
||||
const studiensemester_kurzbz = to.params?.studiensemester_kurzbz
|
||||
const isSemester = /^(SS|WS)\d{4}$/.test(studiensemester_kurzbz);
|
||||
|
||||
if (!isSemester)
|
||||
return next({ path: '/' });
|
||||
else
|
||||
next();
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/:pathMatch(.*)*',
|
||||
redirect: '/'
|
||||
}
|
||||
},
|
||||
|
||||
]
|
||||
});
|
||||
|
||||
|
||||
@@ -26,16 +26,22 @@ export default {
|
||||
defaultSemester: String,
|
||||
lvRoot: String,
|
||||
permissions: Object,
|
||||
config: Object
|
||||
config: Object,
|
||||
stg: { type: String, required: false },
|
||||
semester: { type: Number, required: false, default: null },
|
||||
studiensemester_kurzbz: { type: String, required: false, default: null },
|
||||
emp: { type: String, required: false, default: null }
|
||||
},
|
||||
computed: {
|
||||
type(){
|
||||
return this.$route.params.type
|
||||
selectedStudiensemester() {
|
||||
return this.studiensemester_kurzbz != null
|
||||
? this.studiensemester_kurzbz
|
||||
: this.defaultSemester;
|
||||
}
|
||||
},
|
||||
provide() {
|
||||
return {
|
||||
currentSemester: Vue.computed(() => this.studiensemesterKurzbz),
|
||||
currentSemester: Vue.computed(() => this.selectedStudiensemester),
|
||||
dropdowns: this.dropdowns,
|
||||
configShowVertragsdetails: this.config.showVertragsdetails,
|
||||
configShowGewichtung: this.config.showGewichtung,
|
||||
@@ -49,18 +55,26 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.updateFilter(this.$route);
|
||||
this.updateFilter();
|
||||
},
|
||||
watch: {
|
||||
'$route'(to) {
|
||||
this.updateFilter(to);
|
||||
stg() {
|
||||
this.updateFilter();
|
||||
},
|
||||
semester() {
|
||||
this.updateFilter();
|
||||
},
|
||||
selectedStudiensemester() {
|
||||
this.updateFilter();
|
||||
},
|
||||
emp() {
|
||||
this.updateFilter();
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selected: [],
|
||||
studiensemesterKurzbz: this.defaultSemester,
|
||||
stg: "",
|
||||
studiengang: "",
|
||||
filter: {},
|
||||
endpoint: ApiStudiengangTree,
|
||||
dropdowns: {
|
||||
@@ -95,20 +109,16 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
updateFilter(route)
|
||||
updateFilter()
|
||||
{
|
||||
let filter = { ...route.params, ...route.query };
|
||||
if (!filter.activeFilter)
|
||||
{
|
||||
if (filter.emp)
|
||||
{
|
||||
filter.activeFilter = 'employee';
|
||||
}
|
||||
else if (filter.stg)
|
||||
{
|
||||
filter.activeFilter = 'verband';
|
||||
}
|
||||
const filter = {
|
||||
stg: this.stg,
|
||||
emp: this.emp,
|
||||
semester: this.semester,
|
||||
studiensemester_kurzbz: this.selectedStudiensemester,
|
||||
activeFilter: this.emp ? 'employee' : this.stg ? 'verband' : null
|
||||
}
|
||||
|
||||
this.filter = filter;
|
||||
},
|
||||
handleRowClicked(data)
|
||||
@@ -117,18 +127,26 @@ export default {
|
||||
},
|
||||
onSelectEmployee(emp)
|
||||
{
|
||||
let stg = this.stg === '' ? null : this.stg;
|
||||
const { stg, semester } = this.filter;
|
||||
|
||||
this.$router.push({
|
||||
name: 'byEmp',
|
||||
params: { emp, stg, activeFilter: 'employee'},
|
||||
});
|
||||
let studiensemester_kurzbz = this.selectedStudiensemester;
|
||||
const params = { emp };
|
||||
|
||||
if (stg)
|
||||
params.stg = stg;
|
||||
if (semester !== null)
|
||||
params.semester = semester;
|
||||
if (studiensemester_kurzbz)
|
||||
params.studiensemester_kurzbz = studiensemester_kurzbz;
|
||||
|
||||
this.$router.push({ name: 'byEmp', params })
|
||||
},
|
||||
|
||||
onSelectVerband({link})
|
||||
{
|
||||
let stg = null;
|
||||
let semester = null;
|
||||
let studiensemester_kurzbz = this.selectedStudiensemester;
|
||||
|
||||
if (typeof link === 'number')
|
||||
stg = link;
|
||||
@@ -137,28 +155,22 @@ export default {
|
||||
[stg, semester] = link.split('/');
|
||||
}
|
||||
|
||||
this.stg = stg;
|
||||
const routeName = this.filter.emp ? 'byEmp' : 'byStg';
|
||||
const params = { stg };
|
||||
|
||||
if (this.filter && this.filter.emp)
|
||||
{
|
||||
this.$router.push({
|
||||
name: 'byEmp',
|
||||
params: { emp: this.filter.emp, stg, activeFilter: 'employee' },
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
this.$router.push({
|
||||
name: 'byStg',
|
||||
params: { stg, semester, activeFilter: 'verband' },
|
||||
});
|
||||
}
|
||||
if (semester !== null)
|
||||
params.semester = Number(semester);
|
||||
if (studiensemester_kurzbz)
|
||||
params.studiensemester_kurzbz = studiensemester_kurzbz;
|
||||
if (this.filter.emp)
|
||||
params.emp = this.filter.emp;
|
||||
|
||||
this.$router.push({ name: routeName, params });
|
||||
this.selected = [];
|
||||
},
|
||||
resetEmployeeFilter()
|
||||
{
|
||||
const newParams = { ...this.$route.params, activeFilter: 'verband' };
|
||||
const newParams = { ...this.filter, activeFilter: 'verband' };
|
||||
if (newParams.stg === '')
|
||||
this.$router.replace({ name: 'index' });
|
||||
else
|
||||
@@ -166,24 +178,24 @@ export default {
|
||||
delete newParams.emp;
|
||||
newParams.semester = null;
|
||||
this.$router.replace({ name: 'byStg', params: newParams });
|
||||
|
||||
}
|
||||
},
|
||||
searchfunction(params) {
|
||||
return this.$api.call(ApiSearchbar.search(params));
|
||||
},
|
||||
studiensemesterChanged(newValue) {
|
||||
this.studiensemesterKurzbz = newValue;
|
||||
this.$refs.lvTable.reload();
|
||||
const routeName = this.filter.activeFilter === 'employee' ? 'byEmp' : 'byStg';
|
||||
const newParams = {...this.filter, studiensemester_kurzbz: newValue};
|
||||
this.$router.push({ name: routeName, params: newParams });
|
||||
this.selected = [];
|
||||
},
|
||||
},
|
||||
created() {
|
||||
if (this.$route.params.stg !== undefined)
|
||||
if (this.stg !== undefined)
|
||||
{
|
||||
this.selectedStudiengang = this.$route.params?.semester !== '' && this.$route.params?.semester
|
||||
? `${this.$route.params.stg}/${this.$route.params.semester}`
|
||||
: this.$route.params.stg;
|
||||
this.selectedStudiengang = this.semester !== '' && this.semester
|
||||
? `${this.stg}/${this.semester}`
|
||||
: this.stg;
|
||||
}
|
||||
|
||||
this.$p.loadCategory(['lehre', 'person', 'global'])
|
||||
@@ -250,7 +262,7 @@ export default {
|
||||
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" :aria-label="$p.t('ui/schliessen')"></button>
|
||||
</div>
|
||||
<stv-verband @select-verband="onSelectVerband" class="col" style="height:0%" :preselectedKey="selectedStudiengang" :endpoint="endpoint"></stv-verband>
|
||||
<stv-studiensemester :default="defaultSemester" @changed="studiensemesterChanged"></stv-studiensemester>
|
||||
<stv-studiensemester :default="selectedStudiensemester" @changed="studiensemesterChanged"></stv-studiensemester>
|
||||
</nav>
|
||||
|
||||
<main class="col-md-8 ms-sm-auto col-lg-9 col-xl-10">
|
||||
|
||||
@@ -61,42 +61,6 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fieldTitleMap: {
|
||||
lv_kurzbz: ['lehre', 'kurzbz'],
|
||||
tags: ['ui', 'tags'],
|
||||
lehrveranstaltung_id: ['lehre', 'lehrveranstaltung_id'],
|
||||
lv_bezeichnung: ['ui', 'bezeichnung'],
|
||||
lv_bezeichnung_english: ['lehre', 'bezeichnungeng'],
|
||||
lv_studiengang_kz: ['lehre', 'studiengangskennzahlLehre'],
|
||||
studiengang: ['lehre', 'studiengang'],
|
||||
semester: ['lehre', 'semester'],
|
||||
sprache: ['global', 'sprache'],
|
||||
lv_ects: ['lehre', 'ects'],
|
||||
semesterstunden: ['lehre', 'semesterstunden'],
|
||||
anmerkung: ['global', 'anmerkung'],
|
||||
lehre: ['lehre', 'lehre'],
|
||||
lehreverzeichnis: ['ui', 'lehreverzeichnis'],
|
||||
aktiv: ['person', 'aktiv'],
|
||||
planfaktor: ['ui', 'planfaktor'],
|
||||
planlektoren: ['ui', 'planlektoren'],
|
||||
planpersonalkosten: ['ui', 'planpersonalkosten'],
|
||||
plankostenprolektor: ['ui', 'plankostenprolektor'],
|
||||
orgform_kurzbz: ['lehre', 'organisationsform'],
|
||||
studienplan_id: ['ui', 'studienplan_id'],
|
||||
studienplan_bezeichnung: ['ui', 'studienplan_bezeichnung'],
|
||||
lehrtyp_kurzbz: ['ui', 'lehrtyp_kurzbz'],
|
||||
lehrform_kurzbz: ['lehre', 'lehrform'],
|
||||
le_planstunden: ['lehre', 'leplanstunden'],
|
||||
lehreinheit_id: ['lehre', 'lehreinheit_id'],
|
||||
stundenblockung: ['lehre', 'stundenblockung'],
|
||||
wochenrythmus: ['lehre', 'wochenrhytmus'],
|
||||
startkw: ['lehre', 'startkw'],
|
||||
raumtyp: ['lehre', 'raumtyp'],
|
||||
raumtypalternativ: ['lehre', 'raumtypalternativ'],
|
||||
gruppen: ['lehre', 'gruppen'],
|
||||
lektoren: ['lehre', 'lehrende'],
|
||||
},
|
||||
|
||||
expanded: [],
|
||||
selectedColumnValues: [],
|
||||
tagEndpoint: ApiTag,
|
||||
@@ -168,7 +132,7 @@ export default {
|
||||
headerFilterFunc: extendedHeaderFilter,
|
||||
},
|
||||
layout: 'fitDataStretch',
|
||||
persistenceID: 'lehrveranstaltungen_2025_07_11_v1',
|
||||
persistenceID: 'lehrveranstaltungen_2025_07_31_v1',
|
||||
selectableRowsRangeMode: 'click',
|
||||
selectableRows: true,
|
||||
rowContextMenu: (component, e) => {
|
||||
@@ -348,7 +312,7 @@ export default {
|
||||
{title: this.$p.t('lehre', 'raumtyp'), field: "raumtyp", headerFilter: true, headerFilterFuncParams: {field: 'raumtyp'}, visible: false},
|
||||
{title: this.$p.t('lehre', 'raumtypalternativ'), field: "raumtypalternativ", headerFilter: true, headerFilterFuncParams: {field: 'raumtypalternativ'}, visible: false},
|
||||
{title: this.$p.t('lehre', 'gruppen'), field: "gruppen", headerFilter: true, headerFilterFuncParams: {field: 'gruppen'}},
|
||||
{title: this.$p.t('lehre', 'lehrende'), field: "lektoren", headerFilter: true, headerFilterFuncParams: {field: 'lektoren'}},
|
||||
{title: this.$p.t('lehre', 'lehrende'), field: "lektoren", headerFilter: true, headerFilterFuncParams: {field: ['lektoren', 'vorname', 'nachname']}},
|
||||
],
|
||||
}
|
||||
|
||||
@@ -417,18 +381,14 @@ export default {
|
||||
{
|
||||
if (this.filter.activeFilter === 'employee' && this.filter.emp)
|
||||
{
|
||||
return this.$api.getUri(ApiLv.getByEmpStg(
|
||||
this.filter.emp,
|
||||
this.filter.stg
|
||||
));
|
||||
const { emp, stg, studiensemester_kurzbz } = this.filter;
|
||||
return this.$api.getUri(ApiLv.getByEmp(studiensemester_kurzbz, emp, stg));
|
||||
}
|
||||
|
||||
if (this.filter.activeFilter === 'verband' && this.filter.stg)
|
||||
{
|
||||
return this.$api.getUri(ApiLv.getByStg(
|
||||
this.filter.stg,
|
||||
this.filter.semester
|
||||
));
|
||||
const { stg, semester, studiensemester_kurzbz } = this.filter;
|
||||
return this.$api.getUri(ApiLv.getByStg(studiensemester_kurzbz, stg, semester));
|
||||
}
|
||||
},
|
||||
resetEmployeeFilter()
|
||||
@@ -437,16 +397,6 @@ export default {
|
||||
delete newFilter.emp;
|
||||
newFilter.activeFilter = 'verband';
|
||||
},
|
||||
buildParams()
|
||||
{
|
||||
const params = {};
|
||||
for (const [key, value] of Object.entries(this.filter)) {
|
||||
if (value !== undefined && value !== null) {
|
||||
params[key] = value;
|
||||
}
|
||||
}
|
||||
return params;
|
||||
},
|
||||
showLehreinheitModal() {
|
||||
this.resetModal();
|
||||
this.$refs.lehreinheitModal.show();
|
||||
@@ -649,7 +599,7 @@ export default {
|
||||
|
||||
let rootRows = this.$refs.table.tabulator.getRows(true);
|
||||
var lastRow = rootRows[rootRows.length - 1];
|
||||
lastRow.treeCollapse(true)
|
||||
lastRow?.treeCollapse(true)
|
||||
|
||||
this.currentTreeLevel = 0;
|
||||
},
|
||||
|
||||
@@ -41,6 +41,17 @@ function parseFilterExpression(expression)
|
||||
|
||||
export function extendedHeaderFilter(headerValue, rowValue, rowData, filterParams)
|
||||
{
|
||||
const fields = Array.isArray(filterParams?.field)
|
||||
? filterParams.field
|
||||
: [filterParams?.field];
|
||||
|
||||
if (fields.length > 1 && rowData)
|
||||
{
|
||||
rowValue = fields
|
||||
.map(f => rowData[f] ?? '')
|
||||
.filter(Boolean)
|
||||
.join(' ');
|
||||
}
|
||||
if (typeof headerValue === 'boolean')
|
||||
{
|
||||
return rowValue === headerValue;
|
||||
|
||||
Reference in New Issue
Block a user