From 5d9be96cca59126c509023da6e9d72b7b3e52859 Mon Sep 17 00:00:00 2001 From: Jas Singh Date: Fri, 28 Jun 2024 00:11:09 -0700 Subject: [PATCH] Finish calendar menu --- modules/menus/calendar/index.js | 302 +++++++++++++++++++++++--------- scss/menus/calendar.scss | 37 ++-- style.css | 29 ++- style.css.map | 2 +- 4 files changed, 268 insertions(+), 102 deletions(-) diff --git a/modules/menus/calendar/index.js b/modules/menus/calendar/index.js index 129d924..1ac874c 100644 --- a/modules/menus/calendar/index.js +++ b/modules/menus/calendar/index.js @@ -22,6 +22,15 @@ const defaultWeather = { day: { daily_chance_of_rain: 0, }, + hour: [ + { + time_epoch: 1719471600, + temp_f: 0, + condition: { + text: "Clear", + }, + }, + ], }, ], }, @@ -120,116 +129,239 @@ const WeatherWidget = () => { child: Widget.Box({ class_name: "weather-container-box", setup: (self) => { - Utils.interval(6000, () => { + Utils.interval(60 * 1000, () => { Utils.execAsync( `curl "https://api.weatherapi.com/v1/forecast.json?key=${keyRing.weatherapi}&q=93722&days=1&aqi=no&alerts=no"`, - ).then((res) => { - theWeather.value = JSON.parse(res); - }); + ) + .then((res) => { + theWeather.value = JSON.parse(res); + }) + .catch((err) => { + console.error(`Failed to fetch weather: ${err}`); + theWeather.value = defaultWeather; + }); }); return (self.child = Widget.Box({ - class_name: "calendar-menu-weather today", + vertical: true, hexpand: true, children: [ Widget.Box({ - vpack: "center", - hpack: "start", - class_name: "calendar-menu-weather today icon container", - children: [ - Widget.Icon({ - class_name: "calendar-menu-weather today icon", - icon: theWeather.bind("value").as((v) => { - return icons.weather[ - v.current.condition.text - .toLowerCase() - .replaceAll(" ", "_") - ]; - }), - }), - ], - }), - Widget.Box({ + class_name: "calendar-menu-weather today", hexpand: true, - vpack: "center", - hpack: "center", - class_name: "calendar-menu-weather today temp container", - vertical: true, children: [ Widget.Box({ + vpack: "center", + hpack: "start", + class_name: "calendar-menu-weather today icon container", children: [ - Widget.Label({ - class_name: "calendar-menu-weather today temp label", - label: theWeather - .bind("value") - .as((v) => `${Math.ceil(v.current.temp_f)}° F`), - }), - Widget.Label({ - class_name: theWeather - .bind("value") - .as( - (v) => - `calendar-menu-weather today temp label icon ${getIcon(Math.ceil(v.current.temp_f)).color}`, - ), - label: theWeather - .bind("value") - .as((v) => getIcon(Math.ceil(v.current.temp_f)).icon), + Widget.Icon({ + class_name: "calendar-menu-weather today icon", + icon: theWeather.bind("value").as((v) => { + return icons.weather[ + v.current.condition.text + .trim() + .toLowerCase() + .replaceAll(" ", "_") + ]; + }), }), ], }), - Widget.Label({ - class_name: theWeather - .bind("value") - .as( - (v) => - `calendar-menu-weather today condition label ${getIcon(Math.ceil(v.current.temp_f)).color}`, - ), - label: theWeather - .bind("value") - .as((v) => v.current.condition.text), + Widget.Box({ + hpack: "center", + vpack: "center", + vertical: true, + children: [ + Widget.Box({ + hexpand: true, + vpack: "center", + class_name: "calendar-menu-weather today temp container", + vertical: false, + children: [ + Widget.Box({ + hexpand: true, + hpack: "center", + children: [ + Widget.Label({ + class_name: + "calendar-menu-weather today temp label", + label: theWeather + .bind("value") + .as((v) => `${Math.ceil(v.current.temp_f)}° F`), + }), + Widget.Label({ + class_name: theWeather + .bind("value") + .as( + (v) => + `calendar-menu-weather today temp label icon ${getIcon(Math.ceil(v.current.temp_f)).color}`, + ), + label: theWeather + .bind("value") + .as( + (v) => + getIcon(Math.ceil(v.current.temp_f)).icon, + ), + }), + ], + }), + ], + }), + Widget.Box({ + hpack: "center", + child: Widget.Label({ + max_width_chars: 17, + truncate: "end", + lines: 2, + class_name: theWeather + .bind("value") + .as( + (v) => + `calendar-menu-weather today condition label ${getIcon(Math.ceil(v.current.temp_f)).color}`, + ), + label: theWeather + .bind("value") + .as((v) => v.current.condition.text), + }), + }), + ], + }), + Widget.Box({ + class_name: "calendar-menu-weather today stats container", + hpack: "end", + vpack: "center", + vertical: true, + children: [ + Widget.Box({ + class_name: "weather wind", + children: [ + Widget.Label({ + class_name: "weather wind icon", + label: "", + }), + Widget.Label({ + class_name: "weather wind label", + label: theWeather + .bind("value") + .as((v) => `${Math.floor(v.current.wind_mph)} mph`), + }), + ], + }), + Widget.Box({ + class_name: "weather precip", + children: [ + Widget.Label({ + class_name: "weather precip icon", + label: "", + }), + Widget.Label({ + class_name: "weather precip label", + label: theWeather + .bind("value") + .as( + (v) => + `${v.forecast.forecastday[0].day.daily_chance_of_rain}%`, + ), + }), + ], + }), + ], }), ], }), + Widget.Separator({ + class_name: "menu-separator weather", + }), Widget.Box({ - class_name: "calendar-menu-weather today stats container", - hpack: "end", - vpack: "start", - vertical: true, - children: [ - Widget.Box({ - class_name: "weather wind", + vertical: false, + hexpand: true, + hpack: "fill", + class_name: "hourly-weather-container", + children: [1, 2, 3, 4].map((hoursFromNow) => { + const getNextEpoch = (wthr) => { + const currentEpoch = wthr.location.localtime_epoch; + const epochAtHourStart = currentEpoch - (currentEpoch % 3600); + let nextEpoch = 3600 * hoursFromNow + epochAtHourStart; + + const curHour = new Date(currentEpoch * 1000).getHours(); + + /* + * NOTE: Since the API is only capable of showing the current day; if + * the hours left in the day are less than 4 (aka spilling into the next day), + * then rewind to contain the prediction within the current day. + */ + if (curHour > 20) { + const hoursToRewind = curHour - 19; + nextEpoch = + 3600 * hoursFromNow + + epochAtHourStart - + hoursToRewind * 3600; + } + return nextEpoch; + }; + + return Widget.Box({ + class_name: "hourly-weather-item", + hexpand: true, + vertical: true, children: [ Widget.Label({ - class_name: "weather wind icon", - label: "", + class_name: "hourly-weather-time", + label: theWeather.bind("value").as((w) => { + if (!Object.keys(w).length) { + return "-"; + } + + const nextEpoch = getNextEpoch(w); + const dateAtEpoch = new Date(nextEpoch * 1000); + let hours = dateAtEpoch.getHours(); + const ampm = hours >= 12 ? "PM" : "AM"; + hours = hours % 12 || 12; + + return `${hours}${ampm}`; + }), + }), + Widget.Icon({ + class_name: "hourly-weather-icon", + icon: theWeather.bind("value").as((w) => { + if (!Object.keys(w).length) { + return "-"; + } + + const nextEpoch = getNextEpoch(w); + const weatherAtEpoch = + w.forecast.forecastday[0].hour.find( + (h) => h.time_epoch === nextEpoch, + ); + + return icons.weather[ + weatherAtEpoch.condition.text + .trim() + .toLowerCase() + .replaceAll(" ", "_") + ]; + }), }), Widget.Label({ - class_name: "weather wind label", - label: theWeather - .bind("value") - .as((v) => `${Math.floor(v.current.wind_mph)} mph`), + class_name: "hourly-weather-temp", + label: theWeather.bind("value").as((w) => { + if (!Object.keys(w).length) { + return "-"; + } + + const nextEpoch = getNextEpoch(w); + const weatherAtEpoch = + w.forecast.forecastday[0].hour.find( + (h) => h.time_epoch === nextEpoch, + ); + + return `${Math.ceil(weatherAtEpoch.temp_f)}° F`; + }), }), ], - }), - Widget.Box({ - class_name: "weather precip", - children: [ - Widget.Label({ - class_name: "weather precip icon", - label: "", - }), - Widget.Label({ - class_name: "weather precip label", - label: theWeather - .bind("value") - .as( - (v) => - `${v.forecast.forecastday[0].day.daily_chance_of_rain}%`, - ), - }), - ], - }), - ], + }); + }), }), ], })); diff --git a/scss/menus/calendar.scss b/scss/menus/calendar.scss index f97f76d..070833c 100644 --- a/scss/menus/calendar.scss +++ b/scss/menus/calendar.scss @@ -87,13 +87,14 @@ .weather-container-box { color: $red; margin: 1.5em; + margin-top: 2.5em; min-width: 3em; // min-height: 10em; .calendar-menu-weather.today.icon { image { color: $pink; - font-size: 5em; + font-size: 6em; // margin-right: 0.3em; } } @@ -102,14 +103,18 @@ color: $text; margin-left: 0.2em; font-size: 2.5em; + + &.icon { + font-size: 2.5em; + } } .calendar-menu-weather.today.condition.label { color: $teal; - font-size: 1.75em; - margin-left: -1.4em; + font-size: 1.5em; + margin-bottom: 0.4em; } - + // .calendar-menu-weather.today.condition.label.weather-color.red { // color: $red; // } @@ -144,7 +149,7 @@ } .calendar-menu-weather.today.stats.container { - // margin-left: 2.2em; + margin-bottom: 0.75em; color: $pink; .weather.label { @@ -152,14 +157,20 @@ } } +.menu-separator.weather { + margin: 1.5em 0em; +} +.hourly-weather-time { + color: $pink; + margin-bottom: 0.5em; +} +.hourly-weather-icon { + color: $pink; + margin-bottom: 0.5em; +} - - - - - - - - +.hourly-weather-temp { + color: $pink; +} diff --git a/style.css b/style.css index 37b017b..4f3ea8c 100644 --- a/style.css +++ b/style.css @@ -1190,21 +1190,25 @@ image { .weather-container-box { color: #f38ba8; margin: 1.5em; + margin-top: 2.5em; min-width: 3em; } .weather-container-box .calendar-menu-weather.today.icon image { color: #f5c2e7; - font-size: 5em; + font-size: 6em; } .weather-container-box .calendar-menu-weather.today.temp.label { color: #cdd6f4; margin-left: 0.2em; font-size: 2.5em; } +.weather-container-box .calendar-menu-weather.today.temp.label.icon { + font-size: 2.5em; +} .weather-container-box .calendar-menu-weather.today.condition.label { color: #94e2d5; - font-size: 1.75em; - margin-left: -1.4em; + font-size: 1.5em; + margin-bottom: 0.4em; } .weather-container-box .calendar-menu-weather.today.temp.label.icon.weather-color.red { color: #f38ba8; @@ -1223,12 +1227,31 @@ image { } .calendar-menu-weather.today.stats.container { + margin-bottom: 0.75em; color: #f5c2e7; } .calendar-menu-weather.today.stats.container .weather.label { margin-left: 0.35em; } +.menu-separator.weather { + margin: 1.5em 0em; +} + +.hourly-weather-time { + color: #f5c2e7; + margin-bottom: 0.5em; +} + +.hourly-weather-icon { + color: #f5c2e7; + margin-bottom: 0.5em; +} + +.hourly-weather-temp { + color: #f5c2e7; +} + .notification-card-container { margin-top: 3.5rem; } diff --git a/style.css.map b/style.css.map index 69f92d1..7e24ec3 100644 --- a/style.css.map +++ b/style.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["scss/main.scss","scss/common/common.scss","scss/colors.scss","scss/common/widget-button.scss","scss/bar/menu.scss","scss/bar/audio.scss","scss/bar/media.scss","scss/bar/network.scss","scss/bar/bluetooth.scss","scss/bar/clock.scss","scss/bar/workspace.scss","scss/bar/window_title.scss","scss/bar/systray.scss","scss/bar/notifications.scss","scss/bar/power.scss","scss/bar/bar.scss","scss/menus/menu.scss","scss/menus/power.scss","scss/common/floating-widget.scss","scss/menus/audiomenu.scss","scss/menus/network.scss","scss/menus/bluetooth.scss","scss/menus/media.scss","scss/menus/notifications.scss","scss/menus/calendar.scss","scss/notifications/popups.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["scss/main.scss","scss/common/common.scss","scss/colors.scss","scss/common/widget-button.scss","scss/bar/menu.scss","scss/bar/audio.scss","scss/bar/media.scss","scss/bar/network.scss","scss/bar/bluetooth.scss","scss/bar/clock.scss","scss/bar/workspace.scss","scss/bar/window_title.scss","scss/bar/systray.scss","scss/bar/notifications.scss","scss/bar/power.scss","scss/bar/bar.scss","scss/menus/menu.scss","scss/menus/power.scss","scss/common/floating-widget.scss","scss/menus/audiomenu.scss","scss/menus/network.scss","scss/menus/bluetooth.scss","scss/menus/media.scss","scss/menus/notifications.scss","scss/menus/calendar.scss","scss/notifications/popups.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file