Baumstrukturen
Mit Stud.IP 5.4 wurden die alten Implementierungen für die Darstellung und Verwaltung der Studienbereiche und Einrichtungshierarchie neu implementiert und eine generische Lösung für die Abbildung von Baumstrukturen geschaffen.
Grundlage ist das neue Interface StudipTreeNode. Dieses bietet generische Methoden zum Zugriff auf Bäume:
static getNode($id)liefert den Knoten mit der angegebenen IDhasChildNodes()zeigt an, ob der aktuelle Knoten Kindknoten hatgetChildNodes()liefert die Kindknoten des aktuellen Knotensstatic getCourseNodes($course_id)liefert die Knoten, denen die angegebene Veranstaltung zugeordnet ist.- getter-Methoden für ID, Name, Beschreibung, Bild/Icon
countCourses($semester_id, $semclass, $withChildren)zählt die Veranstaltungen, die diesem Knoten (oder je nach der EinstellungwithChildrenauch den Unterknoten) zugeordnet sind, gefiltert nach Semester und KategoriegetCourses($semester_id, $semclass, $searchterm, $withChildren)liefert die Veranstaltungen, die diesem Knoten (oder je nach der EinstellungwithChildrenauch den Unterknoten) zugeordnet sind, gefiltert nach Semester, Kategorie und/oder SuchbegriffgetAncestorsliefert eine Liste aller “Vorfahren” in der Hierarchie, in der Form{ id, name }
Implementierende Klassen sind aktuell StudipStudyArea und RangeTreeNode.
Zentrale Komponente ist hier StudipTree. Ein Baum kann auf verschiedene Arten dargestellt werden, dafür gibt es weitere Vue-Komponenten:
StudipTreeTablezeigt die Ebenen des Baums analog zum Dateibereich als Tabelle anStudipTreeListzeigt die Ebenen des Baums analog zur alten Veranstaltungssuche als Liste von Kacheln anStudipTreeNodezeigt den Baum als aufklappbare Hierarchie
StudipTree ist vielfältig konfigurierbar, um die Ausgabe zu steuern:
viewTypedefiniert die Art der Darstellung, entweder ‘table’, ‘list’ oder ‘tree’startIdID des Startknotens zur Anzeige (die IDs sind von der Form ‘Klassenname_ID’)titleAnzuzeigender Titel für den BaumopenNodesListe bereits offener Knoten (nur sinnvoll für Anzeige als Baum)openLevelsAllgemeine Zahl geöffneter Ebenen (nur sinnvoll für Anzeige als Baum)withChildrenUnterebenen anzeigen?withCoursesZugeordnete Veranstaltungen anzeigen?semesterVoreingestelltes Semester im SidebarfiltersemClassVoreingestellte Kategorie im SidebarfilterbreadcrumbIconIcon für die BrotkrumennavigationitemIconIcon für die Unterebenenen in der Tabellenanzeige (aktuell fest auf “Ordner” verdrahtet)withSearchZeige eine Veranstaltungssuche an?withExportZeige einen Exportlink für vorhandene Veranstaltungen/Suchergebnisse?editUrlURL zum Bearbeitungsformular eines existierenden KnotenscreateUrlURL zum Anlegedialog eines neuen KnotensdeleteUrlURL zum Löschen eines existierenden KnotensshowStructureAsNavigationZeige zusätzlich zur regulären Darstellung noch eine Baumstruktur als Inhaltsverzeichnis? (Nur sinnvoll bei Tabellen- oder Listendarstellung)assignableSind die Knoten zuweisbar?
JSON-API
Abschnitt betitelt „JSON-API“Es wurden neue Routen zum Konstruieren der Baumstruktur bereitgestellt:
/tree-node/{id}Hole den Knoten mit der angegebenen ID/tree-node/{id}/childrenHole die Kindknoten der angegebenen ID/tree-node/{id}/courseinfoHole Informationen über die Anzahl der zugeordneten Veranstaltungen/tree-node/{id}/coursesHole die zugeordneten Veranstaltungen/tree-node/course/pathinfo/{classname}/{id}Hole die Pfade im Baum, denen die angegebene Veranstaltung zugeordnet ist/tree-node/course/details/{id}Hole Informationen der angegebenen Veranstaltung, die einem Baumknoten zugeordnet ist (Lehrende, Semester, Termine)
Verwendung
Abschnitt betitelt „Verwendung“An jedem Element mit dem Attribut data-studip-tree wird automatisch eine Baumanzeige erzeugt, wenn dort entsprechend die Vue-Komponente StudipTree vorhanden ist.