feat(ansichten): Listenansicht fuer Buchungen, Report und Kunden

Neue Komponente EntryList zeigt einzelne Buchungen als sortierbare Tabelle
mit Datum, Kunde, Projekt, Task und der Zeit getrennt nach billable und
non-billable, inklusive Summen.

- Buchung: Umschalter Kalender/Liste neben Woche/Monat/Jahr, Auswahl wird
  im Browser gemerkt. Klick auf eine Zeile oeffnet die Buchung.
- Reports: Klick auf einen Mitarbeiter oeffnet dessen Buchungen des
  Reportzeitraums als Liste; ein gesetzter Kundenfilter wird uebernommen.
- Kunden: Umschalter Karten/Liste mit Ort, Projekten, Stunden und Umsatz.
- GET /api/entries akzeptiert dafuer customer_id, Segmented nimmt Icons,
  Modal kennt die Groesse 2xl.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
schakal00783
2026-09-18 10:14:48 +02:00
co-authored by Claude Opus 5
parent 8c93df11d9
commit ef7171496f
9 changed files with 424 additions and 17 deletions
+4 -1
View File
@@ -48,7 +48,10 @@ router.get('/', async (req, res, next) => {
userIds = [wanted];
}
const settings = await getSettings();
const entries = await loadEntries(settings, { from, to, userIds });
// Optionaler Kundenfilter, damit die Listenansicht im Report den dort
// gesetzten Filter uebernehmen kann.
const customerId = req.query.customer_id ? Number(req.query.customer_id) : undefined;
const entries = await loadEntries(settings, { from, to, userIds, customerId });
res.json(entries.map((e) => publicEntry(e, hasRole(req.user, 'lead'))));
} catch (err) {
next(err);