UNPKG

iobroker.nspanel-lovelace-ui

Version:

NsPanel Lovelace UI is a Firmware for the nextion screen inside of NSPanel in the Design of Lovelace UI Design.

1,158 lines 79.6 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var pageItem_exports = {}; __export(pageItem_exports, { PageItem: () => PageItem }); module.exports = __toCommonJS(pageItem_exports); var import_Color = require("../const/Color"); var typePageItem = __toESM(require("../types/type-pageItem")); var tools = __toESM(require("../const/tools")); var import_icon_mapping = require("../const/icon_mapping"); var import_baseClassPage = require("../classes/baseClassPage"); class PageItem extends import_baseClassPage.BaseClassTriggerd { defaultOnColor = import_Color.Color.White; defaultOffColor = import_Color.Color.Blue; config; dataItems; id; lastPopupType = void 0; parent; tempData = void 0; // use this to save some data while object is active tempInterval; confirmClick = "lock"; timeouts = {}; constructor(config, options) { super({ ...config }); this.panel = config.panel; this.id = config.id; this.config = options; this.parent = config && config.parent; this.name = this.parent ? `${this.parent.name}.${this.id}` : this.id; this.sleep = false; this.enums = options && "enums" in options && options.enums ? options.enums : ""; } static async getPageItem(config, options) { if (options === void 0) { return void 0; } if (config.panel.persistentPageItems[config.id]) { return config.panel.persistentPageItems[config.id]; } const p = new PageItem(config, options); await p.init(); return p; } async init() { var _a, _b, _c; if (!this.config) { return; } const config = structuredClone(this.config); const tempItem = await this.panel.statesControler.createDataItems( config.data, this, {}, "data", config.readOptions ); this.dataItems = { ...config, data: tempItem }; switch (this.dataItems.type) { case "number": case "button": case "input_sel": case "light": case "text": case "fan": { break; } case "shutter": { const data = this.dataItems.data; this.tempData = []; this.tempData[0] = data.up && data.up.writeable; this.tempData[1] = data.stop && data.stop.writeable; this.tempData[2] = data.down && data.down.writeable; this.tempData[3] = data.up2 && data.up2.writeable; this.tempData[4] = data.stop2 && data.stop2.writeable; this.tempData[5] = data.down2 && data.down2.writeable; const list = await this.getListCommands(data.setList); if (list) { for (let a = 0; a < 6; a++) { const test = list && list[a] && list[a].id && await this.panel.statesControler.getObjectAsync(list[a].id); if (test && test.common && test.common.write) { this.tempData[a] = true; } } } if (data.entity1 && data.entity1.value) { if (data.entity1.value.type === "number" && data.entity1.minScale && data.entity1.maxScale && data.entity1.value && data.entity1.value.writeable || data.entity1.value.type === "boolean" && data.entity1.value && data.entity1.value.writeable) { this.tempData[1] = true; this.tempData[3] = true; } } if (data.entity2 && data.entity2.value) { if (data.entity2.value.type === "number" && data.entity2.minScale && data.entity2.maxScale && data.entity2.value && data.entity2.value.writeable) { this.tempData[3] = true; this.tempData[5] = true; } } break; } case "timer": { if (this.dataItems.role === "timer" && this.tempData === void 0) { if ((_c = (_b = (_a = this.dataItems.data.entity1) == null ? void 0 : _a.value) == null ? void 0 : _b.common) == null ? void 0 : _c.role) { if (["value.timer", "level.timer"].indexOf(this.dataItems.data.entity1.value.common.role) !== -1) { this.tempData = { status: "pause", role: "ex-timer" }; break; } this.tempData = { status: "pause", role: "ex-alarm" }; break; } this.tempData = { status: "pause", value: 0, role: "timer" }; if (!this.panel.persistentPageItems[this.id]) { this.panel.persistentPageItems[this.id] = this; } } break; } } if (this.parent && ["screensaver", "screensaver2", "screensaver3", "popupNotify", "popupNotify2"].indexOf(this.parent.card) !== -1) { if (!this.panel.persistentPageItems[this.id]) { if (this.config.modeScr) { switch (this.config.modeScr) { case "left": case "bottom": case "indicator": case "alternate": case "favorit": break; case "mricon": break; case "time": case "date": this.neverDeactivateTrigger = true; break; } } this.panel.persistentPageItems[this.id] = this; await this.controller.statesControler.activateTrigger(this); } } } async getPageItemPayload() { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __; await this.controller.statesControler.activateTrigger(this); this.lastPopupType = void 0; if (this.dataItems && this.config) { this.visibility = false; this.triggerParent = true; const entry = this.dataItems; const message = {}; message.intNameEntity = this.id; switch (entry.type) { case "light": { const item = entry.data; message.type = this.parent && this.parent.card.startsWith("cardGrid") && (this.config.role === "light" || this.config.role === "socket") ? "switch" : "light"; const v = await tools.getValueEntryBoolean(item.entity1); const dimmer = (_a = item.dimmer && item.dimmer.value && await item.dimmer.value.getNumber()) != null ? _a : null; let rgb = (_c = (_b = await tools.getRGBfromRGBThree(item)) != null ? _b : item.color && item.color.true && await item.color.true.getRGBValue()) != null ? _c : null; const nhue = (_d = item.hue && await item.hue.getNumber()) != null ? _d : null; if (rgb === null && nhue) { rgb = (_e = import_Color.Color.hsv2RGB(nhue, 1, 1)) != null ? _e : null; } message.icon = await tools.getIconEntryValue(item.icon, v, "", ""); let colorMode = !item.colorMode ? "none" : await item.colorMode.getBoolean() ? "hue" : "ct"; if (colorMode === "none") { const ctState = item.ct && item.ct.value && await item.ct.value.getState(); const colorState = (_j = (_i = (_h = (_g = (_f = item.Red && await item.Red.getState()) != null ? _f : item.Green && await item.Green.getState()) != null ? _g : item.Blue && await item.Blue.getState()) != null ? _h : item.color && item.color.true && await item.color.true.getState()) != null ? _i : item.hue && await item.hue.getState()) != null ? _j : null; if (ctState && colorState) { if (ctState.ts > colorState.ts) { colorMode = "ct"; } else { colorMode = "hue"; } } else if (ctState) { colorMode = "ct"; } else if (colorState) { colorMode = "hue"; } } message.iconColor = (_l = (_k = colorMode === "hue" ? await tools.GetIconColor( rgb != null ? rgb : void 0, dimmer != null ? dimmer > 30 ? dimmer : 30 : v ) : await tools.getTemperaturColorFromValue(item.ct, dimmer != null ? dimmer : 100)) != null ? _k : await tools.getIconEntryColor(item.icon, dimmer != null ? dimmer : v, import_Color.Color.Yellow)) != null ? _l : ""; if (v) { message.optionalValue = "1"; } else { message.optionalValue = "0"; } message.displayName = this.library.getTranslation( (_n = (_m = await tools.getEntryTextOnOff(item.headline, v)) != null ? _m : message.displayName) != null ? _n : "" ); return tools.getItemMesssage(message); break; } case "shutter": { const item = entry.data; message.type = "shutter"; let value = await tools.getValueEntryNumber(item.entity1); if (value === null) { value = await tools.getValueEntryBoolean(item.entity1); } if (value === null) { this.log.warn(`Entity ${this.config.role} has no value! No Actual or Set`); break; } message.icon = await tools.getIconEntryValue(item.icon, value, "window-open"); message.iconColor = await tools.getIconEntryColor(item.icon, value, import_Color.Color.White); const optionalValue = item.valueList ? await item.valueList.getObject() : [ "arrow-up", //up "stop", //stop "arrow-down" //down ]; let optionalValueC = Array.isArray(optionalValue) && optionalValue.every((a) => typeof a === "string") ? [...optionalValue] : ["", "", ""]; optionalValueC = optionalValueC.splice(0, 3).map((a) => a ? import_icon_mapping.Icons.GetIcon(a) : a); optionalValueC.forEach((a, i) => { if (a) { optionalValueC[i + 3] = this.tempData[i] ? "enable" : "disable"; } else { optionalValueC[i] = ""; optionalValueC[i + 3] = "disable"; } }); optionalValueC[3] = value === 0 ? "disable" : optionalValueC[3]; optionalValueC[5] = value === 100 ? "disable" : optionalValueC[5]; message.optionalValue = optionalValueC.join("|"); message.displayName = this.library.getTranslation( (_p = (_o = await tools.getEntryTextOnOff(item.headline, !!value)) != null ? _o : message.displayName) != null ? _p : "" ); return tools.getItemMesssage(message); } case "number": { if (entry.type === "number") { const item = entry.data; message.type = "number"; const number = (_q = await tools.getValueEntryNumber(item.entity1, false)) != null ? _q : 0; const value = (_r = item.switch1 && await item.switch1.getBoolean()) != null ? _r : null; message.displayName = this.library.getTranslation( (_s = await tools.getEntryTextOnOff(item.text, true)) != null ? _s : "" ); message.icon = (_t = await tools.getIconEntryValue(item.icon, value !== true, "")) != null ? _t : ""; message.iconColor = (_u = await tools.getIconEntryColor(item.icon, value !== true, import_Color.Color.HMIOn)) != null ? _u : ""; let min = item.entity1 && item.entity1.value && item.entity1.value.common.min; let max = item.entity1 && item.entity1.value && item.entity1.value.common.max; min = (_w = (_v = item.minValue1 && await item.minValue1.getNumber()) != null ? _v : min) != null ? _w : 0; max = (_y = (_x = item.maxValue1 && await item.maxValue1.getNumber()) != null ? _x : max) != null ? _y : 100; return tools.getPayload( message.type, message.intNameEntity, message.icon, message.iconColor, message.displayName, `${number}|${min}|${max}` ); } break; } /** * entity1 is value to calculate color * entity2 is display value */ case "text": case "button": case "switch": { if (entry.type === "text" || entry.type === "button" || entry.type === "switch") { const item = entry.data; let value = await tools.getValueEntryNumber(item.entity1, true); if (value === null) { value = await tools.getValueEntryBoolean(item.entity1); } if (value === null) { value = true; } message.displayName = this.library.getTranslation( (_z = await tools.getEntryTextOnOff(item.text, !!value)) != null ? _z : "" ); if (entry.type === "switch") { message.optionalValue = (value != null ? value : true) ? "1" : "0"; } else if (entry.type === "button") { message.optionalValue = (value != null ? value : true) ? "1" : "0"; if (this.parent && this.parent.card === "cardEntities") { message.optionalValue = (_A = this.library.getTranslation(await tools.getEntryTextOnOff(item.text1, !!value))) != null ? _A : message.optionalValue; } } else { switch (entry.role) { case "2values": { message.optionalValue = ``; const val1 = await tools.getValueEntryNumber(item.entity1); const val2 = await tools.getValueEntryNumber(item.entity2); const unit1 = item.entity1 && item.entity1.unit && await item.entity1.unit.getString(); const unit2 = item.entity2 && item.entity2.unit && await item.entity2.unit.getString(); if (val1 !== null && val2 !== null) { message.optionalValue = String(val1) + (unit1 != null ? unit1 : "") + String(val2) + (unit2 != null ? unit2 : ""); if (typeof value === "number") { value = val1 + val2 / 2; } } break; } case "4values": { let val = await tools.getValueEntryString(item.entity1); value = true; if (val === null) { value = false; val = await tools.getValueEntryString(item.entity2); if (val === null) { value = true; val = await tools.getValueEntryString(item.entity3); if (val === null) { value = false; val = await tools.getValueEntryString(item.entity4); } } } if (val) { message.optionalValue = this.library.getTranslation(val); } else { message.optionalValue = ""; } break; } default: { message.optionalValue = this.library.getTranslation( (_C = (_B = await tools.getValueEntryString(item.entity2)) != null ? _B : await tools.getEntryTextOnOff(item.text1, value)) != null ? _C : "" ); } } } if (entry.type === "button" && entry.data.confirm) { if (this.confirmClick === "unlock") { if (this.parent && this.parent.card === "cardEntities") { message.optionalValue = (_D = await entry.data.confirm.getString()) != null ? _D : message.optionalValue; } this.confirmClick = Date.now(); } else { this.confirmClick = "lock"; } } message.icon = await tools.getIconEntryValue(item.icon, value, "home"); switch (entry.role) { case "textNotIcon": { message.icon = (_E = await tools.getIconEntryValue(item.icon, value, "", null, true)) != null ? _E : ""; break; } case "iconNotText": { message.icon = (_F = await tools.getIconEntryValue(item.icon, value, "", null, false)) != null ? _F : ""; break; } case "battery": { const val = (_G = await tools.getValueEntryBoolean(item.entity3)) != null ? _G : false; message.icon = (_H = await tools.getIconEntryValue(item.icon, val, "", "", false)) != null ? _H : ""; break; } case "combined": { message.icon = (_I = await tools.getIconEntryValue(item.icon, value, "", null, false)) != null ? _I : ""; message.icon += (_J = await tools.getIconEntryValue(item.icon, value, "", null, true)) != null ? _J : ""; break; } default: { message.icon = (_L = await tools.getIconEntryValue( item.icon, !!value, "", null, (_K = this.parent && this.parent.card !== "cardEntities" && !this.parent.card.startsWith("screens")) != null ? _K : false )) != null ? _L : ""; } } message.iconColor = await tools.getIconEntryColor(item.icon, value != null ? value : true, import_Color.Color.HMIOn); return tools.getPayload( entry.type, message.intNameEntity, message.icon, message.iconColor, message.displayName, message.optionalValue ); } break; } case "input_sel": { const item = entry.data; message.type = "input_sel"; const value = (_M = await tools.getValueEntryNumber(item.entityInSel)) != null ? _M : await tools.getValueEntryBoolean(item.entityInSel); message.icon = await tools.getIconEntryValue(item.icon, !!(value != null ? value : true), "gesture-tap-button"); message.iconColor = (_N = await tools.getIconEntryColor(item.icon, value != null ? value : true, import_Color.Color.HMIOff)) != null ? _N : import_Color.Color.HMIOn; message.displayName = this.library.getTranslation( (_P = (_O = await tools.getEntryTextOnOff(item.headline, true)) != null ? _O : message.displayName) != null ? _P : "" ); message.optionalValue = this.library.getTranslation( (_Q = await tools.getEntryTextOnOff(item.text, !!value, true)) != null ? _Q : "PRESS" ); this.log.debug(JSON.stringify(message)); return tools.getItemMesssage(message); break; } case "fan": { if (entry.type === "fan") { const item = entry.data; message.type = "fan"; const value = (_R = await tools.getValueEntryBoolean(item.entity1)) != null ? _R : null; message.displayName = this.library.getTranslation( (_T = (_S = await tools.getEntryTextOnOff(item.headline, true)) != null ? _S : message.displayName) != null ? _T : "" ); message.icon = (_U = await tools.getIconEntryValue(item.icon, value, "")) != null ? _U : ""; message.iconColor = (_V = await tools.getIconEntryColor(item.icon, value, import_Color.Color.HMIOn)) != null ? _V : ""; return tools.getPayload( message.type, message.intNameEntity, message.icon, message.iconColor, message.displayName, value ? "1" : "0" ); } } break; /** * 3 Funktionen * 1. Countdown * 2. Wecker stellen * 3. Countdown anzeigen */ case "timer": { if (entry.type === "timer") { const item = entry.data; message.type = "timer"; const value = (_X = (_W = item.entity1 && item.entity1.value && await tools.getValueEntryNumber(item.entity1)) != null ? _W : this.tempData && this.tempData.time) != null ? _X : 0; if (value !== null) { let opt = ""; if (this.tempData) { switch (this.tempData.role) { case "ex-timer": { opt = new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, value)).toLocaleTimeString("de", { hour: "2-digit", minute: "2-digit", second: "2-digit" }); break; } case "ex-alarm": { opt = new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, value)).toLocaleTimeString("de", { hour: "2-digit", minute: "2-digit", second: "2-digit" }); break; } case "timer": { opt = new Date( (/* @__PURE__ */ new Date()).setHours(0, 0, this.tempData.time || 0, 0) ).toLocaleTimeString("de", { hour: "2-digit", minute: "2-digit", second: "2-digit" }); break; } } } const s = item.setValue2 && await item.setValue2.getNumber(); let v = !!value; if (s != null) { v = s > 1; } message.iconColor = await tools.getIconEntryColor(item.icon, v, import_Color.Color.White); message.icon = await tools.getIconEntryValue(item.icon, v, "gesture-tap-button"); message.optionalValue = this.library.getTranslation( (_Y = await tools.getEntryTextOnOff(item.text, value !== 0)) != null ? _Y : opt ); message.displayName = this.library.getTranslation( (__ = (_Z = await tools.getEntryTextOnOff(item.headline, true)) != null ? _Z : message.displayName) != null ? __ : "" ); return tools.getPayload( message.type, message.intNameEntity, message.icon, message.iconColor, message.displayName, message.optionalValue ); } } break; } } } this.log.warn(`Something went wrong on ${this.id} type: ${this.config && this.config.type}!`); return "~~~~~"; } getDetailPayload(message) { var _a; this.triggerParent = false; if (!message.type) { return ""; } switch (message.type) { case "2Sliders": { let result = { type: "2Sliders", icon: "", entityName: "test", slidersColor: "disable", buttonState: "disable", slider1Pos: "disable", slider2Pos: "disable", hueMode: false, hue_translation: "", slider2Translation: "", slider1Translation: "", popup: false }; result = Object.assign(result, message); return tools.getPayload( "entityUpdateDetail", result.entityName, (_a = result.icon) != null ? _a : "", result.slidersColor, result.buttonState === "disable" ? "disable" : result.buttonState ? "1" : "0", String(result.slider1Pos), String(result.slider2Pos), result.hueMode ? "enable" : "disable", result.hue_translation, result.slider2Translation, result.slider1Translation, result.popup ? "enable" : "disable" ); break; } case "insel": { let result = { type: "insel", entityName: "", headline: "", textColor: String(import_Color.Color.rgb_dec565(import_Color.Color.White)), currentState: "", list: "" }; result = Object.assign(result, message); return tools.getPayload( "entityUpdateDetail2", result.entityName, "", result.textColor, result.headline, result.currentState, result.list ); break; } case "popupThermo": { let result = { type: "popupThermo", entityName: "", headline: "", currentState: "", list: "" }; result = Object.assign(result, message); return tools.getPayload(result.headline, result.entityName, result.currentState, result.list); break; } case "popupFan": { let result = { type: "popupFan", entityName: "", icon: "", iconColor: "", buttonstate: "", slider1: "", slider1Max: "", speedText: "", mode: "", modeList: "" }; result = Object.assign(result, message); return tools.getPayload( "entityUpdateDetail", result.entityName, result.icon, result.iconColor, result.buttonstate, result.slider1, result.slider1Max, result.speedText, result.mode, result.modeList ); break; } case "popupTimer": { let result = { type: "popupTimer", entityName: "", iconColor: "", minutes: "", seconds: "", editable: "0", action1: "", action2: "", action3: "", text1: "", text2: "", text3: "" }; result = Object.assign(result, message); return tools.getPayload( "entityUpdateDetail", result.entityName, "", result.iconColor, result.entityName, result.minutes, result.seconds, result.editable, result.action1, result.action2, result.action3, result.text1, result.text2, result.text3 ); break; } case "popupShutter": { let result = { type: "popupShutter", entityName: "", pos1: "", text2: "", pos1text: "", icon: "", iconL1: "", iconM1: "", iconR1: "", statusL1: "disable", statusM1: "disable", statusR1: "disable", pos2text: "", iconL2: "", iconM2: "", iconR2: "", statusL2: "disable", statusM2: "disable", statusR2: "disable", pos2: "disable" }; result = Object.assign(result, message); return tools.getPayload( "entityUpdateDetail", result.entityName, result.pos1, result.text2, result.pos1text, result.icon, result.iconL1, result.iconM1, result.iconR1, result.statusL1, result.statusM1, result.statusR1, result.pos2text, result.iconL2, result.iconM2, result.iconR2, result.statusL2, result.statusM2, result.statusR2, result.pos2 ); } } return ""; } async GeneratePopup(mode) { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da, _ea, _fa, _ga, _ha, _ia, _ja; if (!this.config || !this.dataItems) { return null; } const entry = this.dataItems; let message = {}; message.entityName = this.id; this.visibility = true; this.lastPopupType = mode; switch (mode) { case "popupLightNew": case "popupLight": { switch (this.config.role) { case "light": case "socket": case "dimmer": case "hue": case "ct": case "rgbThree": case "rgbSingle": case "rgb.hex": default: { message.type = "2Sliders"; if (message.type !== "2Sliders" || entry.type !== "light") { return null; } const item = entry.data; message.buttonState = (_a = await tools.getValueEntryBoolean(item.entity1)) != null ? _a : "disable"; const dimmer = item.dimmer && item.dimmer.value && await item.dimmer.value.getNumber(); if (dimmer != null && item.dimmer) { item.dimmer.minScale; if (item.dimmer.minScale != void 0 && item.dimmer.maxScale) { message.slider1Pos = Math.trunc( import_Color.Color.scale( dimmer, await item.dimmer.minScale.getNumber(), await item.dimmer.maxScale.getNumber(), 100, 0 ) ); } else { message.slider1Pos = dimmer; } } if (message.buttonState !== "disable") { message.icon = await tools.getIconEntryValue(item.icon, message.buttonState, "", ""); } message.slidersColor = (_c = await tools.getIconEntryColor( item.icon, message.slider1Pos === void 0 || message.slider1Pos === "disable" ? null : (_b = message.slider1Pos) != null ? _b : message.buttonState === true, import_Color.Color.White )) != null ? _c : "disable"; let rgb = null; switch (this.config.role) { case "socket": case "light": case "dimmer": case "ct": break; case "hue": { const nhue = (_d = item.hue && await item.hue.getNumber()) != null ? _d : null; if (nhue != null) { rgb = (_e = import_Color.Color.hsv2RGB(nhue, 1, 1)) != null ? _e : null; } break; } case "rgbThree": { rgb = (_f = await tools.getRGBfromRGBThree(item)) != null ? _f : null; break; } case "rgbSingle": { rgb = (_g = item.color && item.color.true && await item.color.true.getRGBValue()) != null ? _g : null; break; } case "rgb.hex": { rgb = (_h = item.color && item.color.true && await item.color.true.getRGBValue()) != null ? _h : null; break; } } message.slider2Pos = "disable"; if (item.White) { const val = await tools.getScaledNumber(item.White); message.slider2Pos = val != null ? val : "disable"; } else if (item.ct && item.ct.value) { const ct = await tools.getSliderCTFromValue(item.ct); if (ct !== null) { message.slider2Pos = parseInt(ct); } } let colorMode = !item.colorMode ? "none" : await item.colorMode.getBoolean() ? "hue" : "ct"; if (colorMode === "none") { const ctState = item.ct && item.ct.value && await item.ct.value.getState(); const colorState = (_m = (_l = (_k = (_j = (_i = item.Red && await item.Red.getState()) != null ? _i : item.Green && await item.Green.getState()) != null ? _j : item.Blue && await item.Blue.getState()) != null ? _k : item.color && item.color.true && await item.color.true.getState()) != null ? _l : item.hue && await item.hue.getState()) != null ? _m : null; if (ctState && colorState) { if (ctState.ts > colorState.ts) { colorMode = "ct"; } else { colorMode = "hue"; } } else if (ctState) { colorMode = "ct"; } else if (colorState) { colorMode = "hue"; } } message.hueMode = rgb !== null; if (rgb !== null && colorMode === "hue") { message.slidersColor = await tools.GetIconColor( rgb, message.slider1Pos !== "disable" && message.slider1Pos != null ? message.slider1Pos > 30 ? message.slider1Pos : 30 : message.buttonState !== "disable" && message.buttonState !== false ); } if (message.slider2Pos !== "disable" && colorMode === "ct") { message.slidersColor = (_n = await tools.getTemperaturColorFromValue(item.ct, dimmer != null ? dimmer : 100)) != null ? _n : ""; } message.popup = !!((_o = item.entityInSel) == null ? void 0 : _o.value); message.slider1Translation = (_p = item.text1 && item.text1.true && await item.text1.true.getString()) != null ? _p : void 0; message.slider2Translation = (_q = item.text2 && item.text2.true && await item.text2.true.getString()) != null ? _q : void 0; message.hue_translation = (_r = item.text3 && item.text3.true && await item.text3.true.getString()) != null ? _r : void 0; if (message.slider1Translation !== void 0) { message.slider1Translation = this.library.getTranslation(message.slider1Translation); } if (message.slider2Translation !== void 0) { message.slider2Translation = this.library.getTranslation(message.slider2Translation); } if (message.hue_translation !== void 0) { message.hue_translation = this.library.getTranslation(message.hue_translation); } break; } } break; } case "popupFan": { if (entry.type === "fan") { const item = entry.data; message.type = "popupFan"; if (message.type !== "popupFan") { break; } const value = (_s = await tools.getValueEntryBoolean(item.entity1)) != null ? _s : null; message.icon = (_t = await tools.getIconEntryValue(item.icon, value, "")) != null ? _t : ""; message.iconColor = (_u = await tools.getIconEntryColor(item.icon, value, import_Color.Color.HMIOn)) != null ? _u : ""; message.slider1 = String((_v = await tools.getScaledNumber(item.speed)) != null ? _v : ""); message.slider1Max = String( (_w = item.speed && item.speed.maxScale && await item.speed.maxScale.getNumber()) != null ? _w : "100" ); message.buttonstate = value ? "1" : "0"; message.speedText = this.library.getTranslation( (_x = await tools.getEntryTextOnOff(item.text, value)) != null ? _x : "" ); message.mode = this.library.getTranslation( (_y = await tools.getValueEntryString(item.entityInSel)) != null ? _y : "" ); let list = (_A = (_z = item.valueList && await item.valueList.getObject()) != null ? _z : item.valueList && await item.valueList.getString()) != null ? _A : ""; if (list !== null) { if (Array.isArray(list)) { list = list.join("?"); } } message.modeList = typeof list === "string" ? list : ""; } break; } case "popupThermo": case "popupInSel": { if (entry.type !== "input_sel" && entry.type !== "light") { break; } const item = entry.data; message.type = "insel"; if (!(message.type === "insel")) { return null; } const value = (_B = await tools.getValueEntryBoolean(item.entityInSel)) != null ? _B : true; message.textColor = await tools.getEntryColor(item.color, value, import_Color.Color.White); message.currentState = mode === "popupThermo" ? this.library.getTranslation((_C = item.headline && await item.headline.getString()) != null ? _C : "") : "entity2" in item ? (_D = await tools.getValueEntryString(item.entity2)) != null ? _D : "" : ""; message.headline = this.library.getTranslation( (_E = item.headline && await item.headline.getString()) != null ? _E : "" ); const sList = item.entityInSel && await this.getListFromStates( item.entityInSel, item.valueList, entry.role, "valueList2" in item ? item.valueList2 : void 0 ); if (sList !== void 0 && sList.list !== void 0 && sList.value !== void 0) { message.textColor = await tools.getEntryColor(item.color, !!value, import_Color.Color.White); if (sList.list.length > 0) { sList.list.splice(48); message.list = Array.isArray(sList.list) ? sList.list.map((a) => tools.formatInSelText(a)).join("?") : ""; message.currentState = tools.formatInSelText(this.library.getTranslation(sList.value)); if (mode !== "popupThermo") { break; } message = { ...message, type: "popupThermo" }; if (message.type === "popupThermo") { message.headline = this.library.getTranslation( (_G = (_F = await tools.getEntryTextOnOff(item.headline, true)) != null ? _F : message.headline) != null ? _G : "" ); } break; } } let list = (_I = (_H = item.valueList && await item.valueList.getObject()) != null ? _H : item.valueList && await item.valueList.getString()) != null ? _I : [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" ]; if (list !== null) { if (typeof list === "string") { list = list.split("?"); } if (Array.isArray(list)) { list.splice(48); } } else { list = []; } list = list.map((a) => tools.formatInSelText(this.library.getTranslation(a))); message.list = list.join("?"); if (message.list && message.list.length > 940) { message.list = message.list.slice(0, 940); this.log.warn("Value list has more as 940 chars!"); } const n = (_J = await tools.getValueEntryNumber(item.entityInSel)) != null ? _J : 0; if (Array.isArray(list) && n != null && n < list.length) { message.currentState = list[n]; } if (mode !== "popupThermo") { break; } message = { ...message, type: "popupThermo" }; if (message.type === "popupThermo") { message.headline = this.library.getTranslation( (_L = (_K = await tools.getEntryTextOnOff(item.headline, true)) != null ? _K : message.headline) != null ? _L : "" ); } break; } case "popupNotify": break; case "popupShutter": { if (entry.type !== "shutter") { break; } const item = entry.data; message.type = "popupShutter"; if (!(message.type === "popupShutter")) { break; } let pos1 = (_M = await tools.getValueEntryNumber(item.entity1)) != null ? _M : "disable"; if (pos1 === "disable") { pos1 = (_N = await tools.getValueEntryBoolean(item.entity1)) != null ? _N : "disable"; } message.text2 = (_O = await tools.getEntryTextOnOff(item.text, typeof pos1 === "boolean" ? pos1 : true)) != null ? _O : ""; message.text2 = this.library.getTranslation(message.text2); const pos2 = (_P = await tools.getValueEntryNumber(item.entity2)) != null ? _P : "disable"; if (pos1 !== "disable") { message.icon = (_Q = await tools.getIconEntryValue(item.icon, pos1, "")) != null ? _Q : ""; } else if (pos2 !== "disable") { message.icon = (_R = await tools.getIconEntryValue(item.icon, pos2, "")) != null ? _R : ""; } const optionalValue = item.valueList ? await item.valueList.getObject() : [ "arrow-up", //up "stop", //stop "arrow-down", //down "arrow-top-right", //t-up "stop", //t-stop "arrow-bottom-left" //t-down ]; const arr = [pos1, pos2]; for (let index = 0; index < arr.length; index++) { const pos = arr[index]; if (pos == "disable") { continue; } const i = index * 3; let optionalValueC = Array.isArray(optionalValue) && optionalValue.every((a) => typeof a === "string") ? [...optionalValue] : ["", "", ""]; optionalValueC = optionalValueC.splice(i, 3).map((a) => a ? import_icon_mapping.Icons.GetIcon(a) : a); optionalValueC.forEach((a, i2) => { if (a) { optionalValueC[i2 + 3] = this.tempData[i2] ? "enable" : "disable"; } else { optionalValueC[i2] = ""; optionalValueC[i2 + 3] = "disable"; } }); if (index === 0) { message.pos1 = typeof pos === "boolean" ? "disable" : String(pos); message.pos1text = (_S = await tools.getEntryTextOnOff(item.text1, true)) != null ? _S : ""; message.pos1text = this.library.getTranslation(message.pos1text); message.iconL1 = optionalValueC[0]; message.iconM1 = optionalValueC[1]; message.iconR1 = optionalValueC[2]; message.statusL1 = (typeof pos === "boolean" ? false : pos === 0) ? "disable" : optionalValueC[3]; message.statusM1 = (typeof pos === "boolean" ? pos : pos === "disabled") ? "disable" : optionalValueC[4]; message.statusR1 = (typeof pos === "boolean" ? !pos : pos === 100) ? "disable" : optionalValueC[5]; } else { message.pos2 = typeof pos === "boolean" ? "disable" : String(pos); message.pos2text = (_T = await tools.getEntryTextOnOff(item.text2, true)) != null ? _T : ""; message.pos2text = this.library.getTranslation(message.pos2text); message.iconL2 = optionalValueC[0]; message.iconM2 = optionalValueC[1]; message.iconR2 = optionalValueC[2]; message.statusL2 = pos === 0 ? "disable" : optionalValueC[3]; message.statusM2 = optionalValueC[4]; message.statusR2 = pos === 100 ? "disable" : optionalValueC[5]; } } break; } case "popupTimer": { if (entry.type !== "timer") { break; } const item = entry.data; message.type = "popupTimer"; if (!(message.type === "popupTimer")) { break; } if (this.tempData) { let value = !item.setValue1 ? (_U = item.entity1 && await tools.getValueEntryNumber(item.entity1)) != null ? _U : null : (_V = this.tempData && this.tempData.time) != null ? _V : 0; if (value == null) { value = 0; } switch (this.tempData.role) { case "ex-timer": { message.iconColor = await tools.GetIconColor(item.icon, value > 0); message.minutes = new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, value)).toLocaleTimeString("de", { minute: "2-digit" }); message.seconds = new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, value)).toLocaleTimeString("de", { second: "2-digit" }); break; } case "ex-alarm": { message.iconColor = await tools.GetIconColor(item.icon, value > 0); message.minutes = new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, value)).toLocaleTimeString("de", { hour: "2-digit" }); message.seconds = new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, value)).toLocaleTimeString("de", { minute: "2-digit" }); break; } case "timer": { message.iconColor = await tools.GetIconColor(item.icon, this.tempData.status === "run"); message.minutes = Math.floor(this.tempData.value / 60).toFixed(0); message.seconds = Math.floor(this.tempData.value % 60).toFixed(0); break; } } switch (this.tempData.role) { case "ex-alarm": { const status = item.setValue2 && await item.setValue2.getNumber(); if (status == null) { break; } switch (status) { case 0: case 1: { message.editable = ((_X = (_W = item.entity1) == null ? void 0 : _W.set) == null ? void 0 : _X.writeable) ? "1" : "0"; message.action1 = ((_Y = item.setValue2) == null ? void 0 : _Y.writeable) ? "begin" : "disable"; message.action3 = ((__ = (_Z = item.entity1) == null ? void 0 : _Z.set) == null ? void 0 : __.writeable) ? "clear" : "disable"; message.text1 = this.library.getTranslation("continue"); message.text3 = this.library.getTranslation("clear"); break; } case 2: { message.editable = "0"; message.action2 = ((_$ = item.setValue2) == null ? void 0 : _$.writeable) ? "pause" : "disable"; message.action3 = ((_ba = (_aa = item.entity1) == null ? void 0 : _aa.set) == null ? void 0 : _ba.writeable) ? "clear" : "disable"; message.text2 = this.library.getTranslation("stop"); message.text3 = this.library.getTranslation("clear"); break; } } break; } case "ex-timer": { const status = item.setValue2 && await item.setValue2.getNumber(); if (status == null) { break; } switch (status) { case 0: case 1: { message.editable = ((_da = (_ca = item.entity1) == null ? void 0 : _ca.set) == null ? void 0 : _da.writeable) ? "1" : "0"; message.action1 = ((_ea = item.setValue2) == null ? void 0 : _ea.writeable) ? "begin" : "disable"; message.action3 = ((_ga = (_fa = item.entity1) == null ? void 0 : _fa.set) == null ? void 0 : _ga.writeable) ? "clear" : "disable"; message.text1 = this.library.getTranslation("start"); message.text3 = this.library.getTranslation("clear"); break; } case 2: { message.editable = "0"; message.action2 = ((_ha = item.setValue2) == null ? void 0 : _ha.writeable) ? "pause" : "disable"; message.action3 = ((_ja = (_ia = item.entity1) == null ? void 0 : _ia.set) == null ? void 0 : _ja.writeable) ? "clear" : "disable"; message.text2 = this.library.getTranslation("stop"); message.text3 = this.library.getTranslation("clear"); break; } } break; } case "timer": { if (this.tempData.status === "run") { message.editable = "0"; message.action2 = "pause"; message.text2 = this.library.getTranslation("pause"); } else if (this.tempData.value > 0) { message.editable = "0"; message.action1 = "begin"; message.action3 = "clear"; message.text1 = this.library.getTranslation("continue"); message.text3 = this.library.getTranslation("clear"); } else { message.editable = "1"; message.action1 = "begin"; message.action3 = "clear"; message.text1 = this.library.getTranslation("Start"); message.text3 = this.library.getTranslation("clear"); } break; } } } break; } } return this.getDetailPayload(message); } getLogname() { return this.parent