change to full-day weather and update icons

This commit is contained in:
grizzly 2025-08-23 22:15:45 -04:00
parent 26a2cfb91b
commit 951eb71b83
20 changed files with 430 additions and 22 deletions

View file

@ -1,26 +1,63 @@
#set page(width: 65mm, height: 86mm)
#let today = datetime.today()
#let weather = json("weather.json")
#let icon = none
#if weather.current.weather_code == 0{
icon = image("icons/sun.svg", width:3em)
}
#align(center)[
#text(size:2em, weight: "bold")[#today.display("[weekday] [month repr:long] [year]")]
#v(1fr)
#grid(
columns: (1fr,2fr),
align: (center+horizon, left+horizon),
[#icon],[#text(size:3em)[#weather.current.temperature_2m #weather.current_units.temperature_2m]]
#let icons_map = (
"0": "icons/clear_day.svg",
"1": "icons/clear_day.svg",
"2": "icons/partly_cloudy_day.svg",
"3": "icons/partly_cloudy_day.svg",
"45": "icons/haze_day.svg",
"48": "icons/haze_day.svg",
"51": "icons/rain_day_night.svg",
"53": "icons/rain_day_night.svg",
"55": "icons/rain_day_night.svg",
"56": "icons/sleet_day_night.svg",
"57": "icons/sleet_day_night.svg",
"61": "icons/rain_day_night.svg",
"63": "icons/rain_day_night.svg",
"65": "icons/rain_day_night.svg",
"66": "icons/sleet_day_night.svg",
"67": "icons/sleet_day_night.svg",
"71": "icons/snow_day_night.svg",
"73": "icons/snow_day_night.svg",
"75": "icons/snow_day_night.svg",
"77": "icons/snow_day_night.svg",
"80": "icons/rain_day_night.svg",
"81": "icons/rain_day_night.svg",
"82": "icons/rain_day_night.svg",
"85": "icons/snow_day_night.svg",
"86": "icons/snow_day_night.svg",
"95": "icons/thunder_day_night.svg",
"96": "icons/hail_day_night.svg",
"99": "icons/hail_day_night.svg",
)
#v(1fr)
#read("event.txt")
#v(1fr)
#let decimate_array(a,n:2) = {
let ret = ()
for (i,v) in a.enumerate(){
if calc.rem-euclid(i,n) == 0{
ret.push(v)
}
}
return ret
}
#align(center)[
#text(size:1.3em, weight: "bold")[#today.display("[weekday] [month repr:long] [year]")]
#let times = ()
#for i in range(24){
times.push(datetime(hour:i,minute:0,second:0))
}
#let times = times.map(x=>x.display("[hour]"))
#let codes = weather.hourly.weather_code.map(x => image(icons_map.at(str(x)), height:1em))
#let temps = weather.hourly.temperature_2m
#let values = decimate_array(times.zip(codes,temps),n: 2)
#grid(
columns: (1fr,1fr,1fr),
..values.flatten().map(x => text(size:1.3em)[#x])
)
]