feat: add documentation, changeable shortcuts
15
docs/Ausleihhistorie.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Ausleihhistorie
|
||||

|
||||
|
||||
!!! 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.
|
||||
47
docs/Ausleihsystem.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Ausleihsystem
|
||||
|
||||
|
||||
|
||||
## Oberfläche
|
||||
|
||||

|
||||
|
||||
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:
|
||||

|
||||
|
||||
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:
|
||||
|
||||

|
||||
|
||||
- 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.
|
||||
|
||||
|
||||
|
||||
27
docs/Bericht erstellen.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Bericht erstellen
|
||||
|
||||

|
||||
|
||||
## 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:
|
||||
|
||||

|
||||
|
||||
Über einen Klick auf `Report` wird die entsprechende Datei geöffnet.
|
||||
|
||||
!!! info
|
||||
|
||||
Text öffnet das Notepad, Excel öffnet Excel
|
||||
21
docs/Einstellungen.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Einstellungen
|
||||

|
||||
|
||||
## 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:
|
||||
|
||||

|
||||
|
||||
Im Anschluss an diesen Dialog erscheint ein neuer Dialog:
|
||||
|
||||

|
||||
|
||||
18
docs/Nutzer anlegen.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Nutzer anlegen
|
||||
|
||||

|
||||
|
||||
## 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:
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||
31
docs/Nutzeroberfläche.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Nutzerdatenfenster
|
||||

|
||||
|
||||
!!! info
|
||||
Die Nutzeroberfläche kann nur geöffnet werden, wenn ein Nutzer offen ist. Ansonsten wird ein Fehler angezeigt. (s. unten)
|
||||
|
||||

|
||||
|
||||
# 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).
|
||||
|
||||
9
docs/ausleihe verlängern.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Medien verlängern
|
||||

|
||||
|
||||
## 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.
|
||||
BIN
docs/images/add_user.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
docs/images/createUser.png
Normal file
|
After Width: | Height: | Size: 757 B |
BIN
docs/images/err_nouser.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
docs/images/extend.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
docs/images/generateReport.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
docs/images/generatedReport.png
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
docs/images/loanhistory.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/images/main_ktoarea.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
docs/images/main_marked areas.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
docs/images/main_no_user.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
docs/images/main_user_active.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
docs/images/main_userdata.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
docs/images/restart.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
docs/images/settings.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
docs/images/settings_changed_restart.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
docs/images/user_main.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
20
docs/index.md
Normal file
@@ -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
|
||||
16
docs/shortcuts.md
Normal file
@@ -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 |
|
||||
5
docs/stylesheets/extra.css
Normal file
@@ -0,0 +1,5 @@
|
||||
.md-typeset .admonition,
|
||||
.md-typeset details {
|
||||
border-width: 0;
|
||||
border-left-width: 4px;
|
||||
}
|
||||
@@ -15,3 +15,4 @@ icons:
|
||||
user: user.svg
|
||||
warning: warning.svg
|
||||
delete: delete.svg
|
||||
restart: restart.svg
|
||||
|
||||
1
icons/restart.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M440-122q-121-15-200.5-105.5T160-440q0-66 26-126.5T260-672l57 57q-38 34-57.5 79T240-440q0 88 56 155.5T440-202v80Zm80 0v-80q87-16 143.5-83T720-440q0-100-70-170t-170-70h-3l44 44-56 56-140-140 140-140 56 56-44 44h3q134 0 227 93t93 227q0 121-79.5 211.5T520-122Z"/></svg>
|
||||
|
After Width: | Height: | Size: 382 B |
30
mkdocs.yml
Normal file
@@ -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
|
||||
12
src/logic/documentation_thread.py
Normal file
@@ -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()
|
||||
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>375</width>
|
||||
<height>247</height>
|
||||
<height>245</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
|
||||
@@ -278,9 +278,25 @@
|
||||
<addaction name="actionAusleihhistorie"/>
|
||||
<addaction name="actionBericht_erstellen"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuHilfe">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>2484</x>
|
||||
<y>209</y>
|
||||
<width>181</width>
|
||||
<height>94</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Hilfe</string>
|
||||
</property>
|
||||
<addaction name="actionDokumentation_ffnen"/>
|
||||
<addaction name="actionProblem_melden"/>
|
||||
</widget>
|
||||
<addaction name="menuDatei"/>
|
||||
<addaction name="menuHotkeys"/>
|
||||
<addaction name="menuFenster"/>
|
||||
<addaction name="menuHilfe"/>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
<action name="actionEinstellungen">
|
||||
@@ -309,11 +325,6 @@
|
||||
<string>F6</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionNutzer_2">
|
||||
<property name="text">
|
||||
<string>Nutzer</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionAusleihhistorie">
|
||||
<property name="text">
|
||||
<string>Ausleihhistorie</string>
|
||||
@@ -330,9 +341,17 @@
|
||||
<string>F7</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionNutzer_3">
|
||||
<action name="actionDokumentation_ffnen">
|
||||
<property name="text">
|
||||
<string>Nutzer</string>
|
||||
<string>Dokumentation öffnen</string>
|
||||
</property>
|
||||
<property name="shortcut">
|
||||
<string>F1</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionProblem_melden">
|
||||
<property name="text">
|
||||
<string>Problem melden</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from .log import Log
|
||||
from .icon import Icon
|
||||
from .debug import debugMessage
|
||||
from .stringtodate import stringToDate
|
||||
from .stringtodate import stringToDate
|
||||
from .documentation import launch_documentation
|
||||
21
src/utils/documentation.py
Normal file
@@ -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
|
||||
|
||||