mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-17 22:36:35 +00:00
Use dynamic weather domain icon + icon alignment fix weather more-info (#12781)
This commit is contained in:
parent
85ad6619b7
commit
ffc4ca5b56
@ -29,7 +29,8 @@ import {
|
|||||||
mdiWeatherNight,
|
mdiWeatherNight,
|
||||||
} from "@mdi/js";
|
} from "@mdi/js";
|
||||||
import { HassEntity } from "home-assistant-js-websocket";
|
import { HassEntity } from "home-assistant-js-websocket";
|
||||||
import { updateIsInstalling, UpdateEntity } from "../../data/update";
|
import { UpdateEntity, updateIsInstalling } from "../../data/update";
|
||||||
|
import { weatherIcon } from "../../data/weather";
|
||||||
/**
|
/**
|
||||||
* Return the icon to be used for a domain.
|
* Return the icon to be used for a domain.
|
||||||
*
|
*
|
||||||
@ -101,6 +102,15 @@ export const domainIconWithoutDefault = (
|
|||||||
? mdiCheckCircleOutline
|
? mdiCheckCircleOutline
|
||||||
: mdiCloseCircleOutline;
|
: mdiCloseCircleOutline;
|
||||||
|
|
||||||
|
case "input_datetime":
|
||||||
|
if (!stateObj?.attributes.has_date) {
|
||||||
|
return mdiClock;
|
||||||
|
}
|
||||||
|
if (!stateObj.attributes.has_time) {
|
||||||
|
return mdiCalendar;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case "lock":
|
case "lock":
|
||||||
switch (compareState) {
|
switch (compareState) {
|
||||||
case "unlocked":
|
case "unlocked":
|
||||||
@ -138,15 +148,6 @@ export const domainIconWithoutDefault = (
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "input_datetime":
|
|
||||||
if (!stateObj?.attributes.has_date) {
|
|
||||||
return mdiClock;
|
|
||||||
}
|
|
||||||
if (!stateObj.attributes.has_time) {
|
|
||||||
return mdiCalendar;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "sun":
|
case "sun":
|
||||||
return stateObj?.state === "above_horizon"
|
return stateObj?.state === "above_horizon"
|
||||||
? FIXED_DOMAIN_ICONS[domain]
|
? FIXED_DOMAIN_ICONS[domain]
|
||||||
@ -158,6 +159,9 @@ export const domainIconWithoutDefault = (
|
|||||||
? mdiPackageDown
|
? mdiPackageDown
|
||||||
: mdiPackageUp
|
: mdiPackageUp
|
||||||
: mdiPackage;
|
: mdiPackage;
|
||||||
|
|
||||||
|
case "weather":
|
||||||
|
return weatherIcon(stateObj?.state);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (domain in FIXED_DOMAIN_ICONS) {
|
if (domain in FIXED_DOMAIN_ICONS) {
|
||||||
|
@ -2,9 +2,21 @@ import {
|
|||||||
mdiAlertCircleOutline,
|
mdiAlertCircleOutline,
|
||||||
mdiGauge,
|
mdiGauge,
|
||||||
mdiWaterPercent,
|
mdiWaterPercent,
|
||||||
|
mdiWeatherCloudy,
|
||||||
mdiWeatherFog,
|
mdiWeatherFog,
|
||||||
|
mdiWeatherHail,
|
||||||
|
mdiWeatherLightning,
|
||||||
|
mdiWeatherLightningRainy,
|
||||||
|
mdiWeatherNight,
|
||||||
|
mdiWeatherNightPartlyCloudy,
|
||||||
|
mdiWeatherPartlyCloudy,
|
||||||
|
mdiWeatherPouring,
|
||||||
mdiWeatherRainy,
|
mdiWeatherRainy,
|
||||||
|
mdiWeatherSnowy,
|
||||||
|
mdiWeatherSnowyRainy,
|
||||||
|
mdiWeatherSunny,
|
||||||
mdiWeatherWindy,
|
mdiWeatherWindy,
|
||||||
|
mdiWeatherWindyVariant,
|
||||||
} from "@mdi/js";
|
} from "@mdi/js";
|
||||||
import {
|
import {
|
||||||
HassEntityAttributeBase,
|
HassEntityAttributeBase,
|
||||||
@ -57,7 +69,21 @@ export const weatherSVGs = new Set<string>([
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
export const weatherIcons = {
|
export const weatherIcons = {
|
||||||
|
"clear-night": mdiWeatherNight,
|
||||||
|
cloudy: mdiWeatherCloudy,
|
||||||
exceptional: mdiAlertCircleOutline,
|
exceptional: mdiAlertCircleOutline,
|
||||||
|
fog: mdiWeatherFog,
|
||||||
|
hail: mdiWeatherHail,
|
||||||
|
lightning: mdiWeatherLightning,
|
||||||
|
"lightning-rainy": mdiWeatherLightningRainy,
|
||||||
|
partlycloudy: mdiWeatherPartlyCloudy,
|
||||||
|
pouring: mdiWeatherPouring,
|
||||||
|
rainy: mdiWeatherRainy,
|
||||||
|
snowy: mdiWeatherSnowy,
|
||||||
|
"snowy-rainy": mdiWeatherSnowyRainy,
|
||||||
|
sunny: mdiWeatherSunny,
|
||||||
|
windy: mdiWeatherWindy,
|
||||||
|
"windy-variant": mdiWeatherWindyVariant,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const weatherAttrIcons = {
|
export const weatherAttrIcons = {
|
||||||
@ -437,6 +463,13 @@ export const getWeatherStateIcon = (
|
|||||||
return undefined;
|
return undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const weatherIcon = (state?: string, nightTime?: boolean): string =>
|
||||||
|
!state
|
||||||
|
? undefined
|
||||||
|
: nightTime && state === "partlycloudy"
|
||||||
|
? mdiWeatherNightPartlyCloudy
|
||||||
|
: weatherIcons[state];
|
||||||
|
|
||||||
const DAY_IN_MILLISECONDS = 86400000;
|
const DAY_IN_MILLISECONDS = 86400000;
|
||||||
|
|
||||||
export const isForecastHourly = (
|
export const isForecastHourly = (
|
||||||
|
@ -1,23 +1,9 @@
|
|||||||
import {
|
import {
|
||||||
mdiAlertCircleOutline,
|
|
||||||
mdiEye,
|
mdiEye,
|
||||||
mdiGauge,
|
mdiGauge,
|
||||||
mdiThermometer,
|
mdiThermometer,
|
||||||
mdiWaterPercent,
|
mdiWaterPercent,
|
||||||
mdiWeatherCloudy,
|
|
||||||
mdiWeatherFog,
|
|
||||||
mdiWeatherHail,
|
|
||||||
mdiWeatherLightning,
|
|
||||||
mdiWeatherLightningRainy,
|
|
||||||
mdiWeatherNight,
|
|
||||||
mdiWeatherPartlyCloudy,
|
|
||||||
mdiWeatherPouring,
|
|
||||||
mdiWeatherRainy,
|
|
||||||
mdiWeatherSnowy,
|
|
||||||
mdiWeatherSnowyRainy,
|
|
||||||
mdiWeatherSunny,
|
|
||||||
mdiWeatherWindy,
|
mdiWeatherWindy,
|
||||||
mdiWeatherWindyVariant,
|
|
||||||
} from "@mdi/js";
|
} from "@mdi/js";
|
||||||
import { HassEntity } from "home-assistant-js-websocket";
|
import { HassEntity } from "home-assistant-js-websocket";
|
||||||
import {
|
import {
|
||||||
@ -37,27 +23,10 @@ import {
|
|||||||
getWeatherUnit,
|
getWeatherUnit,
|
||||||
getWind,
|
getWind,
|
||||||
isForecastHourly,
|
isForecastHourly,
|
||||||
|
weatherIcons,
|
||||||
} from "../../../data/weather";
|
} from "../../../data/weather";
|
||||||
import { HomeAssistant } from "../../../types";
|
import { HomeAssistant } from "../../../types";
|
||||||
|
|
||||||
const weatherIcons = {
|
|
||||||
"clear-night": mdiWeatherNight,
|
|
||||||
cloudy: mdiWeatherCloudy,
|
|
||||||
exceptional: mdiAlertCircleOutline,
|
|
||||||
fog: mdiWeatherFog,
|
|
||||||
hail: mdiWeatherHail,
|
|
||||||
lightning: mdiWeatherLightning,
|
|
||||||
"lightning-rainy": mdiWeatherLightningRainy,
|
|
||||||
partlycloudy: mdiWeatherPartlyCloudy,
|
|
||||||
pouring: mdiWeatherPouring,
|
|
||||||
rainy: mdiWeatherRainy,
|
|
||||||
snowy: mdiWeatherSnowy,
|
|
||||||
"snowy-rainy": mdiWeatherSnowyRainy,
|
|
||||||
sunny: mdiWeatherSunny,
|
|
||||||
windy: mdiWeatherWindy,
|
|
||||||
"windy-variant": mdiWeatherWindyVariant,
|
|
||||||
};
|
|
||||||
|
|
||||||
@customElement("more-info-weather")
|
@customElement("more-info-weather")
|
||||||
class MoreInfoWeather extends LitElement {
|
class MoreInfoWeather extends LitElement {
|
||||||
@property({ attribute: false }) public hass!: HomeAssistant;
|
@property({ attribute: false }) public hass!: HomeAssistant;
|
||||||
@ -235,6 +204,7 @@ class MoreInfoWeather extends LitElement {
|
|||||||
return css`
|
return css`
|
||||||
ha-svg-icon {
|
ha-svg-icon {
|
||||||
color: var(--paper-item-icon-color);
|
color: var(--paper-item-icon-color);
|
||||||
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
.section {
|
.section {
|
||||||
margin: 16px 0 8px 0;
|
margin: 16px 0 8px 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user