2025-05-14 15:03:35 -05:00
|
|
|
import largeIcon from './icons/icons-large.mjs';
|
|
|
|
|
import smallIcon from './icons/icons-small.mjs';
|
|
|
|
|
import hourlyIcon from './icons/icons-hourly.mjs';
|
2022-11-22 16:19:10 -06:00
|
|
|
|
2026-04-07 14:57:23 -04:00
|
|
|
const getWeatherGovTokenFromWmoCode = (code) => {
|
|
|
|
|
switch (Number(code)) {
|
|
|
|
|
case 0: return 'skc';
|
|
|
|
|
case 1: return 'few';
|
|
|
|
|
case 2: return 'sct';
|
|
|
|
|
case 3: return 'ovc';
|
|
|
|
|
case 45:
|
|
|
|
|
case 48:
|
|
|
|
|
return 'fog';
|
|
|
|
|
case 51:
|
|
|
|
|
case 53:
|
|
|
|
|
case 55:
|
|
|
|
|
case 80:
|
|
|
|
|
return 'rain_showers';
|
|
|
|
|
case 56:
|
|
|
|
|
case 57:
|
|
|
|
|
case 66:
|
|
|
|
|
case 67:
|
|
|
|
|
return 'fzra';
|
|
|
|
|
case 61:
|
|
|
|
|
case 63:
|
|
|
|
|
case 65:
|
|
|
|
|
case 81:
|
|
|
|
|
case 82:
|
|
|
|
|
return 'rain';
|
|
|
|
|
case 71:
|
|
|
|
|
case 73:
|
|
|
|
|
case 75:
|
|
|
|
|
case 85:
|
|
|
|
|
case 86:
|
|
|
|
|
return 'snow';
|
|
|
|
|
case 77:
|
|
|
|
|
return 'sleet';
|
|
|
|
|
case 95:
|
|
|
|
|
case 96:
|
|
|
|
|
case 99:
|
|
|
|
|
return 'tsra';
|
|
|
|
|
default:
|
|
|
|
|
return 'ovc';
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const buildSyntheticIconUrl = (code, isDaytime = true) => `/icons/land/${isDaytime ? 'day' : 'night'}/${getWeatherGovTokenFromWmoCode(code)}`;
|
|
|
|
|
|
|
|
|
|
const getLargeIconFromWmoCode = (code, isDaytime = true) => largeIcon(buildSyntheticIconUrl(code, isDaytime), !isDaytime);
|
|
|
|
|
const getSmallIconFromWmoCode = (code, isDaytime = true) => smallIcon(buildSyntheticIconUrl(code, isDaytime), !isDaytime);
|
|
|
|
|
|
2022-11-22 16:19:10 -06:00
|
|
|
export {
|
2025-05-14 15:03:35 -05:00
|
|
|
largeIcon as getLargeIcon,
|
|
|
|
|
smallIcon as getSmallIcon,
|
|
|
|
|
hourlyIcon as getHourlyIcon,
|
2026-04-07 14:57:23 -04:00
|
|
|
getLargeIconFromWmoCode,
|
|
|
|
|
getSmallIconFromWmoCode,
|
2022-11-22 16:19:10 -06:00
|
|
|
};
|