diff --git a/docs/Ausleihhistorie.md b/docs/Ausleihhistorie.md new file mode 100644 index 0000000..8a9fd77 --- /dev/null +++ b/docs/Ausleihhistorie.md @@ -0,0 +1,15 @@ +# Ausleihhistorie +![Oberfläche](images/loanhistory.png) + +!!! info + + Die Ausleihhistorie kann vom Ausleihsystem immer aufgerufen werden. Dazu kann man entweder das Menu öffnen (Fenster -> Ausleihhistorie) oder den festgelegten Shortcut verwenden. + +# Bedienung +Hier werden alle Medien angezeigt. +Über die Filter kann man gezielt + - alle Ausleihen + - aktuell entliehene Medien + - überzogene Medien +anzeigen. +Zudem kann man mithilfe der Eingabezeile unter den Filteroptionen gezielt nach einem Titel, Nutzer oder einer Signatur gesucht werden. \ No newline at end of file diff --git a/docs/Ausleihsystem.md b/docs/Ausleihsystem.md new file mode 100644 index 0000000..08246b8 --- /dev/null +++ b/docs/Ausleihsystem.md @@ -0,0 +1,47 @@ +# Ausleihsystem + + + +## Oberfläche + +![Nutzeroberfläche ohne Bewerkungen](images/main_marked%20areas.png) + +Die Oberfläche kann generell in drei Bereiche unterteilt werden: + - Konto und Ausleihe + - Nutzerdaten + - Historie + +### Konto und Ausleihe + +Hier werden die Kontodaten und die Ausleihen angezeigt. +Der Bereich beschränkt sich auf folgende Inhalte: +![Kontobereich](images/main_ktoarea.png) + +Hier werden folgende Daten angezeigt + +- Modus: entweder "Ausleihe" oder "Rückgabe" (1) +- Matrikelnummer: die Matrikelnummer des Nutzers, um das Konto zu öffnen (3) +- Benutzername: der Benutzername des Nutzers (3) +- Signatur: die Signatur des Mediums, welches entliehen oder zurückgegeben wird (4) +- Ausleihe bis: bis wann das Medium ausgeliehen wird, Zeitraum wird in den Einstellungen angepasst +- Nutzer anlegen: ein Knopf, um einen neuen Nutzer anzulegen (2) + +### Nutzerdaten +Hier werden die Nutzerdaten angezeigt. Vorraussetzung ist, dass ein Nutzer angelegt und geöffnet wurde, oder dass ein Medium zurückgegeben wurde. +Dieser Bereich beschränkt sich auf folgende Inhalte: + +![Nutzerdaten](images/main_userdata.png) + +- Das Feld Nutzerdaten (6)beinhaltet + - Namen + - Matrikelnummer + - E-Mail +- Das Feld Ausleihdaten beinhaltet: + - Anzahl Ausleihen (5) : ein klickbares Feld, welches die Anzahl der Ausleihen anzeigt. Beim Klick wird die Übersicht des aktiven Nutzers angezeigt. + - Nächstes Rückgabedatum (wird angezeigt wenn ein Nutzer (mehr als) eine Ausleihe hat und ein Medium zurückgegeben wurde oder ein Nutzer geöffnet wird) + +### Historie (7) +Das Feld der Historie listet alle Medien auf, die im aktiven Prozess ausgeliehen oder zurückgegeben wurden. + + + diff --git a/docs/Bericht erstellen.md b/docs/Bericht erstellen.md new file mode 100644 index 0000000..76522fe --- /dev/null +++ b/docs/Bericht erstellen.md @@ -0,0 +1,27 @@ +# Bericht erstellen + +![Bericht erstellen](images/generateReport.png) + +## Information +Diese Oberfläche kann immer von der [Hauptoberfläche](Ausleihsystem.md) geöffnet werden. Hierzu entweder +`Fenster -> Bericht erstellen` oder den Shortcut F7 verwenden + + +## Bericht generieren + +Um einen Bericht zu erstellen, müssen folgende Kriterien erfüllt sein: + +- Zeitspanne festgelegt (Entweder über den Slider, oder über die Woche / Monat / Jahr Knöpfe) +- Datenformat ausgewählt + +Nachdem diese Kriterien erfüllt sind, kann der Bericht über den Knopf `Bericht erstellen` erstellt werden. Der Bericht wird erstellt, bei größeren Datensätzen kann es länger dauern, eine Fortschrittsanzeige gibt an, wie weit der Prozess ist. + +Wurde der Bericht erfolgreich erstellt, sieht die Oberfläche wie folgt aus: + +![Bericht erstellt](images/generatedReport.png) + +Über einen Klick auf `Report` wird die entsprechende Datei geöffnet. + +!!! info + + Text öffnet das Notepad, Excel öffnet Excel \ No newline at end of file diff --git a/docs/Einstellungen.md b/docs/Einstellungen.md new file mode 100644 index 0000000..19d3963 --- /dev/null +++ b/docs/Einstellungen.md @@ -0,0 +1,21 @@ +# Einstellungen +![Einstellungen](images/settings.png) + +## Bedienung +Hier werden die Einstellungen geändert. Sobald ein Wert geändert wird, ist es möglich die Einstellungen rückgängig zu machen, oder die Änderungen zu speichern. + +## Besonderheiten +Der Knopf neben Speicherort, Datenbankname, Sicherungspfad und Speicherpfad kann verwendet werden, um den Pfad gezielt zu setzen. + +Beim Datenbanknamen wird allerdings nur der Name der Datenbank übernommen + +## Hinweis + +Einige Aktionen (bspw. Änderungen der Shortcuts) erfordern einen Neustart der Anwendung. Dies wird beim Speichern der Einstellungen mit folgendem Dialog dargestelt: + +![restart](images/restart.png) + +Im Anschluss an diesen Dialog erscheint ein neuer Dialog: + +![restart Application](images/settings_changed_restart.png) + diff --git a/docs/Nutzer anlegen.md b/docs/Nutzer anlegen.md new file mode 100644 index 0000000..56eb6cd --- /dev/null +++ b/docs/Nutzer anlegen.md @@ -0,0 +1,18 @@ +# Nutzer anlegen + +![Nutzer erstellen](images/add_user.png) + +## Information +Diese Oberfläche kann nur geöffnet werden, wenn die [Hauptoberfläche](Ausleihsystem.md) geöffnet ist. Hierzu muss bei dieser auf folgenden Knopf gedrückt werden: +![create user](images/createUser.png) + +## Bedienung +Um einen Nutzer anzulegen, müssen alle Angaben korrekt ausgefüllt sein. +### Limitierungen +Folgende Regeln sind zwingend einzuhalten: +- Nachname, Vorname muss mit `, ` getrennt sein +- Matrikelnummer darf nicht länger als 20 Zeichen sein und nur Nummern enthalten +- Mail muss einem validen Schema entsprechen (s. Bild) + +Nachdem alle Kriterien erfüllt sind, kann der Knopf `Save` angeklickt werden. Der Nutzer wird gespeichert und in der [Hauptoberfläche](Ausleihsystem.md) geöffnet. + diff --git a/docs/Nutzeroberfläche.md b/docs/Nutzeroberfläche.md new file mode 100644 index 0000000..a3f1564 --- /dev/null +++ b/docs/Nutzeroberfläche.md @@ -0,0 +1,31 @@ +# Nutzerdatenfenster +![alt text](images/user_main.png) + +!!! info + Die Nutzeroberfläche kann nur geöffnet werden, wenn ein Nutzer offen ist. Ansonsten wird ein Fehler angezeigt. (s. unten) + +![Error](images/err_nouser.png) + +# Bedeutung der Felder +- (1) Nutzerdaten: + + Name des Nutzers, Matrikelnummer, E-Mail + Wird eine Angabe geändert, erscheint Feld (3) um diese Angaben entweder zu speichern oder um die Änderungen rückgängig zu machen. + +- (2) Nutzer Löschen: + + Mit dem Klick auf den Mülleimer wird der Nutzer gelöscht. Alle zugewiesenen Ausleihen werden in der [Ausleihhistorie](Ausleihhistorie.md) mit den Nutzerkonto `gelöscht` angezeigt. + +- (4) Medien: + + Umfasst unter anderem Feld (5), welches ein neues Fenster zum [verlängern](ausleihe verlängern.md) der Ausleihe öffnet. + Mit einem Klick auf + - Alle Ausleihen + - Aktuell entliehen + - Überzogen +werden die Einträge der Tabelle gefiltert. Zusätzlich kann mithilfe der Eingabezeile unter den Filteroptionen gezielt nach einem Titel oder einer Signatur gesucht werden. + +- (5) Verlängern: + + Um Medien zu verlängern, müssen diese in der Tabelle angeklickt werden. Mit Strg können mehrere Medien gleichzeitig ausgewählt und verlängert werden. Hierzu wird ein neues Fenster geöffnet, siehe [Ausleihe verlängern](ausleihe verlängern.md). + diff --git a/docs/ausleihe verlängern.md b/docs/ausleihe verlängern.md new file mode 100644 index 0000000..6f79498 --- /dev/null +++ b/docs/ausleihe verlängern.md @@ -0,0 +1,9 @@ +# Medien verlängern +![Oberfläche](images/extend.png) + +## Information +Die Ausleihe verlängern kann nur geöffnet werden, wenn ein Nutzer offen ist. + +Diese Oberfläche erlaubt es, eine oder mehrere Medien zu verlängern. Hierzu muss ein neues, in der Zukunft liegendes Datum ausgewählt und mit OK bestätigt werden. + +In der Datenbank wird nun das neue Datum gespeichert und die Einträge in der Tabelle werden aktualisiert. \ No newline at end of file diff --git a/docs/images/add_user.png b/docs/images/add_user.png new file mode 100644 index 0000000..a322daf Binary files /dev/null and b/docs/images/add_user.png differ diff --git a/docs/images/createUser.png b/docs/images/createUser.png new file mode 100644 index 0000000..4fdec9f Binary files /dev/null and b/docs/images/createUser.png differ diff --git a/docs/images/err_nouser.png b/docs/images/err_nouser.png new file mode 100644 index 0000000..fd10a9d Binary files /dev/null and b/docs/images/err_nouser.png differ diff --git a/docs/images/extend.png b/docs/images/extend.png new file mode 100644 index 0000000..3103f64 Binary files /dev/null and b/docs/images/extend.png differ diff --git a/docs/images/generateReport.png b/docs/images/generateReport.png new file mode 100644 index 0000000..2ee367a Binary files /dev/null and b/docs/images/generateReport.png differ diff --git a/docs/images/generatedReport.png b/docs/images/generatedReport.png new file mode 100644 index 0000000..6122367 Binary files /dev/null and b/docs/images/generatedReport.png differ diff --git a/docs/images/loanhistory.png b/docs/images/loanhistory.png new file mode 100644 index 0000000..cb03be1 Binary files /dev/null and b/docs/images/loanhistory.png differ diff --git a/docs/images/main_ktoarea.png b/docs/images/main_ktoarea.png new file mode 100644 index 0000000..1ff5e41 Binary files /dev/null and b/docs/images/main_ktoarea.png differ diff --git a/docs/images/main_marked areas.png b/docs/images/main_marked areas.png new file mode 100644 index 0000000..8ff89d8 Binary files /dev/null and b/docs/images/main_marked areas.png differ diff --git a/docs/images/main_no_user.png b/docs/images/main_no_user.png new file mode 100644 index 0000000..e283cd3 Binary files /dev/null and b/docs/images/main_no_user.png differ diff --git a/docs/images/main_user_active.png b/docs/images/main_user_active.png new file mode 100644 index 0000000..f13e02a Binary files /dev/null and b/docs/images/main_user_active.png differ diff --git a/docs/images/main_userdata.png b/docs/images/main_userdata.png new file mode 100644 index 0000000..41a6bf8 Binary files /dev/null and b/docs/images/main_userdata.png differ diff --git a/docs/images/restart.png b/docs/images/restart.png new file mode 100644 index 0000000..249f44d Binary files /dev/null and b/docs/images/restart.png differ diff --git a/docs/images/settings.png b/docs/images/settings.png new file mode 100644 index 0000000..4e69c82 Binary files /dev/null and b/docs/images/settings.png differ diff --git a/docs/images/settings_changed_restart.png b/docs/images/settings_changed_restart.png new file mode 100644 index 0000000..cc3b71d Binary files /dev/null and b/docs/images/settings_changed_restart.png differ diff --git a/docs/images/user_main.png b/docs/images/user_main.png new file mode 100644 index 0000000..fd55dc5 Binary files /dev/null and b/docs/images/user_main.png differ diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..3f3d567 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,20 @@ +# Übersicht + +!!! info + + Einige Knöpfe sind auf Englisch. Diese Einstellung kann ich leider nicht ändern, da diese Übersetzung von der Anwendung automatisch ausgeführt werden + + +## [Hauptoberfläche](Ausleihsystem.md) +Die Hauptoberfläche wird angezeigt, wenn die Anwendung gestartet wird. +Von hier aus können Nutzer angelegt und bearbeitet werden, Medien ausgeliehen und zurückgegeben werden, sowie verschiedene Unterbereiche anzeigen. + +Unterbereiche umfassen: + +- [Nutzerdaten](Nutzeroberfläche.md) - Daten für den aktuellen Nutzer anzeigen und bearbeiten +- [Nutzer anlegen](Nutzer anlegen.md) - Neuen Nutzer anlegen +- [Ausleihhistorie](Ausleihhistorie.md) - Historie der Ausleihen +- [Bericht erstellen](Bericht erstellen.md) - Bericht für einen festgelegten Zeitrahmen erstellen +- [Einstellungen](Einstellungen.md) + +## Navigation diff --git a/docs/shortcuts.md b/docs/shortcuts.md new file mode 100644 index 0000000..9368ebe --- /dev/null +++ b/docs/shortcuts.md @@ -0,0 +1,16 @@ +# Shortcuts + +!!! info + + Die Shortcuts können für die Anwendung manuell festgelegt werden. + Dafür in den [Einstellungen](Einstellungen.md) unter Shortcuts den neuen Shortcut eingeben und speichern + +Standardmäßig sind die Shortcuts wie folgt festgelegt: + +| Shortcut | Standard | +| ------- | -------- | +| Ausleihhistorie | F7 | +| Bericht erstellen | F6 | +| Hilfe | F1 | +| Nutzer | F5 | +| Rückgabemodus | F8 | diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 0000000..dd4026f --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,5 @@ +.md-typeset .admonition, +.md-typeset details { + border-width: 0; + border-left-width: 4px; +} \ No newline at end of file diff --git a/icons/icons.yaml b/icons/icons.yaml index 1dc2e7c..2c9a3d1 100644 --- a/icons/icons.yaml +++ b/icons/icons.yaml @@ -15,3 +15,4 @@ icons: user: user.svg warning: warning.svg delete: delete.svg + restart: restart.svg diff --git a/icons/restart.svg b/icons/restart.svg new file mode 100644 index 0000000..8fa96d4 --- /dev/null +++ b/icons/restart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..52fbb20 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,30 @@ +site_name: LibrarySystem +theme: + features: + - search.suggest + - search.highlight + name: material + icon: + admonition: + note: fontawesome/solid/note-sticky + abstract: fontawesome/solid/book + info: fontawesome/solid/circle-info + tip: fontawesome/solid/bullhorn + success: fontawesome/solid/check + question: fontawesome/solid/circle-question + warning: fontawesome/solid/triangle-exclamation + failure: fontawesome/solid/bomb + danger: fontawesome/solid/skull + bug: fontawesome/solid/robot + example: fontawesome/solid/flask + quote: fontawesome/solid/quote-left + +markdown_extensions: + - admonition + - pymdownx.details + - pymdownx.superfences + - tables +extra_css: + - stylesheets/extra.css +plugins: + - search \ No newline at end of file diff --git a/src/logic/documentation_thread.py b/src/logic/documentation_thread.py new file mode 100644 index 0000000..ed2c7cc --- /dev/null +++ b/src/logic/documentation_thread.py @@ -0,0 +1,12 @@ +from PyQt6.QtCore import QThread, pyqtSignal +from src.utils import launch_documentation + +class DocumentationThread(QThread): + def __init__(self): + super().__init__() + + def run(self): + launch_documentation() + + + diff --git a/src/ui/sources/Ui_dialog_generateReport.py b/src/ui/sources/Ui_dialog_generateReport.py index 76022fe..ecc84da 100644 --- a/src/ui/sources/Ui_dialog_generateReport.py +++ b/src/ui/sources/Ui_dialog_generateReport.py @@ -12,7 +12,7 @@ from PyQt6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") - Dialog.resize(375, 247) + Dialog.resize(375, 245) Dialog.setMinimumSize(QtCore.QSize(40, 0)) self.verticalLayout = QtWidgets.QVBoxLayout(Dialog) self.verticalLayout.setObjectName("verticalLayout") diff --git a/src/ui/sources/Ui_main_UserInterface.py b/src/ui/sources/Ui_main_UserInterface.py index c5577ac..e5f8621 100644 --- a/src/ui/sources/Ui_main_UserInterface.py +++ b/src/ui/sources/Ui_main_UserInterface.py @@ -142,6 +142,9 @@ class Ui_MainWindow(object): self.menuHotkeys.setObjectName("menuHotkeys") self.menuFenster = QtWidgets.QMenu(parent=self.menubar) self.menuFenster.setObjectName("menuFenster") + self.menuHilfe = QtWidgets.QMenu(parent=self.menubar) + self.menuHilfe.setGeometry(QtCore.QRect(2484, 209, 181, 94)) + self.menuHilfe.setObjectName("menuHilfe") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(parent=MainWindow) self.statusbar.setObjectName("statusbar") @@ -158,15 +161,22 @@ class Ui_MainWindow(object): self.actionAusleihhistorie.setObjectName("actionAusleihhistorie") self.actionBericht_erstellen = QtGui.QAction(parent=MainWindow) self.actionBericht_erstellen.setObjectName("actionBericht_erstellen") + self.actionDokumentation_ffnen = QtGui.QAction(parent=MainWindow) + self.actionDokumentation_ffnen.setObjectName("actionDokumentation_ffnen") + self.actionProblem_melden = QtGui.QAction(parent=MainWindow) + self.actionProblem_melden.setObjectName("actionProblem_melden") self.menuDatei.addAction(self.actionEinstellungen) self.menuDatei.addAction(self.actionBeenden) self.menuHotkeys.addAction(self.actionRueckgabemodus) self.menuFenster.addAction(self.actionNutzer) self.menuFenster.addAction(self.actionAusleihhistorie) self.menuFenster.addAction(self.actionBericht_erstellen) + self.menuHilfe.addAction(self.actionDokumentation_ffnen) + self.menuHilfe.addAction(self.actionProblem_melden) self.menubar.addAction(self.menuDatei.menuAction()) self.menubar.addAction(self.menuHotkeys.menuAction()) self.menubar.addAction(self.menuFenster.menuAction()) + self.menubar.addAction(self.menuHilfe.menuAction()) self.retranslateUi(MainWindow) self.actionBeenden.triggered.connect(MainWindow.close) # type: ignore @@ -198,6 +208,7 @@ class Ui_MainWindow(object): self.menuDatei.setTitle(_translate("MainWindow", "Datei")) self.menuHotkeys.setTitle(_translate("MainWindow", "Hotkeys")) self.menuFenster.setTitle(_translate("MainWindow", "Fenster")) + self.menuHilfe.setTitle(_translate("MainWindow", "Hilfe")) self.actionEinstellungen.setText(_translate("MainWindow", "Einstellungen")) self.actionBeenden.setText(_translate("MainWindow", "Beenden")) self.actionRueckgabemodus.setText(_translate("MainWindow", "Rückgabemodus")) @@ -208,3 +219,6 @@ class Ui_MainWindow(object): self.actionAusleihhistorie.setShortcut(_translate("MainWindow", "F8")) self.actionBericht_erstellen.setText(_translate("MainWindow", "Bericht erstellen")) self.actionBericht_erstellen.setShortcut(_translate("MainWindow", "F7")) + self.actionDokumentation_ffnen.setText(_translate("MainWindow", "Dokumentation öffnen")) + self.actionDokumentation_ffnen.setShortcut(_translate("MainWindow", "F1")) + self.actionProblem_melden.setText(_translate("MainWindow", "Problem melden")) diff --git a/src/ui/sources/dialog_generateReport.ui b/src/ui/sources/dialog_generateReport.ui index 1700beb..e478a02 100644 --- a/src/ui/sources/dialog_generateReport.ui +++ b/src/ui/sources/dialog_generateReport.ui @@ -7,7 +7,7 @@ 0 0 375 - 247 + 245 diff --git a/src/ui/sources/main_UserInterface.ui b/src/ui/sources/main_UserInterface.ui index e7e7621..46614e8 100644 --- a/src/ui/sources/main_UserInterface.ui +++ b/src/ui/sources/main_UserInterface.ui @@ -278,9 +278,25 @@ + + + + 2484 + 209 + 181 + 94 + + + + Hilfe + + + + + @@ -309,11 +325,6 @@ F6 - - - Nutzer - - Ausleihhistorie @@ -330,9 +341,17 @@ F7 - + - Nutzer + Dokumentation öffnen + + + F1 + + + + + Problem melden diff --git a/src/utils/__init__.py b/src/utils/__init__.py index ea00422..d004bfe 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -1,4 +1,5 @@ from .log import Log from .icon import Icon from .debug import debugMessage -from .stringtodate import stringToDate \ No newline at end of file +from .stringtodate import stringToDate +from .documentation import launch_documentation \ No newline at end of file diff --git a/src/utils/documentation.py b/src/utils/documentation.py new file mode 100644 index 0000000..0b5bf8e --- /dev/null +++ b/src/utils/documentation.py @@ -0,0 +1,21 @@ +from pyramid.config import Configurator +from wsgiref.simple_server import make_server +import os +def website(): + config = Configurator() + + # Set up static file serving from the 'site/' directory + config.add_static_view(name='/', path=os.path.join(os.getcwd(), 'site'), cache_max_age=3600) + + app = config.make_wsgi_app() + return app + +def launch_documentation(): + app = website() + server = make_server('localhost', 6543, app) + print("Serving MkDocs documentation on http://0.0.0.0:6543") + server.serve_forever() + +if __name__ == '__main__': + pass + \ No newline at end of file