Skip to content

Commit

Permalink
Added support for weewx-GTS (software defined obs).
Browse files Browse the repository at this point in the history
  • Loading branch information
Daveiano committed Nov 2, 2023
1 parent 9cd7cf1 commit 0cc987e
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 6 deletions.
17 changes: 17 additions & 0 deletions bin/user/weewx_wdc.py
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,23 @@ def __init__(self, generator):
"wx_binding"
)

# print(self.generator.config_dict["StdWXCalculate"]["Calculations"])

def get_software_obs(self):
"""
Get the observations provided by software (weewx calculations), was
added because the has_data check fails for GTS, seasonGDD or yearGDD.
Returns:
list: The software observations
"""
try:
obs = filter(
lambda x: "software" in x[1], self.generator.config_dict["StdWXCalculate"]["Calculations"].items())
return list(dict(obs).keys())
except KeyError:
return []

def get_locale(self):
"""
Get the locale.
Expand Down
4 changes: 2 additions & 2 deletions skins/weewx-wdc/includes/body-alternative.inc
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ $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($combined_diagram.obs[$combined_obs].observation)).has_data
#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($combined_diagram.obs[$combined_obs].observation)).has_data or $combined_diagram.obs[$combined_obs].observation in $get_software_obs
#set global $comb_obs = $skin_obs
#set global $combined_diagram = $combined_diagram
#set global $diagram_index = $diagram_index
Expand All @@ -172,7 +172,7 @@ $render_gauges($DisplayOptions['Gauges'][$context])
#else
#set $skin_obs_binding = $get_data_binding($skin_obs, $context)
#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 or (($skin_obs == 'windDir' or $skin_obs == 'windRose') and $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), 'windSpeed').has_data)
#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 or (($skin_obs == 'windDir' or $skin_obs == 'windRose') and $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), 'windSpeed').has_data or $skin_obs in $get_software_obs)
#set global $partial_obs = $skin_obs
#set global $diagram_index = $diagram_index
#if $skin_obs == 'windRose'
Expand Down
4 changes: 2 additions & 2 deletions skins/weewx-wdc/includes/body-classic.inc
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
## 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($combined_diagram.obs[$combined_obs].observation)).has_data
#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($combined_diagram.obs[$combined_obs].observation)).has_data or $combined_diagram.obs[$combined_obs].observation in $get_software_obs
#set global $comb_obs = $skin_obs
#set global $combined_diagram = $combined_diagram
#set global $diagram_index = $diagram_index
Expand All @@ -121,7 +121,7 @@
#else
#set $skin_obs_binding = $get_data_binding($skin_obs, $context)
#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 or (($skin_obs == 'windDir' or $skin_obs == 'windRose') and $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), 'windSpeed').has_data)
#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 or (($skin_obs == 'windDir' or $skin_obs == 'windRose') and $getattr($get_time_span_from_context($context, $day, $week, $month, $year, $alltime, $yesterday), 'windSpeed').has_data) or $skin_obs in $get_software_obs
#set global $partial_obs = $skin_obs
#set global $diagram_index = $diagram_index
#if $skin_obs == 'windRose'
Expand Down
5 changes: 5 additions & 0 deletions skins/weewx-wdc/lang/de.conf
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,11 @@
rainDur = Regendauer
sunshineDur = Sonnenscheindauer

# weewx-GTS
GTS = GTS
seasonGDD = Wachstumsgradtage (Saison)
yearGDD = Wachstumsgradtage (Jahr)

[Texts]
"Station Description" = "Aktuelle Wetterlage"
"Almanac" = "Almanac"
Expand Down
5 changes: 5 additions & 0 deletions skins/weewx-wdc/lang/en.conf
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,11 @@
rainDur = Rain duration
sunshineDur = Sunshine duration

# weewx-GTS
GTS = GTS
seasonGDD = Growing degree days (Season)
yearGDD = Growing degree days (Year)


[Texts]
"Station Description" = "Current Weather Conditions"
Expand Down
5 changes: 5 additions & 0 deletions skins/weewx-wdc/lang/it.conf
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,11 @@
rainDur = Durata della Pioggia
sunshineDur = Durata del Sole

# weewx-GTS
GTS = GTS
seasonGDD = Gradi giorno crescenti (Stagione)
yearGDD = Gradi giorno crescenti (Anno)

[Texts]
"Station Description" = "Condizione Meteo Attuali"
"Almanac" = "Almanacco"
Expand Down
7 changes: 6 additions & 1 deletion skins/weewx-wdc/lang/nl.conf
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
heatindex = Hitte Index
inDewpoint = Dauwpunt Binnen
inHumidity = Luchtvochtigheid Binnen
inTemp = Temperatuur Binnen
inTemp = Temperatuur Binnen
interval = Interval
leafTemp1 = Blad Temperatuur1
leafTemp2 = Blad Temperatuur2
Expand Down Expand Up @@ -160,6 +160,11 @@
rainDur = Duur regen
sunshineDur = Zonuren

# weewx-GTS
GTS = GTS
seasonGDD = Groeiende graaddagen (Seizoen)
yearGDD = Groeiende graaddagen (Jaar)


[Texts]
"Station Description" = "Huidige Weersomstandigheden"
Expand Down
2 changes: 1 addition & 1 deletion skins/weewx-wdc/skin.conf
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ SKIN_VERSION = 3.3.0
# 'alternative' or 'classic'.
layout = 'alternative'

# Date/Time localization for charts. Available locales: de-DE, en-US, en-GB, it-IT.
# Date/Time localization for charts. Available locales: de-DE, en-US, en-GB, it-IT, nl-NL.
# If not set, the value from weewx.conf (reports section) will be used. If lang = en, then en-US will be used (sorry GB!).
#date_time_locale = en-US

Expand Down
8 changes: 8 additions & 0 deletions skins/weewx-wdc/src/js/diagrams/d3/line.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ export const D3LineDiagram: FunctionComponent<LineDiagramBaseProps> = (
return a.x - b.x;
});

if (combinedData.length === 0) {
return <></>;
}

// Group data by unit.
const dataGroupedByUnit: { unit: string; data: Datum[] }[] = [
{ unit: props.unit[0], data: props.data[0].data },
Expand Down Expand Up @@ -610,6 +614,10 @@ export const D3LineDiagram: FunctionComponent<LineDiagramBaseProps> = (
const d0 = props.data[index].data[i - 1];
const d1 = props.data[index].data[i];

if (!d0 || !d1) {
return;
}

const d: Datum = x0 - d0.x * 1000 > d1.x * 1000 - x0 ? d1 : d0;

values = [...values, d];
Expand Down

0 comments on commit 0cc987e

Please sign in to comment.