Ein Termin von-bis belegt jeden Tag dazwischen
Zwei Fehler, nicht einer. Der sichtbare: Die Kachel stand nur am Anfangstag. Wer im Monatsraster auf den Mittwoch sah, sah nichts -- obwohl die Aktion von Montag bis Freitag lief. Der unsichtbare, und der ist der schlimmere: Der SERVER suchte Eintraege, deren ANFANG im sichtbaren Fenster liegt. Eine Aktion vom 28.09. bis zum 05.10. kam im Oktober deshalb ueberhaupt nicht an -- nicht "nur am ersten Tag markiert", sondern gar nicht da. Wer im Oktober plante, sah eine freie Woche, die belegt war. Jetzt entscheidet die UEBERSCHNEIDUNG, nicht der Anfang. Gebaut wurde es in nachTag() -- der einzigen Stelle, an der Eintraege auf Tage verteilt werden. Monat, Woche, Liste und Zeitstrahl holen sich alle dort; vier Ansichten einzeln nachzuruesten waeren vier Stellen, an denen die fuenfte vergessen wird. Das Ende wird abgeleitet, nicht gepflegt: aus event_ende ODER aus Uhrzeit plus Dauer. Ein Live von 22:00 ueber vier Stunden endet um 02:00 am naechsten Tag -- das stand bisher nirgends, obwohl die Zahlen da waren. Der Tagesdialog filterte selbst auf den Anfangstag. Im Raster war der Mittwoch markiert, tippte man ihn an, stand da "An diesem Tag steht nichts." Jetzt fragt er dieselbe Stelle wie das Raster. pruef-zeitraum.mjs: 16 Pruefungen, beide Fehler einzeln, mit drei Gegenproben (vor dem Anfang, nach dem Ende, Punkttermin). pruef-terminregel.mjs weiterhin 35/0. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -52,6 +52,26 @@
|
||||
* den 24., auch wenn der Zettel am 3. entstanden ist. */
|
||||
export const TERMIN_TAG_SQL = "COALESCE(e.geplant, e.datum)";
|
||||
|
||||
/** Der LETZTE Tag, an dem ein Eintrag noch laeuft -- als SQL-Ausdruck.
|
||||
*
|
||||
* Gebraucht seit dem 20.09.2026. Filipe: „wenn ich termine eintrage
|
||||
* mit von bis, will ich dass die ganze zeit markiert ist und nicht
|
||||
* nur der anfang."
|
||||
*
|
||||
* DER FEHLER SASS TIEFER ALS IN DER ANZEIGE. Der Kalender suchte
|
||||
* Eintraege, deren ANFANG im sichtbaren Fenster liegt. Eine Aktion
|
||||
* vom 28.09. bis zum 05.10. kam damit im Oktober ueberhaupt nicht an
|
||||
* -- nicht „nur am ersten Tag markiert", sondern gar nicht da. Wer im
|
||||
* Oktober plante, sah eine freie Woche, die belegt war.
|
||||
*
|
||||
* `MAX` und nicht `COALESCE(e.event_ende, ...)`: Ein Ende, das VOR
|
||||
* dem Anfang liegt (vertippt, Anfang spaeter verschoben), wuerde
|
||||
* sonst den Eintrag aus seinem eigenen Zeitraum werfen. Der leere
|
||||
* Text sortiert vor jedem Datum -- ohne Ende gewinnt damit immer der
|
||||
* Anfang, und das ist genau richtig. */
|
||||
export const TERMIN_ENDE_SQL =
|
||||
"MAX(COALESCE(e.event_ende, ''), COALESCE(e.geplant, e.datum))";
|
||||
|
||||
/** Die Bedingung als SQL. Erwartet GENAU EINEN Platzhalter: den
|
||||
* heutigen Tag in Ortszeit (`heuteLokal()`).
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user