VAMV_Dokumentation/Benutzerhandbuch.typ

735 lines
34 KiB
Plaintext

#import "dustypst/lang_de.typ": default_lang, note, important, tip, warning, caution
#import "dustypst/dustypst.typ": userdoc_project, linkfn, filepath, fill-box, code
#show: userdoc_project.with(
title: "Dokumentation VAMV - Benutzerhandbuch",
authors: (
(name: "David Holland", email: "Holland.David@lsjv.rlp.de", affiliation: "Entwickler", phone: "3204"),
),
lang: default_lang,
outlined: false,
)
#let screenshot(name, filename: none, folder: "img", extension: ".png", width: 100%) = [
#figure(
image(folder + "/" + if filename == none { name + extension } else { filename }, width: width),
caption: name
)#label(name
.replace(" ", "_")
.replace("(", "")
.replace(")", "")
.replace(",", "_")
)
]
#let heading_(level, content) = {
set heading(numbering: none)
heading(level: level, outlined: false)[#content]
}
#let def(reference) = super[(#reference)]
// === CONTENT START ===
#outline(title: "Inhaltsverzeichnis")
#outline(title: "Inhaltsverzeichnis Abbildungen", target: figure)
#pagebreak(weak: true)
#heading_(1)[Tipps zur Verwendung dieses Handbuchs]
Dieses Handbuch verwendet einige Konventionen und Formatierungen, die es Ihnen erleichtern sollen die Informationen aufzunehmen. Außerdem ist beabsichtigt, dass Sie auch nach dem erstmaligen Durchlesen, Informationen schnell und zuverlässig wiederfinden können, um eine schrittweise Einführung in das Programm zu ermöglichen.
#tip[
Falls Sie diesen Abschnitt überspringen und direkt zur Präambel gehen möchten, klicken Sie bitte hier:
#let preamble_loc = [@preamble].target
#link(preamble_loc)[*Springe zur Präambel*]
]
#heading_(2)[Blöcke]
Es gibt verschiedene Blöcke, die bestimmte Inhalte besonders hervorheben und beispielsweise entweder zusätzliche Informationen bereitstellen oder aber auch vor bestimmten häufigen Fehlern warnen.
#note[
Eine Anmerkung mit zusätzlichen Informationen oder Klarstellungen
]
#tip[
Ein Hinweis oder Tipp zur besseren Verwendung oder Zusatzinformationen, die hilfreich sein können
]
#important[
Wichtige Dinge, die es zu beachten gilt, oder die so nicht selbstverständlich sind
]
#warning[
Warnungen, die vor häufigen Fehlern warnen und diese verhindern sollen.
]
#caution[
Hier ist größte Vorsicht geboten, um nicht versehentlich genau das Gegenteil von dem zu tun, was beabsichtigt wurde.
]
#heading_(2)[Begriffe]
Dinge, die Sie genau so auf dem Bildschirm wiederfinden, oder im wörtlichen Sinne gemeint sind, bzw. feststehende Begrifflichkeiten darstellen, werden in der Regel in einer `Schreibmaschinenschrift` angezeigt.
#heading_(2)[Links]
Wenn es darum geht im Fließtext verschiedene Abschnitte (@preamble) zu erwähnen, oder Abbildungen (@Installations-Dialog) zu referenzieren, so sind diese immer mit einem Link versehen.
Sie können einfach auf den entsprechenden Text klicken, um zu der jeweiligen Stelle im Dokument zu springen.
#note[
Wenn Sie das PDF in einem hiermit kompatiblen Browser ansehen, können Sie i.d.R. sogar mit den "Seite vor / zurück" Knöpfen nach Klicken auf einen Link zurück zum Ausgangspunkt springen.
]
#heading_(3)[Abschnitte]
Falls es sich um einen Begriff handelt, der an anderer Stelle definiert / erklärt wurde, so wird dies in kleinerer Schrift angegeben:
/ Beispiel: Wir haben die Installation#def[@install] zuvor besprochen.
#note[
Damit Sie diesem Link folgen können, müssen Sie in den meisten Programmen etwas unter den Text klicken
]
#heading_(3)[Weblinks]
Ein Weblink wird in der Fußnotenzeile immer nochmal separat als vollständiger Link angegeben:
/ Beispiel: Hier geht es zur Webpräsenz des #linkfn("https://lsjv.rlp.de/de/startseite/")[LSJV].
#note[
Der Link ist jedoch nach wie vor anklickbar
]
#heading_(3)[Dateipfade]
Wenn es sich um einen Dateipfad/-namen handelt, so ist dieser blau hinterlegt:
/ Beispiel: #filepath("C:\\Windows")
#note[
Sie müssen den Dateipfad i.d.R. im Windows-Explorer öffnen, da dieser entweder nicht immer anklickbar ist, oder Ihr PDF-Programm das Öffnen von Datei-Links nicht unterstützt.
]
#heading_(2)[Auflistungen mit Erklärungen]
Falls eine Auflistung von Steuerelementen, Optionen, etc. eine Erklärung zu den einzelnen Punkten benötigt, sieht das in etwa so aus:
/ Ja: Bestätigt den Dialog
/ Nein: Lehnt den Dialog ab
/ Abbrechen: Bricht den gesamten Vorgang ab
#pagebreak(weak: true)
= Präambel <preamble>
Dieses Dokument dient der Einführung der Endanwender in die Software `VAMV` in der Programmversion `1.0.0` #text(.75em, linkfn("https://semver.org/")[(Semantische Versionierung)]), als auch als Dokumentation und Nachschlagewerk.
Im Folgenden werden der Großteil aller Funktionalitäten aufgelistet und erläutert.
Besonderer Fokus liegt hierbei auch auf jenen Funktionen, deren vermehrte und einfache Verwendung und Bedienung eine Integration in den Arbeitsablauf empfiehlt.
Das Dokument ist in mehrere Kapitel unterteilt, sodass eine sinngemäße Aufteilung, leichte Lesbarkeit und leichtes Wiederfinden von Informationen angestrebt wird.
= Installation <install>
Zunächst muss die Software auf dem PC installiert werden.
#note[
In der Regel werden hierfür keine Administrator-Berechtigungen benötigt.
]
#important[
Wenden Sie sich an den Ansprechpartner, falls Ihnen dies nicht möglich ist.
]
Hierfür müssen Sie den `Explorer` öffnen und zu folgendem Dateipfad auf dem Laufwerk #link("file:///R:/")[#filepath("R:")] (mit dem Namen #code("Vorlagen$")) navigieren: #link("file:///R:/VAMV/Programmdateien/VAMV/")[#filepath("R:\\VAMV\\Programmdateien\\VAMV")].
Hier finden Sie eine Datei namens #link("file:///R:/VAMV/Programmdateien/VAMV/VAMV.application")[#filepath("VAMV.application")].
Diese Datei müssen Sie nun öffnen.
Infolgedessen erscheint indessen ein Bestätigungsfenster (@Installations-Dialog), wo Sie auf `Installieren` klicken müssen.
#screenshot("Installations-Dialog", width: 80%)
Die Installation sollte inzwischen automatisch durchlaufen, die Software downloaden und anschließend für Ihren Benutzer installieren und anschließend automatisch öffnen.
#tip[
Sie finden die Anwendung in Zukunft ganz einfach unter dem Namen _VAMV_ in der Windows-Suche.
]
= Updates
Fall Sie die Software bereits installiert haben, brauchen Sie in der Regel nichts weiter tun, als das Programm zu öffnen.
Beim Start prüft das Programm automatisch auf Aktualisierungen und aktualisiert die Software, falls ein Update nötig ist.
#important[
Falls dies bei Ihnen nicht der Fall sein sollte, oder dieser Prozess fehlschlägt, setzen Sie sich bitte mit der Ansprechperson in Verbindung.
]
= Bedienung
Nachdem Sie also die Software geöffnet haben, begrüßt Sie erstmal eine ziemlich schlichte Ansicht (@Programmstart)
#screenshot("Programmstart")
== Die Menüleiste <menu_bar>
In der oberen Zeile sehen Sie eine Menüleiste, über die Sie auf alle Teile des Programms zentral zugreifen können.
/ Adressverwaltung#def[@address_man]: Hierüber gelangen Sie zur Adressdatenverwaltung, wo Sie die Adressdatensätze verwalten können
/ Veranstaltungsmanagement: _In der aktuellen Version deaktiviert_
/ Teilnahmen: _In der aktuellen Version deaktiviert_
/ Suchwort#def[@such_man]: Hierüber gelangen Sie zur Suchwortverwaltung, wo sie Suchworte verwalten können
/ Admin -> Benutzerverwaltung#def[@user_man]: Hier können Sie die Nutzer dieses Programms verwalten, falls Sie über die notwendigen Berechtigungen verfügen (@Menü_Benutzerverwaltung)
/ ? -> Info#def[@prog_info]: Hier findet sich u.A. die Version die Sie aktuell verwenden, sowie weitere Informationen über das Programm (@Menü_Info)
#screenshot("Menü Benutzerverwaltung", width: 40%)
#screenshot("Menü Info", width: 20%)
Wenn Sie jetzt eines der Elemente anklicken, gelangen Sie zum jeweiligen Programmabschnitt.
#note[
Hierbei schließt sich das Fenster nicht, sondern es wird ein neuer Tab für die jeweilige Bedienung geöffnet.
Somit können Sie optimal Multitasken.
]
#tip[
Sie können sogar auch innerhalb eines Programmabschnitts Bedienungen in einem anderen Abschnitt vornehmen, ohne den Datensatz, den Sie gerade bearbeiten, verlassen zu müssen.
Sie finden dazu aber mehr in @cascading.
]
== Die Tab-Leiste
Verschiedene Programmoperationen öffnen (Unter-)Tabs in der Oberfläche.
Diese Tabs sind anwählbar, um das entsprechende Unterfenster anzuzeigen.
Weiterhin sind diese Tabs mithilfe von Drag-and-drop verschieb- und sortierbar.
- Führen Sie hierzu einfach den Mauszeiger über einen Tab.
- Halten Sie nun die linke Maustaste gedrückt und ziehen Sie den Tab in einen vorhandenen Zwischenraum (zwischen zwei Tabs), oder an den Anfang, oder das Ende.
- Lassen Sie die Maus los
Falls zu viele Tabs geöffnet sind, um in die Tab-Leiste zu passen, lässt sich die Leiste, mithilfe der dann erscheinenden Knöpfe, nach links und rechts scrollen (@Tab_Scroll).
#screenshot("Tab Scroll")
== Suchansicht <master_view>
(Exemplarisch @Suche_Adressdatensatz)
/ Die Suchansicht#def[@master_view]: ist die erste Ansicht, die Sie beim Öffnen eines Programmabschnitts#def[@prog_part] zu Gesicht bekommen.
/ Die Menüleiste#def[@menu_bar]: bleibt unverändert bestehen.
/ Der Tabname: beginnt immer mit `Suche`. Unter dem Tabnamen sind zwei Knöpfe:\
#box[
/ Schließen: Schließt die Suchansicht
/ Eintrag hinzufügen: Erstellt einen leeren Datensatz
]
Darunter befindet sich eine tabellarische Auflistung aller Datensätze.
#note[
Für genauere Informationen zur Bedienung dieser Tabellenansichten, siehe @tables.
]
Hier können Sie die Datensätze durchsuchen und ansehen
=== Öffnen eines Datensatzes <open_detail_view>
Sie gelangen in der Regel über einen Doppelklick zur Detailansicht#def[@detail_view] des entsprechenden Programmteils.
#tip[
Alternativ lässt sich ein Datensatz auch mithilfe der Tastatur öffnen, hierzu mehr in @keyboard_nav.
]
== Detailansicht <detail_view>
(Exemplarisch @Adressdatensatz_Detailansicht_Hauptseite)
Nachdem Sie einen Datensatz geöffnet haben, öffnet sich ein neuer Tab mit der Detailansicht des Datensatzes.
Die Menüleiste#def[@menu_bar] bleibt auch hier unverändert bestehen.
Der Tabname beginnt immer mit einer Beschreibung des Datensatztyps (z.B. `Adressdatensatz [...]`), gefolgt von einer Beschreibung des Datensatzes (z.B. der Name).
=== Knöpfe <detail_view_buttons>
Unter dem Tabnamen sind drei Knöpfe:
/ Schließen: Schließt den Adressdatensatz
/ Schließen und Speichern: Verhält sich wie eine Kombination aus `Speichern` und `Schließen` in einem Handgriff/Knopfdruck. In der Regel praktischer als beides separat zu bedienen
/ Speichern: Speichert die Daten aus der aktuellen Ansicht in die Datenbank
/ Löschen: Löscht den Datensatz unwiderruflich aus der Datenbank
#warning[
Es ist wichtig, zwischen `Schließen` und `Speichern und Schließen` zu unterscheiden.
`Schließen` schließt die Ansicht ohne Rückfrage, um versehentliches Speichern von u.U. versehentlich modifizierten Daten zu vermeiden!
Wenn Sie also Ihre Änderungen gespeichert haben wollen, ist hier immer `Speichern und Schließen` die richtige Wahl.
Falls Sie den Datensatz jedoch nur zum Lesen geöffnet und keine Modifizierung vorgenommen haben, ist `Schließen` sogar die bessere Option, da hier ein versehentliches Überschreiben von Daten vermieden wird.
]
==== Speichern
Vor dem Speichern vergewissert sich das Programm, dass Sie tatsächlich speichern möchten (@Speichern_Dialog).
Haben Sie das Speichern initiiert, klicken Sie einfach auf `Ja`.
Sind Sie versehentlich auf `Speichern` gekommen, klicken Sie einfach auf `Nein` und der Speichervorgang wird abgebrochen.
Beide Fälle quittiert das Programm (@Speichern_Bestätigung, @Speichern_Abbruch).
#screenshot("Speichern Dialog", width: 60%)
#screenshot("Speichern Bestätigung", width: 50%)
#screenshot("Speichern Abbruch", width: 80%)
Vor dem Speichern wird weiterhin kontrolliert, ob alle Pflichtfelder befüllt sind und im Falle eines Adressdatensatzes, ob die E-Mail-Adresse korrekt ist.
Ist dies nicht der Fall, wird der Speichervorgang abgebrochen (@E-Mail_falsch).
#screenshot("E-Mail falsch", width: 70%)
#warning[
Wenn Sie den Vorgang abgebrochen haben oder das Programm die Speicherung verweigert hat, sind Ihre Daten noch ungespeichert.
Sie müssen die Daten erst in irgendeiner Form (berichtigen und) speichern, damit diese beim Schließen nicht verloren gehen!
]
=== Tabs
Darunter befinden sich weitere Tabs, die die Detailansicht in weitere Sektionen unterteilen. Hier sind je nach Programmabschnitt (und je nach deaktivierten Programmteilen, siehe @prog_part) verschiedene Tabs sichtbar und verfügbar
/ Hauptseite#def[@hauptseite]: Hier sind ein Großteil der Daten aus dem Datensatz erfasst
/ Subtabs#def[@subtab]:\
#box[
/ Suchworte: Hierüber lassen sich dem Datensatz Suchworte#def[@such_man] zuweisen
/ Veranstaltungen: Hierüber lassen sich z.B. Teilnahmen zuweisen
/ Adressdatensätze: Hierüber lassen sich dem Datensatz Adressdatensätze#def[@address_man] zuweisen
]
==== Hauptseite <hauptseite>
Hier sind der Großteil der Felder des Datensatzes abgebildet und stehen zum Lesen oder zur Bearbeitung zur Verfügung.
Dabei lassen sich
- Textfelder normal editieren
#important[
Alle Felder mit einem gelben Hintergrund, vor allem das häufig vorhandene Feld `Nummer`, lassen sich nicht bearbeiten!
Diese Felder sind in der Regel automatisch generiert und deshalb nicht von der Anwenderseite aus modifizierbar!
]
- Felder mit einem kleinen Pfeil nach unten (#sym.arrowhead.b) am rechten Rand des Feldes aufklappen und erweitert bearbeiten
- Felder mit einem kleinen Pfeil nach unten (#sym.triangle.filled.small.b) in der Mitte des Feldes anklicken und öffnen damit den entsprechenden Tab
==== Weitere Tabs <subtab>
In diesen Tabs, wie z.B. `Suchworte` oder `Adressdatensätze`, lassen sich einem Datensatz andere Datensätze aus einem anderen Programmteil zuweisen.
#note[
Wenn Ihnen die Tabellen und die Ansicht unter diesen Tabs bekannt vorkommt, liegen Sie genau richtig.
Der einzige Unterschied zur Suchansicht#def[@master_view] ist hier, dass eine zusätzliche Spalte ganz links hinzukommt, die es ermöglicht, die Datensätze zu (de-)selektieren.
]
Hier können Sie nun über Haken-Kästchen Datensätze an- bzw. abwählen.
Um die Zuweisung zu speichern, müssen Sie einfach den Datensatz speichern#def[@detail_view_buttons].
= Programmabschnitte <prog_part>
Das Programm ist in mehrere Abschnitte unterteilt, die eine Trennung der Daten, sowie eine unterschiedliche Bedienung bewirken, jedoch miteinander zusammenarbeiten.
Im Folgenden werden diese verschiedenen Abschnitte besprochen.
== Datenintegrität
In der Regel sollten Sie über dieses Thema nicht allzu viel nachdenken müssen, denn die Daten synchronisiert das Programm automatisch bei Änderungen zwischen den einzelnen Teilen und Tabs.
#note[
Dies geschieht soweit möglich, sprich bei lokalen Änderungen o.Ä., ganz ohne Datenbankzugriff, was in vielen Aspekten die Performance steigert und die Server vor unnötiger Auslastung schützt.
]
#important[
Wenn Sie jedoch ganz sicher sein wollen, dass Sie tatsächlich die aktuellen Daten aus der Datenbank vorliegen haben, beispielsweise wenn Ihr(e) Kolleg:in eine Änderung an einem Datensatz vorgenommen hat, kommen Sie zwangsläufig nicht um ein erneutes Holen der Daten aus der Datenbank nicht umhin.
Hierzu schließen Sie einfach den entsprechenden Tab und öffnen ihn anschließend neu.
Dies sorgt in der Regel für eine Aktualisierung der lokalen Daten.
]
== Die Adressdatenverwaltung <address_man>
=== Suchansicht
Wenn Sie die Adressverwaltung öffnen, sehen Sie zunächst die *Suchansicht* (@Suche_Adressdatensatz).
#screenshot("Suche Adressdatensatz")
Wenn Sie in dieser nun einen Datensatz öffnen#def[@open_detail_view], öffnet sich ein neuer Tab mit der Detailansicht
=== Detailansicht <address_man_detail_view>
Wenn Sie einen Adressdatensatz öffnen (@Adressdatensatz_Detailansicht_Hauptseite), oder einen neuen Adressdatensatz anlegen (@Adressdatensatz_Detailansicht_Hauptseite__neuer_Eintrag) sehen Sie nun die Hauptseite der Detailansicht des Datensatzes.
#screenshot("Adressdatensatz Detailansicht (Hauptseite)")
#screenshot("Adressdatensatz Detailansicht (Hauptseite, neuer Eintrag)")
Ein Adressdatensatz kann verschiedene Felder haben.
Pflichtfelder sind im Folgenden mit einem #emoji.lock markiert.
/ Institution 1 / 2 / 3: Hierüber kann die Zugehörigkeit eines Adressdatensatzes zu einer (oder mehreren) Institutionen vermerkt werden. (z.B. `Kreisverwaltung Mainz-Bingen`)
/ Anrede #emoji.lock: Drei hauptsächlich verwendeten Anreden stehen zur Auswahl: `Herr`, `Frau` und `(Div.)` für alle weiteren Fälle. Zum Spezialfall `(Inst.)` finden Sie mehr in @inst_datensatz
/ Titel: Titel wie z.B. `Dr. rer. nat.`, `Dipl. Ing.`, etc.
/ Vorname: Der Vorname
/ Nachname #emoji.lock: Der (Nach-)Name (siehe ebenfalls @inst_datensatz für den Spezialfall)
/ Telefon: Die Telefonnummer als Zeichenfolge
/ Fax: Die Faxnummer als Zeichenfolge
/ E-Mail: Die E-Mail-Adresse (wird vor dem Speichern auf Richtigkeit überprüft)
/ Straße: Die Straße der Anschrift
/ Hausnummer: Die Hausnummer der Anschriftsadresse
/ Postleitzahl: Die Postleitzahl der Anschriftsadresse
/ Ort: Der Ort der Anschriftsadresse
/ Suchworte: Öffnet den `Suchworte` Tab
==== `Suchworte`-Tab <address_man_such_tab>
Hier können Sie über die Haken-Kästchen verschiedene Suchworte zu einem Adressdatensatz zuweisen (@Adressdatensatz_Detailansicht_Suchwort-Tab).
Ein Haken bedeutet hierbei, dass dieses Suchwort dem Adressdatensatz zugeordnet ist, ein leeres Kästchen, dass keine Verknüpfung besteht.
#screenshot("Adressdatensatz Detailansicht (Suchwort-Tab)")
#note[
Im Ursprungszustand der Datenbank gab es lediglich die Zuweisung zu zwei Suchworten.
Zum einen zu einem Suchwort, welches die Herkunft-Excel-Tabelle, welcher der Datensatz entstammt, angibt.
Zum Anderen u.U. dem speziellen Suchwort `X`, welches signalisiert, dass diese Person mittlerweile (aus der Institution) ausgeschieden ist.
]
==== Sonderfälle
Bei den Adressdatensätzen kann es zu manchen Sonderszenarien kommen, die separat behandelt werden müssen, um einen geregelten Programmablauf und die Integrität der Daten sicherstellen zu können.
===== Institution als Datensatz <inst_datensatz>
Wie zuvor in @address_man_detail_view erwähnt, sind sowohl die Anrede als auch der (Nach-)Name Pflichtfelder eines jeden Datensatzes und die Institutionen-Felder lediglich zur groben Zuordnung einer Person zu einer Institution.
Was ist aber nun die Vorgehensweise, falls man eine Institution als Solches als Datensatz eingetragen werden muss, da es beispielsweise keinen konkreten Ansprechpartner gibt, welcher erfasst werden könnte?
Ganz einfach, hier kommt die zusätzliche "Anrede" ins Spiel.
Wählen Sie zum Erstellen eines solchen Datensatzes einfach `(Inst.)` als Anrede aus und tragen den Namen der Firma / Behörde / ... im Feld `Nachname` ein.
===== Dopplung von Datensätzen
Es sind zum großen Teil zwei Szenarien denkbar, die zur Folge haben, dass ein neu angelegter Datensatz in Konflikt mit einem schon vorhandenen Datensatz in der Datenbank steht.
====== Die Person hat denselben Namen <same_person>
Je nach Name ist es durchaus gar nicht so unüblich, dass zwei unterschiedliche Personen denselben Namen tragen.
So sind Allerweltsnamen wie z.B. _Fr. Anna Meyer_ häufiger in der Bevölkerung vertreten.
In diesem Beispiel nehmen wir an, dass schon eine _Fr. Anna Meyer_ mit Wohnort _Mainz_ in der Datenbank erfasst ist.
Nun wollen wir aber einen Datensatz für eine _Fr. Anna Meyer_ aus _Trier_ anlegen, was mit der Dame aus _Mainz_ in Konflikt steht (@Konflikt_Szenario_Neu)
#screenshot("Konflikt Szenario Neu")
====== Die Daten haben sich geändert <changed_data>
Es kann auch vorkommen, dass eigentlich gar nicht beabsichtigt wurde einen komplett neuen Datensatz anzulegen und eigentlich die Aktualisierung des schon in der Datenbank vorhandenen Datensatzes beabsichtigt war.
In diesem Fall ist ein erneutes Abändern der Daten nicht vonnöten.
Das Vorgehen wird im Folgenden @dup_resolve besprochen.
In diesem Beispiel nehmen wir an, dass schon eine _Fr. Anna Meyer_ mit Wohnort _Mainz_ in der Datenbank erfasst ist.
Nun ist eine Mail der Fr. Meyer eingegangen, in der Sie darüber informiert, dass Sie ab sofort einer neuen Institution angehörig ist und übermittelt ihre aktuellen Daten (@Konflikt_Szenario_Aktualisieren).
#screenshot("Konflikt Szenario Aktualisieren")
#note[
Ebenfalls denkbar wäre ein Umzug, etc.
]
====== Konfliktresolution <dup_resolve>
Um diese Szenarien jedoch aufzulösen, bemerkt das Programm den Konflikt und meldet sich mit einer Fehlermeldung zu Wort (@Konflikt_Dialog).
#screenshot("Konflikt Dialog", width: 70%)
Hierbei gibt es nun drei Schaltflächen und damit Möglichkeiten den Konflikt zu beheben
/ Ja: Signalisiert dem Programm, dass ein vorhandener Eintrag aus der Datenbank *überschrieben* werden soll und öffnet den Auswahl-Dialog (@Konflikt_Auswahl-Dialog) -> passend zu Szenario in @changed_data
/ Nein: Signalisiert dem Programm, dass ein *neuer* Datensatz erstellt werden soll und speichert diesen in die Datenbank -> passend zu Szenario in @same_person
/ Abbrechen: Bricht den Vorgang ab, *erhält jedoch die Daten im aktuellen Tab*, sodass Sie unbesorgt noch einmal in der Suchansicht die vorhandenen Datensätze abgleichen, oder sich Ihre nun *ungespeicherten* Änderungen anderweitig zunutze machen können (z.B. manuell mit dem vorhandenen Datensatz zusammenführen, Stichwort Copy&Paste)
#screenshot("Konflikt Auswahl-Dialog")
Im Auswahl-Dialog, falls Sie sich für `Ja` entschieden haben, bekommen Sie alle Datensätze, die im Namen mit dem neuen Datensatz übereinstimmten angezeigt.
Wenn Sie den Datensatz, den Sie überschreiben wollen, ausfindig gemacht haben, drücken Sie einfach auf das Ordner #emoji.folder Symbol in der Spalte `Auswählen` und in der Zeile des entsprechenden Datensatzes, um diesen mit den neuen Daten zu überschreiben.
Über `Abbrechen` gelangen Sie in jedem Fall wieder zurück zur Detailansicht und brechen den Vorgang somit komplett ab.
#warning[
Wenn Sie den Vorgang abgebrochen haben, sind Ihre Daten noch ungespeichert.
Sie müssen die Daten erst in irgendeiner Form speichern, damit diese beim Schließen nicht verloren gehen!
]
#caution[
Wenn sie über `Ja` zum Auswahl-Dialog gelangt sind und jetzt einen Datensatz auswählen, wird dieser *überschrieben*!
Wenn Sie die Daten jedoch *zusammenführen* und damit *nicht überschreiben* wollen, wählen Sie hier *keinen Datensatz* aus (kein Klick auf eines der Ordnersymbole #emoji.folder), sondern stattdessen *#emoji.crossmark Abbrechen*.
- Öffnen Sie dann die _Suchansicht_
- Suchen Sie den betreffenden _Datensatz_ raus
- _Öffnen_ Sie diesen (der Tab mit Ihren ungespeicherten Änderungen bleibt geöffnet)
- _Überführen_ Sie die Daten _manuell_!
- Schließen Sie u.U. den Tab mit dem ursprünglich beabsichtigten neuen Datensatz ohne Speicherung, da Sie die Daten ja jetzt manuell zusammengeführt haben
]
// == Das Veranstaltungsmanagement <veran_man>
// === Workshops
// === Teilnahmen
== Die Suchwortverwaltung <such_man>
=== Suchansicht
Wenn Sie die Suchwortverwaltung öffnen, sehen Sie zunächst die *Suchansicht* (@Suche_Suchwort).
#screenshot("Suche Suchwort")
Wenn Sie in dieser nun einen Datensatz öffnen#def[@open_detail_view], öffnet sich ein neuer Tab mit der Detailansicht
=== Detailansicht <such_man_detail_view>
Wenn Sie ein Suchwort öffnen (@Suchwort_Detailansicht_Hauptseite), oder ein neues Suchwort anlegen (@Suchwort_Detailansicht_Hauptseite__neuer_Eintrag) sehen Sie nun die Hauptseite der Detailansicht des Datensatzes.
#screenshot("Suchwort Detailansicht (Hauptseite)")
#screenshot("Suchwort Detailansicht (Hauptseite, neuer Eintrag)")
Ein Suchwort kann verschiedene Felder haben.
Pflichtfelder sind im Folgenden mit einem #emoji.lock markiert.
/ Bezeichnung #emoji.lock: Der Name des Suchwortes. Dieses muss eindeutig sein (es sind also keine Duplikate erlaubt), sollte aussagekräftig sein, jedoch eher kurz gehalten werden. Für ausführliche Dokumentation des Zwecks steht das Feld `Beschreibung` zur Verfügung
/ Beschreibung: Ein großes (ausklappbares, siehe @Suchwort_Detailansicht_Hauptseite__Beschreibung) Textfeld zur ausführlichen Beschreibung eines Suchwortes und u.U. Dokumentation des Zwecks.
/ Adressdaten: Öffnet den `Adressdatensätze` Tab
#screenshot("Suchwort Detailansicht (Hauptseite, Beschreibung)")
==== `Adressdatensätze`-Tab
Hier können Sie über die Haken-Kästchen verschiedene Suchworte zu einem Adressdatensatz zuweisen (@Suchwort_Detailansicht_Adressdatensätze-Tab).
Ein Haken bedeutet hierbei, dass dieser Adressdatensatz dem entsprechenden Suchwort zugeordnet ist, ein leeres Kästchen, dass keine Verknüpfung besteht.
#screenshot("Suchwort Detailansicht (Adressdatensätze-Tab)")
#note[
Im Ursprungszustand der Datenbank gab es lediglich eine Menge an Suchworten, welche die Herkunft-Excel-Tabelle beschreiben, welchen die Adressdatensätze entstammen, angibt.
Weiterhin gibt es das spezielle Suchwort `X`, welches signalisiert, dass die dem Suchwort zugewiesenen Personen mittlerweile (aus der Institution) ausgeschieden sind.
]
== Die Benutzerverwaltung <user_man>
=== Suchansicht
Wenn Sie die Benutzerverwaltung öffnen, sehen Sie zunächst die *Suchansicht* (@Suche_Zuständige).
#screenshot("Suche Zuständige")
Wenn Sie in dieser nun einen Datensatz öffnen#def[@open_detail_view], öffnet sich ein neuer Tab mit der Detailansicht
=== Detailansicht <user_man_detail_view>
Wenn Sie einen Benutzer öffnen (@Benutzerverwaltung_Detailansicht_Hauptseite), oder einen neuen Benutzer anlegen (@Benutzerverwaltung_Detailansicht_Hauptseite__neuer_Eintrag) sehen Sie nun die Hauptseite der Detailansicht des Datensatzes.
#screenshot("Benutzerverwaltung Detailansicht (Hauptseite)")
#screenshot("Benutzerverwaltung Detailansicht (Hauptseite, neuer Eintrag)")
Ein Benutzer kann verschiedene Felder haben.
Pflichtfelder sind im Folgenden mit einem #emoji.lock markiert.
/ Anrede #emoji.lock: Drei hauptsächlich verwendeten Anreden stehen zur Auswahl: `Herr`, `Frau` und `(Div.)` für alle weiteren Fälle. `(Inst.)` wird an dieser Stelle *nicht* verwendet
/ Vorname: Der Vorname
/ Nachname #emoji.lock: Der (Nach-)Name
/ Login #emoji.lock: Der Windows-Login Name
/ Recht #emoji.lock: Ein (ausklappbares, siehe @Benutzerverwaltung_Detailansicht_Hauptseite__Recht) Feld zur Festlegung des Berechtigungslevels ()
/ Telefon: Die Telefonnummer als Zeichenfolge
/ Fax: Die Faxnummer als Zeichenfolge
/ Email: Die E-Mail-Adresse (wird vor dem Speichern auf Richtigkeit überprüft)
/ Aktenzeichen: Möglichkeit zum Vermerken eines Aktenzeichens
#screenshot("Benutzerverwaltung Detailansicht (Hauptseite, Recht)")
#important[
Die Korrektheit des Windows-Login Namen ist von ausschlaggebender Bedeutung!
Wenn dieser nicht korrekt eingetragen ist, hat der entsprechende Benutzer keinen Zugang zum Programm!
#tip[
Sie können den Anmeldenamen ganz einfach herausfinden.
- Melden Sie sich hierfür einfach auf Ihrem PC unter dem entsprechenden Benutzer an.
- Gehen Sie dann auf die Windows-Einstellungen (z.B. über das Startmenü und dann auf das Zahnrad-Symbol #emoji.gear).
- Gehen Sie auf *Konten* (@Windows-Einstellungen)
- Nun können Sie Ihre Anmeldenamen ganz einfach nach dem Schrägstrich ablesen (davor steht `LSJV-RP\\`) (@Kontoinformation)
]
]
#screenshot("Windows-Einstellungen", width: 75%)
#screenshot("Kontoinformation", width: 60%)
== Programminformationen <prog_info>
Über die Menüleiste und die Schaltflächen `?` -> `Info`, öffnet sich ein Dialogfeld, welches u.A. die Programmversion ausgibt (@Programminformationen)
#screenshot("Programminformationen", width: 40%)
= Erweiterte Bedienungen
Für den erfahrenen und gewandten Benutzer bietet das Programm einige, wenn nicht sogar zahlreiche Möglichkeiten, die Bedienung noch schneller und komfortabler zu gestalten.
Diese erweiterte Bedienung, die jedoch zur Verwendung des Programms nicht zwangsläufig vonnöten ist, wird in den folgenden Abschnitten erläutert.
#note[
Ich gehe in diesen Abschnitten selbstverständlich nicht auf alle möglichen Bedienungsmöglichkeiten ein.
In der Regel sollten diese aber auch relativ selbsterklärend sein, sodass der abenteuerlustige Anwender gerne dazu eingeladen ist, die hier nicht oder nur wenig erklärten Funktionalitäten zu erkunden.
]
== Tabellenansicht <tables>
Die Tabellenansicht findet vielfache Verwendung im Programm.
Dabei handelt es sich nicht einfach nur um eine simple Ansicht, sondern um eine hoch-komplexe Steueroberfläche, die viele Aufgaben erledigt.
In diesem Abschnitt werden die vermutlich am häufigsten benutzten Funktionen kurz erläutert.
#important[
Alle Änderungen an der Tabellenansicht sind ausschließlich in diesem Tab wirksam und nach dem Schließen wieder auf die Standardwerte zurückgesetzt.
]
=== Kopfzeile
Ganz oben in der Tabelle (@Tabelle_Oben) befindet sich (soweit nicht ausgeblendet) die Gruppierungszeile. Darauf gehe ich in @group_columns ein.
Die Tabellenspalten#def[@columns] sind durch die entsprechenden Überschriften, die größtenteils mit den Feldern aus der jeweiligen Detailansicht#def[@detail_view] übereinstimmen, gekennzeichnet.
Darunter befindet sich die sogenannte Filterzeile#def[@filter_row], die ein bequemes, komfortables Filtern der Datensätze ermöglicht.
Darunter wiederum fangen die eigentlichen Daten an.
#screenshot("Tabelle Oben")
==== Spalten <columns>
Durch Links-Klicken auf die Tabellenspalten-Überschriften, lassen sich die Daten in Auf-/Absteigender Reihenfolge gemäß dieser Spalte sortieren.
Ein Rechts-Klick öffnet ein Kontext-Menü, welches weitere Optionen preisgibt (@Tabelle_Spalte_Detail).
#screenshot("Tabelle Spalte Detail", width: 80%)
#important[
Es sei erwähnt, dass wenn man eine Spalte entfernt, diese nur wieder zurückgeholt werden kann, wenn man über das Kontext-Menü (@Tabelle_Spalte_Detail) die `Spaltenauswahl` öffnet und die betreffende Spalte wieder in die Spaltenzeile zieht.
]
==== Filterzeile <filter_row>
Die Filterzeile ist die wohl nützlichste Funktionalität, da diese allerhand Manipulationen der Datenansicht erlaubt und ein feinkörniges Suchen ermöglicht (@Tabelle_Filter).
#screenshot("Tabelle Filter")
Hierbei können (im Gegensatz zur auf-/absteigenden Sortierung) Filterungen von verschiedenen Spalten kinderleicht kombiniert werden.
Auch die Konditionen zu denen gefiltert werden soll, können mit einem Klick auf die Schaltfläche vor dem Textfeld (i.d.R. standardmäßig #text(size: 0.75em, weight: "light")[A#fill-box(green)[B]C]) angepasst werden (@Tabelle_Filter_Detail).
#screenshot("Tabelle Filter Detail")
Die Filterkonditionen werden in der Fußzeile angezeigt und können dort auch bearbeitet und gelöscht werden (@Tabelle_Filter_Löschen)
#screenshot("Tabelle Filter Löschen")
=== Gruppieren von Spalten <group_columns>
Wenn man im Kontext-Menü der Spaltenüberschriften (@Tabelle_Spalte_Detail) den Punkt `Nach dieser Spalte gruppieren` auswählt, so gruppiert die Tabelle automatisch alle Datensätze, die in dieser Spalte den gleichen Wert haben (@Tabelle_Gruppierung).
#tip[
Alternativ kann man auch die Spaltenüberschrift in die Gruppierungszeile (soweit eingeblendet) ziehen.
]
#screenshot("Tabelle Gruppierung")
Um die Gruppierung aufzuheben, genügt ein Rechts-Klick auf die Spaltenüberschrift, nach der gruppiert wird und die Auswahl des Punkts `nicht nach dieser Spalte gruppieren` (@Tabelle_Gruppierung_Detail).
#screenshot("Tabelle Gruppierung Detail", width: 80%)
#tip[
Äquivalent lässt sich die Spaltenüberschrift auch einfach wieder in die Tabelle ziehen.
]
=== Verschieben / Umsortieren von Spalten
Diese Funktionalität ist einfach mittels des Ziehens der Spaltenüberschriften vorhanden. So lassen sich die Spalten beliebig sortieren
=== Suchfeld
Zur gröberen, schnelleren und allgemeineren Suche, bietet das Programm ein universelles Suchfeld, welches ähnlich der Suchfunktion in Word, Excel oder dem Internetbrowser funktioniert (@Tabelle_Suche).
#screenshot("Tabelle Suche")
== Geschachtelte Ansichten <cascading>
Wie schon an anderer Stelle zuvor erwähnt#def[@subtab], sollten Ihnen die Untertabs aus der Detailansicht durchaus bekannt vorkommen.
Dadurch, dass die Suchansicht und die Untertabs nahezu identisch sind, ergibt sich eine äußerst praktische und effiziente Bedienungsmöglichkeit in Form von geschachtelt Ansichten.
Um dies etwas bildlicher zu erläutern, ein kleines Anwendungsbeispiel:
=== Anwendungsbeispiel
+ Sie erstellen einen neuen Adressdatensatz und füllen die Hauptseite#def[@address_man_detail_view] aus.
+ Nun wechseln Sie auf den Suchwort-Tab#def[@address_man_such_tab] und weisen dem neuen Datensatz einige Suchwörter hinzu.
+ Nun fällt Ihnen allerdings auf, dass eines der beabsichtigten Suchwörter gar nicht angelegt ist.
Die vermutlich intuitive Herangehensweise ist
#enum(start: 4,
[Über die Menüleiste#def[@menu_bar] die Suchwortverwaltung#def[@such_man] zu öffnen],
[Ein neues Suchwort#def[@such_man_detail_view] anzulegen],
[Zurück zum unvollendeten Adressdatensatz zu wechseln und hier das Suchwort hinzufügen (vorausgesetzt es taucht in der Auflistung auf)],
)
Dies verkompliziert unweigerlich den ganzen Prozess und behindert eine reibungslose Datenerfassung.
Dabei geht es viel einfacher!
Anknüpfend an Schritt 3
#enum(start: 4,
[Klicken Sie einfach im Suchworte-Tab auf `neues Suchwort anlegen`],
[Es öffnet sich ein neuer Tab, in dem Sie das Suchwort anlegen können],
[Speichern (& Schließen) Sie das neue Suchwort],
[Markieren Sie das neue Suchwort im Suchwort-Tab],
)
Durch diese rekursive / geschachtelte Arbeitsmöglichkeit sind solche Situationen wesentlich schneller und eleganter zu bewältigen.
== Tastaturbedienung <keyboard_nav>
Viele Elemente und Funktionen des Programms sind ergonomischer und barrierefreier mit der Tastatur zu bedienen.
Das Programm versucht, dies in großen Teilen zu verwirklichen.
So sind in den Detailansichten#def[@detail_view] die verschiedenen Felder i.d.R. mit der Tabulatortaste #sym.arrows.lr ansteuerbar.
Ebenso lassen sich die Einträge in der Tabellenansicht#def[@tables] mit den Pfeiltasten durchwählen und anschließend entweder im Falle der Suchansicht#def[@master_view] mit der Enter-Taste #sym.arrow.curve.l öffnen, oder im Falle der Detailansicht, spezifischer des Untertabs#def[@subtab] mit der Leertaste #sym.bracket.b an- und abwählen.
=== Tastenkombinationen Menüführung
_Ausstehend_