Fix weekly recurring events showing wrong date in edit dialog due to confusion about week start day.
This commit is contained in:
		| @@ -91,25 +91,27 @@ function getDateWeekly(event, n, timeZone = DEFAULT_TZ) { | |||||||
|   let occ = n |   let occ = n | ||||||
|   if (!baseCountsAsPattern) occ -= 1 |   if (!baseCountsAsPattern) occ -= 1 | ||||||
|   if (occ < 0) return null |   if (occ < 0) return null | ||||||
|   const patternDays = [] |   // Build Monday-based offsets (0=Mon..6=Sun) for all active pattern days | ||||||
|   for (let d = 0; d < 7; d++) if (pattern[d]) patternDays.push(d) |   const offsets = pattern | ||||||
|   const firstWeekDates = [] |     .reduce((acc, active, i) => (active ? [...acc, (i + 6) % 7] : acc), []) | ||||||
|   for (const d of patternDays) { |     .sort((a, b) => a - b) | ||||||
|     if (d < baseDow) continue |   const dates = [] | ||||||
|     const date = dateFns.addDays(baseWeekMonday, d) |   const baseOffset = (baseDow + 6) % 7 | ||||||
|     if (date < baseStart) continue |   for (const off of offsets) { | ||||||
|     firstWeekDates.push(date) |     if (off < baseOffset) continue | ||||||
|  |     const d = dateFns.addDays(baseWeekMonday, off) | ||||||
|  |     if (d < baseStart) continue | ||||||
|  |     dates.push(d) | ||||||
|   } |   } | ||||||
|   const F = firstWeekDates.length |   const F = dates.length | ||||||
|   if (occ < F) return toLocalString(firstWeekDates[occ], timeZone) |   if (occ < F) return toLocalString(dates[occ], timeZone) | ||||||
|   const remaining = occ - F |   const remaining = occ - F | ||||||
|   const P = patternDays.length |   const P = offsets.length | ||||||
|   if (P === 0) return null |   if (P === 0) return null | ||||||
|   const k = Math.floor(remaining / P) + 1 |   const k = Math.floor(remaining / P) + 1 | ||||||
|   const indexInWeek = remaining % P |   const indexInWeek = remaining % P | ||||||
|   const dow = patternDays[indexInWeek] |   const date = dateFns.addDays(baseWeekMonday, k * interval * 7 + offsets[indexInWeek]) | ||||||
|   const occurrenceDate = dateFns.addDays(baseWeekMonday, k * interval * 7 + dow) |   return toLocalString(date, timeZone) | ||||||
|   return toLocalString(occurrenceDate, timeZone) |  | ||||||
| } | } | ||||||
|  |  | ||||||
| function getDateMonthly(event, n, timeZone = DEFAULT_TZ) { | function getDateMonthly(event, n, timeZone = DEFAULT_TZ) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Leo Vasanko
					Leo Vasanko