websocket backend + frontend patching.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
import type Device from "$lib/models/device";
|
||||
import { SupportFlags } from "$lib/models/device";
|
||||
import { rgb, type ColorRGB } from "../models/color";
|
||||
import Icon from "./Icon.svelte";
|
||||
import DeviceIcon from "./DeviceIcon.svelte";
|
||||
|
||||
export let device: Device;
|
||||
|
||||
@@ -22,18 +22,18 @@
|
||||
let deviceTitle: string;
|
||||
let iconColor: ColorRGB | null;
|
||||
let barColor: ColorRGB | null;
|
||||
let barPercentage: number | null;
|
||||
let barFraction: number | null;
|
||||
let roundboiText: string | null;
|
||||
$: {
|
||||
// TODO: Fix device.name on the backend
|
||||
const nameAlias = device.aliases.find(a => a.startsWith("lucifer:name:"));
|
||||
const nameAlias = device.aliases?.find(a => a.startsWith("lucifer:name:"));
|
||||
if (nameAlias != null) {
|
||||
deviceTitle = nameAlias.slice("lucifer:name:".length);
|
||||
} else {
|
||||
deviceTitle = "";
|
||||
}
|
||||
|
||||
barPercentage = null;
|
||||
barFraction = null;
|
||||
barColor = null;
|
||||
iconColor = null;
|
||||
|
||||
@@ -46,29 +46,29 @@
|
||||
}
|
||||
|
||||
if (sflags & SupportFlags.Color) {
|
||||
iconColor = device.activeColorRgb;
|
||||
iconColor = device.desiredColorRgb;
|
||||
} else {
|
||||
iconColor = null;
|
||||
}
|
||||
|
||||
if (sflags & SupportFlags.SensorPresence) {
|
||||
barColor = rgb(0.5,0.5,0.5);
|
||||
barPercentage = Math.max(0, (300 - (device.sensors.lastMotion||300))/300) * 100;
|
||||
barFraction = Math.max(0, (300 - (device.sensors.lastMotion!=null?device.sensors.lastMotion:300))/300);
|
||||
}
|
||||
|
||||
if (sflags & SupportFlags.Temperature) {
|
||||
barColor = rgb(1.000,0.2,0.2);
|
||||
barPercentage = Math.min(1, Math.max(0, (device.desiredState.temperature||0) - 5) / 35) * 100;
|
||||
barFraction = Math.min(1, Math.max(0, (device.desiredState.temperature||0) - 5) / 35) * 1;
|
||||
}
|
||||
|
||||
if (sflags & SupportFlags.Intensity) {
|
||||
if (sflags & SupportFlags.Color) {
|
||||
barColor = device.activeColorRgb;
|
||||
barColor = device.desiredColorRgb;
|
||||
} else {
|
||||
barColor = rgb(1.000,0.671,0.355);
|
||||
}
|
||||
|
||||
barPercentage = device.desiredState.intensity;
|
||||
barFraction = device.desiredState.intensity;
|
||||
}
|
||||
|
||||
if (sflags & SupportFlags.SensorTemperature && !!device.sensors.temperature) {
|
||||
@@ -101,20 +101,20 @@
|
||||
<div class="row">
|
||||
<div class="row-icon">
|
||||
{#if iconColor != null}
|
||||
<Icon name={device.hwMetadata?.icon||"generic_ball"} brightColor={iconColor} darkColor={darkColor} />
|
||||
<DeviceIcon name={device.hwMetadata?.icon||"generic_ball"} brightColor={iconColor} darkColor={darkColor} />
|
||||
{:else}
|
||||
<Icon name={device.hwMetadata?.icon||"generic_ball"} brightColor={darkColor} darkColor={darkColor}>
|
||||
<DeviceIcon name={device.hwMetadata?.icon||"generic_ball"} brightColor={darkColor} darkColor={darkColor}>
|
||||
{#if !!roundboiText}
|
||||
<div class="roundboi-text">{roundboiText}</div>
|
||||
{/if}
|
||||
</Icon>
|
||||
</DeviceIcon>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="title">{displayTitle}</div>
|
||||
</div>
|
||||
<div class="flatboi">
|
||||
{#if barColor != null && barPercentage != null}
|
||||
<div style="width: {barPercentage*100}%; background-color: rgb({barColor.red*255},{barColor.green*255},{barColor.blue*255})" class="flatboi2"></div>
|
||||
{#if barColor != null && barFraction != null}
|
||||
<div style="width: {barFraction*100}%; background-color: rgb({barColor.red*255},{barColor.green*255},{barColor.blue*255})" class="flatboi2"></div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user