IrisMessenger
Einleitung
Der IrisMessenger ist das globale Nachrichtensystem für Hermeneus. Es ermöglicht das Anzeigen von Benachrichtigungen in verschiedenen Kategorien (Dialog, Toast, Flash, Bar, Confirm) und Typen wie success, info, danger und confirm. Jede Nachricht kann optional eine Callback-Funktion und einen Selbstzerstörungstimer haben.
Implementierung in Hermeneus
Der Messenger ist als Pinia-Store via Global Property in der Vue-Instanz definiert. Er kann überall in Vue über this.$IrisMessengerStore aufgerufen werden.
Nachrichtenmethoden
Es gibt fünf Nachrichten-Kategorien, für die auch ein entsprechendes Template in der Komponente IrisMessenger.vue definiert ist:
dialog: Dialogfenster in der Mitte des Bildschirmsconfirm: Dialogfenster mit OK- und Abbrechen-Button: Für die Aktion, die mit Klick auf OK ausgeführt wird, muss eine Callback-Funktion übergeben werden.toast: Dialogfenster, in der unteren Mitte des Bildschirms (üblicherweise mit Timer)flash: Dialogfenster, das unten rechts auf dem Bildschirm erscheint (üblicherweise mit Timer)bar: Leiste, die oben auf dem Bildschirm erscheint (üblicherweise mit Timer)openLoader: Ladebildschirm mit Loader, der alle Nutzerinteraktionen blockiert. MitcloseLoaderwird der Ladebildschirm wieder geschlossen, falls keinselfDestructTimergesetzt wurde.
Nachrichten-Typen
Der Typ der Nachricht bestimmt das Aussehen der Nachricht. Es gibt vier Typen:
info: i.d.R. weiße Nachrichtsuccess: i.d.R. grüne Nachrichtwarning: i.d.R. gelbe Nachrichtdanger: i.d.R. rote Nachricht
Anwendung in Vue
Eine einfache Dialog-Nachricht anzeigen
this.$IrisMessenger.dialog({
type: 'info',
title: 'Information',
message: 'Dies ist eine Informationsnachricht.'
});Confirm-Nachricht mit Callback-Funktion
Hier wird standardmäßig ein Bestätigungsdialog mit OK- und Abbrechen-Button angezeigt. Wenn der Benutzer auf "OK" klickt, wird die Callback-Funktion ausgeführt.
this.$IrisMessenger.confirm({
type: 'info',
title: 'Bestätigung erforderlich',
message: 'Sind Sie sicher, dass Sie den Ruhm und Glanz des antiken Römischen Reiches wiederherstellen wollen?',
callback: () => {
console.log('Die Nachricht wurde bestätigt.');
}
});Nachricht mit Selbstzerstörungstimer
Hier wird eine Nachricht angezeigt, die nach 5 Sekunden automatisch verschwindet.
this.$IrisMessenger.flash({
type: 'success',
title: 'Erfolg',
message: 'Die Nachricht wird in 5 Sekunden verschwinden.',
selfDestructTimer: 5000
});Anwendung außerhalb von Vue
Der Messenger kann auch außerhalb von Vue verwendet werden, indem er über das window-Objekt aufgerufen wird.
window.$IrisMessenger.flash({
type: 'info',
title: 'Information',
message: 'Dies ist eine Informationsnachricht.'
});Obacht! Falls die Nachricht von einem Blade-Template innerhalb eines <script>-Tags aufgerufen wird, muss das Attribut type="module" gesetzt werden:
<script type="module">
window.$IrisMessenger.flash({
type: 'info',
title: 'Information',
message: 'Dies ist eine Informationsnachricht.'
});
</script>Darstellung
Die Nachrichten werden in der Komponente IrisMessenger.vue dargestellt und durch verschiedene Templates gerendert:
<template>
<div class="no-outline" id="iris-messenger">
<iris-messenger-template-dialog v-if="template ==='dialog'" :messages="IrisMessengerStore.dialogMessages"/>
<iris-messenger-template-toast v-if="template ==='toast'" :messages="IrisMessengerStore.toastMessages"/>
<iris-messenger-template-confirm v-if="template ==='confirm'" :messages="IrisMessengerStore.confirmMessages"/>
</div>
</template>Erweiterung
Durch Hinzufügen eines neuen Templates kann die Darstellung der Nachrichten einfach erweitert werden. Allerdings muss dann im Store auch eine neue Kategorie hinzugefügt und ein entsprechender Getter (z.B. annoyingMessages) definiert werden.