Merge pull request #59 from tarikcoskun/main

Add 24-hour time format support for weather
This commit is contained in:
Svilen Markov 2024-05-17 18:41:04 +01:00 committed by GitHub
commit 693051f4e9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 2 deletions

View File

@ -647,6 +647,7 @@ Example:
```yaml ```yaml
- type: weather - type: weather
units: metric units: metric
hour-format: 12h
location: London, United Kingdom location: London, United Kingdom
``` ```
@ -671,6 +672,7 @@ Each bar represents a 2 hour interval. The yellow background represents sunrise
| ---- | ---- | -------- | ------- | | ---- | ---- | -------- | ------- |
| location | string | yes | | | location | string | yes | |
| units | string | no | metric | | units | string | no | metric |
| hour-format | string | no | 12h |
| hide-location | boolean | no | false | | hide-location | boolean | no | false |
| show-area-name | boolean | no | false | | show-area-name | boolean | no | false |
@ -680,6 +682,9 @@ The name of the city and country to fetch weather information for. Attempting to
##### `units` ##### `units`
Whether to show the temperature in celsius or fahrenheit, possible values are `metric` or `imperial`. Whether to show the temperature in celsius or fahrenheit, possible values are `metric` or `imperial`.
#### `hour-format`
Whether to show the hours of the day in 12-hour format or 24-hour format. Possible values are `12h` and `24h`.
##### `hide-location` ##### `hide-location`
Optionally don't display the location name on the widget. Optionally don't display the location name on the widget.

View File

@ -14,17 +14,26 @@ type Weather struct {
Location string `yaml:"location"` Location string `yaml:"location"`
ShowAreaName bool `yaml:"show-area-name"` ShowAreaName bool `yaml:"show-area-name"`
HideLocation bool `yaml:"hide-location"` HideLocation bool `yaml:"hide-location"`
HourFormat string `yaml:"hour-format"`
Units string `yaml:"units"` Units string `yaml:"units"`
Place *feed.PlaceJson `yaml:"-"` Place *feed.PlaceJson `yaml:"-"`
Weather *feed.Weather `yaml:"-"` Weather *feed.Weather `yaml:"-"`
TimeLabels [12]string `yaml:"-"` TimeLabels [12]string `yaml:"-"`
} }
var timeLabels = [12]string{"2am", "4am", "6am", "8am", "10am", "12pm", "2pm", "4pm", "6pm", "8pm", "10pm", "12am"} var timeLabels12h = [12]string{"2am", "4am", "6am", "8am", "10am", "12pm", "2pm", "4pm", "6pm", "8pm", "10pm", "12am"}
var timeLabels24h = [12]string{"02:00", "04:00", "06:00", "08:00", "10:00", "12:00", "14:00", "16:00", "18:00", "20:00", "22:00", "24:00"}
func (widget *Weather) Initialize() error { func (widget *Weather) Initialize() error {
widget.withTitle("Weather").withCacheOnTheHour() widget.withTitle("Weather").withCacheOnTheHour()
widget.TimeLabels = timeLabels
if widget.HourFormat == "" || widget.HourFormat == "12h" {
widget.TimeLabels = timeLabels12h
} else if widget.HourFormat == "24h" {
widget.TimeLabels = timeLabels24h
} else {
return fmt.Errorf("invalid hour format '%s' for weather widget, must be either 12h or 24h", widget.HourFormat)
}
if widget.Units == "" { if widget.Units == "" {
widget.Units = "metric" widget.Units = "metric"