diff --git a/web/src/lib/modals/AssetSelectionChangeDateModal.svelte b/web/src/lib/modals/AssetSelectionChangeDateModal.svelte index 41c43b13ab..ef38dd7857 100644 --- a/web/src/lib/modals/AssetSelectionChangeDateModal.svelte +++ b/web/src/lib/modals/AssetSelectionChangeDateModal.svelte @@ -37,23 +37,23 @@ // the offsets (and validity) for time zones may change if the date is changed, which is why we recompute the list let selectedOption = $derived(getPreferredTimeZone(initialDate, initialTimeZone, timezones, lastSelectedTimezone)); - // sort the dates to get the first and last range when doing a change by offset - let assetDates = $derived( - assets - .map((asset) => DateTime.fromObject(asset.localDateTime, { zone: asset.localOffsetHours ? 'local' : 'UTC' })) - .sort((a, b) => a.toMillis() - b.toMillis()), - ); + // get the first and last date range when doing a change by offset + const dateRange = $derived.by(() => { + let first = undefined; + let last = undefined; + for (const asset of assets) { + const date = DateTime.fromObject(asset.localDateTime, { zone: asset.localOffsetHours ? 'local' : 'UTC' }); + if (!first || first.toMillis() > date.toMillis()) { + first = date; + } + if (!last || last.toMillis() < date.toMillis()) { + last = date; + } + } - let firstDate = $derived.by(() => { - let base = assetDates.at(0); - let date = showRelative && base ? calcNewDate(base, selectedDuration, selectedOption?.value) : base; - return getFullDateFormat(date); - }); - - let lastDate = $derived.by(() => { - let base = assetDates.at(-1); - let date = showRelative && base ? calcNewDate(base, selectedDuration, selectedOption?.value) : base; - return getFullDateFormat(date); + first = showRelative && first ? calcNewDate(first, selectedDuration, selectedOption?.value) : first; + last = showRelative && last ? calcNewDate(last, selectedDuration, selectedOption?.value) : last; + return { first: getFullDateFormat(first), last: getFullDateFormat(last) }; }); const onSubmit = async () => { @@ -120,10 +120,10 @@ {#if showRelative} {#if assets.length > 1} - {$t('first')}: {firstDate} - {$t('last')}: {lastDate} + {$t('first')}: {dateRange.first} + {$t('last')}: {dateRange.last} {:else} - {firstDate} + {dateRange.first} {/if} {/if}