mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
fix(web): geolocation utility start year
This commit is contained in:
parent
27bc8eba7b
commit
3f82cd45d0
2 changed files with 25 additions and 3 deletions
|
|
@ -6,16 +6,17 @@
|
||||||
onDateChange: (year?: number, month?: number, day?: number) => Promise<void>;
|
onDateChange: (year?: number, month?: number, day?: number) => Promise<void>;
|
||||||
onClearFilters?: () => void;
|
onClearFilters?: () => void;
|
||||||
defaultDate?: string;
|
defaultDate?: string;
|
||||||
|
startYear: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
let { onDateChange, onClearFilters, defaultDate }: Props = $props();
|
let { onDateChange, onClearFilters, defaultDate, startYear }: Props = $props();
|
||||||
|
|
||||||
let selectedYear = $state<number | undefined>(undefined);
|
let selectedYear = $state<number | undefined>(undefined);
|
||||||
let selectedMonth = $state<number | undefined>(undefined);
|
let selectedMonth = $state<number | undefined>(undefined);
|
||||||
let selectedDay = $state<number | undefined>(undefined);
|
let selectedDay = $state<number | undefined>(undefined);
|
||||||
|
|
||||||
const currentYear = new Date().getFullYear();
|
const currentYear = new Date().getFullYear();
|
||||||
const yearOptions = Array.from({ length: 30 }, (_, i) => currentYear - i);
|
let yearOptions = $derived(Array.from({ length: currentYear - startYear + 1 }, (_, i) => currentYear - i));
|
||||||
|
|
||||||
const monthOptions = Array.from({ length: 12 }, (_, i) => ({
|
const monthOptions = Array.from({ length: 12 }, (_, i) => ({
|
||||||
value: i + 1,
|
value: i + 1,
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
import { setQueryValue } from '$lib/utils/navigation';
|
import { setQueryValue } from '$lib/utils/navigation';
|
||||||
import { buildDateString } from '$lib/utils/string-utils';
|
import { buildDateString } from '$lib/utils/string-utils';
|
||||||
import { toTimelineAsset } from '$lib/utils/timeline-util';
|
import { toTimelineAsset } from '$lib/utils/timeline-util';
|
||||||
import { searchAssets, updateAssets, type AssetResponseDto } from '@immich/sdk';
|
import { AssetOrder, searchAssets, updateAssets, type AssetResponseDto } from '@immich/sdk';
|
||||||
import { Button, LoadingSpinner, modalManager, Text } from '@immich/ui';
|
import { Button, LoadingSpinner, modalManager, Text } from '@immich/ui';
|
||||||
import {
|
import {
|
||||||
mdiMapMarkerMultipleOutline,
|
mdiMapMarkerMultipleOutline,
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
let partialDate = $state<string | null>(data.partialDate);
|
let partialDate = $state<string | null>(data.partialDate);
|
||||||
let isLoading = $state(false);
|
let isLoading = $state(false);
|
||||||
let assets = $state<AssetResponseDto[]>([]);
|
let assets = $state<AssetResponseDto[]>([]);
|
||||||
|
let startYear = $state(2000);
|
||||||
let shiftKeyIsDown = $state(false);
|
let shiftKeyIsDown = $state(false);
|
||||||
let assetInteraction = new AssetInteraction();
|
let assetInteraction = new AssetInteraction();
|
||||||
let location = $state<{ latitude: number; longitude: number }>({ latitude: 0, longitude: 0 });
|
let location = $state<{ latitude: number; longitude: number }>({ latitude: 0, longitude: 0 });
|
||||||
|
|
@ -64,6 +65,25 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getEarliestAsset = async () => {
|
||||||
|
const earliest = await searchAssets({
|
||||||
|
metadataSearchDto: {
|
||||||
|
withExif: true,
|
||||||
|
size: 1,
|
||||||
|
order: AssetOrder.Asc,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const asset = earliest.assets.items[0];
|
||||||
|
if (!asset) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
startYear = new Date(asset.localDateTime).getFullYear();
|
||||||
|
};
|
||||||
|
|
||||||
|
void getEarliestAsset();
|
||||||
|
|
||||||
const loadAssets = async () => {
|
const loadAssets = async () => {
|
||||||
if (takenRange) {
|
if (takenRange) {
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
|
|
@ -262,6 +282,7 @@
|
||||||
onDateChange={handleDateChange}
|
onDateChange={handleDateChange}
|
||||||
onClearFilters={handleClearFilters}
|
onClearFilters={handleClearFilters}
|
||||||
defaultDate={partialDate || undefined}
|
defaultDate={partialDate || undefined}
|
||||||
|
{startYear}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue