mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-24 08:24:25 +01:00
v3.7.3.2 - Submenu-Item with ALIAS
- Submenu-Item with ALIAS (external Script)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*-----------------------------------------------------------------------
|
||||
TypeScript v3.7.3.1 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar/@Sternmiere/@Britzelpuf
|
||||
TypeScript v3.7.3.2 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar/@Sternmiere/@Britzelpuf
|
||||
- abgestimmt auf TFT 46 / v3.7.3 / BerryDriver 8 / Tasmota 12.3.1
|
||||
@joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker
|
||||
NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
|
||||
@@ -101,10 +101,11 @@ ReleaseNotes:
|
||||
- 20.12.2022 - v3.7.0 Add popUpTimer / New ALIAS Type level.timer
|
||||
- 21.12.2022 - v3.7.0 Add Fan / New ALIAS Type level.mode.fan
|
||||
- 22.12.2022 - v3.7.0 Add InSel - InputSelector with Alias Type buttonSensor (DP .VALUE)
|
||||
- 23.10.2022 - v3.7.0 Upgrade TFT 46
|
||||
- 23.10.2022 - v3.7.0 Upgrade TFT 46
|
||||
- 28.12.2022 - v3.7.3.0 Hotfix - bUp case
|
||||
- 28.12.2022 - v3.7.3.0 Update Berry Version 8
|
||||
- 28.12.2022 - v3.7.3.0 Update Berry Version 8
|
||||
- 29.12.2022 - v3.7.3.1 Hotfix - us-p - DateString - Use long/short Weekday and long/short Month
|
||||
- 29.12.2022 - v3.7.3.2 Add pageItem.id to Submenu; New Parameter targetPage by TT-TOM
|
||||
|
||||
*****************************************************************************************************************
|
||||
* Falls Aliase durch das Skript erstellt werden sollen, muss in der JavaScript Instanz "setObect" gesetzt sein! *
|
||||
@@ -2138,6 +2139,7 @@ function GeneratePageElements(page: Page): string {
|
||||
function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = false): string {
|
||||
try {
|
||||
let iconId = '0';
|
||||
let iconId2 = '0';
|
||||
if (pageItem.id == 'delete') {
|
||||
return '~delete~~~~~';
|
||||
}
|
||||
@@ -2147,38 +2149,127 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
|
||||
// ioBroker
|
||||
if (existsObject(pageItem.id) || pageItem.navigate === true) {
|
||||
|
||||
let iconColor = rgb_dec565(config.defaultColor);
|
||||
|
||||
if (pageItem.navigate) {
|
||||
type = 'button';
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button');
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : 'PRESS';
|
||||
return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + pageItem.name + '~' + buttonText;
|
||||
}
|
||||
|
||||
let o = getObject(pageItem.id)
|
||||
let optVal = '0';
|
||||
let val = null;
|
||||
|
||||
if (existsState(pageItem.id + '.GET')) {
|
||||
val = getState(pageItem.id + '.GET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.GET');
|
||||
} else if (existsState(pageItem.id + '.SET')) {
|
||||
val = getState(pageItem.id + '.SET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.SET');
|
||||
}
|
||||
let o:any
|
||||
if (pageItem.id != null && existsObject(pageItem.id)) {
|
||||
o = getObject(pageItem.id);
|
||||
}
|
||||
|
||||
// Fallback if no name is given
|
||||
name = pageItem.name !== undefined ? pageItem.name : o.common.name.de;
|
||||
|
||||
if (existsState(pageItem.id + '.GET')) {
|
||||
val = getState(pageItem.id + '.GET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.GET');
|
||||
}
|
||||
if (existsState(pageItem.id + '.SET')) {
|
||||
val = getState(pageItem.id + '.SET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.SET');
|
||||
}
|
||||
if (existsState(pageItem.id + '.ACTUAL')) {
|
||||
val = getState(pageItem.id + '.ACTUAL').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ACTUAL');
|
||||
}
|
||||
if (existsState(pageItem.id + '.ON_ACTUAL')) {
|
||||
val = getState(pageItem.id + '.ON_ACTUAL').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
|
||||
}
|
||||
if (existsState(pageItem.id + '.ON_SET')) {
|
||||
val = getState(pageItem.id + '.ON_SET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON_SET');
|
||||
}
|
||||
if (existsState(pageItem.id + '.ON')) {
|
||||
val = getState(pageItem.id + '.ON').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON');
|
||||
}
|
||||
|
||||
let optVal = '0';
|
||||
if (pageItem.navigate) {
|
||||
|
||||
if (pageItem.id == null && pageItem.targetPage != undefined){
|
||||
let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : 'PRESS';
|
||||
type = 'button';
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button');
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
|
||||
return '~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + pageItem.name + '~' + buttonText;
|
||||
} else if (pageItem.id != null && pageItem.targetPage != undefined){
|
||||
let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : 'PRESS';
|
||||
type = 'button';
|
||||
|
||||
switch (o.common.role) {
|
||||
case 'socket':
|
||||
case 'light':
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||
optVal = '0';
|
||||
|
||||
if (val === true || val === 'true') {
|
||||
optVal = '1';
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
} else {
|
||||
iconColor = GetIconColor(pageItem, false, useColors);
|
||||
if (pageItem.icon !== undefined) {
|
||||
if (pageItem.icon2 !== undefined) {
|
||||
iconId = iconId2;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'blind':
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open');
|
||||
iconColor = GetIconColor(pageItem, existsState(pageItem.id + '.ACTUAL') ? getState(pageItem.id + '.ACTUAL').val : true, useColors);
|
||||
break;
|
||||
case 'door':
|
||||
case 'window':
|
||||
if (existsState(pageItem.id + '.ACTUAL')) {
|
||||
if (getState(pageItem.id + '.ACTUAL').val) {
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant');
|
||||
iconColor = GetIconColor(pageItem, false, useColors);
|
||||
} else {
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant');
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'info':
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button');
|
||||
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : Icons.GetIcon('gesture-tap-button');
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
if (val === true || val === 'true') {
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
} else {
|
||||
iconColor = GetIconColor(pageItem, false, useColors);
|
||||
if (pageItem.icon !== undefined) {
|
||||
if (pageItem.icon2 !== undefined) {
|
||||
iconId = iconId2;
|
||||
}
|
||||
}
|
||||
};
|
||||
break;
|
||||
default:
|
||||
return '~delete~~~~~';
|
||||
}
|
||||
return '~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + pageItem.name + '~' + buttonText;
|
||||
} else {
|
||||
type = 'button';
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button');
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : 'PRESS';
|
||||
|
||||
return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + pageItem.name + '~' + buttonText;
|
||||
}
|
||||
}
|
||||
|
||||
switch (o.common.role) {
|
||||
case 'socket':
|
||||
case 'light':
|
||||
type = 'light';
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||
let iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||
iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : o.common.role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
|
||||
optVal = '0';
|
||||
|
||||
if (val === true || val === 'true') {
|
||||
@@ -2200,11 +2291,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb');
|
||||
optVal = '0';
|
||||
|
||||
if (existsState(pageItem.id + '.ON_ACTUAL')) {
|
||||
val = getState(pageItem.id + '.ON_ACTUAL').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
|
||||
}
|
||||
|
||||
if (val === true || val === 'true') {
|
||||
optVal = '1';
|
||||
iconColor = GetIconColor(pageItem, existsState(pageItem.id + '.DIMMER') ? 100 - getState(pageItem.id + '.DIMMER').val : true, useColors);
|
||||
@@ -2216,7 +2302,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
let huecolor = hsv2rgb(getState(pageItem.id + '.HUE').val, 1, 1);
|
||||
let rgb = <RGB>{ red: Math.round(huecolor[0]), green: Math.round(huecolor[1]), blue: Math.round(huecolor[2]) };
|
||||
iconColor = rgb_dec565(pageItem.interpolateColor !== undefined ? rgb : config.defaultOnColor);
|
||||
// RegisterDetailEntityWatcher(id + '.HUE');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2228,11 +2313,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb');
|
||||
optVal = '0';
|
||||
|
||||
if (existsState(pageItem.id + '.ON')) {
|
||||
val = getState(pageItem.id + '.ON').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON');
|
||||
}
|
||||
|
||||
if (val === true || val === 'true') {
|
||||
optVal = '1';
|
||||
iconColor = GetIconColor(pageItem, existsState(pageItem.id + '.DIMMER') ? 100 - getState(pageItem.id + '.DIMMER').val : true, useColors);
|
||||
@@ -2245,11 +2325,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb');
|
||||
optVal = '0';
|
||||
|
||||
if (existsState(pageItem.id + '.ON_ACTUAL')) {
|
||||
val = getState(pageItem.id + '.ON_ACTUAL').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
|
||||
}
|
||||
|
||||
if (val === true || val === 'true') {
|
||||
optVal = '1';
|
||||
iconColor = GetIconColor(pageItem, existsState(pageItem.id + '.DIMMER') ? 100 - getState(pageItem.id + '.DIMMER').val : true, useColors);
|
||||
@@ -2273,11 +2348,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb');
|
||||
optVal = '0';
|
||||
|
||||
if (existsState(pageItem.id + '.ON_ACTUAL')) {
|
||||
val = getState(pageItem.id + '.ON_ACTUAL').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
|
||||
}
|
||||
|
||||
if (val === true || val === 'true') {
|
||||
optVal = '1'
|
||||
iconColor = GetIconColor(pageItem, existsState(pageItem.id + '.DIMMER') ? 100 - getState(pageItem.id + '.DIMMER').val : true, useColors);
|
||||
@@ -2301,14 +2371,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('lightbulb');
|
||||
optVal = '0';
|
||||
|
||||
if (existsState(pageItem.id + '.ON_ACTUAL')) {
|
||||
val = getState(pageItem.id + '.ON_ACTUAL').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
|
||||
} else if (existsState(pageItem.id + '.ON_SET')) {
|
||||
val = getState(pageItem.id + '.ON_SET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ON_SET');
|
||||
}
|
||||
|
||||
if (val === true || val === 'true') {
|
||||
optVal = '1';
|
||||
iconColor = GetIconColor(pageItem, existsState(pageItem.id + '.ACTUAL') ? 100 - getState(pageItem.id + '.ACTUAL').val : true, useColors);
|
||||
@@ -2339,8 +2401,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
gateState = findLocale('window', 'opened');
|
||||
}
|
||||
|
||||
RegisterEntityWatcher(pageItem.id + '.ACTUAL');
|
||||
|
||||
}
|
||||
|
||||
return '~' + type + '~' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + gateState;
|
||||
@@ -2357,12 +2417,9 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
windowState = findLocale('window', 'opened');
|
||||
} else {
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant');
|
||||
//iconId = Icons.GetIcon('window-closed-variant');
|
||||
iconColor = GetIconColor(pageItem, true, useColors);
|
||||
windowState = findLocale('window', 'closed');
|
||||
}
|
||||
|
||||
RegisterEntityWatcher(pageItem.id + '.ACTUAL');
|
||||
}
|
||||
|
||||
return '~' + type + '~' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + windowState;
|
||||
@@ -2392,11 +2449,9 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
if (existsState(pageItem.id + '.ON_ACTUAL')) {
|
||||
optVal = getState(pageItem.id + '.ON_ACTUAL').val;
|
||||
unit = pageItem.unit !== undefined ? pageItem.unit : GetUnitOfMeasurement(pageItem.id + '.ON_ACTUAL');
|
||||
RegisterEntityWatcher(pageItem.id + '.ON_ACTUAL');
|
||||
} else if (existsState(pageItem.id + '.ACTUAL')) {
|
||||
optVal = getState(pageItem.id + '.ACTUAL').val;
|
||||
unit = pageItem.unit !== undefined ? pageItem.unit : GetUnitOfMeasurement(pageItem.id + '.ACTUAL');
|
||||
RegisterEntityWatcher(pageItem.id + '.ACTUAL');
|
||||
}
|
||||
|
||||
if (o.common.role == 'value.temperature') {
|
||||
@@ -2459,11 +2514,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
}
|
||||
}
|
||||
|
||||
if (existsState(pageItem.id + '.SET')) {
|
||||
val = getState(pageItem.id + '.SET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.SET');
|
||||
}
|
||||
|
||||
return '~' + type + '~' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + optVal;
|
||||
|
||||
case 'lock':
|
||||
@@ -2483,7 +2533,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
lockState = findLocale('lock', 'LOCK');
|
||||
}
|
||||
lockState = pageItem.buttonText !== undefined ? pageItem.buttonText : lockState;
|
||||
RegisterEntityWatcher(pageItem.id + '.ACTUAL');
|
||||
}
|
||||
|
||||
return '~' + type + '~' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + lockState;
|
||||
@@ -2492,16 +2541,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
type = 'number';
|
||||
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('plus-minus-variant');
|
||||
|
||||
if (existsState(pageItem.id + '.SET')) {
|
||||
val = getState(pageItem.id + '.SET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.SET');
|
||||
}
|
||||
|
||||
if (existsState(pageItem.id + '.ACTUAL')) {
|
||||
val = getState(pageItem.id + '.ACTUAL').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ACTUAL');
|
||||
}
|
||||
|
||||
iconColor = GetIconColor(pageItem, false, useColors)
|
||||
|
||||
return '~' + type + '~' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + val + '|' + pageItem.minValue + '|' + pageItem.maxValue;
|
||||
@@ -2509,15 +2548,6 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
|
||||
case 'volumeGroup':
|
||||
case 'volume':
|
||||
type = 'number';
|
||||
if (existsState(pageItem.id + '.SET')) {
|
||||
val = getState(pageItem.id + '.SET').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.SET');
|
||||
}
|
||||
if (existsState(pageItem.id + '.ACTUAL')) {
|
||||
val = getState(pageItem.id + '.ACTUAL').val;
|
||||
RegisterEntityWatcher(pageItem.id + '.ACTUAL');
|
||||
}
|
||||
|
||||
iconColor = GetIconColor(pageItem, false, useColors)
|
||||
if (existsState(pageItem.id + '.MUTE')) {
|
||||
getState(pageItem.id + '.MUTE').val ? iconColor = GetIconColor(pageItem, false, useColors) : iconColor = GetIconColor(pageItem, true, useColors);
|
||||
|
||||
Reference in New Issue
Block a user