diff --git a/Changes.md b/Changes.md index 87dd03c..df18f6e 100644 --- a/Changes.md +++ b/Changes.md @@ -1,5 +1,38 @@ # Änderungen +## Ruhige Buchungszeilen im Kontoblatt (17.08.2026) + +Die Zeilen des Kontoblatts sind jetzt alle gleich hoch – zwei Textzeilen – und ihr Inhalt +steht senkrecht in der Mitte. Bisher wuchs eine Zeile mit ihrem Text, sodass die Liste beim +Blättern sprang; der Buchungstext war zudem nach 90 Zeichen hart abgeschnitten und der Rest +nirgends zu sehen. + +- Was auf zwei Zeilen nicht passt, schneidet das Stylesheet ab. Der vollständige Text steht + im Tooltip – und zwar nur dort, wo tatsächlich etwas fehlt: Ob ein Text abgeschnitten ist, + entscheidet sich erst nach dem Umbruch, `kontoblatt.js` setzt den Tooltip deshalb nach dem + Laden und nach jeder Größenänderung des Fensters. +- Der Buchungstext wird vollständig ausgegeben statt nach 90 Zeichen gekürzt; sichtbar bleibt + dank Abschnitt gleich viel, im Tooltip steht nun aber alles. +- Über dem Kategoriefeld einer **Splitbuchung** nennt der Tooltip die Zeilen der Aufteilung: + je Zeile Kategorie (oder Gegenkonto) und Betrag. In der Spalte selbst steht nur + *Splitbuchung*; wohin das Geld geht, war bisher erst im Dialog zu sehen. + +## Klasse im Kontoblatt direkt auswählen (17.08.2026) + +Die Klassenspalte des Kontoblatts ist jetzt anklickbar – nach derselben Bauart wie die +Zuordnung daneben: Ein Klick öffnet die Klassenliste in der Zelle, und die gewählte Klasse +wird sofort gespeichert. Der erste Eintrag *— keine —* löscht die vorhandene Klasse. Bisher +war dafür jedes Mal der Umweg über die Buchungsmaske nötig. + +- Neue Route `POST /buchungen/{id}/klasse` auf `Buchung::klasseSetzen()`. Die Methode achtet + den Monatsabschluss und weist eine Klasse ab, die es nicht gibt. +- Die Klasse steht **neben** der Zuordnung, nicht in ihr: Kategorie, Gegenkonto und + Splitzeilen bleiben unberührt, eine gesplittete Buchung bleibt gesplittet. +- Die Liste gibt es – wie die der Zuordnung – genau einmal im HTML; `kontoblatt.js` hängt sie + in die angeklickte Zelle. Ohne JavaScript führt der Klick weiterhin in die Buchungsmaske. +- Zeilen der Gegensicht bleiben unverändert Text: Sie werden auf ihrem Ursprungskonto + geändert. + ## Splitbuchungen in den Abgleichregeln (13.08.2026) Eine Regel für den Abgleich kann jetzt eine **Splitbuchung** vorgeben: mehrere Kategorien mit diff --git a/docs/buchungen.md b/docs/buchungen.md index 0fe834e..ae59a85 100644 --- a/docs/buchungen.md +++ b/docs/buchungen.md @@ -98,10 +98,10 @@ Drei Punkte, die sich nicht ändern dürfen: * Zeilen mit `gegensicht = true` führen zu ihrer Buchung, statt die Auswahl zu öffnen: Sie werden auf ihrem Ursprungskonto geändert, wie beim Bearbeiten und Löschen. `kontoblatt.js` erkennt sie an der Klasse `gegenseite`. -* Feld und Auswahlliste sind **gleich breit und gleich hoch** (`13rem` / `1.35rem`), und - die Zelle zeigt nichts an, was nicht auch in der Liste stünde – kein „zuordnen …“. Sonst - rückt beim Anklicken die halbe Zeile: Die Spalte wüchse auf die Breite der längsten - Kategorie, und der Empfänger daneben bräche um. +* Feld und Auswahlliste sind **gleich breit** (`13rem`), und die Zelle zeigt nichts an, was + nicht auch in der Liste stünde – kein „zuordnen …“. Sonst rückt beim Anklicken die halbe + Zeile: Die Spalte wüchse auf die Breite der längsten Kategorie, und der Empfänger daneben + bräche um. Senkrecht rückt nichts, weil die Zeilenhöhe ohnehin feststeht (siehe unten). Die Auswahl eines Depots (`depot:7`) öffnet statt beider den **Wertpapierdialog**; ohne JavaScript führt sie auf `/buchungen/{id}/wertpapier?depot=7`, wo dieselben Felder als @@ -114,6 +114,42 @@ gewesen. Wer eine Aufteilung wieder in eine einzelne Zuordnung wandeln will, lö im Dialog und ordnet die dann unzugeordnete Buchung anschließend zu – oder geht über die Buchungsmaske. +## Klasse im Kontoblatt + +Die Klassenspalte ist nach derselben Bauart anklickbar: eine zweite Liste +(`#klassenauswahl`), die `kontoblatt.js` in die angeklickte Zelle hängt. Ihr erster Eintrag +*— keine —* löscht die vorhandene Klasse, jeder andere setzt sie; gespeichert wird sofort +beim Anklicken, über `POST /buchungen/{id}/klasse` und `Buchung::klasseSetzen()`. + +Die Klasse steht **neben** der Zuordnung, nicht in ihr: Sie ist die zweite +Auswertungsdimension. Anders als `Buchung::zuordnen()` rührt `klasseSetzen()` deshalb weder +Kategorie noch Gegenkonto noch Splitzeilen an – auch eine gesplittete Buchung bleibt beim +Wechsel der Klasse gesplittet. Den Monatsabschluss achtet die Methode wie alle anderen. + +## Zeilenhöhe und Tooltips im Kontoblatt + +Jede Buchungszeile ist **zwei Textzeilen hoch**, gleich wie viel in ihr steht, und ihr +Inhalt steht senkrecht in der Mitte. Eine Zeile, die mit ihrem Text wächst, ließe die Liste +beim Blättern hüpfen; eine, die auf eine Zeile schrumpft, machte lange Empfänger unlesbar. +Die Höhe hängt an `table.kontoblatt td`, das Abschneiden an `.zellentext` (zwei Zeilen, +danach Auslassungspunkte). Empfänger und Buchungstext stehen deshalb in einem `