Let the planner fund a hand-drawn period, and remove one at a time

Three changes to calendar editing, too interleaved in the same files to
land separately.

Giving the same days to the second parent rewrote the first parent's
days instead of adding their own. The save looked the existing day up
against whoever was logged in rather than the parent being saved for, so
parent A's leave turned into parent B's vacation. The parent choice now
lives with the lookup, and two parents on the same dates produce two
rows and two bands.

Drawing a period by hand meant naming a day type up front. It now asks
who is off and lets the planner fund it, as a one-off period the sync
places, with double days offered when both parents are off and priced
honestly in the hint. Pinning an exact day type is still there, moved
behind Advanced, and editing a pinned day goes straight back to it.

Removing a period offered only the two extremes. There are now three
choices: this day, this year's period, or every year. Taking one year
out of a repeating period narrows it, or splits it in two when the year
is in the middle; where a scope cannot be expressed it is disabled with
a reason rather than doing something surprising.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ei7gCZzdd751uZtPzb1Pep
This commit is contained in:
2026-09-19 15:14:24 +02:00
parent 11f2a17b43
commit 35e479a005
17 changed files with 1514 additions and 750 deletions
+23
View File
@@ -54,6 +54,13 @@ export const calendar = {
'plannedDayModal.pinnedNotice': 'Den här dagen är låst av dig — planeraren ändrar den inte automatiskt.',
'plannedDayModal.dayStatusLabel': 'Den här dagen är:',
'plannedDayModal.rangeTitle': 'Planera {count} dagar',
'plannedDayModal.parentModeLabel': 'Vem gäller det?',
'plannedDayModal.wantsDubbeldagLabel': 'Tillåt dubbeldagar',
'plannedDayModal.wantsDubbeldagHint':
'Båda föräldrarna är lediga samma dag och tar var sin egen föräldrapenningdag (ingen semesterdag går åt) — gäller bara de första 15 månaderna och max 60 dagar per barn, delat mellan er.',
'plannedDayModal.wantsDubbeldagRequiresBothHint': 'Kräver att båda föräldrarna är valda ovan.',
'plannedDayModal.showAdvanced': 'Avancerat: välj typ och förälder manuellt',
'plannedDayModal.hideAdvanced': 'Dölj avancerat',
'plannedDayModal.saveButton': 'Spara',
'plannedDayModal.saveError': 'Det gick inte att spara den planerade dagen',
'plannedDayModal.savingButton': 'Sparar…',
@@ -115,4 +122,20 @@ export const calendar = {
'calendar.periodDeleteAdHocButton': 'Ta bort dessa dagar',
'calendar.periodCancelButton': 'Avbryt',
'calendar.periodCloseAria': 'Stäng',
// todo.md #9 — three-way remove: this day / this period (this year) / this
// period every year.
'calendar.periodDeleteDayButton': 'Den här dagen',
'calendar.periodDeleteYearButton': 'Den här perioden',
'calendar.periodDeleteAllYearsButton': 'Den här perioden, varje år',
'calendar.periodDeleteDayDisabledHint':
'Går inte att ta bort en enskild dag från en återkommande plan — planeraren lägger tillbaka den vid nästa synk. Ta bort perioden istället.',
'calendar.periodDeleteAllYearsDisabledHint': 'Den här perioden är inte kopplad till en återkommande plan.',
'calendar.periodDeleteConfirmDay': 'Är du säker på att du vill ta bort den här dagen?',
'calendar.periodDeleteConfirmYear': 'Är du säker på att du vill ta bort den här perioden (bara det här året)?',
'calendar.periodDeleteConfirmAllYears': 'Är du säker på att du vill ta bort perioden — alla år?',
'calendar.wantsDubbeldagLabel': 'Tillåt dubbeldagar',
'calendar.wantsDubbeldagHint':
'Båda föräldrarna är lediga samma dag och tar var sin egen föräldrapenningdag (ingen semesterdag går åt) — gäller bara de första 15 månaderna och max 60 dagar per barn, delat mellan er.',
'calendar.wantsDubbeldagRequiresBothHint': 'Kräver att perioden gäller båda föräldrarna.',
} as const