some types

This commit is contained in:
ticaki
2024-01-02 17:36:30 +01:00
parent 6cc41bf510
commit e2acb70a1c

View File

@@ -451,7 +451,7 @@ let NSPanel_Service_SubPage: PageEntities =
] ]
}; };
//Level_2 //Level_2
let NSPanel_Wifi_Info_1: PageEntities = let NSPanel_Wifi_Info_1: PageType =
{ {
'type': 'cardEntities', 'type': 'cardEntities',
'heading': findLocaleServMenu('nspanel_wifi1'), 'heading': findLocaleServMenu('nspanel_wifi1'),
@@ -467,7 +467,7 @@ let NSPanel_Service_SubPage: PageEntities =
] ]
}; };
let NSPanel_Wifi_Info_2: PageEntities = let NSPanel_Wifi_Info_2: PageType =
{ {
'type': 'cardEntities', 'type': 'cardEntities',
'heading': findLocaleServMenu('nspanel_wifi2'), 'heading': findLocaleServMenu('nspanel_wifi2'),
@@ -2077,7 +2077,7 @@ InitPopupNotify();
let subscriptions: any = {}; let subscriptions: any = {};
let screensaverEnabled: boolean = false; let screensaverEnabled: boolean = false;
let pageId = 0; let pageId = 0;
let activePage: Page | undefined = undefined; let activePage: PageType | undefined = undefined;
//Send time to NSPanel //Send time to NSPanel
let scheduleSendTime = schedule('* * * * *', () => { let scheduleSendTime = schedule('* * * * *', () => {
@@ -2977,6 +2977,9 @@ function HandleMessage(typ: string, method: string, page: number | undefined, wo
if (!isNaN(parseInt(tempPageItem[0]))){ if (!isNaN(parseInt(tempPageItem[0]))){
tempId = activePage!.items[tempPageItem[0]].id; tempId = activePage!.items[tempPageItem[0]].id;
placeId = parseInt(tempPageItem[0]) placeId = parseInt(tempPageItem[0])
if (tempId == undefined) {
throw new Error(`Missing id in HandleMessage!`)
}
} else { } else {
tempId = tempPageItem[0]; tempId = tempPageItem[0];
} }
@@ -3036,7 +3039,7 @@ function findPageItem(searching: String): PageItem {
} }
} }
function GeneratePage(page: Page): void { function GeneratePage(page: PageType): void {
try { try {
activePage = page; activePage = page;
setIfExists(NSPanel_Path + 'ActivePage.type', activePage!.type); setIfExists(NSPanel_Path + 'ActivePage.type', activePage!.type);
@@ -3044,38 +3047,38 @@ function GeneratePage(page: Page): void {
setIfExists(NSPanel_Path + 'ActivePage.id0', activePage!.items[0].id); setIfExists(NSPanel_Path + 'ActivePage.id0', activePage!.items[0].id);
switch (page.type) { switch (page.type) {
case 'cardEntities': case 'cardEntities':
SendToPanel(GenerateEntitiesPage(<PageEntities>page)); SendToPanel(GenerateEntitiesPage(page));
break; break;
case 'cardThermo': case 'cardThermo':
SendToPanel(GenerateThermoPage(<PageThermo>page)); SendToPanel(GenerateThermoPage(page));
break; break;
case 'cardGrid': case 'cardGrid':
SendToPanel(GenerateGridPage(<PageGrid>page)); SendToPanel(GenerateGridPage(page));
break; break;
case 'cardGrid2': case 'cardGrid2':
SendToPanel(GenerateGridPage2(<PageGrid2>page)); SendToPanel(GenerateGridPage2(page));
break; break;
case 'cardMedia': case 'cardMedia':
useMediaEvents = true; useMediaEvents = true;
SendToPanel(GenerateMediaPage(<PageMedia>page)); SendToPanel(GenerateMediaPage(page));
break; break;
case 'cardAlarm': case 'cardAlarm':
SendToPanel(GenerateAlarmPage(<PageAlarm>page)); SendToPanel(GenerateAlarmPage(page));
break; break;
case 'cardQR': case 'cardQR':
SendToPanel(GenerateQRPage(<PageQR>page)); SendToPanel(GenerateQRPage(page));
break; break;
case 'cardPower': case 'cardPower':
SendToPanel(GeneratePowerPage(<PagePower>page)); SendToPanel(GeneratePowerPage(page));
break; break;
case 'cardChart': case 'cardChart':
SendToPanel(GenerateChartPage(<PageChart>page)); SendToPanel(GenerateChartPage(page));
break; break;
case 'cardLChart': case 'cardLChart':
SendToPanel(GenerateChartPage(<PageChart>page)); SendToPanel(GenerateChartPage(page));
break; break;
case 'cardUnlock': case 'cardUnlock':
SendToPanel(GenerateUnlockPage(<PageUnlock>page)); SendToPanel(GenerateUnlockPage(page));
break; break;
} }
} catch (err: any) { } catch (err: any) {
@@ -3200,7 +3203,7 @@ function GenerateGridPage2(page: PageGrid2): Payload[] {
} }
} }
function GeneratePageElements(page: Page): string { function GeneratePageElements(page: PageType): string {
try { try {
activePage = page; activePage = page;
let maxItems = 0; let maxItems = 0;
@@ -3245,7 +3248,7 @@ function GeneratePageElements(page: Page): string {
for (let index = 0; index < maxItems; index++) { for (let index = 0; index < maxItems; index++) {
if (page.items[index] !== undefined) { if (page.items[index] !== undefined) {
pageData += CreateEntity(page.items[index], index, page.useColor); pageData += CreateEntity(page.items[index], index, 'useColor' in page ? page.useColor : false );
} }
} }
if (Debug) log('GeneratePageElements pageData ' + pageData, 'info'); if (Debug) log('GeneratePageElements pageData ' + pageData, 'info');
@@ -3268,7 +3271,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
let buttonText: string = 'PRESS'; let buttonText: string = 'PRESS';
let type: string; let type: string;
if (existsState(pageItem.id + '.ACTUAL') == false) { if (pageItem.id && existsState(pageItem.id + '.ACTUAL') == false) {
if (pageItem.popupTimerType == 'TimeCard' && pageItem.autoCreateALias == true) { if (pageItem.popupTimerType == 'TimeCard' && pageItem.autoCreateALias == true) {
log(NSPanel_Path + 'Userdata.' + pageItem.id + '.Time') log(NSPanel_Path + 'Userdata.' + pageItem.id + '.Time')
createStateAsync(NSPanel_Path + 'Userdata.' + pageItem.id + '.Time', '0', { type: 'number' }); createStateAsync(NSPanel_Path + 'Userdata.' + pageItem.id + '.Time', '0', { type: 'number' });
@@ -3280,7 +3283,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
} }
// ioBroker // ioBroker
if (existsObject(pageItem.id) || pageItem.navigate === true) { if (pageItem.id && existsObject(pageItem.id) || pageItem.navigate === true) {
let iconColor = rgb_dec565(config.defaultColor); let iconColor = rgb_dec565(config.defaultColor);
let optVal = '0'; let optVal = '0';
@@ -3824,7 +3827,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
let valueScale = val; let valueScale = val;
if (iconvalmin == 0 && iconvalmax == 1) { if (iconvalmin == 0 && iconvalmax == 1) {
iconColor = (getState(pageItem.id).val == 1) ? rgb_dec565(colorScale0) : rgb_dec565(colorScale10); iconColor = (!pageItem.id || getState(pageItem.id).val == 1) ? rgb_dec565(colorScale0) : rgb_dec565(colorScale10);
} else { } else {
if (iconvalbest == iconvalmin) { if (iconvalbest == iconvalmin) {
valueScale = scale(valueScale,iconvalmin, iconvalmax, 10, 0); valueScale = scale(valueScale,iconvalmin, iconvalmax, 10, 0);
@@ -4204,7 +4207,7 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
out_msgs.push({ payload: 'pageType~cardThermo' }); out_msgs.push({ payload: 'pageType~cardThermo' });
// ioBroker // ioBroker
if (existsObject(id)) { if (id && existsObject(id)) {
let o = getObject(id); let o = getObject(id);
let name = page.heading !== undefined ? page.heading : o.common.name.de; let name = page.heading !== undefined ? page.heading : o.common.name.de;
let currentTemp = 0; let currentTemp = 0;
@@ -4819,6 +4822,8 @@ function GenerateMediaPage(page: PageMedia): Payload[] {
try { try {
unsubscribeMediaSubscriptions(); unsubscribeMediaSubscriptions();
if (!page.items[0].id) throw new Error ('Missing page id for cardMedia!');
let id = page.items[0].id; let id = page.items[0].id;
let out_msgs: Array<Payload> = []; let out_msgs: Array<Payload> = [];
@@ -4829,7 +4834,7 @@ function GenerateMediaPage(page: PageMedia): Payload[] {
// Some magic to change the ID of the alias, since speakers are not a property but separate objects // Some magic to change the ID of the alias, since speakers are not a property but separate objects
if(v2Adapter == 'squeezeboxrpc') { if(v2Adapter == 'squeezeboxrpc') {
if(getObject(id).type != 'channel') { if(id && getObject(id).type != 'channel') {
id = id + '.' + page.items[0].mediaDevice; id = id + '.' + page.items[0].mediaDevice;
page.items[0].id = id; page.items[0].id = id;
page.heading = page.items[0].mediaDevice ?? ''; page.heading = page.items[0].mediaDevice ?? '';
@@ -5385,6 +5390,7 @@ async function createAutoAlarmAlias (id: string, nsPath: string){
function GenerateAlarmPage(page: PageAlarm): Payload[] { function GenerateAlarmPage(page: PageAlarm): Payload[] {
try { try {
activePage = page; activePage = page;
let id = page.items[0].id let id = page.items[0].id
let name = page.heading; let name = page.heading;
@@ -5393,6 +5399,7 @@ function GenerateAlarmPage(page: PageAlarm): Payload[] {
let nsPath = NSPanel_Alarm_Path + 'Alarm'; let nsPath = NSPanel_Alarm_Path + 'Alarm';
if (page.items[0].autoCreateALias) { if (page.items[0].autoCreateALias) {
if (!id) throw new Error ('Missing pageItem.id for cardAlarm! Property autoCreateAlias is true!');
createAutoAlarmAlias(id, nsPath); createAutoAlarmAlias(id, nsPath);
} }
@@ -5556,6 +5563,7 @@ function GenerateUnlockPage(page: PageUnlock): Payload[] {
dpPath = (dpPath + 'Unlock.'); dpPath = (dpPath + 'Unlock.');
if (page.items[0].autoCreateALias) { if (page.items[0].autoCreateALias) {
if (!id) throw new Error ('Missing pageItem.id for cardUnlock! Property autoCreateAlias is true!');
createAutoUnlockAlias(id, dpPath) createAutoUnlockAlias(id, dpPath)
} }
@@ -5623,7 +5631,7 @@ async function createAutoQRAlias(id:string, dpPath:string) {
function GenerateQRPage(page: PageQR): Payload[] { function GenerateQRPage(page: PageQR): Payload[] {
try { try {
activePage = page; activePage = page;
if (!page.items[0].id) throw new Error ('Missing pageItem.id for cardQRPage!');
let id = page.items[0].id; let id = page.items[0].id;
let out_msgs: Array<Payload> = []; let out_msgs: Array<Payload> = [];
out_msgs.push({ payload: 'pageType~cardQR' }); out_msgs.push({ payload: 'pageType~cardQR' });
@@ -5741,6 +5749,8 @@ function subscribePowerSubscriptions(id: string): void {
function GeneratePowerPage(page: PagePower): Payload[] { function GeneratePowerPage(page: PagePower): Payload[] {
try { try {
if (!page.items[0].id) throw new Error ('Missing pageItem.id for PowerPage!');
let obj:object = {}; let obj:object = {};
let demoMode = false; let demoMode = false;
if (page.items[0].id == undefined){ if (page.items[0].id == undefined){
@@ -5962,7 +5972,8 @@ function HandleButtonEvent(words: any): void {
let pageItemID: string = ''; let pageItemID: string = '';
if (!isNaN(id)) { if (!isNaN(id)) {
pageItemID = activePage!.items[id].id; if (activePage!.items[id].id == undefined) throw new Error ('Missing pageItem.id in HandleButtonEvent!');
pageItemID = activePage!.items[id].id!;
if (Debug) { if (Debug) {
log('HandleButtonEvent activePage: ' + activePage!.items.length + ' id: ' + id + ' tempid: ' + tempid + ' pageItemId: ' + pageItemID); log('HandleButtonEvent activePage: ' + activePage!.items.length + ' id: ' + id + ' tempid: ' + tempid + ' pageItemId: ' + pageItemID);
} }
@@ -7046,7 +7057,7 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
let out_msgs: Array<Payload> = []; let out_msgs: Array<Payload> = [];
let id = pageItem.id; let id = pageItem.id;
if (existsObject(id)) { if (id && existsObject(id)) {
let o = getObject(id); let o = getObject(id);
let val: (boolean | number) = 0; let val: (boolean | number) = 0;
@@ -7898,7 +7909,7 @@ function GenerateDetailPage(type: string, optional: string | undefined, pageItem
optionalString = pageItem.playList != undefined ? tempTrackList.join('?') : '' optionalString = pageItem.playList != undefined ? tempTrackList.join('?') : ''
mode = 'tracklist'; mode = 'tracklist';
} else if (optional == 'equalizer') { } else if (optional == 'equalizer') {
if (pageItem.id == undefined) throw new Error ('Missing pageItem.id in equalizer!');
let lastIndex = (pageItem.id.split('.')).pop(); let lastIndex = (pageItem.id.split('.')).pop();
if (existsObject(NSPanel_Path + 'Media.Player.' + lastIndex + '.EQ.activeMode') == false || if (existsObject(NSPanel_Path + 'Media.Player.' + lastIndex + '.EQ.activeMode') == false ||
@@ -9306,13 +9317,13 @@ type Payload = {
payload: string; payload: string;
}; };
type Page = { type PageBaseType = {
type: string, type: PagetypeType,
heading: string, heading: string,
items: PageItem[], items: PageItem[],
useColor: boolean, useColor: boolean,
subPage?: boolean, subPage?: boolean,
parent?: Page, parent?: PageType,
parentIcon?: string, parentIcon?: string,
parentIconColor?: RGB, parentIconColor?: RGB,
prev?: string, prev?: string,
@@ -9326,58 +9337,67 @@ type Page = {
homeIconColor?: RGB homeIconColor?: RGB
}; };
type PagetypeType = 'cardChart' | 'cardLChart' | 'cardEntities' |'cardGrid'|'cardGrid2'|'cardThermo'|'cardMedia'|'cardUnlock'|'cardQR'|'cardAlarm'|'cardPower'
type PageType = PageChart | PageEntities | PageGrid | PageGrid2 | PageThermo | PageMedia | PageUnlock | PageQR | PageAlarm | PagePower
// If u get a error here u forgot something in PagetypeType or PageType
function checkPageType(F: PagetypeType, A: PageType) {
A.type = F;
}
type PageEntities = { type PageEntities = {
type: 'cardEntities', type: 'cardEntities',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PageGrid = { type PageGrid = {
type: 'cardGrid', type: 'cardGrid',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PageGrid2 = { type PageGrid2 = {
type: 'cardGrid2', type: 'cardGrid2',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PageThermo = { type PageThermo = {
type: 'cardThermo', type: 'cardThermo',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PageMedia = { type PageMedia = {
type: 'cardMedia', type: 'cardMedia',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PageAlarm = { type PageAlarm = {
type: 'cardAlarm', type: 'cardAlarm',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PageUnlock = { type PageUnlock = {
type: 'cardUnlock', type: 'cardUnlock',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PageQR = { type PageQR = {
type: 'cardQR', type: 'cardQR',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PagePower = { type PagePower = {
type: 'cardPower', type: 'cardPower',
items: PageItem[], items: PageItem[],
} & Page } & PageBaseType
type PageChart = { type PageChart = {
type: 'cardChart' | 'cardLChart', type: 'cardChart' | 'cardLChart',
items: PageItem[], items: PageItem[],
} & Page } & Omit<PageBaseType, 'useColor'>
type PageItem = { type PageItem = {
id: string, id?: string | null,
icon?: string, icon?: string,
icon2?: string, icon2?: string,
onColor?: RGB, onColor?: RGB,
@@ -9472,8 +9492,8 @@ type Config = {
defaultOnColor: RGB, defaultOnColor: RGB,
defaultOffColor: RGB, defaultOffColor: RGB,
defaultBackgroundColor: RGB, defaultBackgroundColor: RGB,
pages: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid | PageGrid2 | PagePower | PageChart | PageUnlock )[], pages: PageType[],
subPages: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid | PageGrid2 | PagePower | PageChart | PageUnlock)[], subPages: PageType[],
button1: ConfigButtonFunction, button1: ConfigButtonFunction,
button2: ConfigButtonFunction button2: ConfigButtonFunction
} }