From b47995d85ce47eda951e9cef18ca7457862293dc Mon Sep 17 00:00:00 2001 From: David Baetge Date: Sun, 2 Jul 2023 13:57:48 +0200 Subject: [PATCH] Updated sensor status page. Use current for batteries and stat tiles on today page. GH-140 --- package.json | 2 +- skins/weewx-wdc/includes/body-alternative.inc | 8 +- skins/weewx-wdc/includes/conditions-table.inc | 85 +++-- skins/weewx-wdc/includes/stat-tile.inc | 315 +++++++++--------- skins/weewx-wdc/sensor-status.html.tmpl | 114 +++++-- test/test_install_report/Dockerfile | 1 + 6 files changed, 311 insertions(+), 214 deletions(-) diff --git a/package.json b/package.json index d4ee7d73..f9157e71 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "report": "NODE_ENV=production webpack --profile --json > stats.json; webpack-bundle-analyzer ./stats.json", "dev": "NODE_ENV=development webpack --watch", "build": "NODE_ENV=production webpack && mv skins/weewx-wdc/dist/service-worker.js skins/weewx-wdc/service-worker.js", - "deploy:local": "sudo rsync -vua ./skins/weewx-wdc/ /etc/weewx/skins/weewx-wdc/ && sudo cp -r ./bin/user/. /usr/share/weewx/user/ && sudo systemctl restart weewx && sudo /usr/share/weewx/wee_reports", + "deploy:local": "sudo rsync -vua ./skins/weewx-wdc/ /etc/weewx/skins/weewx-wdc/ && sudo cp -r ./bin/user/. /usr/share/weewx/user/ && sudo /usr/share/weewx/wee_reports", "serve:local": "docker run -it --rm -d -p 8080:80 --name web -v /var/www/html/weewx:/usr/share/nginx/html nginx", "deploy:pi": "yarn run build && sudo rsync -vua ./bin/ pi@weewx:/home/pi/bin && sudo rsync -vua --exclude 'weewx-wdc/dwd/*' --exclude 'weewx-wdc/skin.conf' ./skins/ pi@weewx:/home/pi/skins", "test:e2e": "yarn playwright test --config playwright.config.ts", diff --git a/skins/weewx-wdc/includes/body-alternative.inc b/skins/weewx-wdc/includes/body-alternative.inc index 0f29b647..48e1b0d8 100644 --- a/skins/weewx-wdc/includes/body-alternative.inc +++ b/skins/weewx-wdc/includes/body-alternative.inc @@ -71,7 +71,13 @@ $render_gauges($DisplayOptions['Gauges'][$context]) ## ValueError: start time (1654034700) is greater than stop time (1640991600) #set $alltime_tag = $alltime($data_binding=$skin_obs_binding) if $context == 'alltime' else None - #if $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), $alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $get_custom_data_binding_obs_key($skin_obs)).has_data + #if $context == 'day' and not $daily_archive + #set $stat_tile_check = $current + #else + #set $stat_tile_check = $get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), $alltime_tag, $yesterday($data_binding=$skin_obs_binding)) + #end if + + #if $getattr($stat_tile_check, $get_custom_data_binding_obs_key($skin_obs)).has_data #set global $partial_obs = $skin_obs #include "includes/stat-tile.inc" #end if diff --git a/skins/weewx-wdc/includes/conditions-table.inc b/skins/weewx-wdc/includes/conditions-table.inc index afbe4f65..2384a0f6 100644 --- a/skins/weewx-wdc/includes/conditions-table.inc +++ b/skins/weewx-wdc/includes/conditions-table.inc @@ -60,7 +60,16 @@ #set $skin_obs_binding = $get_data_binding($skin_obs) #set $skin_obs_key = $get_custom_data_binding_obs_key($skin_obs) #set $alltime_tag = None if $use_parameter_year or $use_parameter_month else $alltime($data_binding=$skin_obs_binding) - #if $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).has_data and not $get_show_sum($skin_obs) and $skin_obs != 'windDir' and $skin_obs != 'windGustDir' + + #set $context_binded = $get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), $alltime_tag, $yesterday($data_binding=$skin_obs_binding)) + + #if $context == 'day' and not $daily_archive + #set $context_binding = $current + #else + #set $context_binding = context_binded + #end if + + #if $getattr($context_binding, $skin_obs_key).has_data and not $get_show_sum($skin_obs) and $skin_obs != 'windDir' and $skin_obs != 'windGustDir' #set $show_wind_dir = 'windDir' in $stat_obs and $skin_obs == "windSpeed" and not $to_bool($DisplayOptions.get('stat_tile_winddir_ordinal', True)) #set $show_wind_dir_ordinal = 'windDir' in $stat_obs and $skin_obs == "windSpeed" and $to_bool($DisplayOptions.get('stat_tile_winddir_ordinal', True)) #set $show_gust_dir = 'windGustDir' in $stat_obs and $skin_obs == "windGust" and not $to_bool($DisplayOptions.get('stat_tile_winddir_ordinal', True)) @@ -73,8 +82,14 @@ $obs.label[$skin_obs] - #if $context == 'day' - $getattr($latest($data_binding=$skin_obs_binding), $skin_obs_key).format("%." + $rounding + "f") + #if $context == 'day' and not $daily_archive + + #if $skin_obs_binding != 'wx_binding' + $getattr($latest($data_binding=$skin_obs_binding), $skin_obs_key).format("%." + $rounding + "f") + #else + $getattr($latest, $skin_obs_key).format("%." + $rounding + "f") + #end if + #if $show_wind_dir and $current.windDir.has_data , $current.windDir @@ -90,11 +105,11 @@ #end if #else #if $get_show_sum($skin_obs) - $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).sum.format("%." + $rounding + "f") + $getattr($context_binding, $skin_obs_key).sum.format("%." + $rounding + "f") #else if $get_show_max($skin_obs) - $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).max.format("%." + $rounding + "f") + $getattr($context_binding, $skin_obs_key).max.format("%." + $rounding + "f") #else - $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).avg.format("%." + $rounding + "f") + $getattr($context_binding, $skin_obs_key).avg.format("%." + $rounding + "f") #if $show_wind_dir and $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), "windDir").has_data , $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), "windDir").avg @@ -110,34 +125,42 @@ - $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).min.format("%." + $rounding + "f") + #if $getattr($context_binded, $skin_obs_key).has_data + $getattr($context_binded, $skin_obs_key).min.format("%." + $rounding + "f") - #if show_min_max_time - $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).mintime.format($min_max_time_format) + #if show_min_max_time + $getattr($context_binded, $skin_obs_key).mintime.format($min_max_time_format) + #end if + #else + $gettext("N/A") #end if - $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).max.format("%." + $rounding + "f") - - #set $windDir_binded = $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), "windDir") - #set $gustDir_binded = $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), "windGustDir") - - #if $show_wind_dir and $windDir_binded.has_data - , $windDir_binded.max - #else if $show_wind_dir_ordinal and $windDir_binded.has_data - , $windDir_binded.max.ordinal_compass - #else if $show_gust_dir and $gustDir_binded.has_data - , $gustDir_binded.max - #else if $show_gust_dir_ordinal and $gustDir_binded.has_data - , $gustDir_binded.max.ordinal_compass - - #else if (($show_wind_dir or $show_wind_dir_ordinal) and not $windDir_binded.has_data) or (($show_gust_dir or $show_gust_dir_ordinal) and not $gustDir_binded.has_data) - - #end if + #if $getattr($context_binded, $skin_obs_key).has_data + $getattr($context_binded, $skin_obs_key).max.format("%." + $rounding + "f") + + #set $windDir_binded = $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), "windDir") + #set $gustDir_binded = $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), "windGustDir") - #if $show_min_max_time - $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).maxtime.format($min_max_time_format) + #if $show_wind_dir and $windDir_binded.has_data + , $windDir_binded.max + #else if $show_wind_dir_ordinal and $windDir_binded.has_data + , $windDir_binded.max.ordinal_compass + #else if $show_gust_dir and $gustDir_binded.has_data + , $gustDir_binded.max + #else if $show_gust_dir_ordinal and $gustDir_binded.has_data + , $gustDir_binded.max.ordinal_compass + + #else if (($show_wind_dir or $show_wind_dir_ordinal) and not $windDir_binded.has_data) or (($show_gust_dir or $show_gust_dir_ordinal) and not $gustDir_binded.has_data) + + #end if + + #if $show_min_max_time + $getattr($context_binded, $skin_obs_key).maxtime.format($min_max_time_format) + #end if + #else + $gettext("N/A") #end if @@ -165,13 +188,15 @@ #set $skin_obs_binding = $get_data_binding($skin_obs) #set $skin_obs_key = $get_custom_data_binding_obs_key($skin_obs) #set $alltime_tag = None if $use_parameter_year or $use_parameter_month else $alltime($data_binding=$skin_obs_binding) - #if $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), $alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).has_data and $get_show_sum($skin_obs) + #set $context_binding = $get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), $alltime_tag, $yesterday($data_binding=$skin_obs_binding)) + + #if $getattr($context_binding, $skin_obs_key).has_data and $get_show_sum($skin_obs) #set $rounding = $str($get_rounding($skin_obs, $skin_obs_key)) $obs.label[$skin_obs] - $getattr($get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), alltime_tag, $yesterday($data_binding=$skin_obs_binding)), $skin_obs_key).sum.format("%." + $rounding + "f") + $getattr($context_binding, $skin_obs_key).sum.format("%." + $rounding + "f") #end if diff --git a/skins/weewx-wdc/includes/stat-tile.inc b/skins/weewx-wdc/includes/stat-tile.inc index 2029016e..dcc8d235 100644 --- a/skins/weewx-wdc/includes/stat-tile.inc +++ b/skins/weewx-wdc/includes/stat-tile.inc @@ -16,7 +16,7 @@ #set $skin_obs_binding = $get_data_binding($partial_obs) #set $skin_obs_key = $get_custom_data_binding_obs_key($partial_obs) #set $rounding = $str($get_rounding($partial_obs, $skin_obs_key)) - +#set $observation_binding = $get_time_span_from_context($context, $day($data_binding=$skin_obs_binding), $week($data_binding=$skin_obs_binding), $month($data_binding=$skin_obs_binding), $year($data_binding=$skin_obs_binding), $alltime($data_binding=$skin_obs_binding), $yesterday($data_binding=$skin_obs_binding)) #for $battery in $sensor_batteries - #if $getattr($recent, $battery).has_data + #if $getattr($current, $battery).has_data
#set $battery_raw = $getVar('current.%s.raw' % $battery) - #if $battery_raw == 1 - - - #else if $battery_raw is None - - + #if $battery in $batteries_multi + $get_battery_multi($battery_raw, $battery) #else - - + $get_battery_binary($battery_raw, $battery) #end if -
+ #end if #end for @@ -143,6 +192,7 @@ #set global $stat_obs = $sensor_stat_tile_observations #include 'includes/conditions-table.inc' +
$batteries($sensor_batteries, $layout)
@@ -179,7 +229,7 @@ #set $binding = $get_data_binding($obs) #set $alltime_tag = $alltime($data_binding=$binding) if $context == 'alltime' else None - #if $getattr($get_time_span_from_context($context, $day($data_binding=$binding), $week($data_binding=$binding), $month($data_binding=$binding), $year($data_binding=$binding), $alltime_tag, $yesterday($data_binding=$binding)), $get_custom_data_binding_obs_key($obs)).has_data + #if $getattr($current, $get_custom_data_binding_obs_key($obs)).has_data #set global $partial_obs = $obs #include "includes/stat-tile.inc" #end if diff --git a/test/test_install_report/Dockerfile b/test/test_install_report/Dockerfile index f8706530..83b71058 100644 --- a/test/test_install_report/Dockerfile +++ b/test/test_install_report/Dockerfile @@ -92,6 +92,7 @@ COPY src/cmon-extensions.py /tmp RUN sed -i -e 's/device_type = acurite-bridge/device_type = ecowitt-client\n port = 9877\n address = 0.0.0.0/g' weewx.conf &&\ sed -i -z -e 's/skin = Seasons\n enable = true/skin = Seasons\n enable = false/g' weewx.conf &&\ + sed -i -z -e 's/skin = cmon/skin = cmon\n enable = false/g' weewx.conf &&\ sed -i -z -e 's/skin = forecast/skin = forecast\n enable = false/g' weewx.conf ADD src/weewx-db_06_23_2022_08_00.tar ./archive