refactor Profile Update for filter, backendfilter not active

This commit is contained in:
ma0068
2025-10-21 14:42:02 +02:00
parent 6e9969d9e4
commit 1423579a49
3 changed files with 196 additions and 8 deletions
@@ -0,0 +1,51 @@
<?php
$filterCmptArray = array(
"app" => 'core',
'datasetName' => 'profileupdate',
'query' => '
SELECT
profil_update_id,
tbl_profil_update.uid,
(tbl_person.vorname || \' \' || tbl_person.nachname) AS name ,
topic,
requested_change,
tbl_profil_update.updateamum,
tbl_profil_update.updatevon,
tbl_profil_update.insertamum,
tbl_profil_update.insertvon,
status,
public.tbl_profil_update_status.bezeichnung_mehrsprachig[(" . $lang . ")] as status_translated,
status_timestamp,
status_message,
attachment_id,
UPPER(public.tbl_studiengang.typ || public.tbl_studiengang.kurzbz) AS studiengang,
COALESCE(of.orgform_kurzbz, public.tbl_studiengang.orgform_kurzbz) AS orgform,
NULL as oezuordnung,
tbl_student.semester
FROM public.tbl_profil_update
JOIN public.tbl_profil_update_status ON public.tbl_profil_update_status.status_kurzbz = public.tbl_profil_update.status
JOIN public.tbl_student ON public.tbl_student.student_uid=public.tbl_profil_update.uid
JOIN public.tbl_benutzer ON public.tbl_benutzer.uid = public.tbl_student.student_uid
JOIN public.tbl_person ON public.tbl_benutzer.person_id=public.tbl_person.person_id
JOIN public.tbl_studiengang ON public.tbl_studiengang.studiengang_kz=public.tbl_student.studiengang_kz
LEFT JOIN (
select
pss.prestudent_id, COALESCE(sp.orgform_kurzbz, pss.orgform_kurzbz) as orgform_kurzbz
from (
select
prestudent_id, max(insertamum) as insertamum
from
public.tbl_prestudentstatus
where
datum <= NOW()
group by
prestudent_id
) mpss
join
public.tbl_prestudentstatus pss on pss.prestudent_id = mpss.prestudent_id and pss.insertamum = mpss.insertamum
left join
lehre.tbl_studienplan sp on pss.studienplan_id = sp.studienplan_id
) of ON of.prestudent_id = public.tbl_student.prestudent_id
',
'requiredPermissions' => 'student/stammdaten'
);
@@ -417,25 +417,105 @@ export default {
if (sessionStorage.getItem("filter")) {
this.filter = sessionStorage.getItem("filter");
}
},
template: /*html*/ `
<div>
<accept-deny-update :title="$p.t('profilUpdate','profilUpdateRequest')" v-if="showModal" ref="AcceptDenyModal" @hideBsModal="hideAcceptDenyModal" :value="JSON.parse(JSON.stringify(modalData))" :setLoading="setLoading" ></accept-deny-update>
<div class="form-underline flex-fill ">
/*
<div class="form-underline flex-fill ">
<div class="form-underline-titel">{{$p.t('ui','anzeigen')}} </div>
<select class="mb-4 form-select" v-model="filter" @change="updateData" aria-label="Profil updates display selection">
<option :selected="true" :value="profilUpdateStates['Pending']" >{{$p.t('profilUpdate','pendingRequests')}}</option>
<option :value="profilUpdateStates['Accepted']">{{$p.t('profilUpdate','acceptedRequests')}}</option>
<option :value="profilUpdateStates['Rejected']">{{$p.t('profilUpdate','rejectedRequests')}}</option>
<option :value="'Alle'">{{$p.t('profilUpdate','allRequests')}}</option>
</select>
</div>
:title="$p.t('profilUpdate','profilUpdateRequests')"
<h3>{{$p.t('profilUpdate', 'profilUpdateRequests')}}</h3>
<div class="col-auto row row-cols-lg-auto d-flex justify-content-end">
<div class="col-12">
<select class="mb-4 form-select" v-model="filter" @change="updateData" aria-label="Profil updates display selection">
<option :selected="true" :value="profilUpdateStates['Pending']" >{{$p.t('profilUpdate','pendingRequests')}}</option>
<option :value="profilUpdateStates['Accepted']">{{$p.t('profilUpdate','acceptedRequests')}}</option>
<option :value="profilUpdateStates['Rejected']">{{$p.t('profilUpdate','rejectedRequests')}}</option>
<option :value="'Alle'">{{$p.t('profilUpdate','allRequests')}}</option>
</select>
</div>
</div>
//Version mit filter rechts in eigener zeile
<template #filter>
<div class="col-auto row row-cols-lg-auto g-3 d-flex justify-content-end">
<div class="col-12">
<select class="mb-4 form-select" v-model="filter" @change="updateData" aria-label="Profil updates display selection">
<option :selected="true" :value="profilUpdateStates['Pending']" >{{$p.t('profilUpdate','pendingRequests')}}</option>
<option :value="profilUpdateStates['Accepted']">{{$p.t('profilUpdate','acceptedRequests')}}</option>
<option :value="profilUpdateStates['Rejected']">{{$p.t('profilUpdate','rejectedRequests')}}</option>
<option :value="'Alle'">{{$p.t('profilUpdate','allRequests')}}</option>
</select>
</div>
</div>
</template>
<div class="justify-content-end pb-3">
</div>
<div class="col-auto row row-cols-lg-auto g-3 d-flex justify-content-end">
//backendfilter not working: no parameters provided
<core-filter-cmpt
v-if="profilUpdateStates && categoryLoaded"
ref="UpdatesTable"
:tabulatorEvents="profilUpdateEvents"
:tabulator-options="profilUpdateOptions"
filter-type="Profileupdate"
:sideMenu="false">
</core-filter-cmpt>
*/
},
template: /*html*/ `
<div>
<accept-deny-update :title="$p.t('profilUpdate','profilUpdateRequest')" v-if="showModal" ref="AcceptDenyModal" @hideBsModal="hideAcceptDenyModal" :value="JSON.parse(JSON.stringify(modalData))" :setLoading="setLoading" ></accept-deny-update>
<h3>{{$p.t('profilUpdate', 'profilUpdateRequests')}}</h3>
<loading ref="loadingModalRef" :timeout="0"></loading>
<core-filter-cmpt v-if="profilUpdateStates && categoryLoaded" :title="$p.t('profilUpdate','profilUpdateRequests')" ref="UpdatesTable" :tabulatorEvents="profilUpdateEvents" :tabulator-options="profilUpdateOptions" tableOnly :sideMenu="false" />
<div class="col-auto row row-cols-lg-auto g-3 d-flex justify-content-end">
<div class="col-12">
<select class="mb-0 form-select" v-model="filter" @change="updateData" aria-label="Profil updates display selection">
<option :selected="true" :value="profilUpdateStates['Pending']" >{{$p.t('profilUpdate','pendingRequests')}}</option>
<option :value="profilUpdateStates['Accepted']">{{$p.t('profilUpdate','acceptedRequests')}}</option>
<option :value="profilUpdateStates['Rejected']">{{$p.t('profilUpdate','rejectedRequests')}}</option>
<option :value="'Alle'">{{$p.t('profilUpdate','allRequests')}}</option>
</select>
</div>
</div>
<core-filter-cmpt
v-if="profilUpdateStates && categoryLoaded"
ref="UpdatesTable"
:tabulatorEvents="profilUpdateEvents"
:tabulator-options="profilUpdateOptions"
table-only
:sideMenu="false">
</core-filter-cmpt>
</div>`,
};
+57
View File
@@ -1558,6 +1558,63 @@ $filters = array(
}',
'oe_kurzbz' => null,
),
array(
'app' => 'core',
'dataset_name' => 'profileupdate',
'filter_kurzbz' => 'ProfilupdatePending',
'description' => '{Ausstehende Anfragen}',
'sort' => 1,
'default_filter' => true,
'filter' => '
{
"name": "Ausstehende Anfragen",
"columns": [
{"name": "uid"},
{"name": "name"},
{"name": "studiengang"},
{"name": "orgform"},
{"name": "oezuordnung"},
{"name": "status_translated"},
{"name": "topic"},
{"name": "insertamum_iso"},
{"name": "semester"}
],
"filters": [
{
"name": "status_translated",
"option": "",
"operation": "equal",
"condition": "true"
}
]
}',
'oe_kurzbz' => null,
),
array(
'app' => 'core',
'dataset_name' => 'profileupdate',
'filter_kurzbz' => 'ProfilupdateAlle',
'description' => '{Alle Anfragen}',
'sort' => 1,
'default_filter' => false,
'filter' => '
{
"name": "Alle Anfragen",
"columns": [
{"name": "uid"},
{"name": "name"},
{"name": "studiengang"},
{"name": "orgform"},
{"name": "oezuordnung"},
{"name": "status_translated"},
{"name": "topic"},
{"name": "insertamum_iso"},
{"name": "semester"}
],
"filters": []
}',
'oe_kurzbz' => null,
),
);