darkmode
This commit is contained in:
+302
-48
@@ -5,56 +5,310 @@ export const defaultParameters = {
|
||||
precipitation_unit: 'mm'
|
||||
};
|
||||
|
||||
export const models = [
|
||||
{ value: 'best_match', label: 'Best match' },
|
||||
{ value: 'ecmwf_ifs', label: 'ECMWF IFS' },
|
||||
{ value: 'ecmwf_ifs025', label: 'ECMWF IFS 0.25' },
|
||||
{ value: 'ecmwf_aifs025_single', label: 'ECMWF AIFS 0.25 Single' },
|
||||
{ value: 'cma_grapes_global', label: 'CMA GRAPES Global' },
|
||||
{ value: 'bom_access_global', label: 'BOM ACCESS Global' },
|
||||
{ value: 'kma_seamless', label: 'KMA Seamless' },
|
||||
{ value: 'kma_ldps', label: 'KMA LDPS' },
|
||||
{ value: 'kma_gdps', label: 'KMA GDPS' },
|
||||
{ value: 'meteofrance_seamless', label: 'Meteo-France Seamless' },
|
||||
{ value: 'meteofrance_arpege_world', label: 'Meteo-France ARPEGE World' },
|
||||
{ value: 'meteofrance_arpege_europe', label: 'Meteo-France ARPEGE Europe' },
|
||||
{ value: 'meteofrance_arome_france', label: 'Meteo-France AROME France' },
|
||||
{ value: 'meteofrance_arome_france_hd', label: 'Meteo-France AROME France HD' },
|
||||
{ value: 'knmi_seamless', label: 'KNMI Seamless' },
|
||||
{ value: 'knmi_harmonie_arome_europe', label: 'KNMI Harmonie Arome Europe' },
|
||||
{ value: 'knmi_harmonie_arome_netherlands', label: 'KNMI Harmonie Arome Netherlands' },
|
||||
{ value: 'dmi_seamless', label: 'DMI Seamless' },
|
||||
{ value: 'dmi_harmonie_arome_europe', label: 'DMI Harmonie Arome Europe' },
|
||||
{ value: 'ukmo_seamless', label: 'UKMO Seamless' },
|
||||
{ value: 'ukmo_global_deterministic_10km', label: 'UKMO Global Deterministic 10km' },
|
||||
{ value: 'ukmo_uk_deterministic_2km', label: 'UKMO UK Deterministic 2km' },
|
||||
{ value: 'meteoswiss_icon_seamless', label: 'MeteoSwiss ICON Seamless' },
|
||||
{ value: 'meteoswiss_icon_ch2', label: 'MeteoSwiss ICON CH2' },
|
||||
{ value: 'meteoswiss_icon_ch1', label: 'MeteoSwiss ICON CH1' },
|
||||
{ value: 'metno_nordic', label: 'MET Norway Nordic' },
|
||||
{ value: 'metno_seamless', label: 'MET Norway Seamless' },
|
||||
{ value: 'gem_hrdps_west', label: 'GEM HRDPS West' },
|
||||
{ value: 'gem_regional', label: 'GEM Regional' },
|
||||
{ value: 'gem_global', label: 'GEM Global' },
|
||||
{ value: 'gem_seamless', label: 'GEM Seamless' },
|
||||
{ value: 'jma_seamless', label: 'JMA Seamless' },
|
||||
{ value: 'jma_msm', label: 'JMA MSM' },
|
||||
{ value: 'jma_gsm', label: 'JMA GSM' },
|
||||
{ value: 'gfs_seamless', label: 'GFS Seamless' },
|
||||
{ value: 'gfs_global', label: 'GFS Global' },
|
||||
{ value: 'gfs_hrrr', label: 'GFS HRRR' },
|
||||
{ value: 'gfs_graphcast025', label: 'GFS Graphcast 0.25' },
|
||||
{ value: 'ncep_nbm_conus', label: 'NCEP NBM CONUS' },
|
||||
{ value: 'ncep_nam_conus', label: 'NCEP NAM CONUS' },
|
||||
{ value: 'ncep_aigfs025', label: 'NCEP AIGFS 0.25' },
|
||||
{ value: 'ncep_hgefs025_ensemble_mean', label: 'NCEP HG-EFS 0.25 Ensemble Mean' },
|
||||
{ value: 'icon_seamless', label: 'ICON Seamless (DWD)' },
|
||||
{ value: 'icon_global', label: 'ICON Global' },
|
||||
{ value: 'icon_eu', label: 'ICON EU' },
|
||||
{ value: 'icon_d2', label: 'ICON-D2' },
|
||||
{ value: 'italia_meteo_arpae_icon_2i', label: 'Italia Meteo ARPAE ICON 2i' }
|
||||
export interface WeatherModel {
|
||||
value: string;
|
||||
label: string;
|
||||
/** Native grid resolution, from open-meteo/weather-map-layer domains.ts */
|
||||
resolution?: string;
|
||||
/** Model-run cadence (model_interval), from domains.ts */
|
||||
update?: string;
|
||||
}
|
||||
|
||||
export interface WeatherModelGroup {
|
||||
value: string;
|
||||
label: string;
|
||||
models: WeatherModel[];
|
||||
}
|
||||
|
||||
/**
|
||||
* Forecast models grouped by provider. Labels, grid resolutions and update
|
||||
* cadences are synced from the open-meteo/weather-map-layer project
|
||||
* (src/domains.ts: domainGroups + domainOptions grid/model_interval data).
|
||||
*/
|
||||
export const modelGroups: WeatherModelGroup[] = [
|
||||
{
|
||||
value: 'auto',
|
||||
label: 'Automatic',
|
||||
models: [{ value: 'best_match', label: 'Best match', resolution: 'varies', update: 'varies' }]
|
||||
},
|
||||
{
|
||||
value: 'ecmwf',
|
||||
label: 'ECMWF',
|
||||
models: [
|
||||
{ value: 'ecmwf_ifs', label: 'ECMWF IFS HRES', resolution: '9 km', update: 'every 6 h' },
|
||||
{ value: 'ecmwf_ifs025', label: 'ECMWF IFS 0.25°', resolution: '25 km', update: 'every 6 h' },
|
||||
{
|
||||
value: 'ecmwf_aifs025_single',
|
||||
label: 'ECMWF AIFS 0.25° Single',
|
||||
resolution: '25 km',
|
||||
update: 'every 6 h'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'dwd',
|
||||
label: 'DWD Germany',
|
||||
models: [
|
||||
{
|
||||
value: 'icon_seamless',
|
||||
label: 'DWD ICON Seamless',
|
||||
resolution: '2-13 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{ value: 'icon_global', label: 'DWD ICON', resolution: '13 km', update: 'every 6 h' },
|
||||
{ value: 'icon_eu', label: 'DWD ICON EU', resolution: '7 km', update: 'every 3 h' },
|
||||
{ value: 'icon_d2', label: 'DWD ICON D2', resolution: '2 km', update: 'every 3 h' }
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'ncep',
|
||||
label: 'NOAA U.S.',
|
||||
models: [
|
||||
{ value: 'gfs_seamless', label: 'GFS Seamless', resolution: '3-25 km', update: 'every hour' },
|
||||
{ value: 'gfs_global', label: 'GFS Global', resolution: '13 km', update: 'every 6 h' },
|
||||
{ value: 'gfs_hrrr', label: 'GFS HRRR Conus', resolution: '3 km', update: 'every hour' },
|
||||
{
|
||||
value: 'gfs_graphcast025',
|
||||
label: 'GFS GraphCast 0.25°',
|
||||
resolution: '25 km',
|
||||
update: 'every 6 h'
|
||||
},
|
||||
{
|
||||
value: 'ncep_aigfs025',
|
||||
label: 'GFS AIGFS 0.25°',
|
||||
resolution: '25 km',
|
||||
update: 'every 6 h'
|
||||
},
|
||||
{
|
||||
value: 'ncep_hgefs025_ensemble_mean',
|
||||
label: 'GFS HGEFS 0.25° Ensemble Mean',
|
||||
resolution: '25 km',
|
||||
update: 'every 6 h'
|
||||
},
|
||||
{
|
||||
value: 'ncep_nbm_conus',
|
||||
label: 'GFS NBM Conus',
|
||||
resolution: '2.5 km',
|
||||
update: 'every hour'
|
||||
},
|
||||
{ value: 'ncep_nam_conus', label: 'GFS NAM Conus', resolution: '12 km', update: 'every 6 h' }
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'meteofrance',
|
||||
label: 'Météo-France',
|
||||
models: [
|
||||
{
|
||||
value: 'meteofrance_seamless',
|
||||
label: 'MF Seamless',
|
||||
resolution: '1-25 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{
|
||||
value: 'meteofrance_arpege_world',
|
||||
label: 'MF ARPEGE World',
|
||||
resolution: '25 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{
|
||||
value: 'meteofrance_arpege_europe',
|
||||
label: 'MF ARPEGE Europe',
|
||||
resolution: '10 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{
|
||||
value: 'meteofrance_arome_france',
|
||||
label: 'MF AROME France',
|
||||
resolution: '2.5 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{
|
||||
value: 'meteofrance_arome_france_hd',
|
||||
label: 'MF AROME France HD',
|
||||
resolution: '1 km',
|
||||
update: 'every 3 h'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'ukmo',
|
||||
label: 'UK Met Office',
|
||||
models: [
|
||||
{
|
||||
value: 'ukmo_seamless',
|
||||
label: 'UKMO Seamless',
|
||||
resolution: '2-10 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{
|
||||
value: 'ukmo_global_deterministic_10km',
|
||||
label: 'UK Met Office 10km',
|
||||
resolution: '10 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{
|
||||
value: 'ukmo_uk_deterministic_2km',
|
||||
label: 'UK Met Office 2km',
|
||||
resolution: '2 km',
|
||||
update: 'every 3 h'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'knmi',
|
||||
label: 'KNMI Netherlands',
|
||||
models: [
|
||||
{
|
||||
value: 'knmi_seamless',
|
||||
label: 'KNMI Seamless',
|
||||
resolution: '2-3 km',
|
||||
update: 'every hour'
|
||||
},
|
||||
{
|
||||
value: 'knmi_harmonie_arome_europe',
|
||||
label: 'KNMI Harmonie Arome Europe',
|
||||
resolution: '5.5 km',
|
||||
update: 'every hour'
|
||||
},
|
||||
{
|
||||
value: 'knmi_harmonie_arome_netherlands',
|
||||
label: 'KNMI Harmonie Arome Netherlands',
|
||||
resolution: '2 km',
|
||||
update: 'every hour'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'dmi',
|
||||
label: 'DMI Denmark',
|
||||
models: [
|
||||
{ value: 'dmi_seamless', label: 'DMI Seamless', resolution: '2 km', update: 'every 3 h' },
|
||||
{
|
||||
value: 'dmi_harmonie_arome_europe',
|
||||
label: 'DMI Harmonie Arome Europe',
|
||||
resolution: '2 km',
|
||||
update: 'every 3 h'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'metno',
|
||||
label: 'MET Norway',
|
||||
models: [
|
||||
{
|
||||
value: 'metno_seamless',
|
||||
label: 'MET Norway Seamless',
|
||||
resolution: '1 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{ value: 'metno_nordic', label: 'MET Norway Nordic', resolution: '1 km', update: 'every 3 h' }
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'meteoswiss',
|
||||
label: 'MeteoSwiss',
|
||||
models: [
|
||||
{
|
||||
value: 'meteoswiss_icon_seamless',
|
||||
label: 'MeteoSwiss ICON Seamless',
|
||||
resolution: '1-2 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{
|
||||
value: 'meteoswiss_icon_ch1',
|
||||
label: 'MeteoSwiss ICON CH1',
|
||||
resolution: '1 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{
|
||||
value: 'meteoswiss_icon_ch2',
|
||||
label: 'MeteoSwiss ICON CH2',
|
||||
resolution: '2 km',
|
||||
update: 'every 3 h'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'kma',
|
||||
label: 'KMA Korea',
|
||||
models: [
|
||||
{
|
||||
value: 'kma_seamless',
|
||||
label: 'KMA Seamless',
|
||||
resolution: '1.5-13 km',
|
||||
update: 'every 3 h'
|
||||
},
|
||||
{ value: 'kma_ldps', label: 'KMA LDPS', resolution: '1.5 km', update: 'every 3 h' },
|
||||
{ value: 'kma_gdps', label: 'KMA GDPS 12km', resolution: '13 km', update: 'every 3 h' }
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'jma',
|
||||
label: 'JMA Japan',
|
||||
models: [
|
||||
{ value: 'jma_seamless', label: 'JMA Seamless', resolution: '5-55 km', update: 'every 3 h' },
|
||||
{ value: 'jma_msm', label: 'JMA MSM', resolution: '5 km', update: 'every 3 h' },
|
||||
{ value: 'jma_gsm', label: 'JMA GSM', resolution: '55 km', update: 'every 6 h' }
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'cma',
|
||||
label: 'CMA China',
|
||||
models: [
|
||||
{
|
||||
value: 'cma_grapes_global',
|
||||
label: 'CMA GRAPES Global',
|
||||
resolution: '14 km',
|
||||
update: 'every 6 h'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'bom',
|
||||
label: 'BOM Australia',
|
||||
models: [
|
||||
{
|
||||
value: 'bom_access_global',
|
||||
label: 'BOM ACCESS Global',
|
||||
resolution: '15 km',
|
||||
update: 'every 12 h'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'cmc_gem',
|
||||
label: 'GEM Canada',
|
||||
models: [
|
||||
{ value: 'gem_seamless', label: 'GEM Seamless', resolution: '1-15 km', update: 'every 6 h' },
|
||||
{ value: 'gem_global', label: 'GEM Global', resolution: '15 km', update: 'every 12 h' },
|
||||
{ value: 'gem_regional', label: 'GEM Regional', resolution: '10 km', update: 'every 6 h' },
|
||||
{
|
||||
value: 'gem_hrdps_west',
|
||||
label: 'GEM HRDPS West',
|
||||
resolution: '1 km',
|
||||
update: 'every 12 h'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'italia_meteo',
|
||||
label: 'ItaliaMeteo',
|
||||
models: [
|
||||
{
|
||||
value: 'italia_meteo_arpae_icon_2i',
|
||||
label: 'IM ARPAE ICON 2i',
|
||||
resolution: '2.5 km',
|
||||
update: 'every 3 h'
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
export const models: WeatherModel[] = modelGroups.flatMap((group) => group.models);
|
||||
|
||||
export const findModel = (value: string): WeatherModel | undefined =>
|
||||
models.find((model) => model.value === value);
|
||||
|
||||
export const hourly = [
|
||||
[
|
||||
{ value: 'temperature_2m', label: 'Temperature 2m' },
|
||||
|
||||
Reference in New Issue
Block a user