Lib: Remove caching from dropdown options generators

This commit is contained in:
2025-02-05 01:49:40 +01:00
parent 206d897fca
commit 2a51c76e2f

View File

@ -9,35 +9,25 @@ import {
TEAM_BANNER_WIDTH, TEAM_BANNER_WIDTH,
} from "$lib/config"; } from "$lib/config";
let team_dropdown_opts: DropdownOption[] | null = null; /**
* Generates a list of [DropdownOptions] for a <Dropdown> component.
*/
export const team_dropdown_options = (teams: Team[]): DropdownOption[] =>
teams.map((team: Team) => {
return {
label: team.name,
value: team.id,
icon_url: team.banner_url,
icon_width: TEAM_BANNER_WIDTH,
icon_height: TEAM_BANNER_HEIGHT,
};
});
/** /**
* Generates a list of [DropdownOptions] for a <Dropdown> component. * Generates a list of [DropdownOptions] for a <Dropdown> component.
* Cached until page reload.
*/ */
export const team_dropdown_options = (teams: Team[]): DropdownOption[] => { export const driver_dropdown_options = (drivers: Driver[]): DropdownOption[] =>
if (!team_dropdown_opts) { drivers.map((driver: Driver) => {
console.log("team_dropdown_options");
team_dropdown_opts = teams.map((team: Team) => {
return {
label: team.name,
value: team.id,
icon_url: team.banner_url,
icon_width: TEAM_BANNER_WIDTH,
icon_height: TEAM_BANNER_HEIGHT,
};
});
}
return team_dropdown_opts;
};
/**
* Generates a list of [DropdownOptions] for a <Dropdown> component.
* Not cached, because drivers are often filtered by active/inactive.
*/
export const driver_dropdown_options = (drivers: Driver[]): DropdownOption[] => {
return drivers.map((driver: Driver) => {
return { return {
label: driver.code, label: driver.code,
value: driver.id, value: driver.id,
@ -46,27 +36,17 @@ export const driver_dropdown_options = (drivers: Driver[]): DropdownOption[] =>
icon_height: DRIVER_HEADSHOT_HEIGHT, icon_height: DRIVER_HEADSHOT_HEIGHT,
}; };
}); });
};
let race_dropdown_opts: DropdownOption[] | null = null;
/** /**
* Generates a list of [DropdownOptions] for a <Dropdown> component. * Generates a list of [DropdownOptions] for a <Dropdown> component.
* Cached until page reload.
*/ */
export const race_dropdown_options = (races: Race[]): DropdownOption[] => { export const race_dropdown_options = (races: Race[]): DropdownOption[] =>
if (!race_dropdown_opts) { races.map((race: Race) => {
console.log("race_dropdown_options"); return {
race_dropdown_opts = races.map((race: Race) => { label: race.name,
return { value: race.id,
label: race.name, icon_url: race.pictogram_url,
value: race.id, icon_width: RACE_PICTOGRAM_WIDTH,
icon_url: race.pictogram_url, icon_height: RACE_PICTOGRAM_HEIGHT,
icon_width: RACE_PICTOGRAM_WIDTH, };
icon_height: RACE_PICTOGRAM_HEIGHT, });
};
});
}
return race_dropdown_opts;
};