Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core
Sie können eigene Tabs in die Seitenleiste von agorum core hinzufügen, etwa, wenn Sie eine neue aguila-basierte UI entwickelt haben und diese systemweit (oder nur für bestimmte Benutzer) als neuen Tab anzeigen lassen möchten.
So definieren Sie einen provider:
Eigene Dateien/Administration/customers/<Konfigurationsprojekt>/js
Verwenden Sie die Aktion home provider registrieren im agorum core template manager, um einen provider nach der Definition im System zu registrieren.
Registriert einen neuen Tab in der Seitenleiste.
Syntax
home.registerTab(<tab>);
Felder zum Parameter „tab“
Feld | Beschreibung |
---|---|
type (optional) | Definiert den Namen des registrierten Tab-Typs, den das System für diesen Tab verwendet (siehe Funktion registerType).
|
name | Definiert einen eindeutigen internen Namen für diesen Tab.
|
text | Definiert den Titel, den der Benutzer für diesen Tab in der Seitenleiste und im Seitentitel des Browsers sieht. |
icon | Definiert das aguila-Icon, das der Benutzer für diesen Tab in der Seitenleiste und vor dem Seitentitel des Browsers sieht. |
aon | Definiert die Beschreibung des aguila-Widgets, den das System als Tab anzeigt. |
Beispiel
Dieses Beispiel zeigt die Anwendung der Funktion.
module.exports = home => { home.registerTab({ name: 'sample.package.tab.test', text: 'Test-Tab', icon: 'agorum:rounded-square-5;color=LightSeaGreen;scale=.9|ionicon:search;color=white;scale=.8', aon: { type: 'sample.package.tab.test' } }); };
Registriert einen neuen Tab-Typ, den darauffolgende registerTab-Aufrufe verwenden können.
Syntax
home.registerType(<name>, <builder>);
Parameter
Parameter | Beschreibung |
---|---|
name | Definiert einen eindeutigen internen Namen für diesen Tab-Typ. Sie können diesen Tab-Typ als type für Aufrufe der Funktion registerTab verwenden (siehe Beispiel). |
builder | Definiert Funktionen, die das System aufruft, wenn Sie einen Tab dieses Typs registrieren.
|
Dieses Beispiel zeigt die Anwendung der Funktion.
module.exports = home => { // Neuen Typ "sample.package.tab.type" registrieren home.registerType('sample.package.tab.type', tab => { tab.name = 'sample.package.tab.type.' + tab.id; tab.text = 'Test-Tab ' + tab.id; tab.icon = 'agorum:rounded-square-5;color=LightSeaGreen;scale=.9|ionicon:search;color=white;scale=.8'; tab.aon = { type: 'sample.package.tab.test', id: tab.id }; }); // Typ "sample.package.tab.type" zur Registrierung eines neuen Tabs verwenden home.registerTab({ type: 'sample.package.tab.type', id: '475dc69e-221c-4fae-9466-cf94bd6c2386' }); };
Ändert den Titel oder das Icon eines bereits registrierten Tabs.
Syntax
home.updateTab(<tab>);
Felder zum Parameter "tab"
Feld | Beschreibung |
---|---|
name | Ändert den internen Namen für diesen Tab.
|
text | Ändert den Titel, den der Benutzer für diesen Tab in der Seitenleiste und im Seitentitel des Browsers sieht. |
icon | Ändert das aguila-Icon, das der Benutzer für diesen Tab in der Seitenleiste und vor dem Seitentitel des Browsers sieht. |
Beispiel
Dieses Beispiel zeigt die Anwendung der Funktion in Kombination mit der Funktion sub.
/* global sc */ module.exports = home => { home.sub('sample.package.broadcast.channel.title.' + sc.loginUser.UUID, () => { home.updateTab({ name: 'sample.package.tab.test', text: 'Test-Tab neuer Titel' icon: 'agorum:rounded-square-5;color=LightSeaGreen;scale=.9|ionicon:search;color=white;scale=.8', }); }); };
Signalisiert agorum.home, dass neue Tabs verfügbar sind oder bisher vorhandene Tabs nicht mehr existieren.
Das System aktualisiert die Seitenleisten aller aktuell geöffneten Anmeldungen des Benutzers.
Syntax
home.refresh(<changedTabs>);
Parameter
Parameter | Beschreibung |
---|---|
changedTabs (optional) | Definiert ein Array mit den Namen von Tabs, die sich inhaltlich geändert haben. Ist ein hier aufgeführter Tab geöffnet, erzeugt agorum.home ihn neu, um ihn zu aktualisieren. |
Beispiel
Dieses Beispiel zeigt die Anwendung der Funktion in Kombination mit der Funktion sub.
module.exports = home => { home.sub('sample.package.broadcast.channel.changed.' + sc.loginUser.UUID, () => home.refresh()); };
Registriert einen provider für einen broadcast-Kanal, um etwa auf Änderungen von Objekten zu reagieren oder sich mit anderen Komponenten austauschen zu können.
agorum.home löst diese Registrierung automatisch wieder auf, wenn das System den provider nicht mehr benötigt.
Syntax
home.sub(<channel>, <handler>);
Parameter
Parameter | Beschreibung |
---|---|
channel | Definiert den Namen des Kanals, für den die Registrierung gilt. |
handler | Funktion, die das System aufruft, wenn der Kanal eine Nachricht empfangen hat. |
Beispiel
Dieses Beispiel zeigt die Anwendung der Funktion.
module.exports = home => { home.sub('object-updated-' + object.UUID, () => { // Das Objekt 'object' wurde geändert, nun könnten etwa Titel und Icon eines Tabs aktualisiert werden. }); };
home.registerTab({ // name muss eindeutig sein name: 'meine.grundlagen.beispiele.menu', text: 'Menü', // icon kann über Icon erstellen designt werden icon: 'ionicon:fast-food-outline;color=DarkRed;slot=center;scale=2;translate=0.14,0', aon:{ type: 'agorum.composite.details', // Pfad des darszustellenden Objektes id: '/agorum/roi/Files/agorum academy Schulung - Grundlagen zur Erstellung eigener Konfigs/Anpassung der Seitenleiste/Kantinenessen.html' } });
home.registerTab({ name: 'meine.grundlagen.beispiele.acic.reklamationen.anfragen', text: 'Suche Reklamationen & Anfragen', icon: 'ionicon:document-text-outline;slot=left;scale=1.51|mdi:thumb-down;color=FireBrick;slot=top-right;scale=0.86;translate=0.1,0|mdi:thumb-up;color=SeaGreen;slot=bottom-right;scale=0.86;translate=0.1,0', aon:{ type: 'agorum.composite.acic', settingName: 'meine.grundlagen.beispiele - FilterAnfragen & Reklamationen' } });
Tipp: Sie holen sich den settingName mit der Aktion Search query builder im agorum core template manager. Sie wählen dort den anzuzeigenden Filter aus. Der in der Oberfläche angezeigte Parameter selectedSettingName zeigt den Wert an, den Sie bei settingName eintragen.
home.registerTab({ name: 'meine.grundlagen.beispiele.aguila.spiel-widget', text: 'Demo', icon: 'agorum:rounded-square-5;color=MediumVioletRed;scale=0.9|agorum:agorum-logo;color=white;scale=0.81', aon:{ // Registrierungsname des Widgets type: 'meine.grundlagen.beispiele.spielWidget' } });
Tipp: Damit das Widget der Darstellung des Explorers ähnelt, arbeiten Sie mit einem agorum.border-Widget.
Beispielcode
/* jshint unused: true */ let aguila = require('common/aguila'); let widget = aguila.create({ type: 'agorum.border', // Breite & Höhe ist für die Integration in die Seitenleiste egal, aber wichtig, wenn man jetzt im Skript auf RUN klicken kann width: 800, height: 600, docked: { center: { type: 'agorum.composite.form.basic', labelPosition: 'top', border: true, elements: [ { type: 'agorum.composite.form.element.text', label: 'Text', name: 'text' } ] } } }); widget;
home.registerTab({ name: 'meine.grundlagen.beispiele.url', text: 'MonkeyUser.com', icon: 'agorum:rounded-square-5;color=#0069b5|ionicon:happy-outline;color=white', url: 'https://www.monkeyuser.com/' });
/* global sc */ let objects = require('common/objects'); module.exports = home => { home.registerTab({ name: 'agorum.doc.test.acworkflow.tasks', text: 'Workflow-Aufgaben (Dokumentation)', aon: { type: 'agorum.composite.acic', settingName: 'acworkflow.tasks', }, }); };
Soll der neue Eintrag in der Seitenleiste nicht jedem Benutzer zur Verfügung stehen, berechtigen Sie den Befehl mit folgenden Code-Zeilen:
if (objects.mayDiscover('<ACL>')) { }
Setzen Sie die IF-Bedingung um den entsprechenden home.registerTab, etwa:
if (objects.mayDiscover('<ACL>')) { home.registerTab({ name: 'meine.grundlagen.beispiele.acic.reklamationen.anfragen', text: 'Suche Reklamationen & Anfragen', icon: ... ... } }); }
Sie können die Seitenleiste über die Funktion finalize anpassen, nachdem das System die Seitenleiste vollständig geladen hat.
Gängige Einsatzzwecke sind:
Die Funktion „finalize“ verwenden
Registrieren Sie die Funktion finalize in Ihrem provider.js-Code folgendermaßen:
module.exports.finalize = home => { // home.tabs };
Durch die Modifikation von home.tabs können Sie dann Einfluss auf die vorhandenen Tabs der Seitenleiste nehmen.
Den Standard-Explorer-Eintrag entfernen
Folgendes Beispiel entfernt den Standard-Explorer-Tab aus der Seitenleiste:
module.exports.finalize = home => { home.tabs = home.tabs.filter(tab => { return tab.name !== 'agorum.asa.Einstieg'; }); };
Tipp: Um herauszufinden, wie ein Tab heißt:
module.exports.finalize = home => { console.log('Home-Tabs', home.tabs); };
Ein Symbol und den Text des Standard-Explorer-Eintrags ändern
module.exports.finalize = home => { // finden des explorer tabs let explorerTab = home.tabs.find(tab => tab.name === 'agorum.asa.Einstieg'); if (explorerTab) { explorerTab.icon = 'agorum:agorum-logo;color=#003f85'; explorerTab.text = 'Mein Explorer'; } };
Der Explorer besitzt jetzt in der Seitenleiste ein agorum-Symbol und den Text Mein Explorer.
Hinweis: Wenn Sie diesen Code verwenden, kann der Benutzer Icons oder Texte für diesen Eintrag nicht mehr anpassen.
Die Reihenfolge der Tabs ändern
Da die Tabs ein JavaScript-Array sind, können Sie diese umsortieren.
Folgendes Beispiel dreht die Reihenfolge der Tabs um:
module.exports.finalize = home => { // Reihenfolge umdrehen home.tabs = home.tabs.reverse(); };
Hinweis: Wenn Sie diesen Code verwenden, kann der Benutzer die Reihenfolge der Tabs nicht mehr bestimmen.