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
JavaScript
"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