From 80e5ebc04346b1aba37158dedbdd4045c0a7c042 Mon Sep 17 00:00:00 2001 From: Sam Chudnick Date: Sat, 10 Jun 2023 06:31:09 -0400 Subject: Moved files to src directory. Continued work on frontend. --- src/app.py | 72 +++++ src/forms.py | 10 + src/library.py | 95 ++++++ src/run.sh | 2 + src/static/icons/backup/celsius.svg | 1 + src/static/icons/backup/fahrenheit.svg | 1 + src/static/icons/backup/fog.svg | 1 + src/static/icons/backup/hail.svg | 1 + src/static/icons/backup/hazy.svg | 1 + src/static/icons/backup/humidity.svg | 1 + src/static/icons/backup/lightning-rainy.svg | 1 + src/static/icons/backup/lightning.svg | 1 + src/static/icons/backup/night-clear.svg | 1 + src/static/icons/backup/night-partly-cloudy.svg | 1 + src/static/icons/backup/partly-cloudy.svg | 1 + src/static/icons/backup/partly-rainy.svg | 1 + src/static/icons/backup/partly-snowy-rainy.svg | 1 + src/static/icons/backup/pouring.svg | 1 + src/static/icons/backup/snow.svg | 1 + src/static/icons/backup/snowy-heavy.svg | 1 + src/static/icons/backup/snowy.svg | 1 + src/static/icons/backup/sunny.svg | 1 + src/static/icons/backup/sunrise.svg | 1 + src/static/icons/backup/sunset.svg | 1 + src/static/icons/backup/thermometer.svg | 1 + src/static/icons/backup/water-percent.svg | 1 + src/static/icons/backup/windy.svg | 1 + src/static/icons/clock.svg | 1 + src/static/icons/directions/east.svg | 1 + src/static/icons/directions/north-east.svg | 1 + src/static/icons/directions/north-west.svg | 1 + src/static/icons/directions/north.svg | 1 + src/static/icons/directions/south-east.svg | 1 + src/static/icons/directions/south-west.svg | 1 + src/static/icons/directions/south.svg | 1 + src/static/icons/directions/west.svg | 1 + src/static/icons/svg/wi-alien.svg | 16 + src/static/icons/svg/wi-barometer.svg | 15 + src/static/icons/svg/wi-celsius.svg | 18 ++ src/static/icons/svg/wi-cloud-down.svg | 18 ++ src/static/icons/svg/wi-cloud-refresh.svg | 21 ++ src/static/icons/svg/wi-cloud-up.svg | 18 ++ src/static/icons/svg/wi-cloud.svg | 13 + src/static/icons/svg/wi-cloudy-gusts.svg | 22 ++ src/static/icons/svg/wi-cloudy-windy.svg | 19 ++ src/static/icons/svg/wi-cloudy.svg | 18 ++ src/static/icons/svg/wi-day-cloudy-gusts.svg | 35 +++ src/static/icons/svg/wi-day-cloudy-high.svg | 26 ++ src/static/icons/svg/wi-day-cloudy-windy.svg | 33 +++ src/static/icons/svg/wi-day-cloudy.svg | 26 ++ src/static/icons/svg/wi-day-fog.svg | 31 ++ src/static/icons/svg/wi-day-hail.svg | 42 +++ src/static/icons/svg/wi-day-haze.svg | 33 +++ src/static/icons/svg/wi-day-light-wind.svg | 32 ++ src/static/icons/svg/wi-day-lightning.svg | 29 ++ src/static/icons/svg/wi-day-rain-mix.svg | 49 ++++ src/static/icons/svg/wi-day-rain-wind.svg | 40 +++ src/static/icons/svg/wi-day-rain.svg | 35 +++ src/static/icons/svg/wi-day-showers.svg | 43 +++ src/static/icons/svg/wi-day-sleet-storm.svg | 40 +++ src/static/icons/svg/wi-day-sleet.svg | 46 +++ src/static/icons/svg/wi-day-snow-thunderstorm.svg | 37 +++ src/static/icons/svg/wi-day-snow-wind.svg | 40 +++ src/static/icons/svg/wi-day-snow.svg | 40 +++ src/static/icons/svg/wi-day-sprinkle.svg | 33 +++ src/static/icons/svg/wi-day-storm-showers.svg | 38 +++ src/static/icons/svg/wi-day-sunny-overcast.svg | 29 ++ src/static/icons/svg/wi-day-sunny.svg | 27 ++ src/static/icons/svg/wi-day-thunderstorm.svg | 34 +++ src/static/icons/svg/wi-day-windy.svg | 36 +++ src/static/icons/svg/wi-degrees.svg | 10 + src/static/icons/svg/wi-direction-down-left.svg | 10 + src/static/icons/svg/wi-direction-down-right.svg | 9 + src/static/icons/svg/wi-direction-down.svg | 9 + src/static/icons/svg/wi-direction-left.svg | 9 + src/static/icons/svg/wi-direction-right.svg | 10 + src/static/icons/svg/wi-direction-up-left.svg | 9 + src/static/icons/svg/wi-direction-up-right.svg | 9 + src/static/icons/svg/wi-direction-up.svg | 9 + src/static/icons/svg/wi-dust.svg | 31 ++ src/static/icons/svg/wi-earthquake.svg | 16 + src/static/icons/svg/wi-fahrenheit.svg | 13 + src/static/icons/svg/wi-fire.svg | 22 ++ src/static/icons/svg/wi-flood.svg | 22 ++ src/static/icons/svg/wi-fog.svg | 18 ++ src/static/icons/svg/wi-gale-warning.svg | 6 + src/static/icons/svg/wi-hail.svg | 30 ++ src/static/icons/svg/wi-horizon-alt.svg | 24 ++ src/static/icons/svg/wi-horizon.svg | 17 ++ src/static/icons/svg/wi-hot.svg | 56 ++++ src/static/icons/svg/wi-humidity.svg | 23 ++ src/static/icons/svg/wi-hurricane-warning.svg | 7 + src/static/icons/svg/wi-hurricane.svg | 17 ++ src/static/icons/svg/wi-lightning.svg | 9 + src/static/icons/svg/wi-lunar-eclipse.svg | 11 + src/static/icons/svg/wi-meteor.svg | 17 ++ src/static/icons/svg/wi-moon-alt-first-quarter.svg | 10 + src/static/icons/svg/wi-moon-alt-full.svg | 11 + src/static/icons/svg/wi-moon-alt-new.svg | 8 + src/static/icons/svg/wi-moon-alt-third-quarter.svg | 10 + .../icons/svg/wi-moon-alt-waning-crescent-1.svg | 10 + .../icons/svg/wi-moon-alt-waning-crescent-2.svg | 10 + .../icons/svg/wi-moon-alt-waning-crescent-3.svg | 10 + .../icons/svg/wi-moon-alt-waning-crescent-4.svg | 11 + .../icons/svg/wi-moon-alt-waning-crescent-5.svg | 11 + .../icons/svg/wi-moon-alt-waning-crescent-6.svg | 11 + .../icons/svg/wi-moon-alt-waning-gibbous-1.svg | 11 + .../icons/svg/wi-moon-alt-waning-gibbous-2.svg | 12 + .../icons/svg/wi-moon-alt-waning-gibbous-3.svg | 12 + .../icons/svg/wi-moon-alt-waning-gibbous-4.svg | 11 + .../icons/svg/wi-moon-alt-waning-gibbous-5.svg | 11 + .../icons/svg/wi-moon-alt-waning-gibbous-6.svg | 10 + .../icons/svg/wi-moon-alt-waxing-crescent-1.svg | 10 + .../icons/svg/wi-moon-alt-waxing-crescent-2.svg | 10 + .../icons/svg/wi-moon-alt-waxing-crescent-3.svg | 10 + .../icons/svg/wi-moon-alt-waxing-crescent-4.svg | 10 + .../icons/svg/wi-moon-alt-waxing-crescent-5.svg | 10 + .../icons/svg/wi-moon-alt-waxing-crescent-6.svg | 10 + .../icons/svg/wi-moon-alt-waxing-gibbous-1.svg | 11 + .../icons/svg/wi-moon-alt-waxing-gibbous-2.svg | 11 + .../icons/svg/wi-moon-alt-waxing-gibbous-3.svg | 11 + .../icons/svg/wi-moon-alt-waxing-gibbous-4.svg | 11 + .../icons/svg/wi-moon-alt-waxing-gibbous-5.svg | 11 + .../icons/svg/wi-moon-alt-waxing-gibbous-6.svg | 12 + src/static/icons/svg/wi-moon-first-quarter.svg | 7 + src/static/icons/svg/wi-moon-full.svg | 8 + src/static/icons/svg/wi-moon-new.svg | 11 + src/static/icons/svg/wi-moon-third-quarter.svg | 7 + src/static/icons/svg/wi-moon-waning-crescent-1.svg | 7 + src/static/icons/svg/wi-moon-waning-crescent-2.svg | 7 + src/static/icons/svg/wi-moon-waning-crescent-3.svg | 7 + src/static/icons/svg/wi-moon-waning-crescent-4.svg | 8 + src/static/icons/svg/wi-moon-waning-crescent-5.svg | 8 + src/static/icons/svg/wi-moon-waning-crescent-6.svg | 9 + src/static/icons/svg/wi-moon-waning-gibbous-1.svg | 8 + src/static/icons/svg/wi-moon-waning-gibbous-2.svg | 8 + src/static/icons/svg/wi-moon-waning-gibbous-3.svg | 8 + src/static/icons/svg/wi-moon-waning-gibbous-4.svg | 8 + src/static/icons/svg/wi-moon-waning-gibbous-5.svg | 7 + src/static/icons/svg/wi-moon-waning-gibbous-6.svg | 7 + src/static/icons/svg/wi-moon-waxing-6.svg | 7 + src/static/icons/svg/wi-moon-waxing-crescent-1.svg | 9 + src/static/icons/svg/wi-moon-waxing-crescent-2.svg | 8 + src/static/icons/svg/wi-moon-waxing-crescent-3.svg | 8 + src/static/icons/svg/wi-moon-waxing-crescent-4.svg | 8 + src/static/icons/svg/wi-moon-waxing-crescent-5.svg | 7 + src/static/icons/svg/wi-moon-waxing-gibbous-1.svg | 7 + src/static/icons/svg/wi-moon-waxing-gibbous-2.svg | 7 + src/static/icons/svg/wi-moon-waxing-gibbous-3.svg | 8 + src/static/icons/svg/wi-moon-waxing-gibbous-4.svg | 8 + src/static/icons/svg/wi-moon-waxing-gibbous-5.svg | 8 + src/static/icons/svg/wi-moon-waxing-gibbous-6.svg | 8 + src/static/icons/svg/wi-moonrise.svg | 13 + src/static/icons/svg/wi-moonset.svg | 14 + src/static/icons/svg/wi-na.svg | 8 + src/static/icons/svg/wi-night-alt-cloudy-gusts.svg | 28 ++ src/static/icons/svg/wi-night-alt-cloudy-high.svg | 16 + src/static/icons/svg/wi-night-alt-cloudy-windy.svg | 25 ++ src/static/icons/svg/wi-night-alt-cloudy.svg | 19 ++ src/static/icons/svg/wi-night-alt-hail.svg | 34 +++ src/static/icons/svg/wi-night-alt-lightning.svg | 21 ++ .../icons/svg/wi-night-alt-partly-cloudy.svg | 19 ++ src/static/icons/svg/wi-night-alt-rain-mix.svg | 42 +++ src/static/icons/svg/wi-night-alt-rain-wind.svg | 32 ++ src/static/icons/svg/wi-night-alt-rain.svg | 27 ++ src/static/icons/svg/wi-night-alt-showers.svg | 34 +++ src/static/icons/svg/wi-night-alt-sleet-storm.svg | 32 ++ src/static/icons/svg/wi-night-alt-sleet.svg | 38 +++ .../icons/svg/wi-night-alt-snow-thunderstorm.svg | 30 ++ src/static/icons/svg/wi-night-alt-snow-wind.svg | 33 +++ src/static/icons/svg/wi-night-alt-snow.svg | 32 ++ src/static/icons/svg/wi-night-alt-sprinkle.svg | 26 ++ .../icons/svg/wi-night-alt-storm-showers.svg | 31 ++ src/static/icons/svg/wi-night-alt-thunderstorm.svg | 25 ++ src/static/icons/svg/wi-night-clear.svg | 13 + src/static/icons/svg/wi-night-cloudy-gusts.svg | 25 ++ src/static/icons/svg/wi-night-cloudy-high.svg | 17 ++ src/static/icons/svg/wi-night-cloudy-windy.svg | 22 ++ src/static/icons/svg/wi-night-cloudy.svg | 15 + src/static/icons/svg/wi-night-fog.svg | 22 ++ src/static/icons/svg/wi-night-hail.svg | 32 ++ src/static/icons/svg/wi-night-lightning.svg | 18 ++ src/static/icons/svg/wi-night-partly-cloudy.svg | 16 + src/static/icons/svg/wi-night-rain-mix.svg | 41 +++ src/static/icons/svg/wi-night-rain-wind.svg | 29 ++ src/static/icons/svg/wi-night-rain.svg | 24 ++ src/static/icons/svg/wi-night-showers.svg | 32 ++ src/static/icons/svg/wi-night-sleet-storm.svg | 29 ++ src/static/icons/svg/wi-night-sleet.svg | 34 +++ .../icons/svg/wi-night-snow-thunderstorm.svg | 27 ++ src/static/icons/svg/wi-night-snow-wind.svg | 29 ++ src/static/icons/svg/wi-night-snow.svg | 29 ++ src/static/icons/svg/wi-night-sprinkle.svg | 23 ++ src/static/icons/svg/wi-night-storm-showers.svg | 28 ++ src/static/icons/svg/wi-night-thunderstorm.svg | 22 ++ src/static/icons/svg/wi-rain-mix.svg | 37 +++ src/static/icons/svg/wi-rain-wind.svg | 28 ++ src/static/icons/svg/wi-rain.svg | 23 ++ src/static/icons/svg/wi-raindrop.svg | 9 + src/static/icons/svg/wi-raindrops.svg | 13 + src/static/icons/svg/wi-refresh-alt.svg | 11 + src/static/icons/svg/wi-refresh.svg | 12 + src/static/icons/svg/wi-sandstorm.svg | 31 ++ src/static/icons/svg/wi-showers.svg | 31 ++ src/static/icons/svg/wi-sleet.svg | 35 +++ src/static/icons/svg/wi-small-craft-advisory.svg | 6 + src/static/icons/svg/wi-smog.svg | 13 + src/static/icons/svg/wi-smoke.svg | 17 ++ src/static/icons/svg/wi-snow-wind.svg | 27 ++ src/static/icons/svg/wi-snow.svg | 27 ++ src/static/icons/svg/wi-snowflake-cold.svg | 30 ++ src/static/icons/svg/wi-solar-eclipse.svg | 28 ++ src/static/icons/svg/wi-sprinkle.svg | 20 ++ src/static/icons/svg/wi-stars.svg | 15 + src/static/icons/svg/wi-storm-showers.svg | 26 ++ src/static/icons/svg/wi-storm-warning.svg | 6 + src/static/icons/svg/wi-strong-wind.svg | 15 + src/static/icons/svg/wi-sunrise.svg | 25 ++ src/static/icons/svg/wi-sunset.svg | 25 ++ src/static/icons/svg/wi-thermometer-exterior.svg | 12 + src/static/icons/svg/wi-thermometer-internal.svg | 9 + src/static/icons/svg/wi-thermometer.svg | 15 + src/static/icons/svg/wi-thunderstorm.svg | 21 ++ src/static/icons/svg/wi-time-1.svg | 13 + src/static/icons/svg/wi-time-10.svg | 13 + src/static/icons/svg/wi-time-11.svg | 13 + src/static/icons/svg/wi-time-12.svg | 12 + src/static/icons/svg/wi-time-2.svg | 13 + src/static/icons/svg/wi-time-3.svg | 13 + src/static/icons/svg/wi-time-4.svg | 13 + src/static/icons/svg/wi-time-5.svg | 13 + src/static/icons/svg/wi-time-6.svg | 12 + src/static/icons/svg/wi-time-7.svg | 13 + src/static/icons/svg/wi-time-8.svg | 13 + src/static/icons/svg/wi-time-9.svg | 13 + src/static/icons/svg/wi-tornado.svg | 25 ++ src/static/icons/svg/wi-train.svg | 26 ++ src/static/icons/svg/wi-tsunami.svg | 26 ++ src/static/icons/svg/wi-umbrella.svg | 23 ++ src/static/icons/svg/wi-volcano.svg | 23 ++ src/static/icons/svg/wi-wind-beaufort-0.svg | 21 ++ src/static/icons/svg/wi-wind-beaufort-1.svg | 15 + src/static/icons/svg/wi-wind-beaufort-10.svg | 21 ++ src/static/icons/svg/wi-wind-beaufort-11.svg | 16 + src/static/icons/svg/wi-wind-beaufort-12.svg | 21 ++ src/static/icons/svg/wi-wind-beaufort-2.svg | 21 ++ src/static/icons/svg/wi-wind-beaufort-3.svg | 22 ++ src/static/icons/svg/wi-wind-beaufort-4.svg | 16 + src/static/icons/svg/wi-wind-beaufort-5.svg | 20 ++ src/static/icons/svg/wi-wind-beaufort-6.svg | 23 ++ src/static/icons/svg/wi-wind-beaufort-7.svg | 16 + src/static/icons/svg/wi-wind-beaufort-8.svg | 26 ++ src/static/icons/svg/wi-wind-beaufort-9.svg | 23 ++ src/static/icons/svg/wi-wind-deg.svg | 12 + src/static/icons/svg/wi-windy.svg | 14 + src/static/style.css | 183 ++++++++++++ src/static/temp.js | 325 +++++++++++++++++++++ src/templates/base.html | 21 ++ src/templates/index.html | 15 + src/templates/location.html | 15 + src/templates/weather.html | 91 ++++++ 261 files changed, 5067 insertions(+) create mode 100644 src/app.py create mode 100644 src/forms.py create mode 100644 src/library.py create mode 100755 src/run.sh create mode 100644 src/static/icons/backup/celsius.svg create mode 100644 src/static/icons/backup/fahrenheit.svg create mode 100644 src/static/icons/backup/fog.svg create mode 100644 src/static/icons/backup/hail.svg create mode 100644 src/static/icons/backup/hazy.svg create mode 100644 src/static/icons/backup/humidity.svg create mode 100644 src/static/icons/backup/lightning-rainy.svg create mode 100644 src/static/icons/backup/lightning.svg create mode 100644 src/static/icons/backup/night-clear.svg create mode 100644 src/static/icons/backup/night-partly-cloudy.svg create mode 100644 src/static/icons/backup/partly-cloudy.svg create mode 100644 src/static/icons/backup/partly-rainy.svg create mode 100644 src/static/icons/backup/partly-snowy-rainy.svg create mode 100644 src/static/icons/backup/pouring.svg create mode 100644 src/static/icons/backup/snow.svg create mode 100644 src/static/icons/backup/snowy-heavy.svg create mode 100644 src/static/icons/backup/snowy.svg create mode 100644 src/static/icons/backup/sunny.svg create mode 100644 src/static/icons/backup/sunrise.svg create mode 100644 src/static/icons/backup/sunset.svg create mode 100644 src/static/icons/backup/thermometer.svg create mode 100644 src/static/icons/backup/water-percent.svg create mode 100644 src/static/icons/backup/windy.svg create mode 100644 src/static/icons/clock.svg create mode 100644 src/static/icons/directions/east.svg create mode 100644 src/static/icons/directions/north-east.svg create mode 100644 src/static/icons/directions/north-west.svg create mode 100644 src/static/icons/directions/north.svg create mode 100644 src/static/icons/directions/south-east.svg create mode 100644 src/static/icons/directions/south-west.svg create mode 100644 src/static/icons/directions/south.svg create mode 100644 src/static/icons/directions/west.svg create mode 100644 src/static/icons/svg/wi-alien.svg create mode 100644 src/static/icons/svg/wi-barometer.svg create mode 100644 src/static/icons/svg/wi-celsius.svg create mode 100644 src/static/icons/svg/wi-cloud-down.svg create mode 100644 src/static/icons/svg/wi-cloud-refresh.svg create mode 100644 src/static/icons/svg/wi-cloud-up.svg create mode 100644 src/static/icons/svg/wi-cloud.svg create mode 100644 src/static/icons/svg/wi-cloudy-gusts.svg create mode 100644 src/static/icons/svg/wi-cloudy-windy.svg create mode 100644 src/static/icons/svg/wi-cloudy.svg create mode 100644 src/static/icons/svg/wi-day-cloudy-gusts.svg create mode 100644 src/static/icons/svg/wi-day-cloudy-high.svg create mode 100644 src/static/icons/svg/wi-day-cloudy-windy.svg create mode 100644 src/static/icons/svg/wi-day-cloudy.svg create mode 100644 src/static/icons/svg/wi-day-fog.svg create mode 100644 src/static/icons/svg/wi-day-hail.svg create mode 100644 src/static/icons/svg/wi-day-haze.svg create mode 100644 src/static/icons/svg/wi-day-light-wind.svg create mode 100644 src/static/icons/svg/wi-day-lightning.svg create mode 100644 src/static/icons/svg/wi-day-rain-mix.svg create mode 100644 src/static/icons/svg/wi-day-rain-wind.svg create mode 100644 src/static/icons/svg/wi-day-rain.svg create mode 100644 src/static/icons/svg/wi-day-showers.svg create mode 100644 src/static/icons/svg/wi-day-sleet-storm.svg create mode 100644 src/static/icons/svg/wi-day-sleet.svg create mode 100644 src/static/icons/svg/wi-day-snow-thunderstorm.svg create mode 100644 src/static/icons/svg/wi-day-snow-wind.svg create mode 100644 src/static/icons/svg/wi-day-snow.svg create mode 100644 src/static/icons/svg/wi-day-sprinkle.svg create mode 100644 src/static/icons/svg/wi-day-storm-showers.svg create mode 100644 src/static/icons/svg/wi-day-sunny-overcast.svg create mode 100644 src/static/icons/svg/wi-day-sunny.svg create mode 100644 src/static/icons/svg/wi-day-thunderstorm.svg create mode 100644 src/static/icons/svg/wi-day-windy.svg create mode 100644 src/static/icons/svg/wi-degrees.svg create mode 100644 src/static/icons/svg/wi-direction-down-left.svg create mode 100644 src/static/icons/svg/wi-direction-down-right.svg create mode 100644 src/static/icons/svg/wi-direction-down.svg create mode 100644 src/static/icons/svg/wi-direction-left.svg create mode 100644 src/static/icons/svg/wi-direction-right.svg create mode 100644 src/static/icons/svg/wi-direction-up-left.svg create mode 100644 src/static/icons/svg/wi-direction-up-right.svg create mode 100644 src/static/icons/svg/wi-direction-up.svg create mode 100644 src/static/icons/svg/wi-dust.svg create mode 100644 src/static/icons/svg/wi-earthquake.svg create mode 100644 src/static/icons/svg/wi-fahrenheit.svg create mode 100644 src/static/icons/svg/wi-fire.svg create mode 100644 src/static/icons/svg/wi-flood.svg create mode 100644 src/static/icons/svg/wi-fog.svg create mode 100644 src/static/icons/svg/wi-gale-warning.svg create mode 100644 src/static/icons/svg/wi-hail.svg create mode 100644 src/static/icons/svg/wi-horizon-alt.svg create mode 100644 src/static/icons/svg/wi-horizon.svg create mode 100644 src/static/icons/svg/wi-hot.svg create mode 100644 src/static/icons/svg/wi-humidity.svg create mode 100644 src/static/icons/svg/wi-hurricane-warning.svg create mode 100644 src/static/icons/svg/wi-hurricane.svg create mode 100644 src/static/icons/svg/wi-lightning.svg create mode 100644 src/static/icons/svg/wi-lunar-eclipse.svg create mode 100644 src/static/icons/svg/wi-meteor.svg create mode 100644 src/static/icons/svg/wi-moon-alt-first-quarter.svg create mode 100644 src/static/icons/svg/wi-moon-alt-full.svg create mode 100644 src/static/icons/svg/wi-moon-alt-new.svg create mode 100644 src/static/icons/svg/wi-moon-alt-third-quarter.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-crescent-1.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-crescent-2.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-crescent-3.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-crescent-4.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-crescent-5.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-crescent-6.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-gibbous-1.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-gibbous-2.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-gibbous-3.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-gibbous-4.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-gibbous-5.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waning-gibbous-6.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-crescent-1.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-crescent-2.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-crescent-3.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-crescent-4.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-crescent-5.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-crescent-6.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-gibbous-1.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-gibbous-2.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-gibbous-3.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-gibbous-4.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-gibbous-5.svg create mode 100644 src/static/icons/svg/wi-moon-alt-waxing-gibbous-6.svg create mode 100644 src/static/icons/svg/wi-moon-first-quarter.svg create mode 100644 src/static/icons/svg/wi-moon-full.svg create mode 100644 src/static/icons/svg/wi-moon-new.svg create mode 100644 src/static/icons/svg/wi-moon-third-quarter.svg create mode 100644 src/static/icons/svg/wi-moon-waning-crescent-1.svg create mode 100644 src/static/icons/svg/wi-moon-waning-crescent-2.svg create mode 100644 src/static/icons/svg/wi-moon-waning-crescent-3.svg create mode 100644 src/static/icons/svg/wi-moon-waning-crescent-4.svg create mode 100644 src/static/icons/svg/wi-moon-waning-crescent-5.svg create mode 100644 src/static/icons/svg/wi-moon-waning-crescent-6.svg create mode 100644 src/static/icons/svg/wi-moon-waning-gibbous-1.svg create mode 100644 src/static/icons/svg/wi-moon-waning-gibbous-2.svg create mode 100644 src/static/icons/svg/wi-moon-waning-gibbous-3.svg create mode 100644 src/static/icons/svg/wi-moon-waning-gibbous-4.svg create mode 100644 src/static/icons/svg/wi-moon-waning-gibbous-5.svg create mode 100644 src/static/icons/svg/wi-moon-waning-gibbous-6.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-6.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-crescent-1.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-crescent-2.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-crescent-3.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-crescent-4.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-crescent-5.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-gibbous-1.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-gibbous-2.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-gibbous-3.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-gibbous-4.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-gibbous-5.svg create mode 100644 src/static/icons/svg/wi-moon-waxing-gibbous-6.svg create mode 100644 src/static/icons/svg/wi-moonrise.svg create mode 100644 src/static/icons/svg/wi-moonset.svg create mode 100644 src/static/icons/svg/wi-na.svg create mode 100644 src/static/icons/svg/wi-night-alt-cloudy-gusts.svg create mode 100644 src/static/icons/svg/wi-night-alt-cloudy-high.svg create mode 100644 src/static/icons/svg/wi-night-alt-cloudy-windy.svg create mode 100644 src/static/icons/svg/wi-night-alt-cloudy.svg create mode 100644 src/static/icons/svg/wi-night-alt-hail.svg create mode 100644 src/static/icons/svg/wi-night-alt-lightning.svg create mode 100644 src/static/icons/svg/wi-night-alt-partly-cloudy.svg create mode 100644 src/static/icons/svg/wi-night-alt-rain-mix.svg create mode 100644 src/static/icons/svg/wi-night-alt-rain-wind.svg create mode 100644 src/static/icons/svg/wi-night-alt-rain.svg create mode 100644 src/static/icons/svg/wi-night-alt-showers.svg create mode 100644 src/static/icons/svg/wi-night-alt-sleet-storm.svg create mode 100644 src/static/icons/svg/wi-night-alt-sleet.svg create mode 100644 src/static/icons/svg/wi-night-alt-snow-thunderstorm.svg create mode 100644 src/static/icons/svg/wi-night-alt-snow-wind.svg create mode 100644 src/static/icons/svg/wi-night-alt-snow.svg create mode 100644 src/static/icons/svg/wi-night-alt-sprinkle.svg create mode 100644 src/static/icons/svg/wi-night-alt-storm-showers.svg create mode 100644 src/static/icons/svg/wi-night-alt-thunderstorm.svg create mode 100644 src/static/icons/svg/wi-night-clear.svg create mode 100644 src/static/icons/svg/wi-night-cloudy-gusts.svg create mode 100644 src/static/icons/svg/wi-night-cloudy-high.svg create mode 100644 src/static/icons/svg/wi-night-cloudy-windy.svg create mode 100644 src/static/icons/svg/wi-night-cloudy.svg create mode 100644 src/static/icons/svg/wi-night-fog.svg create mode 100644 src/static/icons/svg/wi-night-hail.svg create mode 100644 src/static/icons/svg/wi-night-lightning.svg create mode 100644 src/static/icons/svg/wi-night-partly-cloudy.svg create mode 100644 src/static/icons/svg/wi-night-rain-mix.svg create mode 100644 src/static/icons/svg/wi-night-rain-wind.svg create mode 100644 src/static/icons/svg/wi-night-rain.svg create mode 100644 src/static/icons/svg/wi-night-showers.svg create mode 100644 src/static/icons/svg/wi-night-sleet-storm.svg create mode 100644 src/static/icons/svg/wi-night-sleet.svg create mode 100644 src/static/icons/svg/wi-night-snow-thunderstorm.svg create mode 100644 src/static/icons/svg/wi-night-snow-wind.svg create mode 100644 src/static/icons/svg/wi-night-snow.svg create mode 100644 src/static/icons/svg/wi-night-sprinkle.svg create mode 100644 src/static/icons/svg/wi-night-storm-showers.svg create mode 100644 src/static/icons/svg/wi-night-thunderstorm.svg create mode 100644 src/static/icons/svg/wi-rain-mix.svg create mode 100644 src/static/icons/svg/wi-rain-wind.svg create mode 100644 src/static/icons/svg/wi-rain.svg create mode 100644 src/static/icons/svg/wi-raindrop.svg create mode 100644 src/static/icons/svg/wi-raindrops.svg create mode 100644 src/static/icons/svg/wi-refresh-alt.svg create mode 100644 src/static/icons/svg/wi-refresh.svg create mode 100644 src/static/icons/svg/wi-sandstorm.svg create mode 100644 src/static/icons/svg/wi-showers.svg create mode 100644 src/static/icons/svg/wi-sleet.svg create mode 100644 src/static/icons/svg/wi-small-craft-advisory.svg create mode 100644 src/static/icons/svg/wi-smog.svg create mode 100644 src/static/icons/svg/wi-smoke.svg create mode 100644 src/static/icons/svg/wi-snow-wind.svg create mode 100644 src/static/icons/svg/wi-snow.svg create mode 100644 src/static/icons/svg/wi-snowflake-cold.svg create mode 100644 src/static/icons/svg/wi-solar-eclipse.svg create mode 100644 src/static/icons/svg/wi-sprinkle.svg create mode 100644 src/static/icons/svg/wi-stars.svg create mode 100644 src/static/icons/svg/wi-storm-showers.svg create mode 100644 src/static/icons/svg/wi-storm-warning.svg create mode 100644 src/static/icons/svg/wi-strong-wind.svg create mode 100644 src/static/icons/svg/wi-sunrise.svg create mode 100644 src/static/icons/svg/wi-sunset.svg create mode 100644 src/static/icons/svg/wi-thermometer-exterior.svg create mode 100644 src/static/icons/svg/wi-thermometer-internal.svg create mode 100644 src/static/icons/svg/wi-thermometer.svg create mode 100644 src/static/icons/svg/wi-thunderstorm.svg create mode 100644 src/static/icons/svg/wi-time-1.svg create mode 100644 src/static/icons/svg/wi-time-10.svg create mode 100644 src/static/icons/svg/wi-time-11.svg create mode 100644 src/static/icons/svg/wi-time-12.svg create mode 100644 src/static/icons/svg/wi-time-2.svg create mode 100644 src/static/icons/svg/wi-time-3.svg create mode 100644 src/static/icons/svg/wi-time-4.svg create mode 100644 src/static/icons/svg/wi-time-5.svg create mode 100644 src/static/icons/svg/wi-time-6.svg create mode 100644 src/static/icons/svg/wi-time-7.svg create mode 100644 src/static/icons/svg/wi-time-8.svg create mode 100644 src/static/icons/svg/wi-time-9.svg create mode 100644 src/static/icons/svg/wi-tornado.svg create mode 100644 src/static/icons/svg/wi-train.svg create mode 100644 src/static/icons/svg/wi-tsunami.svg create mode 100644 src/static/icons/svg/wi-umbrella.svg create mode 100644 src/static/icons/svg/wi-volcano.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-0.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-1.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-10.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-11.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-12.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-2.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-3.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-4.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-5.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-6.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-7.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-8.svg create mode 100644 src/static/icons/svg/wi-wind-beaufort-9.svg create mode 100644 src/static/icons/svg/wi-wind-deg.svg create mode 100644 src/static/icons/svg/wi-windy.svg create mode 100644 src/static/style.css create mode 100644 src/static/temp.js create mode 100644 src/templates/base.html create mode 100644 src/templates/index.html create mode 100644 src/templates/location.html create mode 100644 src/templates/weather.html (limited to 'src') diff --git a/src/app.py b/src/app.py new file mode 100644 index 0000000..6426b04 --- /dev/null +++ b/src/app.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +import json, requests, datetime, argparse, pytz, flask +import library, forms + +app = flask.Flask(__name__) +app.config['SECRET_KEY'] = "JAnmklasd39u2mnwim" + + +def check_submission(location): + latitude, longitude = library.get_lat_long(location) + if (latitude, longitude) == (0, 0): + return flask.redirect(flask.url_for('location', location=location)) + else: + return flask.redirect(flask.url_for('weather', latitude=latitude, longitude=longitude)) + + +@app.route('/', methods=('GET','POST')) +def index(): + form = forms.WeatherForm() + if form.validate_on_submit(): + location = form.location.data + return check_submission(location) + else: + return flask.render_template("index.html", form=form) + + +@app.route('/weather', methods=('GET','POST')) +def weather(): + latitude = flask.request.args.get('latitude', type=str) + longitude = flask.request.args.get('longitude', type=str) + data = library.get_data(latitude, longitude) + hour = library.get_current_rounded_time(data["timezone"]).hour + form = forms.WeatherForm() + if form.validate_on_submit(): + location = form.location.data + return check_submission(location) + else: + return flask.render_template("weather.html", data=data, form=form, weather_codes=library.weather_codes, datetime=datetime, + weather_icons=library.weather_icons, hour=hour, get_direction_icon=library.get_direction_icon) + + +@app.route('/location', methods=('GET','POST')) +def location(): + location = flask.request.args.get('location', type=str) + url = f"https://geocoding-api.open-meteo.com/v1/search?name={location}&count=10&language=en&format=json" + headers = {"User-Agent": "pywttr 0.1"} + data = requests.get(url, headers=headers).json() + + choices = [] + for i in range(len(data["results"])): + point = data["results"][i] + choice_str = point["name"] + ", " + if "admin1" in point: + choice_str += point["admin1"] + ", " + if "country" in point: + choice_str += point["country"] + choices.append((i, choice_str)) + + form = forms.LocationForm() + form.location.choices = choices + form.location.default = choices[0] + if form.is_submitted(): + location = data["results"][int(form.location.data)] + latitude = location["latitude"] + longitude = location["longitude"] + return flask.redirect(flask.url_for('weather', latitude=latitude, longitude=longitude)) + else: + return flask.render_template("location.html", data=data, form=form) + + +if __name__ == "__main__": + app.run(debug=True) diff --git a/src/forms.py b/src/forms.py new file mode 100644 index 0000000..ee08c0e --- /dev/null +++ b/src/forms.py @@ -0,0 +1,10 @@ +import flask_wtf, wtforms + +class WeatherForm(flask_wtf.FlaskForm): + location = wtforms.StringField("Location") + submit = wtforms.SubmitField("Submit") + +class LocationForm(flask_wtf.FlaskForm): + location = wtforms.SelectField("Location") + submit = wtforms.SubmitField("Submit") + diff --git a/src/library.py b/src/library.py new file mode 100644 index 0000000..38217fc --- /dev/null +++ b/src/library.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python3 +import datetime, requests, json, pytz, sys + +weather_codes = {0:"Clear Sky", 1:"Mainly Clear",2:"Partly Cloudy",3:"Overcast",45:"Fog",48:"Fog",51:"Light Drizzle",\ + 53:"Moderate Drizzle",55:"Dense Drizzle",56:"Light Freezing Drizzle",57:"Freezing Drizzle",\ + 61:"Light Rain",63:"Moderate Rain",65:"Heavy Rain",66:"Light Freezing Rain",67:"Freezing Rain",\ + 71:"Light Snowfall",73:"Moderate Snowfall",75:"Heavy Snowfall",77:"Snow Grains",80:"Slight Rain Showers",\ + 81:"Moderate Rain Showers",82:"Heavy Rain Showers",85:"Slight Snow Showers",86:"Heavy Snow Showers",\ + 95:"Thunderstorm",96:"Strong Thunderstrom",99:"Heavy Thunderstrom"} + +weather_icons = {0:('wi-day-sunny','wi-night-clear'), 1:('wi-day-sunny','wi-night-clear'), 2:('wi-cloudy','wi-night-partly-cloudy'),\ + 3:('wi-day-sunny-overcast','wi-night-cloudy'), 45:('wi-day-fog','wi-night-fog'), 48:('wi-day-fog','wi-night-fog'), \ + 51:('wi-day-rain','wi-night-rain'),53:('wi-day-rain','wi-night-rain'),55:('wi-day-rain','wi-night-rain'),\ + 56:('wi-day-rain','wi-night-rain'),57:('wi-day-rain','wi-night-rain'),61:('wi-day-rain','wi-night-rain'),\ + 63:('wi-day-rain','wi-night-rain'),65:('wi-day-rain','wi-night-rain'),66:('wi-day-rain','wi-night-rain'),\ + 67:('wi-day-rain','wi-night-rain'),71:('wi-day-snow','wi-night-snow'),73:('wi-day-snow','wi-night-snow'),\ + 71:('wi-day-snow','wi-night-snow'),75:('wi-day-snow','wi-night-snow'),77:('wi-day-snow','wi-night-snow'),\ + 80:('wi-day-showers','wi-night-showers'),81:('wi-day-showers','wi-night-showers'),82:('wi-day-showers','wi-night-showers'),\ + 85:('wi-day-snow','wi-night-snow'),86:('wi-day-snow','wi-night-snow'),95:('wi-day-storm-showers','wi-night-storm-showers'),\ + 96:('wi-day-storm-showers','wi-night-storm-showers'),99:('wi-day-storm-showers','wi-night-storm-showers')} + + +def get_direction_icon(degrees): + directions = ['N','NNE','NE','ENE','E','ESE','SE','SSE','S','SSW','SW','WSW','W','NWN','NW','NNW','N'] + icons = {'N':'north','NNE':None,'NE':'north-east','ENE':None,'E':'east','ESE':None,'SE':'south-east','SSE':None,\ + 'S':'south','SSW':None,'SW':'south-west','WSW':None,'W':'west','NWN':None,'NW':'north-west','NNW':None,'N':'north'} + points = 8 + step = 360 / points + index = (round((degrees + step / 2) / step) * 16) / points; + direction = directions[int(index)] + return icons[direction] + + +def get_lat_long(location): + # Converts a location into latitude and longitude + url = f"https://geocoding-api.open-meteo.com/v1/search?name={location}&count=10&language=en&format=json" + headers = {"User-Agent": "pywttr 0.1"} + data = requests.get(url, headers=headers).json() + if len(data["results"]) > 1: + return 0,0 + else: + latitude = data["results"][0]["latitude"] + longitude = data["results"][0]["longitude"] + return latitude, longitude + + +def get_data(latitude, longitude): + headers = {"User-Agent": "pywttr 0.1"} + now = datetime.datetime.now() + now_str = now.strftime("%Y-%m-%d") + end_str = (now + datetime.timedelta(days=7)).strftime("%Y-%m-%d") + + url_base = f"https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}" + url_weather_params = "¤t_weather=true&hourly=temperature_2m&hourly=relativehumidity_2m&hourly=apparent_temperature&hourly=precipitation_probability&hourly=precipitation&hourly=weathercode&hourly=windspeed_10m&hourly=winddirection_10m&daily=weathercode&daily=temperature_2m_max&daily=temperature_2m_min&daily=sunrise&daily=sunset&daily=precipitation_sum&daily=precipitation_probability_max&temperature_unit=fahrenheit&windspeed_unit=mph&precipitation_unit=inch&timeformat=iso8601&past_days=0&forecast_days=7" + url_date_time = f"&start_date={now_str}&end_date={end_str}&timezone=auto" + url = url_base + url_weather_params + url_date_time + data = requests.get(url, headers=headers).json() + + for i in range(len(data["hourly"]["time"])): + data["hourly"]["time"][i] = datetime.datetime.strptime(data["hourly"]["time"][i], '%Y-%m-%dT%H:%M').strftime('%a %x %I:%M %p') + for i in range(len(data["daily"]["time"])): + data["daily"]["time"][i] = datetime.datetime.strptime(data["daily"]["time"][i], '%Y-%m-%d').strftime('%a %x') + for i in range(len(data["daily"]["sunrise"])): + data["daily"]["sunrise"][i] = datetime.datetime.strptime(data["daily"]["sunrise"][i], '%Y-%m-%dT%H:%M').strftime('%I:%M %p') + for i in range(len(data["daily"]["sunset"])): + data["daily"]["sunset"][i] = datetime.datetime.strptime(data["daily"]["sunset"][i], '%Y-%m-%dT%H:%M').strftime('%I:%M %p') + + data["current_weather"]["time"] = datetime.datetime.strptime(data["current_weather"]["time"], '%Y-%m-%dT%H:%M').strftime('%a %x %I:%M %p') + + return data + + +def get_current_rounded_time(tz_str): + # Gets current time rounded down to the hour + tz = pytz.timezone(tz_str) + cur_time = datetime.datetime.now(tz=tz) + cur_time_rounded = cur_time.replace(second=0, microsecond=0, minute=0, hour=cur_time.hour) + return cur_time_rounded + + +def make_current(values): + # Takes a list of weather data values + # and removes items from before the current time + # (to the nearest hour) + ret = [] + cur_time_rounded = get_current_rounded_time() + for val in values: + if val["time"] >= cur_time_rounded: + ret.append(val) + return ret + + +def translate_weather_code(weather_code:int): + return weather_codes[weather_code] + diff --git a/src/run.sh b/src/run.sh new file mode 100755 index 0000000..0d36b89 --- /dev/null +++ b/src/run.sh @@ -0,0 +1,2 @@ +#!/bin/sh +flask run diff --git a/src/static/icons/backup/celsius.svg b/src/static/icons/backup/celsius.svg new file mode 100644 index 0000000..57db2e9 --- /dev/null +++ b/src/static/icons/backup/celsius.svg @@ -0,0 +1 @@ +404 \ No newline at end of file diff --git a/src/static/icons/backup/fahrenheit.svg b/src/static/icons/backup/fahrenheit.svg new file mode 100644 index 0000000..9e21987 --- /dev/null +++ b/src/static/icons/backup/fahrenheit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/fog.svg b/src/static/icons/backup/fog.svg new file mode 100644 index 0000000..c66e82d --- /dev/null +++ b/src/static/icons/backup/fog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/hail.svg b/src/static/icons/backup/hail.svg new file mode 100644 index 0000000..d8dfb7f --- /dev/null +++ b/src/static/icons/backup/hail.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/hazy.svg b/src/static/icons/backup/hazy.svg new file mode 100644 index 0000000..44678b2 --- /dev/null +++ b/src/static/icons/backup/hazy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/humidity.svg b/src/static/icons/backup/humidity.svg new file mode 100644 index 0000000..3835684 --- /dev/null +++ b/src/static/icons/backup/humidity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/lightning-rainy.svg b/src/static/icons/backup/lightning-rainy.svg new file mode 100644 index 0000000..45cd3e0 --- /dev/null +++ b/src/static/icons/backup/lightning-rainy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/lightning.svg b/src/static/icons/backup/lightning.svg new file mode 100644 index 0000000..2ee1433 --- /dev/null +++ b/src/static/icons/backup/lightning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/night-clear.svg b/src/static/icons/backup/night-clear.svg new file mode 100644 index 0000000..ee464aa --- /dev/null +++ b/src/static/icons/backup/night-clear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/night-partly-cloudy.svg b/src/static/icons/backup/night-partly-cloudy.svg new file mode 100644 index 0000000..4f00227 --- /dev/null +++ b/src/static/icons/backup/night-partly-cloudy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/partly-cloudy.svg b/src/static/icons/backup/partly-cloudy.svg new file mode 100644 index 0000000..eaf9db4 --- /dev/null +++ b/src/static/icons/backup/partly-cloudy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/partly-rainy.svg b/src/static/icons/backup/partly-rainy.svg new file mode 100644 index 0000000..ef65f20 --- /dev/null +++ b/src/static/icons/backup/partly-rainy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/partly-snowy-rainy.svg b/src/static/icons/backup/partly-snowy-rainy.svg new file mode 100644 index 0000000..1138075 --- /dev/null +++ b/src/static/icons/backup/partly-snowy-rainy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/pouring.svg b/src/static/icons/backup/pouring.svg new file mode 100644 index 0000000..5fc77b4 --- /dev/null +++ b/src/static/icons/backup/pouring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/snow.svg b/src/static/icons/backup/snow.svg new file mode 100644 index 0000000..f52b984 --- /dev/null +++ b/src/static/icons/backup/snow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/snowy-heavy.svg b/src/static/icons/backup/snowy-heavy.svg new file mode 100644 index 0000000..4602c8c --- /dev/null +++ b/src/static/icons/backup/snowy-heavy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/snowy.svg b/src/static/icons/backup/snowy.svg new file mode 100644 index 0000000..5fc77b4 --- /dev/null +++ b/src/static/icons/backup/snowy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/sunny.svg b/src/static/icons/backup/sunny.svg new file mode 100644 index 0000000..d2e94e4 --- /dev/null +++ b/src/static/icons/backup/sunny.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/sunrise.svg b/src/static/icons/backup/sunrise.svg new file mode 100644 index 0000000..c831541 --- /dev/null +++ b/src/static/icons/backup/sunrise.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/sunset.svg b/src/static/icons/backup/sunset.svg new file mode 100644 index 0000000..207aa1e --- /dev/null +++ b/src/static/icons/backup/sunset.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/thermometer.svg b/src/static/icons/backup/thermometer.svg new file mode 100644 index 0000000..0a332bd --- /dev/null +++ b/src/static/icons/backup/thermometer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/water-percent.svg b/src/static/icons/backup/water-percent.svg new file mode 100644 index 0000000..9e4f40c --- /dev/null +++ b/src/static/icons/backup/water-percent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/backup/windy.svg b/src/static/icons/backup/windy.svg new file mode 100644 index 0000000..8b38bdc --- /dev/null +++ b/src/static/icons/backup/windy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/clock.svg b/src/static/icons/clock.svg new file mode 100644 index 0000000..56c6b94 --- /dev/null +++ b/src/static/icons/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/directions/east.svg b/src/static/icons/directions/east.svg new file mode 100644 index 0000000..e708757 --- /dev/null +++ b/src/static/icons/directions/east.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/directions/north-east.svg b/src/static/icons/directions/north-east.svg new file mode 100644 index 0000000..a5b842c --- /dev/null +++ b/src/static/icons/directions/north-east.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/directions/north-west.svg b/src/static/icons/directions/north-west.svg new file mode 100644 index 0000000..e18211c --- /dev/null +++ b/src/static/icons/directions/north-west.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/directions/north.svg b/src/static/icons/directions/north.svg new file mode 100644 index 0000000..cb15d38 --- /dev/null +++ b/src/static/icons/directions/north.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/directions/south-east.svg b/src/static/icons/directions/south-east.svg new file mode 100644 index 0000000..b8fb1c9 --- /dev/null +++ b/src/static/icons/directions/south-east.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/directions/south-west.svg b/src/static/icons/directions/south-west.svg new file mode 100644 index 0000000..dba0fe1 --- /dev/null +++ b/src/static/icons/directions/south-west.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/directions/south.svg b/src/static/icons/directions/south.svg new file mode 100644 index 0000000..4be2792 --- /dev/null +++ b/src/static/icons/directions/south.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/directions/west.svg b/src/static/icons/directions/west.svg new file mode 100644 index 0000000..4de4b71 --- /dev/null +++ b/src/static/icons/directions/west.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/static/icons/svg/wi-alien.svg b/src/static/icons/svg/wi-alien.svg new file mode 100644 index 0000000..e9c0226 --- /dev/null +++ b/src/static/icons/svg/wi-alien.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/src/static/icons/svg/wi-barometer.svg b/src/static/icons/svg/wi-barometer.svg new file mode 100644 index 0000000..ced7e29 --- /dev/null +++ b/src/static/icons/svg/wi-barometer.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/src/static/icons/svg/wi-celsius.svg b/src/static/icons/svg/wi-celsius.svg new file mode 100644 index 0000000..31dc639 --- /dev/null +++ b/src/static/icons/svg/wi-celsius.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/static/icons/svg/wi-cloud-down.svg b/src/static/icons/svg/wi-cloud-down.svg new file mode 100644 index 0000000..dcd6678 --- /dev/null +++ b/src/static/icons/svg/wi-cloud-down.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/static/icons/svg/wi-cloud-refresh.svg b/src/static/icons/svg/wi-cloud-refresh.svg new file mode 100644 index 0000000..3f3888f --- /dev/null +++ b/src/static/icons/svg/wi-cloud-refresh.svg @@ -0,0 +1,21 @@ + + + + + diff --git a/src/static/icons/svg/wi-cloud-up.svg b/src/static/icons/svg/wi-cloud-up.svg new file mode 100644 index 0000000..bff0317 --- /dev/null +++ b/src/static/icons/svg/wi-cloud-up.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/static/icons/svg/wi-cloud.svg b/src/static/icons/svg/wi-cloud.svg new file mode 100644 index 0000000..fa77599 --- /dev/null +++ b/src/static/icons/svg/wi-cloud.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-cloudy-gusts.svg b/src/static/icons/svg/wi-cloudy-gusts.svg new file mode 100644 index 0000000..4300a1c --- /dev/null +++ b/src/static/icons/svg/wi-cloudy-gusts.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/src/static/icons/svg/wi-cloudy-windy.svg b/src/static/icons/svg/wi-cloudy-windy.svg new file mode 100644 index 0000000..013929c --- /dev/null +++ b/src/static/icons/svg/wi-cloudy-windy.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/src/static/icons/svg/wi-cloudy.svg b/src/static/icons/svg/wi-cloudy.svg new file mode 100644 index 0000000..c3eaf41 --- /dev/null +++ b/src/static/icons/svg/wi-cloudy.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-cloudy-gusts.svg b/src/static/icons/svg/wi-day-cloudy-gusts.svg new file mode 100644 index 0000000..287acc9 --- /dev/null +++ b/src/static/icons/svg/wi-day-cloudy-gusts.svg @@ -0,0 +1,35 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-cloudy-high.svg b/src/static/icons/svg/wi-day-cloudy-high.svg new file mode 100644 index 0000000..81649a0 --- /dev/null +++ b/src/static/icons/svg/wi-day-cloudy-high.svg @@ -0,0 +1,26 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-cloudy-windy.svg b/src/static/icons/svg/wi-day-cloudy-windy.svg new file mode 100644 index 0000000..d1a49bf --- /dev/null +++ b/src/static/icons/svg/wi-day-cloudy-windy.svg @@ -0,0 +1,33 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-cloudy.svg b/src/static/icons/svg/wi-day-cloudy.svg new file mode 100644 index 0000000..cf63543 --- /dev/null +++ b/src/static/icons/svg/wi-day-cloudy.svg @@ -0,0 +1,26 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-fog.svg b/src/static/icons/svg/wi-day-fog.svg new file mode 100644 index 0000000..3da78ca --- /dev/null +++ b/src/static/icons/svg/wi-day-fog.svg @@ -0,0 +1,31 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-hail.svg b/src/static/icons/svg/wi-day-hail.svg new file mode 100644 index 0000000..b813a6f --- /dev/null +++ b/src/static/icons/svg/wi-day-hail.svg @@ -0,0 +1,42 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-haze.svg b/src/static/icons/svg/wi-day-haze.svg new file mode 100644 index 0000000..e19bf13 --- /dev/null +++ b/src/static/icons/svg/wi-day-haze.svg @@ -0,0 +1,33 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-light-wind.svg b/src/static/icons/svg/wi-day-light-wind.svg new file mode 100644 index 0000000..535c6a4 --- /dev/null +++ b/src/static/icons/svg/wi-day-light-wind.svg @@ -0,0 +1,32 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-lightning.svg b/src/static/icons/svg/wi-day-lightning.svg new file mode 100644 index 0000000..18413ed --- /dev/null +++ b/src/static/icons/svg/wi-day-lightning.svg @@ -0,0 +1,29 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-rain-mix.svg b/src/static/icons/svg/wi-day-rain-mix.svg new file mode 100644 index 0000000..8a5582d --- /dev/null +++ b/src/static/icons/svg/wi-day-rain-mix.svg @@ -0,0 +1,49 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-rain-wind.svg b/src/static/icons/svg/wi-day-rain-wind.svg new file mode 100644 index 0000000..db5b02b --- /dev/null +++ b/src/static/icons/svg/wi-day-rain-wind.svg @@ -0,0 +1,40 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-rain.svg b/src/static/icons/svg/wi-day-rain.svg new file mode 100644 index 0000000..12b1219 --- /dev/null +++ b/src/static/icons/svg/wi-day-rain.svg @@ -0,0 +1,35 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-showers.svg b/src/static/icons/svg/wi-day-showers.svg new file mode 100644 index 0000000..cd0cb0a --- /dev/null +++ b/src/static/icons/svg/wi-day-showers.svg @@ -0,0 +1,43 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-sleet-storm.svg b/src/static/icons/svg/wi-day-sleet-storm.svg new file mode 100644 index 0000000..a7ff6e6 --- /dev/null +++ b/src/static/icons/svg/wi-day-sleet-storm.svg @@ -0,0 +1,40 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-sleet.svg b/src/static/icons/svg/wi-day-sleet.svg new file mode 100644 index 0000000..42df1df --- /dev/null +++ b/src/static/icons/svg/wi-day-sleet.svg @@ -0,0 +1,46 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-snow-thunderstorm.svg b/src/static/icons/svg/wi-day-snow-thunderstorm.svg new file mode 100644 index 0000000..b1e3f20 --- /dev/null +++ b/src/static/icons/svg/wi-day-snow-thunderstorm.svg @@ -0,0 +1,37 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-snow-wind.svg b/src/static/icons/svg/wi-day-snow-wind.svg new file mode 100644 index 0000000..6a632dc --- /dev/null +++ b/src/static/icons/svg/wi-day-snow-wind.svg @@ -0,0 +1,40 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-snow.svg b/src/static/icons/svg/wi-day-snow.svg new file mode 100644 index 0000000..c1f1c71 --- /dev/null +++ b/src/static/icons/svg/wi-day-snow.svg @@ -0,0 +1,40 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-sprinkle.svg b/src/static/icons/svg/wi-day-sprinkle.svg new file mode 100644 index 0000000..5294fca --- /dev/null +++ b/src/static/icons/svg/wi-day-sprinkle.svg @@ -0,0 +1,33 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-storm-showers.svg b/src/static/icons/svg/wi-day-storm-showers.svg new file mode 100644 index 0000000..0166299 --- /dev/null +++ b/src/static/icons/svg/wi-day-storm-showers.svg @@ -0,0 +1,38 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-sunny-overcast.svg b/src/static/icons/svg/wi-day-sunny-overcast.svg new file mode 100644 index 0000000..4873b05 --- /dev/null +++ b/src/static/icons/svg/wi-day-sunny-overcast.svg @@ -0,0 +1,29 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-sunny.svg b/src/static/icons/svg/wi-day-sunny.svg new file mode 100644 index 0000000..eafcd77 --- /dev/null +++ b/src/static/icons/svg/wi-day-sunny.svg @@ -0,0 +1,27 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-thunderstorm.svg b/src/static/icons/svg/wi-day-thunderstorm.svg new file mode 100644 index 0000000..006a8e5 --- /dev/null +++ b/src/static/icons/svg/wi-day-thunderstorm.svg @@ -0,0 +1,34 @@ + + + + + diff --git a/src/static/icons/svg/wi-day-windy.svg b/src/static/icons/svg/wi-day-windy.svg new file mode 100644 index 0000000..ea09d42 --- /dev/null +++ b/src/static/icons/svg/wi-day-windy.svg @@ -0,0 +1,36 @@ + + + + + diff --git a/src/static/icons/svg/wi-degrees.svg b/src/static/icons/svg/wi-degrees.svg new file mode 100644 index 0000000..ba3de70 --- /dev/null +++ b/src/static/icons/svg/wi-degrees.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-direction-down-left.svg b/src/static/icons/svg/wi-direction-down-left.svg new file mode 100644 index 0000000..e5a46ff --- /dev/null +++ b/src/static/icons/svg/wi-direction-down-left.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-direction-down-right.svg b/src/static/icons/svg/wi-direction-down-right.svg new file mode 100644 index 0000000..ecf35cc --- /dev/null +++ b/src/static/icons/svg/wi-direction-down-right.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-direction-down.svg b/src/static/icons/svg/wi-direction-down.svg new file mode 100644 index 0000000..17d7048 --- /dev/null +++ b/src/static/icons/svg/wi-direction-down.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-direction-left.svg b/src/static/icons/svg/wi-direction-left.svg new file mode 100644 index 0000000..bf3f5be --- /dev/null +++ b/src/static/icons/svg/wi-direction-left.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-direction-right.svg b/src/static/icons/svg/wi-direction-right.svg new file mode 100644 index 0000000..8f02b00 --- /dev/null +++ b/src/static/icons/svg/wi-direction-right.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-direction-up-left.svg b/src/static/icons/svg/wi-direction-up-left.svg new file mode 100644 index 0000000..884b611 --- /dev/null +++ b/src/static/icons/svg/wi-direction-up-left.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-direction-up-right.svg b/src/static/icons/svg/wi-direction-up-right.svg new file mode 100644 index 0000000..45d8f72 --- /dev/null +++ b/src/static/icons/svg/wi-direction-up-right.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-direction-up.svg b/src/static/icons/svg/wi-direction-up.svg new file mode 100644 index 0000000..668a152 --- /dev/null +++ b/src/static/icons/svg/wi-direction-up.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-dust.svg b/src/static/icons/svg/wi-dust.svg new file mode 100644 index 0000000..aa90229 --- /dev/null +++ b/src/static/icons/svg/wi-dust.svg @@ -0,0 +1,31 @@ + + + + + diff --git a/src/static/icons/svg/wi-earthquake.svg b/src/static/icons/svg/wi-earthquake.svg new file mode 100644 index 0000000..c7c752d --- /dev/null +++ b/src/static/icons/svg/wi-earthquake.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/src/static/icons/svg/wi-fahrenheit.svg b/src/static/icons/svg/wi-fahrenheit.svg new file mode 100644 index 0000000..dffa947 --- /dev/null +++ b/src/static/icons/svg/wi-fahrenheit.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-fire.svg b/src/static/icons/svg/wi-fire.svg new file mode 100644 index 0000000..33b0502 --- /dev/null +++ b/src/static/icons/svg/wi-fire.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/src/static/icons/svg/wi-flood.svg b/src/static/icons/svg/wi-flood.svg new file mode 100644 index 0000000..48e218e --- /dev/null +++ b/src/static/icons/svg/wi-flood.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/src/static/icons/svg/wi-fog.svg b/src/static/icons/svg/wi-fog.svg new file mode 100644 index 0000000..cf06f8f --- /dev/null +++ b/src/static/icons/svg/wi-fog.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/static/icons/svg/wi-gale-warning.svg b/src/static/icons/svg/wi-gale-warning.svg new file mode 100644 index 0000000..5e2f40d --- /dev/null +++ b/src/static/icons/svg/wi-gale-warning.svg @@ -0,0 +1,6 @@ + + + + + diff --git a/src/static/icons/svg/wi-hail.svg b/src/static/icons/svg/wi-hail.svg new file mode 100644 index 0000000..26c4b0d --- /dev/null +++ b/src/static/icons/svg/wi-hail.svg @@ -0,0 +1,30 @@ + + + + + diff --git a/src/static/icons/svg/wi-horizon-alt.svg b/src/static/icons/svg/wi-horizon-alt.svg new file mode 100644 index 0000000..ff423f3 --- /dev/null +++ b/src/static/icons/svg/wi-horizon-alt.svg @@ -0,0 +1,24 @@ + + + + + diff --git a/src/static/icons/svg/wi-horizon.svg b/src/static/icons/svg/wi-horizon.svg new file mode 100644 index 0000000..feef2ef --- /dev/null +++ b/src/static/icons/svg/wi-horizon.svg @@ -0,0 +1,17 @@ + + + + + diff --git a/src/static/icons/svg/wi-hot.svg b/src/static/icons/svg/wi-hot.svg new file mode 100644 index 0000000..66faa3a --- /dev/null +++ b/src/static/icons/svg/wi-hot.svg @@ -0,0 +1,56 @@ + + + + + diff --git a/src/static/icons/svg/wi-humidity.svg b/src/static/icons/svg/wi-humidity.svg new file mode 100644 index 0000000..9c75750 --- /dev/null +++ b/src/static/icons/svg/wi-humidity.svg @@ -0,0 +1,23 @@ + + + + + diff --git a/src/static/icons/svg/wi-hurricane-warning.svg b/src/static/icons/svg/wi-hurricane-warning.svg new file mode 100644 index 0000000..1365a44 --- /dev/null +++ b/src/static/icons/svg/wi-hurricane-warning.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-hurricane.svg b/src/static/icons/svg/wi-hurricane.svg new file mode 100644 index 0000000..3d2b4fd --- /dev/null +++ b/src/static/icons/svg/wi-hurricane.svg @@ -0,0 +1,17 @@ + + + + + diff --git a/src/static/icons/svg/wi-lightning.svg b/src/static/icons/svg/wi-lightning.svg new file mode 100644 index 0000000..0709cf3 --- /dev/null +++ b/src/static/icons/svg/wi-lightning.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-lunar-eclipse.svg b/src/static/icons/svg/wi-lunar-eclipse.svg new file mode 100644 index 0000000..7e86183 --- /dev/null +++ b/src/static/icons/svg/wi-lunar-eclipse.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-meteor.svg b/src/static/icons/svg/wi-meteor.svg new file mode 100644 index 0000000..4da65ab --- /dev/null +++ b/src/static/icons/svg/wi-meteor.svg @@ -0,0 +1,17 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-first-quarter.svg b/src/static/icons/svg/wi-moon-alt-first-quarter.svg new file mode 100644 index 0000000..26d9400 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-first-quarter.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-full.svg b/src/static/icons/svg/wi-moon-alt-full.svg new file mode 100644 index 0000000..20fd7b4 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-full.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-new.svg b/src/static/icons/svg/wi-moon-alt-new.svg new file mode 100644 index 0000000..75b89ac --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-new.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-third-quarter.svg b/src/static/icons/svg/wi-moon-alt-third-quarter.svg new file mode 100644 index 0000000..964d559 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-third-quarter.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-crescent-1.svg b/src/static/icons/svg/wi-moon-alt-waning-crescent-1.svg new file mode 100644 index 0000000..5e7d3a4 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-crescent-1.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-crescent-2.svg b/src/static/icons/svg/wi-moon-alt-waning-crescent-2.svg new file mode 100644 index 0000000..8386927 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-crescent-2.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-crescent-3.svg b/src/static/icons/svg/wi-moon-alt-waning-crescent-3.svg new file mode 100644 index 0000000..aa2b4db --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-crescent-3.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-crescent-4.svg b/src/static/icons/svg/wi-moon-alt-waning-crescent-4.svg new file mode 100644 index 0000000..bb09c26 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-crescent-4.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-crescent-5.svg b/src/static/icons/svg/wi-moon-alt-waning-crescent-5.svg new file mode 100644 index 0000000..0f5b9be --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-crescent-5.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-crescent-6.svg b/src/static/icons/svg/wi-moon-alt-waning-crescent-6.svg new file mode 100644 index 0000000..ff23247 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-crescent-6.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-gibbous-1.svg b/src/static/icons/svg/wi-moon-alt-waning-gibbous-1.svg new file mode 100644 index 0000000..4e7a6f6 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-gibbous-1.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-gibbous-2.svg b/src/static/icons/svg/wi-moon-alt-waning-gibbous-2.svg new file mode 100644 index 0000000..0a363af --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-gibbous-2.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-gibbous-3.svg b/src/static/icons/svg/wi-moon-alt-waning-gibbous-3.svg new file mode 100644 index 0000000..a8df601 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-gibbous-3.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-gibbous-4.svg b/src/static/icons/svg/wi-moon-alt-waning-gibbous-4.svg new file mode 100644 index 0000000..8df81ae --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-gibbous-4.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-gibbous-5.svg b/src/static/icons/svg/wi-moon-alt-waning-gibbous-5.svg new file mode 100644 index 0000000..9a0354e --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-gibbous-5.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waning-gibbous-6.svg b/src/static/icons/svg/wi-moon-alt-waning-gibbous-6.svg new file mode 100644 index 0000000..fffae24 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waning-gibbous-6.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-crescent-1.svg b/src/static/icons/svg/wi-moon-alt-waxing-crescent-1.svg new file mode 100644 index 0000000..a6516f9 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-crescent-1.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-crescent-2.svg b/src/static/icons/svg/wi-moon-alt-waxing-crescent-2.svg new file mode 100644 index 0000000..696ea78 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-crescent-2.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-crescent-3.svg b/src/static/icons/svg/wi-moon-alt-waxing-crescent-3.svg new file mode 100644 index 0000000..6aff9d5 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-crescent-3.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-crescent-4.svg b/src/static/icons/svg/wi-moon-alt-waxing-crescent-4.svg new file mode 100644 index 0000000..b5ef2bc --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-crescent-4.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-crescent-5.svg b/src/static/icons/svg/wi-moon-alt-waxing-crescent-5.svg new file mode 100644 index 0000000..e6cb75d --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-crescent-5.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-crescent-6.svg b/src/static/icons/svg/wi-moon-alt-waxing-crescent-6.svg new file mode 100644 index 0000000..8677cc4 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-crescent-6.svg @@ -0,0 +1,10 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-gibbous-1.svg b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-1.svg new file mode 100644 index 0000000..41be53a --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-1.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-gibbous-2.svg b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-2.svg new file mode 100644 index 0000000..cc6c51d --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-2.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-gibbous-3.svg b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-3.svg new file mode 100644 index 0000000..2c969dc --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-3.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-gibbous-4.svg b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-4.svg new file mode 100644 index 0000000..4db9816 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-4.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-gibbous-5.svg b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-5.svg new file mode 100644 index 0000000..68df9e6 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-5.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-alt-waxing-gibbous-6.svg b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-6.svg new file mode 100644 index 0000000..17ac239 --- /dev/null +++ b/src/static/icons/svg/wi-moon-alt-waxing-gibbous-6.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-first-quarter.svg b/src/static/icons/svg/wi-moon-first-quarter.svg new file mode 100644 index 0000000..22ba6c6 --- /dev/null +++ b/src/static/icons/svg/wi-moon-first-quarter.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-full.svg b/src/static/icons/svg/wi-moon-full.svg new file mode 100644 index 0000000..75b89ac --- /dev/null +++ b/src/static/icons/svg/wi-moon-full.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-new.svg b/src/static/icons/svg/wi-moon-new.svg new file mode 100644 index 0000000..20fd7b4 --- /dev/null +++ b/src/static/icons/svg/wi-moon-new.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-third-quarter.svg b/src/static/icons/svg/wi-moon-third-quarter.svg new file mode 100644 index 0000000..031a231 --- /dev/null +++ b/src/static/icons/svg/wi-moon-third-quarter.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-crescent-1.svg b/src/static/icons/svg/wi-moon-waning-crescent-1.svg new file mode 100644 index 0000000..7ae5d02 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-crescent-1.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-crescent-2.svg b/src/static/icons/svg/wi-moon-waning-crescent-2.svg new file mode 100644 index 0000000..6e8ed9c --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-crescent-2.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-crescent-3.svg b/src/static/icons/svg/wi-moon-waning-crescent-3.svg new file mode 100644 index 0000000..b2224d0 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-crescent-3.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-crescent-4.svg b/src/static/icons/svg/wi-moon-waning-crescent-4.svg new file mode 100644 index 0000000..c5f85fd --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-crescent-4.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-crescent-5.svg b/src/static/icons/svg/wi-moon-waning-crescent-5.svg new file mode 100644 index 0000000..350c227 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-crescent-5.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-crescent-6.svg b/src/static/icons/svg/wi-moon-waning-crescent-6.svg new file mode 100644 index 0000000..e3fb6e7 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-crescent-6.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-gibbous-1.svg b/src/static/icons/svg/wi-moon-waning-gibbous-1.svg new file mode 100644 index 0000000..ae14407 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-gibbous-1.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-gibbous-2.svg b/src/static/icons/svg/wi-moon-waning-gibbous-2.svg new file mode 100644 index 0000000..558ba54 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-gibbous-2.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-gibbous-3.svg b/src/static/icons/svg/wi-moon-waning-gibbous-3.svg new file mode 100644 index 0000000..17924cf --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-gibbous-3.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-gibbous-4.svg b/src/static/icons/svg/wi-moon-waning-gibbous-4.svg new file mode 100644 index 0000000..2e4c400 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-gibbous-4.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-gibbous-5.svg b/src/static/icons/svg/wi-moon-waning-gibbous-5.svg new file mode 100644 index 0000000..db387c5 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-gibbous-5.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waning-gibbous-6.svg b/src/static/icons/svg/wi-moon-waning-gibbous-6.svg new file mode 100644 index 0000000..edcc9d6 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waning-gibbous-6.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-6.svg b/src/static/icons/svg/wi-moon-waxing-6.svg new file mode 100644 index 0000000..6e9af39 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-6.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-crescent-1.svg b/src/static/icons/svg/wi-moon-waxing-crescent-1.svg new file mode 100644 index 0000000..f510a0d --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-crescent-1.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-crescent-2.svg b/src/static/icons/svg/wi-moon-waxing-crescent-2.svg new file mode 100644 index 0000000..6b86718 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-crescent-2.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-crescent-3.svg b/src/static/icons/svg/wi-moon-waxing-crescent-3.svg new file mode 100644 index 0000000..8560f6b --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-crescent-3.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-crescent-4.svg b/src/static/icons/svg/wi-moon-waxing-crescent-4.svg new file mode 100644 index 0000000..5f78502 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-crescent-4.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-crescent-5.svg b/src/static/icons/svg/wi-moon-waxing-crescent-5.svg new file mode 100644 index 0000000..6e9af39 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-crescent-5.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-gibbous-1.svg b/src/static/icons/svg/wi-moon-waxing-gibbous-1.svg new file mode 100644 index 0000000..1de651a --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-gibbous-1.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-gibbous-2.svg b/src/static/icons/svg/wi-moon-waxing-gibbous-2.svg new file mode 100644 index 0000000..842d4ac --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-gibbous-2.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-gibbous-3.svg b/src/static/icons/svg/wi-moon-waxing-gibbous-3.svg new file mode 100644 index 0000000..9f77ce3 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-gibbous-3.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-gibbous-4.svg b/src/static/icons/svg/wi-moon-waxing-gibbous-4.svg new file mode 100644 index 0000000..e472de6 --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-gibbous-4.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-gibbous-5.svg b/src/static/icons/svg/wi-moon-waxing-gibbous-5.svg new file mode 100644 index 0000000..90860cb --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-gibbous-5.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moon-waxing-gibbous-6.svg b/src/static/icons/svg/wi-moon-waxing-gibbous-6.svg new file mode 100644 index 0000000..53f9b9e --- /dev/null +++ b/src/static/icons/svg/wi-moon-waxing-gibbous-6.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-moonrise.svg b/src/static/icons/svg/wi-moonrise.svg new file mode 100644 index 0000000..5d7ddb0 --- /dev/null +++ b/src/static/icons/svg/wi-moonrise.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-moonset.svg b/src/static/icons/svg/wi-moonset.svg new file mode 100644 index 0000000..d78fa29 --- /dev/null +++ b/src/static/icons/svg/wi-moonset.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/src/static/icons/svg/wi-na.svg b/src/static/icons/svg/wi-na.svg new file mode 100644 index 0000000..0a3d369 --- /dev/null +++ b/src/static/icons/svg/wi-na.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-cloudy-gusts.svg b/src/static/icons/svg/wi-night-alt-cloudy-gusts.svg new file mode 100644 index 0000000..0453d3c --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-cloudy-gusts.svg @@ -0,0 +1,28 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-cloudy-high.svg b/src/static/icons/svg/wi-night-alt-cloudy-high.svg new file mode 100644 index 0000000..6b1777b --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-cloudy-high.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-cloudy-windy.svg b/src/static/icons/svg/wi-night-alt-cloudy-windy.svg new file mode 100644 index 0000000..f6a291e --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-cloudy-windy.svg @@ -0,0 +1,25 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-cloudy.svg b/src/static/icons/svg/wi-night-alt-cloudy.svg new file mode 100644 index 0000000..fcd1496 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-cloudy.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-hail.svg b/src/static/icons/svg/wi-night-alt-hail.svg new file mode 100644 index 0000000..38550e4 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-hail.svg @@ -0,0 +1,34 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-lightning.svg b/src/static/icons/svg/wi-night-alt-lightning.svg new file mode 100644 index 0000000..f01d745 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-lightning.svg @@ -0,0 +1,21 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-partly-cloudy.svg b/src/static/icons/svg/wi-night-alt-partly-cloudy.svg new file mode 100644 index 0000000..2b36834 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-partly-cloudy.svg @@ -0,0 +1,19 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-rain-mix.svg b/src/static/icons/svg/wi-night-alt-rain-mix.svg new file mode 100644 index 0000000..4ce81bc --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-rain-mix.svg @@ -0,0 +1,42 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-rain-wind.svg b/src/static/icons/svg/wi-night-alt-rain-wind.svg new file mode 100644 index 0000000..f90a680 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-rain-wind.svg @@ -0,0 +1,32 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-rain.svg b/src/static/icons/svg/wi-night-alt-rain.svg new file mode 100644 index 0000000..b4d8065 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-rain.svg @@ -0,0 +1,27 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-showers.svg b/src/static/icons/svg/wi-night-alt-showers.svg new file mode 100644 index 0000000..dd917e0 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-showers.svg @@ -0,0 +1,34 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-sleet-storm.svg b/src/static/icons/svg/wi-night-alt-sleet-storm.svg new file mode 100644 index 0000000..afd111d --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-sleet-storm.svg @@ -0,0 +1,32 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-sleet.svg b/src/static/icons/svg/wi-night-alt-sleet.svg new file mode 100644 index 0000000..3fbdd15 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-sleet.svg @@ -0,0 +1,38 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-snow-thunderstorm.svg b/src/static/icons/svg/wi-night-alt-snow-thunderstorm.svg new file mode 100644 index 0000000..304a7eb --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-snow-thunderstorm.svg @@ -0,0 +1,30 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-snow-wind.svg b/src/static/icons/svg/wi-night-alt-snow-wind.svg new file mode 100644 index 0000000..f35566a --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-snow-wind.svg @@ -0,0 +1,33 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-snow.svg b/src/static/icons/svg/wi-night-alt-snow.svg new file mode 100644 index 0000000..b314bdd --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-snow.svg @@ -0,0 +1,32 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-sprinkle.svg b/src/static/icons/svg/wi-night-alt-sprinkle.svg new file mode 100644 index 0000000..47dfcb1 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-sprinkle.svg @@ -0,0 +1,26 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-storm-showers.svg b/src/static/icons/svg/wi-night-alt-storm-showers.svg new file mode 100644 index 0000000..6747df2 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-storm-showers.svg @@ -0,0 +1,31 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-alt-thunderstorm.svg b/src/static/icons/svg/wi-night-alt-thunderstorm.svg new file mode 100644 index 0000000..0af7a15 --- /dev/null +++ b/src/static/icons/svg/wi-night-alt-thunderstorm.svg @@ -0,0 +1,25 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-clear.svg b/src/static/icons/svg/wi-night-clear.svg new file mode 100644 index 0000000..053b2de --- /dev/null +++ b/src/static/icons/svg/wi-night-clear.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-cloudy-gusts.svg b/src/static/icons/svg/wi-night-cloudy-gusts.svg new file mode 100644 index 0000000..e502c48 --- /dev/null +++ b/src/static/icons/svg/wi-night-cloudy-gusts.svg @@ -0,0 +1,25 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-cloudy-high.svg b/src/static/icons/svg/wi-night-cloudy-high.svg new file mode 100644 index 0000000..8235377 --- /dev/null +++ b/src/static/icons/svg/wi-night-cloudy-high.svg @@ -0,0 +1,17 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-cloudy-windy.svg b/src/static/icons/svg/wi-night-cloudy-windy.svg new file mode 100644 index 0000000..3a6137a --- /dev/null +++ b/src/static/icons/svg/wi-night-cloudy-windy.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-cloudy.svg b/src/static/icons/svg/wi-night-cloudy.svg new file mode 100644 index 0000000..8b76dba --- /dev/null +++ b/src/static/icons/svg/wi-night-cloudy.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-fog.svg b/src/static/icons/svg/wi-night-fog.svg new file mode 100644 index 0000000..a895dac --- /dev/null +++ b/src/static/icons/svg/wi-night-fog.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-hail.svg b/src/static/icons/svg/wi-night-hail.svg new file mode 100644 index 0000000..249ed64 --- /dev/null +++ b/src/static/icons/svg/wi-night-hail.svg @@ -0,0 +1,32 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-lightning.svg b/src/static/icons/svg/wi-night-lightning.svg new file mode 100644 index 0000000..55ac76e --- /dev/null +++ b/src/static/icons/svg/wi-night-lightning.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-partly-cloudy.svg b/src/static/icons/svg/wi-night-partly-cloudy.svg new file mode 100644 index 0000000..e4d2f99 --- /dev/null +++ b/src/static/icons/svg/wi-night-partly-cloudy.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-rain-mix.svg b/src/static/icons/svg/wi-night-rain-mix.svg new file mode 100644 index 0000000..f5883d7 --- /dev/null +++ b/src/static/icons/svg/wi-night-rain-mix.svg @@ -0,0 +1,41 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-rain-wind.svg b/src/static/icons/svg/wi-night-rain-wind.svg new file mode 100644 index 0000000..8d8ccf7 --- /dev/null +++ b/src/static/icons/svg/wi-night-rain-wind.svg @@ -0,0 +1,29 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-rain.svg b/src/static/icons/svg/wi-night-rain.svg new file mode 100644 index 0000000..3d4e6dc --- /dev/null +++ b/src/static/icons/svg/wi-night-rain.svg @@ -0,0 +1,24 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-showers.svg b/src/static/icons/svg/wi-night-showers.svg new file mode 100644 index 0000000..4829c81 --- /dev/null +++ b/src/static/icons/svg/wi-night-showers.svg @@ -0,0 +1,32 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-sleet-storm.svg b/src/static/icons/svg/wi-night-sleet-storm.svg new file mode 100644 index 0000000..7638b54 --- /dev/null +++ b/src/static/icons/svg/wi-night-sleet-storm.svg @@ -0,0 +1,29 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-sleet.svg b/src/static/icons/svg/wi-night-sleet.svg new file mode 100644 index 0000000..0ff3e36 --- /dev/null +++ b/src/static/icons/svg/wi-night-sleet.svg @@ -0,0 +1,34 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-snow-thunderstorm.svg b/src/static/icons/svg/wi-night-snow-thunderstorm.svg new file mode 100644 index 0000000..ec98dd8 --- /dev/null +++ b/src/static/icons/svg/wi-night-snow-thunderstorm.svg @@ -0,0 +1,27 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-snow-wind.svg b/src/static/icons/svg/wi-night-snow-wind.svg new file mode 100644 index 0000000..d34c39f --- /dev/null +++ b/src/static/icons/svg/wi-night-snow-wind.svg @@ -0,0 +1,29 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-snow.svg b/src/static/icons/svg/wi-night-snow.svg new file mode 100644 index 0000000..c4bab74 --- /dev/null +++ b/src/static/icons/svg/wi-night-snow.svg @@ -0,0 +1,29 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-sprinkle.svg b/src/static/icons/svg/wi-night-sprinkle.svg new file mode 100644 index 0000000..2793da3 --- /dev/null +++ b/src/static/icons/svg/wi-night-sprinkle.svg @@ -0,0 +1,23 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-storm-showers.svg b/src/static/icons/svg/wi-night-storm-showers.svg new file mode 100644 index 0000000..1cf5202 --- /dev/null +++ b/src/static/icons/svg/wi-night-storm-showers.svg @@ -0,0 +1,28 @@ + + + + + diff --git a/src/static/icons/svg/wi-night-thunderstorm.svg b/src/static/icons/svg/wi-night-thunderstorm.svg new file mode 100644 index 0000000..b9541cb --- /dev/null +++ b/src/static/icons/svg/wi-night-thunderstorm.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/src/static/icons/svg/wi-rain-mix.svg b/src/static/icons/svg/wi-rain-mix.svg new file mode 100644 index 0000000..51cf189 --- /dev/null +++ b/src/static/icons/svg/wi-rain-mix.svg @@ -0,0 +1,37 @@ + + + + + diff --git a/src/static/icons/svg/wi-rain-wind.svg b/src/static/icons/svg/wi-rain-wind.svg new file mode 100644 index 0000000..aef262a --- /dev/null +++ b/src/static/icons/svg/wi-rain-wind.svg @@ -0,0 +1,28 @@ + + + + + diff --git a/src/static/icons/svg/wi-rain.svg b/src/static/icons/svg/wi-rain.svg new file mode 100644 index 0000000..7ecef3f --- /dev/null +++ b/src/static/icons/svg/wi-rain.svg @@ -0,0 +1,23 @@ + + + + + diff --git a/src/static/icons/svg/wi-raindrop.svg b/src/static/icons/svg/wi-raindrop.svg new file mode 100644 index 0000000..d24aee4 --- /dev/null +++ b/src/static/icons/svg/wi-raindrop.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-raindrops.svg b/src/static/icons/svg/wi-raindrops.svg new file mode 100644 index 0000000..157ddf0 --- /dev/null +++ b/src/static/icons/svg/wi-raindrops.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-refresh-alt.svg b/src/static/icons/svg/wi-refresh-alt.svg new file mode 100644 index 0000000..33c9b18 --- /dev/null +++ b/src/static/icons/svg/wi-refresh-alt.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/src/static/icons/svg/wi-refresh.svg b/src/static/icons/svg/wi-refresh.svg new file mode 100644 index 0000000..32e09a8 --- /dev/null +++ b/src/static/icons/svg/wi-refresh.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/src/static/icons/svg/wi-sandstorm.svg b/src/static/icons/svg/wi-sandstorm.svg new file mode 100644 index 0000000..cbdad2a --- /dev/null +++ b/src/static/icons/svg/wi-sandstorm.svg @@ -0,0 +1,31 @@ + + + + + diff --git a/src/static/icons/svg/wi-showers.svg b/src/static/icons/svg/wi-showers.svg new file mode 100644 index 0000000..3cb7e31 --- /dev/null +++ b/src/static/icons/svg/wi-showers.svg @@ -0,0 +1,31 @@ + + + + + diff --git a/src/static/icons/svg/wi-sleet.svg b/src/static/icons/svg/wi-sleet.svg new file mode 100644 index 0000000..b97bc09 --- /dev/null +++ b/src/static/icons/svg/wi-sleet.svg @@ -0,0 +1,35 @@ + + + + + diff --git a/src/static/icons/svg/wi-small-craft-advisory.svg b/src/static/icons/svg/wi-small-craft-advisory.svg new file mode 100644 index 0000000..ab6f45e --- /dev/null +++ b/src/static/icons/svg/wi-small-craft-advisory.svg @@ -0,0 +1,6 @@ + + + + + diff --git a/src/static/icons/svg/wi-smog.svg b/src/static/icons/svg/wi-smog.svg new file mode 100644 index 0000000..a2f0d89 --- /dev/null +++ b/src/static/icons/svg/wi-smog.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-smoke.svg b/src/static/icons/svg/wi-smoke.svg new file mode 100644 index 0000000..82e8fdc --- /dev/null +++ b/src/static/icons/svg/wi-smoke.svg @@ -0,0 +1,17 @@ + + + + + diff --git a/src/static/icons/svg/wi-snow-wind.svg b/src/static/icons/svg/wi-snow-wind.svg new file mode 100644 index 0000000..950aeac --- /dev/null +++ b/src/static/icons/svg/wi-snow-wind.svg @@ -0,0 +1,27 @@ + + + + + diff --git a/src/static/icons/svg/wi-snow.svg b/src/static/icons/svg/wi-snow.svg new file mode 100644 index 0000000..56afebf --- /dev/null +++ b/src/static/icons/svg/wi-snow.svg @@ -0,0 +1,27 @@ + + + + + diff --git a/src/static/icons/svg/wi-snowflake-cold.svg b/src/static/icons/svg/wi-snowflake-cold.svg new file mode 100644 index 0000000..0f117b9 --- /dev/null +++ b/src/static/icons/svg/wi-snowflake-cold.svg @@ -0,0 +1,30 @@ + + + + + diff --git a/src/static/icons/svg/wi-solar-eclipse.svg b/src/static/icons/svg/wi-solar-eclipse.svg new file mode 100644 index 0000000..19c62a8 --- /dev/null +++ b/src/static/icons/svg/wi-solar-eclipse.svg @@ -0,0 +1,28 @@ + + + + + diff --git a/src/static/icons/svg/wi-sprinkle.svg b/src/static/icons/svg/wi-sprinkle.svg new file mode 100644 index 0000000..c26b207 --- /dev/null +++ b/src/static/icons/svg/wi-sprinkle.svg @@ -0,0 +1,20 @@ + + + + + diff --git a/src/static/icons/svg/wi-stars.svg b/src/static/icons/svg/wi-stars.svg new file mode 100644 index 0000000..76e7003 --- /dev/null +++ b/src/static/icons/svg/wi-stars.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/src/static/icons/svg/wi-storm-showers.svg b/src/static/icons/svg/wi-storm-showers.svg new file mode 100644 index 0000000..df3fe0f --- /dev/null +++ b/src/static/icons/svg/wi-storm-showers.svg @@ -0,0 +1,26 @@ + + + + + diff --git a/src/static/icons/svg/wi-storm-warning.svg b/src/static/icons/svg/wi-storm-warning.svg new file mode 100644 index 0000000..db146c1 --- /dev/null +++ b/src/static/icons/svg/wi-storm-warning.svg @@ -0,0 +1,6 @@ + + + + + diff --git a/src/static/icons/svg/wi-strong-wind.svg b/src/static/icons/svg/wi-strong-wind.svg new file mode 100644 index 0000000..70dda9c --- /dev/null +++ b/src/static/icons/svg/wi-strong-wind.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/src/static/icons/svg/wi-sunrise.svg b/src/static/icons/svg/wi-sunrise.svg new file mode 100644 index 0000000..5718ac3 --- /dev/null +++ b/src/static/icons/svg/wi-sunrise.svg @@ -0,0 +1,25 @@ + + + + + diff --git a/src/static/icons/svg/wi-sunset.svg b/src/static/icons/svg/wi-sunset.svg new file mode 100644 index 0000000..cc82902 --- /dev/null +++ b/src/static/icons/svg/wi-sunset.svg @@ -0,0 +1,25 @@ + + + + + diff --git a/src/static/icons/svg/wi-thermometer-exterior.svg b/src/static/icons/svg/wi-thermometer-exterior.svg new file mode 100644 index 0000000..e0d345d --- /dev/null +++ b/src/static/icons/svg/wi-thermometer-exterior.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/src/static/icons/svg/wi-thermometer-internal.svg b/src/static/icons/svg/wi-thermometer-internal.svg new file mode 100644 index 0000000..b590a9f --- /dev/null +++ b/src/static/icons/svg/wi-thermometer-internal.svg @@ -0,0 +1,9 @@ + + + + + diff --git a/src/static/icons/svg/wi-thermometer.svg b/src/static/icons/svg/wi-thermometer.svg new file mode 100644 index 0000000..a0fa8d0 --- /dev/null +++ b/src/static/icons/svg/wi-thermometer.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/src/static/icons/svg/wi-thunderstorm.svg b/src/static/icons/svg/wi-thunderstorm.svg new file mode 100644 index 0000000..52555ec --- /dev/null +++ b/src/static/icons/svg/wi-thunderstorm.svg @@ -0,0 +1,21 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-1.svg b/src/static/icons/svg/wi-time-1.svg new file mode 100644 index 0000000..c5ea658 --- /dev/null +++ b/src/static/icons/svg/wi-time-1.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-10.svg b/src/static/icons/svg/wi-time-10.svg new file mode 100644 index 0000000..3a02d59 --- /dev/null +++ b/src/static/icons/svg/wi-time-10.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-11.svg b/src/static/icons/svg/wi-time-11.svg new file mode 100644 index 0000000..1625390 --- /dev/null +++ b/src/static/icons/svg/wi-time-11.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-12.svg b/src/static/icons/svg/wi-time-12.svg new file mode 100644 index 0000000..32cc7f0 --- /dev/null +++ b/src/static/icons/svg/wi-time-12.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-2.svg b/src/static/icons/svg/wi-time-2.svg new file mode 100644 index 0000000..9e874a3 --- /dev/null +++ b/src/static/icons/svg/wi-time-2.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-3.svg b/src/static/icons/svg/wi-time-3.svg new file mode 100644 index 0000000..5c0cd90 --- /dev/null +++ b/src/static/icons/svg/wi-time-3.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-4.svg b/src/static/icons/svg/wi-time-4.svg new file mode 100644 index 0000000..7dda4d2 --- /dev/null +++ b/src/static/icons/svg/wi-time-4.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-5.svg b/src/static/icons/svg/wi-time-5.svg new file mode 100644 index 0000000..fb8f8a5 --- /dev/null +++ b/src/static/icons/svg/wi-time-5.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-6.svg b/src/static/icons/svg/wi-time-6.svg new file mode 100644 index 0000000..8bbe6b0 --- /dev/null +++ b/src/static/icons/svg/wi-time-6.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-7.svg b/src/static/icons/svg/wi-time-7.svg new file mode 100644 index 0000000..079551e --- /dev/null +++ b/src/static/icons/svg/wi-time-7.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-8.svg b/src/static/icons/svg/wi-time-8.svg new file mode 100644 index 0000000..6d65af2 --- /dev/null +++ b/src/static/icons/svg/wi-time-8.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-time-9.svg b/src/static/icons/svg/wi-time-9.svg new file mode 100644 index 0000000..b1437c3 --- /dev/null +++ b/src/static/icons/svg/wi-time-9.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/src/static/icons/svg/wi-tornado.svg b/src/static/icons/svg/wi-tornado.svg new file mode 100644 index 0000000..095ad95 --- /dev/null +++ b/src/static/icons/svg/wi-tornado.svg @@ -0,0 +1,25 @@ + + + + + diff --git a/src/static/icons/svg/wi-train.svg b/src/static/icons/svg/wi-train.svg new file mode 100644 index 0000000..ded2460 --- /dev/null +++ b/src/static/icons/svg/wi-train.svg @@ -0,0 +1,26 @@ + + + + + diff --git a/src/static/icons/svg/wi-tsunami.svg b/src/static/icons/svg/wi-tsunami.svg new file mode 100644 index 0000000..2044e99 --- /dev/null +++ b/src/static/icons/svg/wi-tsunami.svg @@ -0,0 +1,26 @@ + + + + + diff --git a/src/static/icons/svg/wi-umbrella.svg b/src/static/icons/svg/wi-umbrella.svg new file mode 100644 index 0000000..e125bca --- /dev/null +++ b/src/static/icons/svg/wi-umbrella.svg @@ -0,0 +1,23 @@ + + + + + diff --git a/src/static/icons/svg/wi-volcano.svg b/src/static/icons/svg/wi-volcano.svg new file mode 100644 index 0000000..cd8dcf3 --- /dev/null +++ b/src/static/icons/svg/wi-volcano.svg @@ -0,0 +1,23 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-0.svg b/src/static/icons/svg/wi-wind-beaufort-0.svg new file mode 100644 index 0000000..7ec3dba --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-0.svg @@ -0,0 +1,21 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-1.svg b/src/static/icons/svg/wi-wind-beaufort-1.svg new file mode 100644 index 0000000..2bab866 --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-1.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-10.svg b/src/static/icons/svg/wi-wind-beaufort-10.svg new file mode 100644 index 0000000..f1256c6 --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-10.svg @@ -0,0 +1,21 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-11.svg b/src/static/icons/svg/wi-wind-beaufort-11.svg new file mode 100644 index 0000000..d209021 --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-11.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-12.svg b/src/static/icons/svg/wi-wind-beaufort-12.svg new file mode 100644 index 0000000..0cbf35d --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-12.svg @@ -0,0 +1,21 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-2.svg b/src/static/icons/svg/wi-wind-beaufort-2.svg new file mode 100644 index 0000000..740f2af --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-2.svg @@ -0,0 +1,21 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-3.svg b/src/static/icons/svg/wi-wind-beaufort-3.svg new file mode 100644 index 0000000..165b116 --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-3.svg @@ -0,0 +1,22 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-4.svg b/src/static/icons/svg/wi-wind-beaufort-4.svg new file mode 100644 index 0000000..c2143d4 --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-4.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-5.svg b/src/static/icons/svg/wi-wind-beaufort-5.svg new file mode 100644 index 0000000..fc34ea4 --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-5.svg @@ -0,0 +1,20 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-6.svg b/src/static/icons/svg/wi-wind-beaufort-6.svg new file mode 100644 index 0000000..e6471f4 --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-6.svg @@ -0,0 +1,23 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-7.svg b/src/static/icons/svg/wi-wind-beaufort-7.svg new file mode 100644 index 0000000..f77fcec --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-7.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-8.svg b/src/static/icons/svg/wi-wind-beaufort-8.svg new file mode 100644 index 0000000..5f08fed --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-8.svg @@ -0,0 +1,26 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-beaufort-9.svg b/src/static/icons/svg/wi-wind-beaufort-9.svg new file mode 100644 index 0000000..41b7d41 --- /dev/null +++ b/src/static/icons/svg/wi-wind-beaufort-9.svg @@ -0,0 +1,23 @@ + + + + + diff --git a/src/static/icons/svg/wi-wind-deg.svg b/src/static/icons/svg/wi-wind-deg.svg new file mode 100644 index 0000000..3007410 --- /dev/null +++ b/src/static/icons/svg/wi-wind-deg.svg @@ -0,0 +1,12 @@ + + + + + diff --git a/src/static/icons/svg/wi-windy.svg b/src/static/icons/svg/wi-windy.svg new file mode 100644 index 0000000..de5488a --- /dev/null +++ b/src/static/icons/svg/wi-windy.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/src/static/style.css b/src/static/style.css new file mode 100644 index 0000000..1ea44f5 --- /dev/null +++ b/src/static/style.css @@ -0,0 +1,183 @@ +@charset "UTF-8"; + +:root { + /* Set sans-serif & mono fonts */ + --sans-font: Inter, Lato,Helvetica,"IBM Plex Sans","Roboto","Nimbus Sans L","Noto Sans", "Segoe UI",Arial,Helvetica,"Helvetica Neue",sans-serif; + --mono-font: "mononoki Nerd Font","IBM Plex Mono","Roboto Mono","Ubuntu Mono","Fira Code","Overpass Mono", Monaco,"Droid Sans Mono",monospace; + --bg: #242933; + --accent-bg: rgb(46, 52, 64); + --text: #eceff4; + --text-light: #d8dee9; + --border: #88c0d0; + --accent: #81a1c1; + --accent-light: #bf616a; + --code: #ebcb8b; + --alert: #a3be8c; + --alert-bg: #8fbcbb; + --code-bg: #2e3440; +} + + +html, body, .container { + background: var(--bg); + color: var(--text); + font-family: var(--sans-font); + box-sizing: border-box; + height: 100%; + width: 100%; + font-size: 12pt; +} + +.index-title { + display: flex; + align-self: center; + justify-content: center; + width: 100%; + +} + +.content-noborder { + display: flex; + align-items: center; + align-content: flex-start; + flex-flow: row wrap; + margin: 2%; + height: auto; + justify-content: center; +} + +.content { + display: flex; + align-items: center; + align-content: flex-start; + flex-flow: row wrap; + margin: 2%; + border-radius: 15px; + height: auto; + justify-content: center; + border: 3px solid var(--accent); +} + +div.searchbar { + display: flex; + align-items: left; + justify-content: left; + margin-left: 5px; + width: 100%; + margin-top: 1%; +} + +div.current { + display: flex; + flex-flow: row nowrap; + align-items: flex-start; + justify-content: center; +} + +div.current-info { + display: flex; + flex-flow: column nowrap; + margin-right: 10%; + flex-shrink: 0; +} + +div.current-icon { + display: flex; + margin-left: 10%; + flex-shrink: 0; +} + +img.weather-icon { + display: flex; + filter: invert(97%) sepia(23%) saturate(6990%) hue-rotate(304deg) brightness(116%) contrast(84%); +} + +img.wind-icon { + filter: invert(94%) sepia(11%) saturate(78%) hue-rotate(179deg) brightness(101%) contrast(93%); +} + +div.current-temp { + display: inline-block; + font-size: 18pt; + text-align: left; +} + +div.current-weather { + display: inline-block; + font-size: 16pt; + margin-bottom: 5px; + text-align: left; +} + +div.current-wind { + display: inline-block; + font-size: 14pt; + text-align: left; +} + +div.current-sunrise, div.current-sunset { + display: inline-block; + font-size: 14pt; +} + +div.forecast-header { + width: 100%; + display: flex; + flex-grow: 0; + flex-shrink: 1; + max-height: 10%; +} +h2.forecast-header { + margin-left: 5px; + margin-right: 5px; + border-bottom: 1px solid; + width: 100% +} + +div.daily, div.hourly { + display: flex; + flex-flow: row nowrap; + align-items: center; + overflow-x: scroll; + overflow-y: hidden; + white-space: nowrap; + width: 100%; + margin-left: 5px; + height: auto; +} + +div.hourly-box, div.daily-box { + display: flex; + flex-flow: row wrap; + flex-shrink: 0; + align-items: flex-start; + overflow-wrap: normal; + min-width: 20%; + margin: 5px; +} + +div.hourly-icon, div.daily-icon { + display: inline-block; +} + +input, select, textarea { + margin: 5px; + padding: 5px; + color: var(--text); + border: 1px solid var(--border); + border-radius: 6px; + border-color: var(--border); + background-color: var(--bg); + min-height: 25px; + line-height: 25px; + vertical-align: middle; +} + +input:disabled, select:disabled { + color: #aaa; + border-color: var(--border); +} + +button { + font-family: var(--sans-font); +} diff --git a/src/static/temp.js b/src/static/temp.js new file mode 100644 index 0000000..6eeeba7 --- /dev/null +++ b/src/static/temp.js @@ -0,0 +1,325 @@ +e strict'; + +class Color { + constructor(r, g, b) { + this.set(r, g, b); + } + + toString() { + return `rgb(${Math.round(this.r)}, ${Math.round(this.g)}, ${Math.round(this.b)})`; + } + + set(r, g, b) { + this.r = this.clamp(r); + this.g = this.clamp(g); + this.b = this.clamp(b); + } + + hueRotate(angle = 0) { + angle = angle / 180 * Math.PI; + const sin = Math.sin(angle); + const cos = Math.cos(angle); + + this.multiply([ + 0.213 + cos * 0.787 - sin * 0.213, + 0.715 - cos * 0.715 - sin * 0.715, + 0.072 - cos * 0.072 + sin * 0.928, + 0.213 - cos * 0.213 + sin * 0.143, + 0.715 + cos * 0.285 + sin * 0.140, + 0.072 - cos * 0.072 - sin * 0.283, + 0.213 - cos * 0.213 - sin * 0.787, + 0.715 - cos * 0.715 + sin * 0.715, + 0.072 + cos * 0.928 + sin * 0.072, + ]); + } + + grayscale(value = 1) { + this.multiply([ + 0.2126 + 0.7874 * (1 - value), + 0.7152 - 0.7152 * (1 - value), + 0.0722 - 0.0722 * (1 - value), + 0.2126 - 0.2126 * (1 - value), + 0.7152 + 0.2848 * (1 - value), + 0.0722 - 0.0722 * (1 - value), + 0.2126 - 0.2126 * (1 - value), + 0.7152 - 0.7152 * (1 - value), + 0.0722 + 0.9278 * (1 - value), + ]); + } + + sepia(value = 1) { + this.multiply([ + 0.393 + 0.607 * (1 - value), + 0.769 - 0.769 * (1 - value), + 0.189 - 0.189 * (1 - value), + 0.349 - 0.349 * (1 - value), + 0.686 + 0.314 * (1 - value), + 0.168 - 0.168 * (1 - value), + 0.272 - 0.272 * (1 - value), + 0.534 - 0.534 * (1 - value), + 0.131 + 0.869 * (1 - value), + ]); + } + + saturate(value = 1) { + this.multiply([ + 0.213 + 0.787 * value, + 0.715 - 0.715 * value, + 0.072 - 0.072 * value, + 0.213 - 0.213 * value, + 0.715 + 0.285 * value, + 0.072 - 0.072 * value, + 0.213 - 0.213 * value, + 0.715 - 0.715 * value, + 0.072 + 0.928 * value, + ]); + } + + multiply(matrix) { + const newR = this.clamp(this.r * matrix[0] + this.g * matrix[1] + this.b * matrix[2]); + const newG = this.clamp(this.r * matrix[3] + this.g * matrix[4] + this.b * matrix[5]); + const newB = this.clamp(this.r * matrix[6] + this.g * matrix[7] + this.b * matrix[8]); + this.r = newR; + this.g = newG; + this.b = newB; + } + + brightness(value = 1) { + this.linear(value); + } + contrast(value = 1) { + this.linear(value, -(0.5 * value) + 0.5); + } + + linear(slope = 1, intercept = 0) { + this.r = this.clamp(this.r * slope + intercept * 255); + this.g = this.clamp(this.g * slope + intercept * 255); + this.b = this.clamp(this.b * slope + intercept * 255); + } + + invert(value = 1) { + this.r = this.clamp((value + this.r / 255 * (1 - 2 * value)) * 255); + this.g = this.clamp((value + this.g / 255 * (1 - 2 * value)) * 255); + this.b = this.clamp((value + this.b / 255 * (1 - 2 * value)) * 255); + } + + hsl() { + const r = this.r / 255; + const g = this.g / 255; + const b = this.b / 255; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let h, s, l = (max + min) / 2; + + if (max === min) { + h = s = 0; + } else { + const d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + + case g: + h = (b - r) / d + 2; + break; + + case b: + h = (r - g) / d + 4; + break; + } + h /= 6; + } + + return { + h: h * 100, + s: s * 100, + l: l * 100, + }; + } + + clamp(value) { + if (value > 255) { + value = 255; + } else if (value < 0) { + value = 0; + } + return value; + } +} + +class Solver { + constructor(target, baseColor) { + this.target = target; + this.targetHSL = target.hsl(); + this.reusedColor = new Color(0, 0, 0); + } + + solve() { + const result = this.solveNarrow(this.solveWide()); + return { + values: result.values, + loss: result.loss, + filter: this.css(result.values), + }; + } + + solveWide() { + const A = 5; + const c = 15; + const a = [60, 180, 18000, 600, 1.2, 1.2]; + + let best = { loss: Infinity }; + for (let i = 0; best.loss > 25 && i < 3; i++) { + const initial = [50, 20, 3750, 50, 100, 100]; + const result = this.spsa(A, a, c, initial, 1000); + if (result.loss < best.loss) { + best = result; + } + } + return best; + } + + solveNarrow(wide) { + const A = wide.loss; + const c = 2; + const A1 = A + 1; + const a = [0.25 * A1, 0.25 * A1, A1, 0.25 * A1, 0.2 * A1, 0.2 * A1]; + return this.spsa(A, a, c, wide.values, 500); + } + + spsa(A, a, c, values, iters) { + const alpha = 1; + const gamma = 0.16666666666666666; + + let best = null; + let bestLoss = Infinity; + const deltas = new Array(6); + const highArgs = new Array(6); + const lowArgs = new Array(6); + + for (let k = 0; k < iters; k++) { + const ck = c / Math.pow(k + 1, gamma); + for (let i = 0; i < 6; i++) { + deltas[i] = Math.random() > 0.5 ? 1 : -1; + highArgs[i] = values[i] + ck * deltas[i]; + lowArgs[i] = values[i] - ck * deltas[i]; + } + + const lossDiff = this.loss(highArgs) - this.loss(lowArgs); + for (let i = 0; i < 6; i++) { + const g = lossDiff / (2 * ck) * deltas[i]; + const ak = a[i] / Math.pow(A + k + 1, alpha); + values[i] = fix(values[i] - ak * g, i); + } + + const loss = this.loss(values); + if (loss < bestLoss) { + best = values.slice(0); + bestLoss = loss; + } + } + return { values: best, loss: bestLoss }; + + function fix(value, idx) { + let max = 100; + if (idx === 2 /* saturate */) { + max = 7500; + } else if (idx === 4 /* brightness */ || idx === 5 /* contrast */) { + max = 200; + } + + if (idx === 3 /* hue-rotate */) { + if (value > max) { + value %= max; + } else if (value < 0) { + value = max + value % max; + } + } else if (value < 0) { + value = 0; + } else if (value > max) { + value = max; + } + return value; + } + } + + loss(filters) { + // Argument is array of percentages. + const color = this.reusedColor; + color.set(0, 0, 0); + + color.invert(filters[0] / 100); + color.sepia(filters[1] / 100); + color.saturate(filters[2] / 100); + color.hueRotate(filters[3] * 3.6); + color.brightness(filters[4] / 100); + color.contrast(filters[5] / 100); + + const colorHSL = color.hsl(); + return ( + Math.abs(color.r - this.target.r) + + Math.abs(color.g - this.target.g) + + Math.abs(color.b - this.target.b) + + Math.abs(colorHSL.h - this.targetHSL.h) + + Math.abs(colorHSL.s - this.targetHSL.s) + + Math.abs(colorHSL.l - this.targetHSL.l) + ); + } + + css(filters) { + function fmt(idx, multiplier = 1) { + return Math.round(filters[idx] * multiplier); + } + return `filter: invert(${fmt(0)}%) sepia(${fmt(1)}%) saturate(${fmt(2)}%) hue-rotate(${fmt(3, 3.6)}deg) brightness(${fmt(4)}%) contrast(${fmt(5)}%);`; + } +} + +function hexToRgb(hex) { + // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF") + const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + hex = hex.replace(shorthandRegex, (m, r, g, b) => { + return r + r + g + g + b + b; + }); + + const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result + ? [ + parseInt(result[1], 16), + parseInt(result[2], 16), + parseInt(result[3], 16), + ] + : null; +} + +$(document).ready(() => { + $('button.execute').click(() => { + const rgb = hexToRgb($('input.target').val()); + if (rgb.length !== 3) { + alert('Invalid format!'); + return; + } + + const color = new Color(rgb[0], rgb[1], rgb[2]); + const solver = new Solver(color); + const result = solver.solve(); + + let lossMsg; + if (result.loss < 1) { + lossMsg = 'This is a perfect result.'; + } else if (result.loss < 5) { + lossMsg = 'The is close enough.'; + } else if (result.loss < 15) { + lossMsg = 'The color is somewhat off. Consider running it again.'; + } else { + lossMsg = 'The color is extremely off. Run it again!'; + } + + $('.realPixel').css('background-color', color.toString()); + $('.filterPixel').attr('style', result.filter); + $('.filterDetail').text(result.filter); + $('.lossDetail').html(`Loss: ${result.loss.toFixed(1)}. ${lossMsg}`); + }); +}); + diff --git a/src/templates/base.html b/src/templates/base.html new file mode 100644 index 0000000..a909aca --- /dev/null +++ b/src/templates/base.html @@ -0,0 +1,21 @@ + + + + + + {% block title %} {% endblock %} + + + + + +
+ {% block content %} {% endblock %} +
+ + + + diff --git a/src/templates/index.html b/src/templates/index.html new file mode 100644 index 0000000..da2a19a --- /dev/null +++ b/src/templates/index.html @@ -0,0 +1,15 @@ +{% extends 'base.html' %} +{% block content %} +
+
+

