File size: 2,015 Bytes
8621d18 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# noinspection PyUnresolvedReferences
import random
# noinspection PyUnresolvedReferences,PyPackageRequirements
import pyodide
# noinspection PyUnresolvedReferences,PyPackageRequirements
from js import DOMParser, document, setInterval, console
# noinspection PyPackages
import weather_api
# noinspection PyPackages
from weather_api import Report
def main():
set_weather()
add_refresh_event()
def set_weather():
body = document.getElementById('the_body')
div_forecast = document.getElementById('forecast')
div_image = document.getElementById('image')
div_temp = document.getElementById('temp')
div_weather = document.getElementById('weather')
add_class(div_weather, 'hidden')
clear_body_colors(body)
try:
forecast: Report = weather_api.download_report()
except Exception as x:
console.log("Error calling weather API: {}".format(x))
forecast = create_error_style_report()
add_class(body, forecast.sky)
div_forecast.innerText = forecast.report_summary
div_temp.innerText = str(forecast.temp) + " F"
div_image.setAttribute('src', '/static/images/weather/{}.png'.format(forecast.sky))
remove_class(div_weather, 'hidden')
def create_error_style_report():
forecast = Report()
forecast.sky = 'offline'
forecast.temp = 0
forecast.report_summary = 'Weather API is offline.'
return forecast
def clear_body_colors(body):
classes = ['cloudy', 'sunny', 'rain', 'offline']
for c in classes:
remove_class(body, c)
def add_refresh_event():
def evt(e=None):
set_weather()
if e:
e.preventDefault()
return False
refresh_link = document.getElementById('refresh')
refresh_link.onclick = evt
def remove_class(element, class_name):
element.classList.remove(class_name)
def add_class(element, class_name):
element.classList.add(class_name)
try:
main()
except Exception as x:
print("Error starting weather script: {}".format(x))
|