From c8a25e5d9aa52b8a67c7e2444c3acb0ce461793e Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Sun, 10 Aug 2025 20:05:07 -0500 Subject: [PATCH] Integrate no-data icon close #94 #128 --- README.md | 4 ++++ server/images/gimp/Full-Moon-Degraded.xcf | Bin 0 -> 33894 bytes .../current-conditions => gimp}/No-Data.png | Bin server/images/gimp/No-Data.xcf | Bin 0 -> 47180 bytes .../icons/current-conditions/No-Data.gif | Bin 0 -> 1125 bytes .../icons/moon-phases/Full-Moon-Degraded.gif | Bin 0 -> 1009 bytes server/scripts/modules/almanac.mjs | 20 +++++++++++++----- server/scripts/modules/currentweather.mjs | 1 - server/scripts/modules/icons/icons-large.mjs | 4 ++-- 9 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 server/images/gimp/Full-Moon-Degraded.xcf rename server/images/{icons/current-conditions => gimp}/No-Data.png (100%) create mode 100644 server/images/gimp/No-Data.xcf create mode 100644 server/images/icons/current-conditions/No-Data.gif create mode 100644 server/images/icons/moon-phases/Full-Moon-Degraded.gif diff --git a/README.md b/README.md index f366021..63fe4c6 100644 --- a/README.md +++ b/README.md @@ -335,6 +335,10 @@ Before reporting an issue or requesting a feature please consider that this is n Note: not all units are converted to metric, if selected. Some text-based products such as warnings are simple text strings provided from the national weather service and thus have baked-in units such as "gusts up to 60 mph." These values will not be converted. +## The full moon icon is broken + +This is a known problem with the Ws4kp as it ages. It was a problem with the [actual Weatherstar hardware](https://youtu.be/rcUwlZ4pqh0?feature=shared&t=116) as well. + ## Related Projects Not retro enough? Try the [Weatherstar 3000+](https://github.com/netbymatt/ws3kp) diff --git a/server/images/gimp/Full-Moon-Degraded.xcf b/server/images/gimp/Full-Moon-Degraded.xcf new file mode 100644 index 0000000000000000000000000000000000000000..955a36ea2146ee7dac996274fe5aaeccdb217d9d GIT binary patch literal 33894 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 O4v)8P7=D_UvHt@ZS_vQk literal 0 HcmV?d00001 diff --git a/server/images/icons/current-conditions/No-Data.png b/server/images/gimp/No-Data.png similarity index 100% rename from server/images/icons/current-conditions/No-Data.png rename to server/images/gimp/No-Data.png diff --git a/server/images/gimp/No-Data.xcf b/server/images/gimp/No-Data.xcf new file mode 100644 index 0000000000000000000000000000000000000000..fba360c2463bc2c071dc18095ea34849cb976c39 GIT binary patch literal 47180 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 literal 0 HcmV?d00001 diff --git a/server/images/icons/moon-phases/Full-Moon-Degraded.gif b/server/images/icons/moon-phases/Full-Moon-Degraded.gif new file mode 100644 index 0000000000000000000000000000000000000000..109272f19fc07abaed069e66b7a455cfd7536332 GIT binary patch literal 1009 zcmVZr+7<@5eZu z@bvi^jiBL>cWm~8N)yvbwLzntVs-lyVKp$W`04#V!s9e8X?|7I&1tRNM#JYSfR&Eb z-en&Hf`fz>fO>pOhKG7-6@-wH13Za2em4|q6Ox>TT9qu9m=j}b?-L9MAhqdOMzw&lIpb&oT)UV^@k;%%?Az6{-Qom#3z{T?w2vt3M_uRNUh|rt` zNeyW|+*AG`0GNEe!Y%X%Z(%u696M(4whZ1ohAm5CQ~0gqK$Q_d*7S4{=1!V3vxRh* zj#N%|KY7L!+S25;k^71^!iO|qQl&hD3RMd6jes*%wE|@-wwBMX&WL!uQI_Uau}&3| z@v3&;TWln?=5?9Umc(Os@$P*ZS8iV!3=Fn~*|spvzJ3*eT$~lIW4_O*EtpJstKPwn zGe;)CxpU*53jamDBsr|QY+=J<1cwsF-@E6#B+I@vmVJVDK zmVsl@Cr*3raa0|6pBc9yi24DC(0&^31Yv$3(s-kdb17Beh9_QVSBPINxDAHXIW%E? z_5nE;FXvH*qEHFiu$e$v5^1G>wxE=xl1F&S++fs*nHZ7~rP!pKFjb@Fnr!ajR+Z@W z*oc~c-AG1B^2MmW+WM6EWMrmUAzRVP{p2}s#(xE7@9ls09zSa-YTxr%|M zOJX)mk%?^Qx&FRp1-}zInjma|S32J+uZz fb8++tNvphc2~ETNG{I3%9finN<{)@kjWN literal 0 HcmV?d00001 diff --git a/server/scripts/modules/almanac.mjs b/server/scripts/modules/almanac.mjs index 7d9190f..3eee356 100644 --- a/server/scripts/modules/almanac.mjs +++ b/server/scripts/modules/almanac.mjs @@ -9,11 +9,19 @@ class Almanac extends WeatherDisplay { constructor(navId, elemId) { super(navId, elemId, 'Almanac', true); + // occasional degraded moon icon + this.iconPaths = { + Full: imageName(Math.random() > 0.995 ? 'Degraded' : 'Full'), + Last: imageName('Last'), + New: imageName('New'), + First: imageName('First'), + }; + // preload the moon images - preloadImg(imageName('Full')); - preloadImg(imageName('Last')); - preloadImg(imageName('New')); - preloadImg(imageName('First')); + preloadImg(this.iconPaths.Full); + preloadImg(this.iconPaths.Last); + preloadImg(this.iconPaths.New); + preloadImg(this.iconPaths.First); this.timing.totalScreens = 1; } @@ -142,7 +150,7 @@ class Almanac extends WeatherDisplay { fill.date = date; fill.type = MoonPhase.phase; - fill.icon = { type: 'img', src: imageName(MoonPhase.phase) }; + fill.icon = { type: 'img', src: this.iconPaths[MoonPhase.phase] }; return this.fillTemplate('day', fill); }); @@ -169,6 +177,8 @@ const imageName = (type) => { switch (type) { case 'Full': return 'images/icons/moon-phases/Full-Moon.gif'; + case 'Degraded': + return 'images/icons/moon-phases/Full-Moon-Degraded.gif'; case 'Last': return 'images/icons/moon-phases/Last-Quarter.gif'; case 'New': diff --git a/server/scripts/modules/currentweather.mjs b/server/scripts/modules/currentweather.mjs index 045cefe..af9ff1c 100644 --- a/server/scripts/modules/currentweather.mjs +++ b/server/scripts/modules/currentweather.mjs @@ -85,7 +85,6 @@ class CurrentWeather extends WeatherDisplay { const requiredFields = [ { name: 'temperature', check: (props) => props.temperature?.value === null, required: true }, { name: 'textDescription', check: (props) => props.textDescription === null || props.textDescription === '', required: true }, - { name: 'icon', check: (props) => props.icon === null, required: true }, { name: 'windSpeed', check: (props) => props.windSpeed?.value === null, required: false }, { name: 'dewpoint', check: (props) => props.dewpoint?.value === null, required: false }, { name: 'barometricPressure', check: (props) => props.barometricPressure?.value === null, required: false }, diff --git a/server/scripts/modules/icons/icons-large.mjs b/server/scripts/modules/icons/icons-large.mjs index be24564..7280590 100644 --- a/server/scripts/modules/icons/icons-large.mjs +++ b/server/scripts/modules/icons/icons-large.mjs @@ -13,7 +13,7 @@ const largeIcon = (link, _isNightTime) => { } catch (error) { console.warn(`largeIcon: ${error.message}`); // Return a fallback icon to prevent downstream errors - return addPath(_isNightTime ? 'Clear.gif' : 'Sunny.gif'); + return addPath(`No-Data.gif?${conditionIcon}${isNightTime ? '-n' : ''}`); } // find the icon @@ -169,7 +169,7 @@ const largeIcon = (link, _isNightTime) => { default: { console.warn(`Unknown weather condition '${conditionIcon}' from ${link}; using fallback icon`); // Return a reasonable fallback instead of false to prevent downstream errors - return addPath(isNightTime ? 'Clear.gif' : 'Sunny.gif'); + return addPath(`No-Data.gif?${conditionIcon}${isNightTime ? '-n' : ''}`); } } };