Enter a Location

+
+
+
+ {{ form.csrf_token }} + {{ form.location }} + {{ form.submit() }} +
+
+
+{% endblock %} diff --git a/src/templates/location.html b/src/templates/location.html new file mode 100644 index 0000000..fa691ea --- /dev/null +++ b/src/templates/location.html @@ -0,0 +1,15 @@ +{% extends 'base.html' %} +{% block content %} +
+
+

Select a Location

+
+
+
+ {{ form.csrf_token }} + {{ form.location }} + {{ form.submit() }} +
+
+
+{% endblock %} diff --git a/src/templates/weather.html b/src/templates/weather.html new file mode 100644 index 0000000..64aabbd --- /dev/null +++ b/src/templates/weather.html @@ -0,0 +1,91 @@ +{% extends 'base.html' %} +{% block content %} +
+ +
+ {% set is_day = data["current_weather"]["is_day"] %} + {% set weather_code = data["current_weather"]["weathercode"] %} +
+
{{ weather_codes[weather_code] }}
+
{{ data["current_weather"]["temperature"]}}°F
+
+ Wind: {{ data["current_weather"]["windspeed"] }} MPH + +
+
Sunrise: {{ data["daily"]["sunrise"][0] }}
+
Sunset: {{ data["daily"]["sunset"][0] }}
+
+
+ +
+
+

