Skip to content

Commit

Permalink
✨ Adds support for lat+lon location (#1142)
Browse files Browse the repository at this point in the history
  • Loading branch information
Lissy93 committed Dec 31, 2023
1 parent eb749eb commit c4b6875
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
4 changes: 3 additions & 1 deletion docs/widgets.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,8 @@ A simple, live-updating local weather component, showing temperature, conditions
**`city`** | `string` | Required | A city name to use for fetching weather. This can also be a state code or country code, following the ISO-3166 format
**`units`** | `string` | _Optional_ | The units to use for displaying data, can be either `metric` or `imperial`. Defaults to `metric`
**`hideDetails`** | `boolean` | _Optional_ | If set to `true`, the additional details (wind, humidity, pressure, etc) will not be shown. Defaults to `false`
**`lat`** | `number` | _Optional_ | To show weather for a specific location, you can provide the latitude and longitude coordinates. If provided, this will override the `city` option
**`lon`** | `number` | _Optional_ | To show weather for a specific location, you can provide the latitude and longitude coordinates. If provided, this will override the `city` option

#### Example

Expand All @@ -160,7 +162,7 @@ A simple, live-updating local weather component, showing temperature, conditions
apiKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
city: London
units: metric
hideDetails: false
hideDetails: true
```

#### Info
Expand Down
13 changes: 11 additions & 2 deletions src/components/Widgets/Weather.vue
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,12 @@ export default {
return this.options.units || 'metric';
},
endpoint() {
const { apiKey, city } = this.options;
const {
apiKey, city, lat, lon,
} = this.options;
if (lat && lon) {
return `${widgetApiEndpoints.weather}?lat=${lat}&lon=${lon}&appid=${apiKey}&units=${this.units}`;
}
return `${widgetApiEndpoints.weather}?q=${city}&appid=${apiKey}&units=${this.units}`;
},
tempDisplayUnits() {
Expand Down Expand Up @@ -106,7 +111,11 @@ export default {
checkProps() {
const ops = this.options;
if (!ops.apiKey) this.error('Missing API key for OpenWeatherMap');
if (!ops.city) this.error('A city name is required to fetch weather');
if ((!ops.lat || !ops.lon) && !ops.city) {
this.error('A city name or lat + lon is required to fetch weather');
}
if (ops.units && ops.units !== 'metric' && ops.units !== 'imperial') {
this.error('Invalid units specified, must be either \'metric\' or \'imperial\'');
}
Expand Down

0 comments on commit c4b6875

Please sign in to comment.