Repository navigation
#1414 - Alle Favoriten im Dialog suchen und anwenden, Kurzliste der zuletzt benutzten, eigene Gruppen und Reihenfolge - #1422
Merged
Conversation
KlausRicharz
force-pushed
the
feature/1414-favoriten-gruppieren
branch
from
October 7, 2026 21:45
d48c5bc to
f964c61
Compare
added 3 commits
October 8, 2026 00:11
… einordnen und per Drag & Drop oder Pfeilen ordnen Ohne eigene Ordnung steht der zuletzt angewendete Favorit oben. Der Dialog "Favoriten ordnen", erreichbar von jeder Favoritenliste, legt benannte Gruppen an, benennt sie um, loescht sie (Favoriten bleiben ohne Gruppe erhalten) und stellt die Sortierung ein. Gruppen und Favoriten lassen sich mit SortableJS ziehen, mit Maus und Touch, und mit Pfeilknoepfen per Tastatur verschieben. Beim Speichern als Favorit laesst sich eine Gruppe waehlen. Gruppen und Ordnung gehoeren der Person; der Service prueft jede id. Changesets 173 bis 175.
…dschirm: Knopfzeile bricht um, Buchungstext begrenzt die Tabelle, Vollbild-Dialog nimmt die sichtbare Hoehe
… mit Suche und Auswahl, Ordnen als Modus Einzeluebersicht und "Favorit anwenden" zeigen die X zuletzt benutzten Favoriten ohne Gruppen, X ist in den Einstellungen waehlbar (1 bis 50, Standard 10, serverseitig geprueft). "Alle Favoriten (N)" oeffnet den Dialog: alle Favoriten nach Gruppen, Suchfeld ueber Auftrag, Kommentar und Ticket, ein Klick oder Enter wendet den Favoriten ueber dasselbe Formular und denselben Endpunkt an wie die Liste. Gruppen, Sortierung und Drag & Drop liegen hinter dem Schalter "Ordnen", der bei aktiver Suche ruht.
KlausRicharz
force-pushed
the
feature/1414-favoriten-gruppieren
branch
from
October 7, 2026 22:11
072979e to
42e8a25
Compare
added 3 commits
October 8, 2026 00:18
…ohne Menuepunkt-Flaeche
…n ansieht, bekommt die eigenen Favoriten dort nicht angeboten
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Beschreibung
Im Kern bringt der PR die vollständige Liste aller Favoriten und die Auswahl daraus. Dazu kommen Sortierung und eigene, benannte Gruppen.
Kurzliste. Das Dropdown „Favorit anwenden“ und die Karte „Favoriten“ der Einzelübersicht zeigen die X zuletzt benutzten Favoriten, ohne Gruppen, den zuletzt angewendeten zuerst. Neu angelegte zählen als gerade benutzt. Darunter bzw. im Kartenkopf steht „Alle Favoriten (N) …“ und öffnet den Dialog, auch wenn N ≤ X ist; dort wird auch geordnet.
X ist eine persönliche Einstellung (Einstellungen → „Favoriten in der Kurzliste“): Standard 10, erlaubt 1–50. Der Wert wird im Service geprüft (FA-0008). Ein Wert außerhalb lehnt das Formular ab und speichert dann nichts. Gespeichert wird er wie die Sortierung in der Benutzereinstellung (Modul
favorites).Dialog „Favoriten“ (
FavoriteDialogController,favorites/dialog.html):<details>).form=zum FormularfavoritesApplyFormder Seite. Gleicher Endpunkt (/dailyreport/daily/apply-favourite), gleiche Antwort, gleiche Fehlerbehandlung, „zuletzt benutzt“ wird gesetzt.Neuer Favorit. „Als Favorit speichern“ bietet eine Gruppenauswahl an, sobald die Person Gruppen hat. Ohne Wahl steht der Favorit oben in „Ohne Gruppe“.
Eigentum. Gruppen, Ordnung und Einstellungen gehören der Person.
FavoriteServiceprüft jede id aus dem Browser: Favorit über seinen Mitarbeiterauftrag (#1369), Gruppe überemployee_id.Smartphone-Breite der Einzelübersicht. Auf 390 px war die Einzelübersicht breiter als der Bildschirm. Behoben ist die Ursache:
flex-wrap).contain: inline-size, wie in der Monatsliste seit Monatsübersicht: Buchungskarten passen sich auf dem Smartphone der Zellenbreite an #1267).height: 100dvh).Datenbank (Changesets 173–175, hinter 171 aus #1421)
favorite_group(employee_idmit FKON DELETE CASCADE,namevarchar(64),position, Audit-Spalten) und Unique-Schlüsseluk_favorite_group_employee_id_name(imConcurrentModificationAspectauf FA-0004 abgebildet).favorite.favorite_group_id, FKON DELETE SET NULL.favorite.positionundfavorite.last_used, beide nullable, ohne Datenmigration.Lokal gegen MySQL geprüft: Vorher war der Stand bis 166; 173–175 liefen durch, Spalten, FKs und Unique-Schlüssel sind angelegt.
ETL / Reports / Views
report_definition(102),etl_definition(9), die Views (9) sowie Routinen und Trigger der lokalen DB wurden auffavorite,favourite,favorite_groupundlast_useddurchsucht: 0 Treffer. Keine Definition liest die Favoriten-Tabellen, und auch kein Generator im Code.Entscheidungen
form=). So bleibt der Dialog im Modulfavoritesund kennt weder Tag noch Endpunkt, und es gibt keine zweite Implementierung des Anwendens.data-list-filter,data-filter-*) steht insalat.js, beschrieben im Style Guide §5.10.settings-Modul: Sortierung und X alsFavoritePreferences. Dafür darffavoritesjetztsettingsimportieren (ArchitectureTest-Regel angepasst und begründet).FavoriteLayout). Generischesdata-sortable*insalat.js, siehe AGENTS.md und Style Guide §5.9./api/favorite): GET liefert alle Favoriten in der Reihenfolge des Dialogs und dazugroupName, nur lesend. PUT legt ohne Gruppe an. Abwärtskompatibel.salat:selectkannallowEmptyOption,salat:textInputkannmin/max; beides in der AGENTS.md-Tabelle ergänzt.hx-swap="innerHTML settle:0"(Style Guide §5.7).AuthorizedEmployee, wie bei „Als Favorit speichern“. Die Person des Vertrags liestDailyControllerals Wert überEmployeecontractService.getEmployeeIdOfEmployeecontract. Die Methode ist für jeden Login offen (@Authorized), weil die Klasse sonst Manager verlangt.<a href="#favoritesDialog">), ohne Icon und ohne Knopf- oder Menüpunktfläche.data-sortable*steht in AGENTS.md und im Style Guide.Akzeptanzkriterien / Testplan
jenv exec ./mvnw verify: 3702 Tests grün, inklusive ArchitectureTest und MessageResourcesConsistencyTest.FavoriteServiceTest: Kurzliste begrenzt auf X und nach Benutzung, Gesamtzahl, Einstellung X mit Standard und Validierung, Sortierung, Gruppen, Anordnen, Eigentumsprüfungen.FavoritePreferencesTest,FavoriteDialogControllerTest(Auswahl- und Ordnen-Modus, Fehler im Dialog),SettingsFavoriteListSizeTest(ungültiges X speichert nichts),FavoriteLayoutTest,FavoriteDTOMapperTest,ApplyFavouriteTicketReferenceTest.FavoriteDialogE2ETest: Bedienablauf Suchfeld fokussiert, Ordnen gesperrt bei Suche, Enter auf dem einzigen Treffer bucht und schließt den Dialog.ConfirmDialogE2ETest,DailyBookingE2ETest,ApplyPreviousBookingE2ETest.scrollWidth == innerWidth == 390).DailyFavouritesTest: Der eigene Tag bietet die Favoriten an, der Tag einer anderen Person nicht.Operations / Deployment Notes
org.webjars.npm:sortablejs1.15.7 (MIT).Reviewed AGENTS.md; changes comply with architecture, view, and security guidelines.
Closes #1414