|
|
@@ -25,7 +25,7 @@ |
|
|
|
<Actions |
|
|
|
class="weather-status-menu-item__subheader" |
|
|
|
:default-icon="weatherIcon" |
|
|
|
:menu-title="visibleMessage"> |
|
|
|
:menu-title="currentWeatherMessage"> |
|
|
|
<ActionText v-if="gotWeather" |
|
|
|
:icon="futureWeatherIcon"> |
|
|
|
{{ forecastMessage }} |
|
|
@@ -233,66 +233,42 @@ export default { |
|
|
|
return t('weather_status', 'More weather for {adr}', { adr: this.address }) |
|
|
|
}, |
|
|
|
temperature() { |
|
|
|
return this.forecasts.length > 0 ? this.forecasts[0].data.instant.details.air_temperature : '' |
|
|
|
return this.getTemperature(this.forecasts, 0) |
|
|
|
}, |
|
|
|
futureTemperature() { |
|
|
|
return this.getTemperature(this.forecasts, this.offset) |
|
|
|
}, |
|
|
|
weatherCode() { |
|
|
|
console.debug('weatherCode', this.forecasts[0].data.next_1_hours.summary.symbol_code) |
|
|
|
return this.forecasts.length > 0 ? this.forecasts[0].data.next_1_hours.summary.symbol_code : '' |
|
|
|
return this.getWeatherCode(this.forecasts, 0) |
|
|
|
}, |
|
|
|
futureWeatherCode() { |
|
|
|
return this.getWeatherCode(this.forecasts, this.offset) |
|
|
|
}, |
|
|
|
weatherIcon() { |
|
|
|
if (this.loading) { |
|
|
|
return 'icon-loading-small' |
|
|
|
} else { |
|
|
|
return this.weatherCode && this.weatherCode in weatherOptions |
|
|
|
? weatherOptions[this.weatherCode].icon |
|
|
|
: 'icon-fair-day' |
|
|
|
} |
|
|
|
return this.getWeatherIcon(this.weatherCode, this.loading) |
|
|
|
}, |
|
|
|
futureWeatherIcon() { |
|
|
|
return this.getWeatherIcon(this.futureWeatherCode, this.loading) |
|
|
|
}, |
|
|
|
/** |
|
|
|
* The message displayed in the top right corner |
|
|
|
* |
|
|
|
* @returns {String} |
|
|
|
*/ |
|
|
|
visibleMessage() { |
|
|
|
currentWeatherMessage() { |
|
|
|
if (this.loading) { |
|
|
|
return t('weather_status', 'Loading weather') |
|
|
|
} else if (this.errorMessage) { |
|
|
|
return this.errorMessage |
|
|
|
} else { |
|
|
|
return this.weatherCode && this.weatherCode in weatherOptions |
|
|
|
? weatherOptions[this.weatherCode].text( |
|
|
|
this.getLocalizedTemperature(this.temperature), |
|
|
|
this.temperatureUnit |
|
|
|
) |
|
|
|
: t('weather_status', 'Set location for weather') |
|
|
|
} |
|
|
|
}, |
|
|
|
futureTemperature() { |
|
|
|
return this.forecasts.length > (this.offset - 1) ? this.forecasts[this.offset].data.instant.details.air_temperature : '' |
|
|
|
}, |
|
|
|
futureWeatherCode() { |
|
|
|
return this.forecasts.length > (this.offset - 1) ? this.forecasts[this.offset].data.next_1_hours.summary.symbol_code : '' |
|
|
|
}, |
|
|
|
futureWeatherIcon() { |
|
|
|
if (this.loading) { |
|
|
|
return 'icon-loading-small' |
|
|
|
} else { |
|
|
|
return this.futureWeatherCode && this.futureWeatherCode in weatherOptions |
|
|
|
? weatherOptions[this.futureWeatherCode].icon |
|
|
|
: 'icon-fair-day' |
|
|
|
return this.getWeatherMessage(this.weatherCode, this.temperature) |
|
|
|
} |
|
|
|
}, |
|
|
|
forecastMessage() { |
|
|
|
if (this.loading) { |
|
|
|
return t('weather_status', 'Loading weather') |
|
|
|
} else { |
|
|
|
return this.futureWeatherCode && this.futureWeatherCode in weatherOptions |
|
|
|
? weatherOptions[this.futureWeatherCode].text( |
|
|
|
this.getLocalizedTemperature(this.futureTemperature), |
|
|
|
this.temperatureUnit, |
|
|
|
true |
|
|
|
) |
|
|
|
: t('weather_status', 'Set location for weather') |
|
|
|
return this.getWeatherMessage(this.futureWeatherCode, this.futureTemperature, true) |
|
|
|
} |
|
|
|
}, |
|
|
|
weatherLinkTarget() { |
|
|
@@ -517,6 +493,30 @@ export default { |
|
|
|
formatTime(time) { |
|
|
|
return moment(time).format('LT') |
|
|
|
}, |
|
|
|
getTemperature(forecasts, offset = 0) { |
|
|
|
return forecasts.length > offset ? forecasts[offset].data.instant.details.air_temperature : '' |
|
|
|
}, |
|
|
|
getWeatherCode(forecasts, offset = 0) { |
|
|
|
return forecasts.length > offset ? forecasts[offset].data.next_1_hours.summary.symbol_code : '' |
|
|
|
}, |
|
|
|
getWeatherIcon(weatherCode, loading) { |
|
|
|
if (loading) { |
|
|
|
return 'icon-loading-small' |
|
|
|
} else { |
|
|
|
return weatherCode && weatherCode in weatherOptions |
|
|
|
? weatherOptions[weatherCode].icon |
|
|
|
: 'icon-fair-day' |
|
|
|
} |
|
|
|
}, |
|
|
|
getWeatherMessage(weatherCode, temperature, later = false) { |
|
|
|
return weatherCode && weatherCode in weatherOptions |
|
|
|
? weatherOptions[weatherCode].text( |
|
|
|
this.getLocalizedTemperature(temperature), |
|
|
|
this.temperatureUnit, |
|
|
|
later |
|
|
|
) |
|
|
|
: t('weather_status', 'Set location for weather') |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
</script> |