diff --git a/ioBroker/NsPanelTs.ts b/ioBroker/NsPanelTs.ts index 8ad31a46..3ae3afa4 100644 --- a/ioBroker/NsPanelTs.ts +++ b/ioBroker/NsPanelTs.ts @@ -1,5 +1,5 @@ /*----------------------------------------------------------------------- -TypeScript v4.1.4.4 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @Sternmiere / @Britzelpuf / @ravenS0ne / @TT-Tom +TypeScript v4.2.0 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @Sternmiere / @Britzelpuf / @ravenS0ne / @TT-Tom - abgestimmt auf TFT 51 / v4.1.4 / BerryDriver 8 / Tasmota 13.0.0 @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 @@ -149,6 +149,7 @@ ReleaseNotes: - 12.08.2023 - v4.1.4.2 Add onStop function() to Schedules - 13.08.2023 - v4.1.4.3 Add InSel to popUpLight - 13.08.2023 - v4.1.4.4 Add Parameter inSel_ChoiceState to InSel to show/hide Focus + - 21.08.2023 - v4.2.0 Add new alias state for iconcolor and buttontext for icon for subpages *********************************************************************************************************** @@ -478,7 +479,7 @@ let Subpages_1 = 'heading': 'Test Subpages', 'useColor': true, 'items': [ - { navigate: true, id: null, targetPage: 'Abfall', onColor: White, name: 'Abfallkalender'}, + { navigate: true, id: 'alias.0.NSPanel_1.Abfall.event1', targetPage: 'Abfall', name: 'Abfallkalender'}, { navigate: true, id: null, targetPage: 'WLAN', onColor: White, name: 'Gäste WLAN'}, ] }; @@ -3255,6 +3256,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = } let name: string; + let buttonText: string = 'PRESS'; let type: string; // ioBroker @@ -3316,83 +3318,106 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = if (pageItem.navigate) { - if (pageItem.id == null && pageItem.targetPage != undefined){ - let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : 'PRESS'; + if (pageItem.id == null && pageItem.targetPage != undefined) { + 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); if (Debug) console.log('CreateEntity statisch Icon Navi ~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + pageItem.name + '~' + buttonText) 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'; + + } else if (pageItem.id != null && pageItem.targetPage != undefined) { + 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'; + iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId; - if (val === true || val === 'true') { - optVal = '1'; - iconColor = GetIconColor(pageItem, true, useColors); + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + if (existsState(pageItem.id + '.COLORDEC')) { + iconColor = getState(pageItem.id + '.COLORDEC').val; } 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'); + if (val === true || val === 'true') { 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); - } - } + }; + }; + if (val === true || val === 'true') { iconId = iconId2; }; break; + + case 'blind': + iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open'); + iconColor = existsState(pageItem.id + '.COLORDEC') ? getState(pageItem.id + '.COLORDEC').val : GetIconColor(pageItem, existsState(pageItem.id + '.ACTUAL') ? getState(pageItem.id + '.ACTUAL').val : true, useColors); + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + break; + + case 'door': + case 'window': + iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant'); + iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : o.common.role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant'); + + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + if (existsState(pageItem.id + '.COLORDEC')) { + iconColor = getState(pageItem.id + '.COLORDEC').val; + } else { + if (val === true || val === 'true') { + iconColor = GetIconColor(pageItem, false, useColors); + } else { + iconColor = GetIconColor(pageItem, true, useColors); + }; + }; + if (val === true || val === 'true') { iconId = iconId2; } + 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); + iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId; + + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + if (existsState(pageItem.id + '.COLORDEC')) { + iconColor = getState(pageItem.id + '.COLORDEC').val; } else { - iconColor = GetIconColor(pageItem, false, useColors); - if (pageItem.icon !== undefined) { - if (pageItem.icon2 !== undefined) { - iconId = iconId2; - } - } + if (val === true || val === 'true') { + iconColor = GetIconColor(pageItem, false, useColors); + } else { + iconColor = GetIconColor(pageItem, true, useColors); + }; }; + if (val === true || val === 'true') { iconId = iconId2; } break; + + case 'warning': + iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); + iconColor = pageItem.onColor !== undefined ? GetIconColor(pageItem, true, useColors) : getState(pageItem.id + '.LEVEL').val; + name = pageItem.name !== undefined ? pageItem.name : getState(pageItem.id + '.INFO').val; + break; + default: - return '~delete~~~~~'; + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + iconColor = pageItem.onColor !== undefined ? GetIconColor(pageItem, true, useColors) : existsState(pageItem.id + '.COLORDEC') ? getState(pageItem.id + '.COLORDEC').val : 65535; + iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); + break; + // return '~delete~~~~~'; } + if (Debug) console.log('CreateEntity Dynamische Icon Navi ~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText) - return '~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText; + return '~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + 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'; + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : 'PRESS'; if (Debug) console.log('CreateEntity Standard ~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText) - return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText; - } - } + return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText; + } + } switch (o.common.role) { case 'socket': diff --git a/ioBroker/NsPanelTs_without_Examples.ts b/ioBroker/NsPanelTs_without_Examples.ts index d7d20346..d1675259 100644 --- a/ioBroker/NsPanelTs_without_Examples.ts +++ b/ioBroker/NsPanelTs_without_Examples.ts @@ -1,5 +1,5 @@ /*----------------------------------------------------------------------- -TypeScript v4.1.4.4 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @Sternmiere / @Britzelpuf / @ravenS0ne / @TT-Tom +TypeScript v4.2.0 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @Sternmiere / @Britzelpuf / @ravenS0ne / @TT-Tom - abgestimmt auf TFT 51 / v4.1.4 / BerryDriver 8 / Tasmota 13.0.0 @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 @@ -149,6 +149,7 @@ ReleaseNotes: - 12.08.2023 - v4.1.4.2 Add onStop function() to Schedules - 13.08.2023 - v4.1.4.3 Add InSel to popUpLight - 13.08.2023 - v4.1.4.4 Add Parameter inSel_ChoiceState to InSel to show/hide Focus + - 21.08.2023 - v4.2.0 Add new alias state for iconcolor and buttontext for icon for subpages *********************************************************************************************************** @@ -2756,6 +2757,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = } let name: string; + let buttonText: string = 'PRESS'; let type: string; // ioBroker @@ -2817,83 +2819,106 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean = if (pageItem.navigate) { - if (pageItem.id == null && pageItem.targetPage != undefined){ - let buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : 'PRESS'; + if (pageItem.id == null && pageItem.targetPage != undefined) { + 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); if (Debug) console.log('CreateEntity statisch Icon Navi ~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + pageItem.name + '~' + buttonText) 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'; + + } else if (pageItem.id != null && pageItem.targetPage != undefined) { + 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'; + iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId; - if (val === true || val === 'true') { - optVal = '1'; - iconColor = GetIconColor(pageItem, true, useColors); + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + if (existsState(pageItem.id + '.COLORDEC')) { + iconColor = getState(pageItem.id + '.COLORDEC').val; } 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'); + if (val === true || val === 'true') { 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); - } - } + }; + }; + if (val === true || val === 'true') { iconId = iconId2; }; break; + + case 'blind': + iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('window-open'); + iconColor = existsState(pageItem.id + '.COLORDEC') ? getState(pageItem.id + '.COLORDEC').val : GetIconColor(pageItem, existsState(pageItem.id + '.ACTUAL') ? getState(pageItem.id + '.ACTUAL').val : true, useColors); + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + break; + + case 'door': + case 'window': + iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : o.common.role == 'door' ? Icons.GetIcon('door-open') : Icons.GetIcon('window-open-variant'); + iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : o.common.role == 'door' ? Icons.GetIcon('door-closed') : Icons.GetIcon('window-closed-variant'); + + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + if (existsState(pageItem.id + '.COLORDEC')) { + iconColor = getState(pageItem.id + '.COLORDEC').val; + } else { + if (val === true || val === 'true') { + iconColor = GetIconColor(pageItem, false, useColors); + } else { + iconColor = GetIconColor(pageItem, true, useColors); + }; + }; + if (val === true || val === 'true') { iconId = iconId2; } + 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); + iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId; + + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + if (existsState(pageItem.id + '.COLORDEC')) { + iconColor = getState(pageItem.id + '.COLORDEC').val; } else { - iconColor = GetIconColor(pageItem, false, useColors); - if (pageItem.icon !== undefined) { - if (pageItem.icon2 !== undefined) { - iconId = iconId2; - } - } + if (val === true || val === 'true') { + iconColor = GetIconColor(pageItem, false, useColors); + } else { + iconColor = GetIconColor(pageItem, true, useColors); + }; }; + if (val === true || val === 'true') { iconId = iconId2; } break; + + case 'warning': + iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); + iconColor = pageItem.onColor !== undefined ? GetIconColor(pageItem, true, useColors) : getState(pageItem.id + '.LEVEL').val; + name = pageItem.name !== undefined ? pageItem.name : getState(pageItem.id + '.INFO').val; + break; + default: - return '~delete~~~~~'; + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; + iconColor = pageItem.onColor !== undefined ? GetIconColor(pageItem, true, useColors) : existsState(pageItem.id + '.COLORDEC') ? getState(pageItem.id + '.COLORDEC').val : 65535; + iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); + break; + // return '~delete~~~~~'; } + if (Debug) console.log('CreateEntity Dynamische Icon Navi ~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText) - return '~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText; + return '~' + type + '~' + 'navigate.' + pageItem.targetPage + '~' + iconId + '~' + iconColor + '~' + 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'; + buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : 'PRESS'; if (Debug) console.log('CreateEntity Standard ~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText) - return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText; - } - } + return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText; + } + } switch (o.common.role) { case 'socket':