Ik ben bezig met een project waarin de gebruiker een taak moet kunnen inplannen. Bij het inplannen van de taak moet het mogelijk zijn om de taak te laten herhalen. Dit zou bijvoorbeeld kunnen zijn op iedere dinsdag maar het zou ook kunnen dat de taak iedere vier weken herhaald moet worden.
Taken kunnen ingepland worden met de nauwkeurigheid van een dag, het zal dus niet voorkomen dat een ingeplande taak wordt verschoven van 13.00 uur naar 15.20 uur op een bepaalde dag. Hooguit kan het gebeuren dat een taak wordt verplaats van dinsdag naar bijvoorbeeld donderdag en dit is dan van toepassing op alle instanties van de terugkerende afspraak die in de toekomst plaats vinden. Instanties van de terugkerende afspraak in het verleden moeten echter wel op hun originele dag te zien blijven in de kalender. Verder is er geen controle nodig of een herhalende afspraak conflicteert met een andere afspraak.
Het probleem dat ik heb is hoe ik de terugkerende afspraken zal opslaan. Ik zie grofweg twee oplossingen en ik weet niet wat het meeste praktische is, wellicht dat iemand hier me op de goede weg kan helpen?
Oplossing 1: On the fly
Wanneer in de kalender een dag of week wordt geselecteerd bepalen of er een terugkerende afspraak voorkomt. Er zal ergens opgeslagen moeten worden met welke frequentie een afspraak zich herhaalt en iedere keer wanneer er een datum of range van datums wordt getoond zal bepaald moeten worden of er een instantie van een herhalende afspraak optreed. Voor instanties die zijn geweest zou een losse afspraak opgeslagen kunnen worden waardoor oude instanties altijd zijn in te zien op dag dat ze hebben plaats gevonden.
Voordelen: Je maakt niet in één keer een hele berg afspraken aan. Door op te slaan met welke frequentie de taak uitgevoerd moet worden is het makkelijk om alle toekomstige instanties in één keer aan te passen.
Nadelen: Bij iedere handeling waar datums mee gemoeid zijn moet er worden gekeken of een herhalende afspraak zich voordoet. Om oude instanties te behouden zouden deze bij iedere start van de applicatie aangemaakt moeten worden als een losse afspraak.
Oplossing 2: Vooraf inplannen
Een andere oplossing zou zijn om wanneer de gebruiker een herhalende afspraak inplant, losse afspraken aan te maken voor een lange periode. Als een taak op iedere dinsdag gedaan moet worden zou de applicatie voor alle dinsdag in de komende tig jaar een afspraak kunnen aanmaken.
Voordelen: De afspraken zijn meteen klaar voor gebruik, er hoeft niet steeds gecontroleerd te worden of er een herhalende afspraak is op een bepaalde datum. Het is niet meer nodig om te controleren of een herhalende afspraak heeft plaats gevonden en daar een losse afspraak voor te maken zodat deze bewaard blijft als 'archief afspraak'.
Nadelen: Tot hoever in de toekomst plan je de afspraak in? Wanneer de frequentie veranderd zullen ook alle instanties van de afspraak in de toekomst aangepast moeten worden.
Taken kunnen ingepland worden met de nauwkeurigheid van een dag, het zal dus niet voorkomen dat een ingeplande taak wordt verschoven van 13.00 uur naar 15.20 uur op een bepaalde dag. Hooguit kan het gebeuren dat een taak wordt verplaats van dinsdag naar bijvoorbeeld donderdag en dit is dan van toepassing op alle instanties van de terugkerende afspraak die in de toekomst plaats vinden. Instanties van de terugkerende afspraak in het verleden moeten echter wel op hun originele dag te zien blijven in de kalender. Verder is er geen controle nodig of een herhalende afspraak conflicteert met een andere afspraak.
Het probleem dat ik heb is hoe ik de terugkerende afspraken zal opslaan. Ik zie grofweg twee oplossingen en ik weet niet wat het meeste praktische is, wellicht dat iemand hier me op de goede weg kan helpen?
Oplossing 1: On the fly
Wanneer in de kalender een dag of week wordt geselecteerd bepalen of er een terugkerende afspraak voorkomt. Er zal ergens opgeslagen moeten worden met welke frequentie een afspraak zich herhaalt en iedere keer wanneer er een datum of range van datums wordt getoond zal bepaald moeten worden of er een instantie van een herhalende afspraak optreed. Voor instanties die zijn geweest zou een losse afspraak opgeslagen kunnen worden waardoor oude instanties altijd zijn in te zien op dag dat ze hebben plaats gevonden.
Voordelen: Je maakt niet in één keer een hele berg afspraken aan. Door op te slaan met welke frequentie de taak uitgevoerd moet worden is het makkelijk om alle toekomstige instanties in één keer aan te passen.
Nadelen: Bij iedere handeling waar datums mee gemoeid zijn moet er worden gekeken of een herhalende afspraak zich voordoet. Om oude instanties te behouden zouden deze bij iedere start van de applicatie aangemaakt moeten worden als een losse afspraak.
Oplossing 2: Vooraf inplannen
Een andere oplossing zou zijn om wanneer de gebruiker een herhalende afspraak inplant, losse afspraken aan te maken voor een lange periode. Als een taak op iedere dinsdag gedaan moet worden zou de applicatie voor alle dinsdag in de komende tig jaar een afspraak kunnen aanmaken.
Voordelen: De afspraken zijn meteen klaar voor gebruik, er hoeft niet steeds gecontroleerd te worden of er een herhalende afspraak is op een bepaalde datum. Het is niet meer nodig om te controleren of een herhalende afspraak heeft plaats gevonden en daar een losse afspraak voor te maken zodat deze bewaard blijft als 'archief afspraak'.
Nadelen: Tot hoever in de toekomst plan je de afspraak in? Wanneer de frequentie veranderd zullen ook alle instanties van de afspraak in de toekomst aangepast moeten worden.