mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 20:29:29 +00:00
improvements
This commit is contained in:
@@ -17,7 +17,22 @@ class Studentenverwaltung extends FHC_Controller
|
||||
{
|
||||
// TODO(chris): load stgs (this is just for testing)
|
||||
$this->load->model('organisation/Studiengang_model', 'StudiengangModel');
|
||||
$result = $this->StudiengangModel->loadWhere(['aktiv' => true]);
|
||||
|
||||
$this->StudiengangModel->addJoin('public.tbl_lehrverband v', 'studiengang_kz');
|
||||
|
||||
$this->StudiengangModel->addDistinct();
|
||||
$this->StudiengangModel->addSelect('v.studiengang_kz');
|
||||
$this->StudiengangModel->addSelect('tbl_studiengang.bezeichnung');
|
||||
$this->StudiengangModel->addSelect('kurzbzlang');
|
||||
$this->StudiengangModel->addSelect('erhalter_kz');
|
||||
$this->StudiengangModel->addSelect('typ');
|
||||
$this->StudiengangModel->addSelect('kurzbz');
|
||||
|
||||
$this->StudiengangModel->addOrder('erhalter_kz');
|
||||
$this->StudiengangModel->addOrder('typ');
|
||||
$this->StudiengangModel->addOrder('kurzbz');
|
||||
|
||||
$result = $this->StudiengangModel->loadWhere(['v.aktiv' => true]);
|
||||
if (isError($result))
|
||||
return $this->outputJson($result);
|
||||
if (!hasData($result))
|
||||
@@ -57,4 +72,78 @@ class Studentenverwaltung extends FHC_Controller
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param integer $studiengang_kz
|
||||
* @return void
|
||||
*/
|
||||
public function getStudents($studiengang_kz = null)
|
||||
{
|
||||
// TODO(chris): stdSem?
|
||||
$stdSem='SS2023';
|
||||
|
||||
// TODO(chris): load students filtered by the params
|
||||
$this->load->model('crm/Prestudent_model', 'PrestudentModel');
|
||||
|
||||
$this->PrestudentModel->addJoin('public.tbl_person p', 'person_id');
|
||||
$this->PrestudentModel->addJoin('public.tbl_student s', 'prestudent_id');
|
||||
$this->PrestudentModel->addJoin('public.tbl_benutzer b', 's.student_uid=b.uid');
|
||||
$this->PrestudentModel->addJoin('public.tbl_studentlehrverband v', 'v.student_uid=s.student_uid AND v.studiensemester_kurzbz=' . $this->PrestudentModel->escape($stdSem));
|
||||
|
||||
$this->PrestudentModel->addSelect('p.person_id');
|
||||
$this->PrestudentModel->addSelect('s.prestudent_id');
|
||||
$this->PrestudentModel->addSelect('b.uid');
|
||||
$this->PrestudentModel->addSelect('titelpre');
|
||||
$this->PrestudentModel->addSelect('titelpost');
|
||||
$this->PrestudentModel->addSelect('vorname');
|
||||
$this->PrestudentModel->addSelect('wahlname');
|
||||
$this->PrestudentModel->addSelect('vornamen');
|
||||
$this->PrestudentModel->addSelect('geschlecht');
|
||||
$this->PrestudentModel->addSelect('nachname');
|
||||
$this->PrestudentModel->addSelect('gebdatum');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.anmerkung');
|
||||
$this->PrestudentModel->addSelect('ersatzkennzeichen');
|
||||
$this->PrestudentModel->addSelect('svnr');
|
||||
$this->PrestudentModel->addSelect('s.matrikelnr');
|
||||
$this->PrestudentModel->addSelect('p.anmerkung AS anmerkungen');
|
||||
$this->PrestudentModel->addSelect('v.semester');
|
||||
$this->PrestudentModel->addSelect('v.verband');
|
||||
$this->PrestudentModel->addSelect('v.gruppe');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.studiengang_kz');
|
||||
$this->PrestudentModel->addSelect('aufmerksamdurch_kurzbz');
|
||||
$this->PrestudentModel->addSelect('mentor');
|
||||
$this->PrestudentModel->addSelect('b.aktiv AS bnaktiv');
|
||||
$this->PrestudentModel->addSelect("(SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung LIMIT 1) AS email_privat", false);
|
||||
$this->PrestudentModel->addSelect("(SELECT rt_gesamtpunkte AS punkte FROM public.tbl_prestudent WHERE prestudent_id=s.prestudent_id) AS punkte", false);
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.dual');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.reihungstest_id');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.anmeldungreihungstest');
|
||||
$this->PrestudentModel->addSelect('p.matr_nr');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.gsstudientyp_kurzbz');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.aufnahmegruppe_kurzbz');
|
||||
$this->PrestudentModel->addSelect('tbl_prestudent.priorisierung');
|
||||
$this->PrestudentModel->addSelect('p.zugangscode');
|
||||
$this->PrestudentModel->addSelect('p.bpk');
|
||||
|
||||
$this->PrestudentModel->addOrder('nachname');
|
||||
$this->PrestudentModel->addOrder('vorname');
|
||||
|
||||
// TODO(chris): do we need that? do we want that?
|
||||
if ($studiengang_kz === null)
|
||||
$this->PrestudentModel->addLimit(1000);
|
||||
|
||||
if ($studiengang_kz !== null)
|
||||
$result = $this->PrestudentModel->loadWhere([
|
||||
'tbl_prestudent.studiengang_kz' => $studiengang_kz
|
||||
]);
|
||||
else
|
||||
$result = $this->PrestudentModel->load();
|
||||
|
||||
if (isError($result)) {
|
||||
$this->output->set_status_header(REST_Controller::HTTP_INTERNAL_SERVER_ERROR);
|
||||
$this->outputJson(getError($result));
|
||||
} else {
|
||||
$this->outputJson(getData($result));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,12 +33,12 @@
|
||||
<div class="offcanvas-header justify-content-end px-1 d-md-none">
|
||||
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
||||
</div>
|
||||
<stv-verband></stv-verband>
|
||||
<stv-verband @select-verband="onSelectVerband"></stv-verband>
|
||||
</nav>
|
||||
<main class="col-md-8 ms-sm-auto col-lg-9 col-xl-10">
|
||||
<vertical-split>
|
||||
<template #top>
|
||||
<stv-list v-model:selected="selected"></stv-list>
|
||||
<stv-list ref="stvList" v-model:selected="selected"></stv-list>
|
||||
</template>
|
||||
<template #bottom>
|
||||
<stv-details :student="lastSelected"></stv-details>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
import FhcSearchbar from "../components/searchbar/searchbar.js";
|
||||
import StvVerband from "../components/Studienverwaltung/Verband.js";
|
||||
import StvList from "../components/Studienverwaltung/List.js";
|
||||
import StvStudent from "../components/Studienverwaltung/Student.js";
|
||||
import StvDetails from "../components/Studienverwaltung/Details.js";
|
||||
import VerticalSplit from "../components/verticalsplit/verticalsplit.js";
|
||||
import fhcapifactory from "./api/fhcapifactory.js";
|
||||
|
||||
@@ -29,7 +29,7 @@ const app = Vue.createApp({
|
||||
FhcSearchbar,
|
||||
StvVerband,
|
||||
StvList,
|
||||
StvStudent,
|
||||
StvDetails,
|
||||
VerticalSplit
|
||||
},
|
||||
data() {
|
||||
@@ -78,6 +78,9 @@ const app = Vue.createApp({
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onSelectVerband(link) {
|
||||
this.$refs.stvList.updateUrl(link);
|
||||
},
|
||||
searchfunction(searchsettings) {
|
||||
return Vue.$fhcapi.Search.search(searchsettings);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {CoreFilterCmpt} from "../filter/Filter.js";
|
||||
import {CoreRESTClient} from '../../RESTClient.js';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -13,22 +14,16 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
tabulatorOptions: {
|
||||
columns:[ //Define Table Columns
|
||||
{title:"Name", field:"name", width:150},
|
||||
{title:"Age", field:"age", hozAlign:"left", formatter:"progress"},
|
||||
{title:"Favourite Color", field:"col"},
|
||||
{title:"Date Of Birth", field:"dob", sorter:"date", hozAlign:"center"},
|
||||
],
|
||||
data: [
|
||||
{id:1, name:"Oli Bob", age:"12", col:"red", dob:""},
|
||||
{id:2, name:"Mary May", age:"1", col:"blue", dob:"14/05/1982"},
|
||||
{id:3, name:"Christine Lobowski", age:"42", col:"green", dob:"22/05/1982"},
|
||||
{id:4, name:"Brendon Philips", age:"125", col:"orange", dob:"01/08/1980"},
|
||||
{id:5, name:"Margret Marmajuke", age:"16", col:"yellow", dob:"31/01/1999"},
|
||||
{id:6, name:"Oli Bob", age:"12", col:"red", dob:""},
|
||||
{id:7, name:"Mary May", age:"1", col:"blue", dob:"14/05/1982"},
|
||||
{id:8, name:"Christine Lobowski", age:"42", col:"green", dob:"22/05/1982"},
|
||||
{id:9, name:"Brendon Philips", age:"125", col:"orange", dob:"01/08/1980"}
|
||||
ajaxURL: CoreRESTClient._generateRouterURI("components/Studentenverwaltung/getStudents"),
|
||||
|
||||
//autoColumns: true,
|
||||
columns:[
|
||||
{title:"UID", field:"uid"},
|
||||
{title:"TitelPre", field:"titelpre"},
|
||||
{title:"Nachname", field:"nachname"},
|
||||
{title:"Vorname", field:"vorname"},
|
||||
{title:"Wahlname", field:"wahlname", visible:false},
|
||||
// TODO(chris): IMPLEMENT!
|
||||
],
|
||||
|
||||
height: 'auto',
|
||||
@@ -48,6 +43,10 @@ export default {
|
||||
},
|
||||
rowSelectionChanged(data) {
|
||||
this.$emit('update:selected', data);
|
||||
},
|
||||
updateUrl(url) {
|
||||
this.$refs.table.tabulator.setData(CoreRESTClient._generateRouterURI(url));
|
||||
console.log(CoreRESTClient._generateRouterURI(url));
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -55,6 +54,7 @@ export default {
|
||||
template: `
|
||||
<div class="stv-list h-100 pt-3">
|
||||
<core-filter-cmpt
|
||||
ref="table"
|
||||
:tabulator-options="tabulatorOptions"
|
||||
:tabulator-events="tabulatorEvents"
|
||||
table-only
|
||||
|
||||
@@ -5,6 +5,9 @@ export default {
|
||||
TreeTable: primevue.treetable,
|
||||
TreeColumn: primevue.column
|
||||
},
|
||||
emits: [
|
||||
'selectVerband'
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
@@ -31,15 +34,19 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
onSelectTreeNode(node) {
|
||||
if (node.link)
|
||||
this.$emit('selectVerband', node.link);
|
||||
},
|
||||
mapResultToTreeData(el) {
|
||||
const cp = {
|
||||
data: el
|
||||
};
|
||||
if (el.studiengang_kz !== undefined) {
|
||||
// TODO(chris): scrolling doesn't work
|
||||
cp.key = el.studiengang_kz;
|
||||
cp.data.name = el.bezeichnung;
|
||||
cp.data.name = el.kurzbzlang + ' (' + (el.typ + el.kurzbz).toUpperCase() + ') - ' + el.bezeichnung;
|
||||
cp.leaf = false;
|
||||
cp.link = 'components/Studentenverwaltung/getStudents/' + el.studiengang_kz;
|
||||
}
|
||||
if (el.children)
|
||||
cp.children = el.children.map(this.mapResultToTreeData);
|
||||
@@ -62,7 +69,7 @@ export default {
|
||||
});
|
||||
},
|
||||
template: `
|
||||
<tree-table class="stv-verband p-treetable-sm" :value="nodes" lazy @node-expand="onExpandTreeNode" scrollable scroll-height="flex">
|
||||
<tree-table class="stv-verband p-treetable-sm" :value="nodes" lazy @node-expand="onExpandTreeNode" selection-mode="single" @node-select="onSelectTreeNode" scrollable scroll-height="flex">
|
||||
<tree-column field="name" header="Verband" expander></tree-column>
|
||||
</tree-table>`
|
||||
};
|
||||
Reference in New Issue
Block a user