Hourly Forecast

+
+ {% for i in range(hour, hour + 24) %} +
+
+
{{ data["hourly"]["time"][i] }}
+
+ {{ weather_codes[data["hourly"]["weathercode"][i]] }} + {% if data["hourly"]["weathercode"][i] > 50 %} + ({{ data["hourly"]["precipitation"][i] }}in, {{ data["hourly"]["precipitation_probability"][i] }}%) + {% endif %} +
+
{{ data["hourly"]["temperature_2m"][i]}}°F
+
Humidity: {{ data["hourly"]["relativehumidity_2m"][i] }}%
+
+ Wind: {{ data["hourly"]["windspeed_10m"][i] }}MPH + +
+
+
+ {% set time = datetime.datetime.strptime(data["hourly"]["time"][i], "%a %x %I:%M %p") %} + {% set sunrise = datetime.datetime.strptime(data["daily"]["sunrise"][0], "%I:%M %p").replace(year=time.year, month=time.month, day=time.day) %} + + {% set sunset = datetime.datetime.strptime(data["daily"]["sunset"][0], "%I:%M %p").replace(year=time.year, month=time.month, day=time.day) %} + {% set is_day = 1 %} + {% if time > sunrise and time < sunset %} + {% set is_day = 0 %} + {% endif %} + {% set weather_code = data["hourly"]["weathercode"][i] %} + +
+
+ {% endfor %} +
+
+

Daily Forecast

+
+
+ {% for i in range(7) %} +
+
+
{{ data["daily"]["time"][i] }}
+
+ {{ weather_codes[data["daily"]["weathercode"][i]] }} + {% if data["daily"]["weathercode"][i] > 50 %} + ({{ data["daily"]["precipitation_sum"][i] }}in, {{ data["daily"]["precipitation_probability_max"][i] }}%) + {% endif %} +
+
High: {{ data["daily"]["temperature_2m_max"][i] }}°F
+
Low: {{ data["daily"]["temperature_2m_min"][i] }}°F
+
Sunrise: {{ data["daily"]["sunrise"][i] }}
+
Sunset: {{ data["daily"]["sunset"][i] }}
+
+
+ {% set weather_code = data["daily"]["weathercode"][i] %} + +
+
+ {% endfor %} +
+ +
+{% endblock %} + -- cgit v1.2.3