Agenda-overzicht
Dit hoofdstuk beschrijft een functie die na v0.8 is bedacht. Nieuwe ideeën komen als volgend hoofdstuk achteraan het document; bij een volgende grote revisie worden ze op de inhoudelijk logische plek ingevoegd, zodat de bestaande hoofdstuknummers en verwijzingen nu niet hoeven te verschuiven.
Waarom een agenda naast het bord
Het bord ordent taken naar belang en urgentie, maar kent geen tijdas. Een deadline is er alleen zichtbaar als kleuraccent op de kaart (Visuele codering op de kaart) en als factor in de urgentiescore (Ranking). Het bord beantwoordt daarmee de vraag wat is het belangrijkst, maar niet de vraag wat speelt er deze week.
Het agenda-overzicht is geen tweede takenlijst, maar een tweede uitsnede van dezelfde gegevens: dezelfde taken, dezelfde filters, alleen uitgezet op de kalender in plaats van in de kwadranten. Twee vragen die het bord niet kan beantwoorden en de agenda wel:
- Zit een dag of week te vol, en moet er iets naar voren of naar achteren?
- Wat komt er aan in een periode waarin ik er niet ben — vakantie, of een week die al vol afspraken staat?
De agenda verandert niets aan de rangorde: hij toont de taken die er al zijn, op de datum die ze al hebben. Het bord blijft de plek om te bepalen wat belangrijk is; de agenda is de plek om te zien wanneer het valt.
Wanneer is een taak "actief in een periode"
Een taak heeft in het huidige model één datum die iets over de planning zegt: de deadline (optioneel, De taak als kaart). Dat is te weinig voor een agenda — een taak met een deadline over drie weken waar je aanstaande dinsdag aan wilt werken, hoort op dinsdag zichtbaar te zijn. Daarom krijgt de taak een tweede, eveneens optionele datum: de geplande dag, de dag waarop je van plan bent eraan te werken. Deadline blijft wat hij is — de uiterste datum, en de enige van de twee die de urgentiescore beïnvloedt.
Uit die twee datums volgt wanneer een taak in beeld komt:
| Situatie | Op de kalender |
|---|---|
| Alleen een deadline | Eén item op de deadline-dag |
| Alleen een geplande dag | Eén item op die dag |
| Beide, gepland vóór de deadline | Een balk van de geplande dag tot en met de deadline, met nadruk op de laatste dag |
| Beide, gepland op of na de deadline | Eén item op de geplande dag, met een waarschuwingsteken |
| Geen van beide | Niet op de kalender, wel in de strook "zonder datum" ernaast |
| Uitgesteld tot (snooze, Overige attributen) | Een markering op de terugkomdag |
| Afgerond | Alleen met "toon afgeronde" aan, op de dag van afronden |
De strook "zonder datum" naast de kalender is bewust onderdeel van het scherm: taken zonder datum zijn juist de taken die wegzakken, en door ze naast de agenda te tonen kun je ze de kalender in slepen (Interactie). De strook is gesorteerd op rangordescore (Rangorde binnen een kwadrant), zodat het belangrijkste bovenaan staat.
Verder gelden dezelfde zichtbaarheidsregels als op het bord: alleen taken uit projecten met status actief (Archivering en zichtbaarheid), en dezelfde filters op gebied, categorie, project en status. De filterkeuze wordt gedeeld met het bord, zodat wisselen tussen bord en agenda de context bewaart.
Naast taken kan de agenda ook projecten tonen: een project heeft in het
model al een begin- en einddatum (project.start_date en end_date,
Datamodel). Die worden als smalle balk boven de dagen getoond, in de
gebiedskleur, met een schakelaar om ze weg te laten. Dat kost geen nieuw
gegeven en geeft direct antwoord op de vraag onder welk project een drukke
week valt.
De drie weergaven
| Weergave | Opzet | Waarvoor |
|---|---|---|
| Maand | Raster van zeven kolommen, per dag een paar compacte regels: gebiedskleur als stip, titel afgekapt, "nog 3" als er meer zijn | Overzicht: waar zitten de pieken, welke week is vol |
| Week | Zeven kolommen met meer hoogte, items met kleine vierkante afbeelding en titel, meerdaagse taken als balk bovenaan de kolom | De werkweek plannen en verschuiven |
| Dag | Eén kolom, taken onder elkaar gesorteerd op rangordescore, met de volledige kaartweergave uit De kaart op het bord | De dag zelf: wat pak ik nu op |
Bewust geen uurraster. Taken hebben in dit model geen tijdstip, alleen een datum. Een kalender met tijdvakken van kwartieren zou een precisie suggereren die de gegevens niet hebben, en dwingt tot het invullen van tijden die niets toevoegen aan de prioritering. De dagweergave is daarom een geordende lijst, geen dagplanner. Wie tijdvakken wil, gebruikt daar zijn gewone agenda voor; zie Bewust buiten scope over koppeling.
De weergave (maand/week/dag) en de getoonde periode staan in de URL, zodat een dag of week deelbaar en te bookmarken is en de browserknoppen "terug" en "vooruit" werken zoals verwacht.
Wat een agenda-item toont
Een item op de kalender is een verkleinde kaart, geen kaart. De volgorde van belang is anders dan op het bord: daar zoek je op beeld, hier op dag. Per weergave:
- Maand: stip in de gebiedskleur, titel op één regel, en een klein merkteken voor het kwadrant (Het bord). Geen afbeelding — op deze schaal is een vierkant van veertien pixels ruis.
- Week: dezelfde gegevens plus de vierkante kaartafbeelding, zodat een taak herkenbaar is als hetzelfde ding dat op het bord staat.
- Dag: de kaartweergave uit De kaart op het bord, ongewijzigd.
Een deadline-item krijgt hetzelfde kleuraccent voor nabijheid als op de kaart (Visuele codering op de kaart). Een item dat alleen gepland is en geen deadline heeft, krijgt dat accent niet — anders lijkt een eigen planningskeuze op een harde datum. Klikken op een item opent de detailweergave van de taak.
Interactie
- Navigatie: vorige/volgende periode, een knop "vandaag", en een keuzeknop voor maand/week/dag. De huidige dag is altijd gemarkeerd.
- Slepen verzet de geplande dag, nooit de deadline. Dit is de belangrijkste afspraak van dit hoofdstuk. Een deadline is een afspraak met de buitenwereld en beïnvloedt de urgentiescore (Ranking); die verzet je bewust, in het taakformulier, en niet met een muisbeweging. De geplande dag is je eigen voornemen en mag met slepen verschuiven. Een taak zonder datum krijgt bij slepen vanuit de strook een geplande dag.
- Nieuwe taak vanaf een dag: klikken op lege ruimte in een dag opent het taakformulier met die dag al ingevuld als geplande dag.
- Terug naar het bord: vanuit elk item is de taak te openen; het bord behoudt de filters die in de agenda zijn ingesteld.
Slepen is een toevoeging op een scherm dat ook zonder werkt: de geplande dag is gewoon een veld in het taakformulier. Zonder JavaScript, of op een klein scherm waar slepen onhandig is, blijft de agenda volledig bruikbaar.
Drukte zichtbaar maken
De reden om een agenda te willen is meestal niet "wat moet ik doen" maar "is dit haalbaar". Daarom toont elke dag een lichte drukte-indicatie: het aantal taken dat op die dag valt, en een subtiele balk die meeloopt met de som van de rangordescores. Een dag met zes kleine klusjes ziet er dan anders uit dan een dag met twee zware.
Als er een dagelijkse capaciteit is ingesteld (het open punt Dagelijkse capaciteit), kleurt een dag die daar overheen gaat. Zolang dat getal er niet is, blijft de indicatie beschrijvend: hij toont drukte, hij oordeelt er niet over.
Samenhang met score en AI-advies
De agenda staat los van de scoreberekening. De geplande dag is nadrukkelijk geen factor uit Alle factoren op een rij: hij zegt iets over jouw voornemen, niet over het belang of de urgentie van de taak, en zou anders een lus opleveren waarin plannen de rangorde verandert die bepaalt wat je zou moeten plannen. Of dat zo blijft, is een open punt (Geplande dag als factor?).
Het AI-advies (AI-advies) profiteert wel van de agenda, zonder dat er iets aan het advies verandert: doordat er nu een geplande dag bestaat, kan het advies zich uitspreken over de dag zelf ("je hebt vijf taken op vandaag gepland en drie deadlines deze week") in plaats van alleen over het bord als geheel. In de dagweergave staat daarom hetzelfde adviespaneel als op het dashboard, toegespitst op de getoonde dag.
Gevolgen voor het datamodel
De agenda vraagt geen nieuwe tabel: één taak, één plek in de tijd.
| Veld | Tabel | Type | Toelichting |
|---|---|---|---|
planned_on | task | date, nullable | De dag waarop je aan de taak wilt werken |
Meer is er niet nodig: de deadline, snoozed_until, completed_at en de
project-datums staan al in Datamodel. Een tweede veld voor een
"geplande einddatum" is bewust weggelaten — de balk in Wanneer is een taak "actief in een periode" loopt van de
geplande dag tot de deadline, en dat dekt het meerdaagse geval zonder een
derde datum die onderhouden moet worden.
Overwogen en afgevallen: een aparte tabel task_schedule met meerdere
geplande momenten per taak. Dat is nodig zodra een taak op meerdere dagen kan
staan of zich herhaalt (Bewust buiten scope), maar het maakt elke query en elk scherm
zwaarder voor een geval dat zich nog niet heeft voorgedaan.
Datamodel beschrijft het model zoals het werkelijk in de database staat en wordt daarom pas bijgewerkt wanneer dit veld er ook echt is — conform de afspraak in De overgang van A naar B dat Datamodel leidend is en het document meebeweegt met wat er gebouwd wordt.
Bewust buiten scope
- Herhalende taken ("elke maandag de urenregistratie"). De agenda maakt die behoefte zichtbaar, maar herhaling vraagt een eigen regel plus het vooruit genereren van exemplaren, en raakt de score en het advies. Zie Herhalende taken.
- Tijdvakken en afspraken. Zie De drie weergaven: geen uurraster.
- Koppeling met een externe agenda. Taken naast je afspraken zien is aantrekkelijk, maar import van een externe agenda betekent gegevens van buiten binnenhalen en synchroniseren. Een uitvoer-only variant (een ICS-abonnement dat je taken met datum in je gewone agenda toont) is aanmerkelijk eenvoudiger en waarschijnlijk het eerste dat gebouwd wordt. Zie Koppeling met een externe agenda.
- Meerdere personen. Het bord is persoonlijk (Visie); de agenda daarmee ook. Sinds Toewijzing aan personen kunnen taken wél aan anderen worden toegewezen, maar de agenda toont altijd één persoon — een gecombineerde weergave over meerdere mensen blijft buiten scope (Bewust buiten scope).
Plaats in de fasering
De agenda hoort in fase A: hij vraagt geen publiek endpoint en geen Joomla-omgeving, en is met dezelfde stack te bouwen als de rest van het prototype (Fase A — het lokale prototype). Hij komt ná het AI-advies uit A3, omdat de drie basisfuncties uit Visie eerst compleet moeten zijn, en is in hoofdstuk 10 toegevoegd als fase A4.