DEV 4.4.0.4 - Update NSPanelTs.ts

Developer Version
- New Feature: hiddenCards
This commit is contained in:
Armilar
2024-09-14 12:01:00 +02:00
committed by GitHub
parent 1a629ee8d5
commit 1d730a0ce5

View File

@@ -1,6 +1,6 @@
/*----------------------------------------------------------------------- /*-----------------------------------------------------------------------
TypeScript v4.4.0.3 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne TypeScript v4.4.0.4 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @ticaki / @Britzelpuf / @Sternmiere / @ravenS0ne
- abgestimmt auf TFT 53 / v4.4.0 / BerryDriver 9 / Tasmota 14.1.0 - abgestimmt auf TFT 53 / v4.4.0 / BerryDriver 9 / Tasmota 14.2.0
@joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker @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 NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
icon_mapping.ts: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/icon_mapping.ts (TypeScript muss in global liegen) icon_mapping.ts: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/icon_mapping.ts (TypeScript muss in global liegen)
@@ -122,9 +122,10 @@ ReleaseNotes:
- 19.05.2024 - v4.4.0.1 TFT 53 / 4.4.0 - 19.05.2024 - v4.4.0.1 TFT 53 / 4.4.0
- 13.06.2024 - v4.4.0.2 Calculated energy consumption in relation to dimming mode and relay state (not the energy consumption of the outputs) - 13.06.2024 - v4.4.0.2 Calculated energy consumption in relation to dimming mode and relay state (not the energy consumption of the outputs)
- 13.06.2024 - v4.4.0.3 Check prefix '.tele.' in config.NSPanelReceiveTopic - 13.06.2024 - v4.4.0.3 Check prefix '.tele.' in config.NSPanelReceiveTopic
- 13.09.2024 - v4.4.0.4 New Feature: Hidden Carts
Todo: Todo:
- XX.XX.2024 - v5.0.0 ioBroker Adapter - XX.12.2024 - v5.0.0 ioBroker Adapter
*************************************************************************************************************** ***************************************************************************************************************
* DE: Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObject" gesetzt sein! * * DE: Für die Erstellung der Aliase durch das Skript, muss in der JavaScript Instanz "setObject" gesetzt sein! *
@@ -990,7 +991,7 @@ export const config: Config = {
// _________________________________ DE: Ab hier keine Konfiguration mehr _____________________________________ // _________________________________ DE: Ab hier keine Konfiguration mehr _____________________________________
// _________________________________ EN: No more configuration from here _____________________________________ // _________________________________ EN: No more configuration from here _____________________________________
const scriptVersion: string = 'v4.4.0.3'; const scriptVersion: string = 'v4.4.0.4';
const tft_version: string = 'v4.4.0'; const tft_version: string = 'v4.4.0';
const desired_display_firmware_version = 53; const desired_display_firmware_version = 53;
const berry_driver_version = 9; const berry_driver_version = 9;
@@ -1003,6 +1004,7 @@ let vwIconColor: number[] = [];
let weatherForecast: boolean; let weatherForecast: boolean;
let pageCounter: number = 0; let pageCounter: number = 0;
let alwaysOn: boolean = false; let alwaysOn: boolean = false;
let valueHiddenCards = getState(NSPanel_Path + 'Config.hiddenCards').val;
let buttonToggleState: {[key: string]: boolean} = {}; let buttonToggleState: {[key: string]: boolean} = {};
@@ -1259,7 +1261,7 @@ CheckMQTTPorts();
async function Init_Release() { async function Init_Release() {
const FWVersion = [41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]; const FWVersion = [41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56];
const FWRelease = ['3.3.1','3.4.0','3.5.0','3.5.X','3.6.0','3.7.3','3.8.0','3.8.3','3.9.4','4.0.5','4.1.4','4.2.1','4.3.3','4.4.0','4.5.0','4.6.0']; const FWRelease = ['3.3.1','3.4.0','3.5.0','3.5.X','3.6.0','3.7.3','3.8.0','3.8.3','3.9.4','4.0.5','4.1.4','4.2.1','4.4.0','4.4.0','4.5.0','4.6.0'];
try { try {
if (existsObject(NSPanel_Path + 'Display_Firmware.desiredVersion') == false) { if (existsObject(NSPanel_Path + 'Display_Firmware.desiredVersion') == false) {
await createStateAsync(NSPanel_Path + 'Display_Firmware.desiredVersion', desired_display_firmware_version, { type: 'number', write: false }); await createStateAsync(NSPanel_Path + 'Display_Firmware.desiredVersion', desired_display_firmware_version, { type: 'number', write: false });
@@ -1358,6 +1360,10 @@ async function InitConfigParameters() {
setObject(AliasPath + 'Config.temperatureUnitNumber', {type: 'channel', common: {role: 'buttonSensor', name:'temperatureUnitNumber'}, native: {}}); setObject(AliasPath + 'Config.temperatureUnitNumber', {type: 'channel', common: {role: 'buttonSensor', name:'temperatureUnitNumber'}, native: {}});
await createAliasAsync(AliasPath + 'Config.temperatureUnitNumber.VALUE', NSPanel_Path + 'Config.temperatureUnitNumber', true, <iobJS.StateCommon>{ type: 'number', role: 'state', name: 'VALUE' }); await createAliasAsync(AliasPath + 'Config.temperatureUnitNumber.VALUE', NSPanel_Path + 'Config.temperatureUnitNumber', true, <iobJS.StateCommon>{ type: 'number', role: 'state', name: 'VALUE' });
} }
// Trigger DP for hiddenCards (with hiddenByTrigger)
if (existsObject(NSPanel_Path + 'Config.hiddenCards') == false) {
await createStateAsync(NSPanel_Path + 'Config.hiddenCards', false, { type: 'boolean', write: true });
}
} }
} catch (err: any) { } catch (err: any) {
log('error at function InitConfigParameters: ' + err.message, 'warn'); log('error at function InitConfigParameters: ' + err.message, 'warn');
@@ -1365,6 +1371,21 @@ async function InitConfigParameters() {
} }
InitConfigParameters(); InitConfigParameters();
// Trigger for hidden Cards - if hiddenByTrigger is true/false
on({id: [NSPanel_Path + 'Config.hiddenCards'], change: "ne"}, async function (obj) {
try {
obj.state.val ? log('hidden Cards activated', 'info') : log('hidden Cards disabled', 'info');
valueHiddenCards = obj.state.val
if (obj.state.val) {
activePage = config.pages[0];
pageId = 0
GeneratePage(activePage);
}
} catch (err: any) {
log('error at Trigger hidden Cards Status: ' + err.message, 'warn');
}
});
on({id: [NSPanel_Path + 'Config.ScripgtDebugStatus'], change: "ne"}, async function (obj) { on({id: [NSPanel_Path + 'Config.ScripgtDebugStatus'], change: "ne"}, async function (obj) {
try { try {
obj.state.val ? log('Debug mode activated', 'info') : log('Debug mode disabled', 'info'); obj.state.val ? log('Debug mode activated', 'info') : log('Debug mode disabled', 'info');
@@ -3331,6 +3352,7 @@ function GeneratePage(page: PageType): void {
SendToPanel(GenerateUnlockPage(page)); SendToPanel(GenerateUnlockPage(page));
break; break;
} }
} catch (err: any) { } catch (err: any) {
if (err.message == "Cannot read properties of undefined (reading 'type')") { if (err.message == "Cannot read properties of undefined (reading 'type')") {
log('Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.', 'warn'); log('Please wait a few seconds longer when launching the NSPanel. Not all parameters are loaded yet.', 'warn');
@@ -3338,6 +3360,7 @@ function GeneratePage(page: PageType): void {
log('error at function GeneratePage: ' + err.message, 'warn'); log('error at function GeneratePage: ' + err.message, 'warn');
} }
} }
} }
function HandleHardwareButton(method: NSPanel.EventMethod): void { function HandleHardwareButton(method: NSPanel.EventMethod): void {
@@ -6532,6 +6555,18 @@ function HandleButtonEvent(words: any): void {
pageNum = (((pageId + 1) % config.pages.length) + config.pages.length) % config.pages.length; pageNum = (((pageId + 1) % config.pages.length) + config.pages.length) % config.pages.length;
pageId = pageNum; pageId = pageNum;
UnsubscribeWatcher(); UnsubscribeWatcher();
//-Serching for next unhidden Page----------------------
if (config.pages[pageId].hiddenByTrigger && valueHiddenCards) {
for (let i = pageId; i <= config.pages.length; i++) {
if (i == config.pages.length) {
i = 0
}
if (!config.pages[i].hiddenByTrigger) {
pageId = i;
break;
}
}
}
GeneratePage(config.pages[pageId]); GeneratePage(config.pages[pageId]);
break; break;
case 'bSubNext': case 'bSubNext':
@@ -6543,6 +6578,15 @@ function HandleButtonEvent(words: any): void {
pageNum = (((pageId - 1) % config.pages.length) + config.pages.length) % config.pages.length; pageNum = (((pageId - 1) % config.pages.length) + config.pages.length) % config.pages.length;
pageId = pageNum; pageId = pageNum;
UnsubscribeWatcher(); UnsubscribeWatcher();
//-Searching for previous unhidden Page----------------------
if (config.pages[pageId].hiddenByTrigger && valueHiddenCards) {
for (let i = pageId; i >= 0; i--) {
if (config.pages[i].hiddenByTrigger == false || config.pages[i].hiddenByTrigger == undefined) {
pageId = i;
break;
}
}
}
if (activePage != undefined && activePage!.parent != undefined) { if (activePage != undefined && activePage!.parent != undefined) {
//update pageID //update pageID
for (let i = 0; i < config.pages.length; i++) { for (let i = 0; i < config.pages.length; i++) {
@@ -7670,6 +7714,7 @@ function GetNavigationString(pageId: number): string {
} }
return ''; return '';
} }
function GenerateDetailPage(type: NSPanel.PopupType, optional: NSPanel.mediaOptional | undefined, pageItem: PageItem, placeId: number | undefined): NSPanel.Payload[] { function GenerateDetailPage(type: NSPanel.PopupType, optional: NSPanel.mediaOptional | undefined, pageItem: PageItem, placeId: number | undefined): NSPanel.Payload[] {
if (Debug) log('GenerateDetailPage Übergabe Type: ' + type + ' - optional: ' + optional + ' - pageItem.id: ' + pageItem.id, 'info'); if (Debug) log('GenerateDetailPage Übergabe Type: ' + type + ' - optional: ' + optional + ' - pageItem.id: ' + pageItem.id, 'info');
try { try {
@@ -10129,7 +10174,8 @@ namespace NSPanel {
nextIconColor?: RGB, nextIconColor?: RGB,
home?: string, home?: string,
homeIcon?: string, homeIcon?: string,
homeIconColor?: RGB homeIconColor?: RGB,
hiddenByTrigger?: boolean
}; };