Table height & Bug: Allowed/Shown Stgs in Component

This commit is contained in:
cgfhtw
2023-07-13 13:57:17 +02:00
parent f8da119ad7
commit c8fc6c747f
5 changed files with 80 additions and 23 deletions
@@ -29,6 +29,50 @@ class Leitung extends FHC_Controller
//------------------------------------------------------------------------------------------------------------------
// Public methods
public function getActiveStgs()
{
$studiengaenge = $this->permissionlib->getSTG_isEntitledFor('student/antragfreigabe');
$stgsNeuanlage = $this->permissionlib->getSTG_isEntitledFor('student/studierendenantrag');
$stgs = [];
if ($studiengaenge) {
$result = $this->StudierendenantragModel->loadForStudiengaenge($studiengaenge);
if (isError($result))
return $this->outputJson($result);
$antraege = getData($result) ?: [];
foreach ($antraege as $antrag) {
if (!isset($stgs[$antrag->studiengang_kz])) {
$stgs[$antrag->studiengang_kz] = new stdClass();
$stgs[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung;
$stgs[$antrag->studiengang_kz]->orgform = $antrag->orgform;
$stgs[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz;
}
}
}
if ($stgsNeuanlage) {
$result = $this->StudierendenantragModel->loadForStudiengaenge($stgsNeuanlage);
if (isError($result))
return $this->outputJson($result);
$antraege = getData($result) ?: [];
foreach ($antraege as $antrag) {
if (!isset($stgs[$antrag->studiengang_kz])) {
$stgs[$antrag->studiengang_kz] = new stdClass();
$stgs[$antrag->studiengang_kz]->bezeichnung = $antrag->bezeichnung;
$stgs[$antrag->studiengang_kz]->orgform = $antrag->orgform;
$stgs[$antrag->studiengang_kz]->studiengang_kz = $antrag->studiengang_kz;
}
}
}
$this->outputJsonSuccess($stgs);
}
public function getAntraege($studiengang = null)
{
@@ -82,7 +82,7 @@ class Studierendenantrag extends FHC_Controller
$stgL = [];
if ($studiengaenge) {
$result = $this->StudierendenantragModel->loadForStudiengaenge($studiengaenge);
$result = $this->StudiengangModel->loadWithOrgform($studiengaenge);
if (isError($result))
return show_error(getError($result));
$antraege = getData($result) ?: [];
@@ -99,7 +99,7 @@ class Studierendenantrag extends FHC_Controller
$stgA = [];
if ($stgsNeuanlage) {
$result = $this->StudierendenantragModel->loadForStudiengaenge($stgsNeuanlage);
$result = $this->StudiengangModel->loadWithOrgform($stgsNeuanlage);
if (isError($result))
return show_error(getError($result));
$antraege = getData($result) ?: [];
@@ -525,6 +525,20 @@ class Studiengang_model extends DB_Model
return $this->execQuery($query, $params);
}
public function loadWithOrgform($studiengang_kzs)
{
$sql = "SELECT index FROM public.tbl_sprache WHERE sprache='" . getUserLanguage() . "' LIMIT 1";
$this->addSelect($this->dbTable . '.*');
$this->addSelect('o.bezeichnung_mehrsprachig[(' . $sql . ')] AS orgform');
$this->addJoin('bis.tbl_orgform o', 'orgform_kurzbz');
$this->db->where_in($this->dbTable . '.studiengang_kz', $studiengang_kzs);
return $this->load();
}
/**
* @param array $studiengang_kzs
* @param array $not_antrag_typ (optional) If the prestudent has an antrag with one of the specified types it will be excluded from the result
@@ -23,45 +23,41 @@ export default {
return {
filter: undefined,
selectedData: [],
columns: []
columns: [],
stgs: []
}
},
computed: {
stgs(){
if(!this.stgL || !this.stgA)
return[];
let undesiredOutput = [...this.stgL, ...this.stgA];
let desiredOutput = undesiredOutput.reduce(
(accumulator, currentValue)=>
{
accumulator[currentValue.studiengang_kz] = currentValue;
return accumulator;
},
{}
);
return Object.values(desiredOutput);
},
stgkzL()
{
stgkzL() {
if (!this.stgL)
return [];
return this.stgL.map(stg => stg.studiengang_kz);
},
stgkzA()
{
stgkzA() {
if (!this.stgA)
return [];
return this.stgA.map(stg => stg.studiengang_kz);
}
},
methods: {
loadFilter() {
axios.get(
FHC_JS_DATA_STORAGE_OBJECT.app_root +
FHC_JS_DATA_STORAGE_OBJECT.ci_router +
'/components/Antrag/Leitung/getActiveStgs'
).then(result => {
this.stgs = Object.values(result.data.retval).sort((a,b) => a.bezeichnung == b.bezeichnung ? (a.orgform == b.orgform ? 0 : (a.orgform > b.orgform ? 1 : -1)) : (a.bezeichnung > b.bezeichnung ? 1 : -1));
}).catch(error => {
console.error(error);
});
},
changeFilter(evt) {
this.filter = evt.target.value || undefined;
this.reload();
},
reload() {
this.$refs.table.reload(this.filter);
this.loadFilter();
},
download() {
this.$refs.table.download();
@@ -270,6 +266,9 @@ export default {
BsAlert.popup(msg, {dialogClass: 'alert alert-danger'});
}
},
created() {
this.loadFilter();
},
template: `
<div class="studierendenantrag-leitung fhc-table">
<leitung-header
@@ -84,7 +84,7 @@ export default {
this.table = new Tabulator(this.$refs.table, {
placeholder:"Keine zu bearbeitenden Datensätze",
movableColumns: true,
maxHeight: '50vh',
height: '50vh',
layout: "fitDataStretch", // TODO(chris): wont work when changed
ajaxURL: this.ajaxUrl,
persistence: { // NOTE(chris): do not store column titles