From 5bb84dcefbafab8d80313771854c1d982560ee1a Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Sun, 30 Oct 2022 14:48:45 +0100 Subject: [PATCH] Fix openweather service --- dummy-data/openweather/weather | 46 +++++++++++++++++++++++++ public/assets/config-demo.yml.dist | 6 ++++ src/components/services/OpenWeather.vue | 16 +++++---- src/components/services/Ping.vue | 7 ++-- 4 files changed, 66 insertions(+), 9 deletions(-) create mode 100644 dummy-data/openweather/weather diff --git a/dummy-data/openweather/weather b/dummy-data/openweather/weather new file mode 100644 index 0000000..80245ef --- /dev/null +++ b/dummy-data/openweather/weather @@ -0,0 +1,46 @@ +{ + "coord": { + "lon": 4.5833, + "lat": 45.75 + }, + "weather": [ + { + "id": 804, + "main": "Clouds", + "description": "overcast clouds", + "icon": "04d" + } + ], + "base": "stations", + "main": { + "temp": 23, + "feels_like": 22.3, + "temp_min": 21.75, + "temp_max": 25.03, + "pressure": 1019, + "humidity": 36, + "sea_level": 1019, + "grnd_level": 957 + }, + "visibility": 10000, + "wind": { + "speed": 2.29, + "deg": 174, + "gust": 6.22 + }, + "clouds": { + "all": 97 + }, + "dt": 1667136939, + "sys": { + "type": 2, + "id": 2005747, + "country": "FR", + "sunrise": 1667110705, + "sunset": 1667147524 + }, + "timezone": 3600, + "id": 2996943, + "name": "Arrondissement de Lyon", + "cod": 200 + } \ No newline at end of file diff --git a/public/assets/config-demo.yml.dist b/public/assets/config-demo.yml.dist index 43188fb..4d088cc 100644 --- a/public/assets/config-demo.yml.dist +++ b/public/assets/config-demo.yml.dist @@ -100,6 +100,12 @@ services: keywords: "demo" url: "#" target: "_blank" + - name: "Weather" + location: "Lyon" + apikey: "xxxxxxxxxxxx" # insert your own API key here. Request one from https://openweathermap.org/api. + units: "metric" + endpoint: "https://homer-demo-content.netlify.app/openweather/weather" + type: "OpenWeather" - name: "interesting links" icon: "fas fa-solid fa-arrow-up-right-from-square" items: diff --git a/src/components/services/OpenWeather.vue b/src/components/services/OpenWeather.vue index 3169866..649e8e5 100644 --- a/src/components/services/OpenWeather.vue +++ b/src/components/services/OpenWeather.vue @@ -23,7 +23,7 @@

{{ name }}

- {{ temp | tempSuffix(this.item.units) }} + {{ temperature }} {{ locationTime }} @@ -68,15 +68,13 @@ export default { } return `${this.temp} ${unit}`; }, - }, - created() { - this.fetchWeather(); - }, - computed: { locationTime: function () { return this.calcTime(this.timezoneOffset); }, }, + created() { + this.fetchWeather(); + }, methods: { fetchWeather: async function () { let locationQuery; @@ -89,7 +87,11 @@ export default { } const apiKey = this.item.apikey || this.item.apiKey; - const url = `https://api.openweathermap.org/data/2.5/weather?${locationQuery}&appid=${apiKey}&units=${this.item.units}`; + + let url = `https://api.openweathermap.org/data/2.5/weather?${locationQuery}&appid=${apiKey}&units=${this.item.units}`; + if (this.item.endpoint) { + url = this.item.endpoint; + } fetch(url) .then((response) => { if (!response.ok) { diff --git a/src/components/services/Ping.vue b/src/components/services/Ping.vue index 07bc053..e2db050 100644 --- a/src/components/services/Ping.vue +++ b/src/components/services/Ping.vue @@ -29,9 +29,12 @@ export default { }, methods: { fetchStatus: async function () { - const method = typeof this.item.method === 'string' ? this.item.method.toUpperCase() : 'HEAD'; + const method = + typeof this.item.method === "string" + ? this.item.method.toUpperCase() + : "HEAD"; - if (!['GET', 'HEAD', 'OPTION'].includes(method)) { + if (!["GET", "HEAD", "OPTION"].includes(method)) { console.error(`Ping: ${method} is not a supported HTTP method`); return; } -- 2.41.0