Skip to content
Snippets Groups Projects
  • Julian Dominguez-Schatz's avatar
    c09a85f3
    Add schedule end date/count field (#1899) · c09a85f3
    Julian Dominguez-Schatz authored
    * Add "end" field with date/count options
    
    * Use "end" field to generate schedule
    
    * Show "end" field in recurring description
    
    * Disable weekend before/after picker when not enabled
    
    * Add release notes
    
    * Fix failing typechecks
    
    * Add some description tests
    
    * PR feedback
    
    * 'Features', not 'Feature'
    
    * Fix goal templates infinite loop
    
    * Empty commit to bump ci
    
    * Fix bug where schedule templates in the past would apply incorrectly
    
    For example, if you had a schedule which started in November 2023 for
    1.00, and you applied the schedule in October 2023, then you would end
    up with a value of 0.50 applied in October.
    
    * Fix handling of schedules with an end date
    
    This commit also includes a refactor of the skip-weekend logic: rather
    than referring only to dates with skipped weekends (which requires
    checking whether the "next date" request worked correctly), we track a
    "base date" which is the previous value of the schedule according to the
    rrule, excluding any weekend-skipping. This lets us use `addDays(baseDate, 1)`
    to get the next occurrence, regardless of the weekend behaviour.
    
    Doing things this way ensures that the loop will always make progress.
    
    * Only compute skipped weekend if weekend skips were requested
    
    * Fix typo in iterate-schedule-occurrences code
    
    We should be using `nextBaseDate` to derive the next base date, not
    `nextDate`; this is because we want the base date to be guaranteed to
    make progress in each loop iteration, so we can finish in at most 30
    iterations without duplicate base dates.
    
    * Use const
    
    * Revert const -> let for one mutable variable
    Add schedule end date/count field (#1899)
    Julian Dominguez-Schatz authored
    * Add "end" field with date/count options
    
    * Use "end" field to generate schedule
    
    * Show "end" field in recurring description
    
    * Disable weekend before/after picker when not enabled
    
    * Add release notes
    
    * Fix failing typechecks
    
    * Add some description tests
    
    * PR feedback
    
    * 'Features', not 'Feature'
    
    * Fix goal templates infinite loop
    
    * Empty commit to bump ci
    
    * Fix bug where schedule templates in the past would apply incorrectly
    
    For example, if you had a schedule which started in November 2023 for
    1.00, and you applied the schedule in October 2023, then you would end
    up with a value of 0.50 applied in October.
    
    * Fix handling of schedules with an end date
    
    This commit also includes a refactor of the skip-weekend logic: rather
    than referring only to dates with skipped weekends (which requires
    checking whether the "next date" request worked correctly), we track a
    "base date" which is the previous value of the schedule according to the
    rrule, excluding any weekend-skipping. This lets us use `addDays(baseDate, 1)`
    to get the next occurrence, regardless of the weekend behaviour.
    
    Doing things this way ensures that the loop will always make progress.
    
    * Only compute skipped weekend if weekend skips were requested
    
    * Fix typo in iterate-schedule-occurrences code
    
    We should be using `nextBaseDate` to derive the next base date, not
    `nextDate`; this is because we want the base date to be guaranteed to
    make progress in each loop iteration, so we can finish in at most 30
    iterations without duplicate base dates.
    
    * Use const
    
    * Revert const -> let for one mutable variable
schedules.ts 7.42 KiB