add namespace

This commit is contained in:
ticaki
2024-01-07 13:33:30 +01:00
parent 1a5cf8a2f7
commit 71f3b75ab2

View File

@@ -514,7 +514,7 @@ let NSPanel_Service_SubPage: PageType =
] ]
}; };
let NSPanel_Hardware: PageEntities = let NSPanel_Hardware: PageType =
{ {
'type': 'cardEntities', 'type': 'cardEntities',
'heading': findLocaleServMenu('hardware2'), 'heading': findLocaleServMenu('hardware2'),
@@ -1847,7 +1847,7 @@ on({id: [NSPanel_Path + 'PageNavi'], change: "any"}, async function (obj) {
}); });
//----------------------Begin Dimmode //----------------------Begin Dimmode
function ScreensaverDimmode(timeDimMode: DimMode) { function ScreensaverDimmode(timeDimMode:NSPanel.DimMode) {
try { try {
let active = getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val let active = getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val
let dimmode = getState(NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness').val let dimmode = getState(NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness').val
@@ -1861,12 +1861,12 @@ function ScreensaverDimmode(timeDimMode: DimMode) {
if (compareTime(timeDimMode.timeNight != undefined ? timeDimMode.timeNight : '22:00', timeDimMode.timeDay != undefined ? timeDimMode.timeDay : '07:00', 'not between', undefined)) { if (compareTime(timeDimMode.timeNight != undefined ? timeDimMode.timeNight : '22:00', timeDimMode.timeDay != undefined ? timeDimMode.timeDay : '07:00', 'not between', undefined)) {
SendToPanel({ payload: 'dimmode~' + timeDimMode.brightnessDay + '~' + active + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 }); SendToPanel({ payload: 'dimmode~' + timeDimMode.brightnessDay + '~' + active + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 });
if (Debug) { if (Debug) {
log('function ScreensaverDimmode -> Day Payload: ' + 'dimmode~' + timeDimMode.brightnessDay + '~' + active, 'info'); log('function ScreensaverDimmode -> Day NSPanel.Payload: ' + 'dimmode~' + timeDimMode.brightnessDay + '~' + active, 'info');
} }
} else { } else {
SendToPanel({ payload: 'dimmode~' + timeDimMode.brightnessNight + '~' + active + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 }); SendToPanel({ payload: 'dimmode~' + timeDimMode.brightnessNight + '~' + active + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 });
if (Debug) { if (Debug) {
log('function ScreensaverDimmode -> Night Payload: ' + 'dimmode~' + timeDimMode.brightnessNight + '~' + active, 'info'); log('function ScreensaverDimmode -> Night NSPanel.Payload: ' + 'dimmode~' + timeDimMode.brightnessNight + '~' + active, 'info');
} }
} }
} else { } else {
@@ -1941,7 +1941,7 @@ async function InitDimmode() {
} }
const vTimeDay = getState(NSPanel_Path + 'NSPanel_Dimmode_hourDay').val; const vTimeDay = getState(NSPanel_Path + 'NSPanel_Dimmode_hourDay').val;
const vTimeNight = getState(NSPanel_Path + 'NSPanel_Dimmode_hourNight').val; const vTimeNight = getState(NSPanel_Path + 'NSPanel_Dimmode_hourNight').val;
const timeDimMode: DimMode = { const timeDimMode: NSPanel.DimMode = {
dimmodeOn: true, dimmodeOn: true,
brightnessDay: getState(NSPanel_Path + 'NSPanel_Dimmode_brightnessDay').val, brightnessDay: getState(NSPanel_Path + 'NSPanel_Dimmode_brightnessDay').val,
brightnessNight: getState(NSPanel_Path + 'NSPanel_Dimmode_brightnessNight').val, brightnessNight: getState(NSPanel_Path + 'NSPanel_Dimmode_brightnessNight').val,
@@ -2974,7 +2974,7 @@ on({ id: config.panelRecvTopic.substring(0, config.panelRecvTopic.length - 'RESU
//------------------End Update Functions //------------------End Update Functions
async function SendToPanel(val: Payload | Payload[]) { async function SendToPanel(val: NSPanel.Payload | NSPanel.Payload[]) {
try { try {
if (Array.isArray(val)) { if (Array.isArray(val)) {
val.forEach(function (id) { val.forEach(function (id) {
@@ -3007,10 +3007,10 @@ on({ id: NSPanel_Alarm_Path + 'Alarm.AlarmState', change: 'ne' }, async (obj) =>
} }
}); });
function HandleMessage(typ: string, method: EventMethod, page: number | undefined, words: Array<string> | undefined): void { function HandleMessage(typ: string, method: NSPanel.EventMethod, page: number | undefined, words: Array<string> | undefined): void {
try { try {
if (typ == 'event') { if (typ == 'event') {
switch (method as EventMethod) { switch (method as NSPanel.EventMethod) {
case 'startup': case 'startup':
screensaverEnabled = false; screensaverEnabled = false;
UnsubscribeWatcher(); UnsubscribeWatcher();
@@ -3049,7 +3049,7 @@ function HandleMessage(typ: string, method: EventMethod, page: number | undefine
} }
let pageItem: PageItem = findPageItem(tempId); let pageItem: PageItem = findPageItem(tempId);
if (pageItem !== undefined && isPopupType(words[2])) { if (pageItem !== undefined && isPopupType(words[2])) {
let temp: string | mediaOptional | undefined = tempPageItem[1] let temp: string | NSPanel.mediaOptional | undefined = tempPageItem[1]
if (isMediaOptional(temp)) SendToPanel(GenerateDetailPage(words[2], temp, pageItem, placeId)); if (isMediaOptional(temp)) SendToPanel(GenerateDetailPage(words[2], temp, pageItem, placeId));
else SendToPanel(GenerateDetailPage(words[2], undefined, pageItem, placeId)); else SendToPanel(GenerateDetailPage(words[2], undefined, pageItem, placeId));
} }
@@ -3156,9 +3156,9 @@ function GeneratePage(page: PageType): void {
} }
} }
function HandleHardwareButton(method: EventMethod): void { function HandleHardwareButton(method: NSPanel.EventMethod): void {
try { try {
let buttonConfig: ConfigButtonFunction = config[method]; let buttonConfig: NSPanel.ConfigButtonFunction = config[method];
if(buttonConfig.mode === null) { if(buttonConfig.mode === null) {
return; return;
} }
@@ -3212,7 +3212,7 @@ function SendDate(): void {
const options: any = { weekday: dpWeekday, year: 'numeric', month: dpMonth, day: 'numeric' }; const options: any = { weekday: dpWeekday, year: 'numeric', month: dpMonth, day: 'numeric' };
const _SendDate = dpCustomFormat != '' ? dayjs().format(dpCustomFormat) : date.toLocaleDateString(getState(NSPanel_Path + 'Config.locale').val, options); const _SendDate = dpCustomFormat != '' ? dayjs().format(dpCustomFormat) : date.toLocaleDateString(getState(NSPanel_Path + 'Config.locale').val, options);
SendToPanel(<Payload>{ payload: 'date~' + _SendDate }); SendToPanel(<NSPanel.Payload>{ payload: 'date~' + _SendDate });
} }
} catch (err: any) { } catch (err: any) {
if (err.message = 'Cannot convert undefined or null to object') { if (err.message = 'Cannot convert undefined or null to object') {
@@ -3229,15 +3229,15 @@ function SendTime(): void {
const hr = (d.getHours() < 10 ? '0' : '') + d.getHours(); const hr = (d.getHours() < 10 ? '0' : '') + d.getHours();
const min = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes(); const min = (d.getMinutes() < 10 ? '0' : '') + d.getMinutes();
SendToPanel(<Payload>{ payload: 'time~' + hr + ':' + min }); SendToPanel(<NSPanel.Payload>{ payload: 'time~' + hr + ':' + min });
} catch (err: any) { } catch (err: any) {
log('error at function SendTime: ' + err.message, 'warn'); log('error at function SendTime: ' + err.message, 'warn');
} }
} }
function GenerateEntitiesPage(page: PageEntities): Payload[] { function GenerateEntitiesPage(page: NSPanel.PageEntities): NSPanel.Payload[] {
try { try {
let out_msgs: Array<Payload>; let out_msgs: Array<NSPanel.Payload>;
out_msgs = [{ payload: 'pageType~cardEntities' }] out_msgs = [{ payload: 'pageType~cardEntities' }]
out_msgs.push({ payload: GeneratePageElements(page) }); out_msgs.push({ payload: GeneratePageElements(page) });
return out_msgs return out_msgs
@@ -3247,9 +3247,9 @@ function GenerateEntitiesPage(page: PageEntities): Payload[] {
} }
} }
function GenerateGridPage(page: PageGrid): Payload[] { function GenerateGridPage(page: NSPanel.PageGrid): NSPanel.Payload[] {
try { try {
let out_msgs: Array<Payload> = [{ payload: 'pageType~cardGrid' }]; let out_msgs: Array<NSPanel.Payload> = [{ payload: 'pageType~cardGrid' }];
out_msgs.push({ payload: GeneratePageElements(page) }); out_msgs.push({ payload: GeneratePageElements(page) });
return out_msgs; return out_msgs;
} catch (err: any) { } catch (err: any) {
@@ -3258,9 +3258,9 @@ function GenerateGridPage(page: PageGrid): Payload[] {
} }
} }
function GenerateGridPage2(page: PageGrid2): Payload[] { function GenerateGridPage2(page: NSPanel.PageGrid2): NSPanel.Payload[] {
try { try {
let out_msgs: Array<Payload> = [{ payload: 'pageType~cardGrid2' }]; let out_msgs: Array<NSPanel.Payload> = [{ payload: 'pageType~cardGrid2' }];
out_msgs.push({ payload: GeneratePageElements(page) }); out_msgs.push({ payload: GeneratePageElements(page) });
return out_msgs; return out_msgs;
} catch (err: any) { } catch (err: any) {
@@ -3335,7 +3335,7 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
let name: string; let name: string;
let buttonText: string = 'PRESS'; let buttonText: string = 'PRESS';
let type: SerialType; let type: NSPanel.SerialType;
// ioBroker // ioBroker
if (pageItem.id && existsObject(pageItem.id) || pageItem.navigate === true) { if (pageItem.id && existsObject(pageItem.id) || pageItem.navigate === true) {
@@ -3408,8 +3408,8 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
} else if (pageItem.id != null && pageItem.targetPage != undefined) { } else if (pageItem.id != null && pageItem.targetPage != undefined) {
type = 'button'; type = 'button';
const role = o.common.role as roles; const role = o.common.role as NSPanel.roles;
switch (role as roles) { switch (role) {
case 'socket': case 'socket':
case 'light': case 'light':
iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb'); iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : role == 'socket' ? Icons.GetIcon('power-socket-de') : Icons.GetIcon('lightbulb');
@@ -3593,8 +3593,8 @@ function CreateEntity(pageItem: PageItem, placeId: number, useColors: boolean =
return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText; return '~' + type + '~' + 'navigate.' + pageItem.id + '~' + iconId + '~' + iconColor + '~' + name + '~' + buttonText;
} }
} }
const role = o.common.role as roles const role = o.common.role as NSPanel.roles
switch (role as roles) { switch (role) {
case 'socket': case 'socket':
case 'light': case 'light':
type = 'light'; type = 'light';
@@ -4218,7 +4218,7 @@ function RegisterEntityWatcher(id: string): void {
} }
} }
function RegisterDetailEntityWatcher(id: string, pageItem: PageItem, type: PopupType, placeId: number | undefined): void { function RegisterDetailEntityWatcher(id: string, pageItem: PageItem, type: NSPanel.PopupType, placeId: number | undefined): void {
try { try {
if (subscriptions.hasOwnProperty(id)) { if (subscriptions.hasOwnProperty(id)) {
return; return;
@@ -4255,11 +4255,11 @@ function GetUnitOfMeasurement(id: string): string {
} }
} }
function GenerateThermoPage(page: PageThermo): Payload[] { function GenerateThermoPage(page: NSPanel.PageThermo): NSPanel.Payload[] {
try { try {
UnsubscribeWatcher(); UnsubscribeWatcher();
let id = page.items[0].id let id = page.items[0].id
let out_msgs: Array<Payload> = []; let out_msgs: Array<NSPanel.Payload> = [];
out_msgs.push({ payload: 'pageType~cardThermo' }); out_msgs.push({ payload: 'pageType~cardThermo' });
// ioBroker // ioBroker
@@ -4304,7 +4304,7 @@ function GenerateThermoPage(page: PageThermo): Payload[] {
if ((i_list.length - 3) != 0) { if ((i_list.length - 3) != 0) {
let i = 0; let i = 0;
switch (o.common.role as roles) { switch (o.common.role as NSPanel.roles) {
case 'thermostat': { case 'thermostat': {
if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) { if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) {
@@ -4738,7 +4738,7 @@ function subscribeMediaSubscriptionsBoseAdd(id: string): void {
}); });
} }
async function createAutoMediaAlias (id: string, mediaDevice: string, adapterPlayerInstance: adapterPlayerInstanceType) { async function createAutoMediaAlias (id: string, mediaDevice: string, adapterPlayerInstance: NSPanel.adapterPlayerInstanceType) {
if (autoCreateAlias) { if (autoCreateAlias) {
if (isSetOptionActive) { if (isSetOptionActive) {
switch (adapterPlayerInstance) { switch (adapterPlayerInstance) {
@@ -4988,19 +4988,19 @@ async function createAutoMediaAlias (id: string, mediaDevice: string, adapterPla
} }
} }
function GenerateMediaPage(page: PageMedia): Payload[] { function GenerateMediaPage(page: NSPanel.PageMedia): NSPanel.Payload[] {
try { try {
unsubscribeMediaSubscriptions(); unsubscribeMediaSubscriptions();
if (!page.items[0].id) throw new Error ('Missing page id for cardMedia!'); 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<NSPanel.Payload> = [];
if (!page.items[0].adapterPlayerInstance!) throw new Error('page.items[0].adapterPlayerInstance is undefined!') if (!page.items[0].adapterPlayerInstance!) throw new Error('page.items[0].adapterPlayerInstance is undefined!')
let vInstance = page.items[0].adapterPlayerInstance!; let vInstance = page.items[0].adapterPlayerInstance!;
let v1Adapter = vInstance.split('.'); let v1Adapter = vInstance.split('.');
let v2Adapter:PlayerType = v1Adapter[0] as PlayerType; let v2Adapter:NSPanel.PlayerType = v1Adapter[0] as NSPanel.PlayerType;
// 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') {
@@ -5604,14 +5604,14 @@ async function createAutoAlarmAlias (id: string, nsPath: string){
} }
} }
function GenerateAlarmPage(page: PageAlarm): Payload[] { function GenerateAlarmPage(page: NSPanel.PageAlarm): NSPanel.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;
let out_msgs: Array<Payload> = []; let out_msgs: Array<NSPanel.Payload> = [];
out_msgs.push({ payload: 'pageType~cardAlarm' }); out_msgs.push({ payload: 'pageType~cardAlarm' });
let nsPath = NSPanel_Alarm_Path + 'Alarm'; let nsPath = NSPanel_Alarm_Path + 'Alarm';
@@ -5631,7 +5631,7 @@ function GenerateAlarmPage(page: PageAlarm): Payload[] {
} }
//let entityType = getState(nsPath + 'AlarmType').val; //let entityType = getState(nsPath + 'AlarmType').val;
let arm1: string, arm2: string, arm3: string, arm4: string; let arm1: string, arm2: string, arm3: string, arm4: string;
let arm1ActionName: ButtonActionType | '', arm2ActionName: ButtonActionType | '', arm3ActionName: ButtonActionType | '', arm4ActionName: ButtonActionType | ''; let arm1ActionName: NSPanel.ButtonActionType | '', arm2ActionName: NSPanel.ButtonActionType | '', arm3ActionName: NSPanel.ButtonActionType | '', arm4ActionName: NSPanel.ButtonActionType | '';
let icon = '0'; let icon = '0';
let iconcolor = 63488; let iconcolor = 63488;
let numpadStatus = 'disable'; let numpadStatus = 'disable';
@@ -5763,13 +5763,13 @@ async function createAutoUnlockAlias(id: string, dpPath: string) {
} }
function GenerateUnlockPage(page: PageUnlock): Payload[] { function GenerateUnlockPage(page: NSPanel.PageUnlock): NSPanel.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;
let out_msgs: Array<Payload> = []; let out_msgs: Array<NSPanel.Payload> = [];
out_msgs.push({ payload: 'pageType~cardAlarm' }); out_msgs.push({ payload: 'pageType~cardAlarm' });
let dpPath : string = '' let dpPath : string = ''
@@ -5785,7 +5785,7 @@ function GenerateUnlockPage(page: PageUnlock): Payload[] {
} }
let unlock1 = findLocale('lock', 'UNLOCK'); //unlock1*~* let unlock1 = findLocale('lock', 'UNLOCK'); //unlock1*~*
let unlock1ActionName: ButtonActionType | '' = 'U1'; //unlock1ActionName*~* let unlock1ActionName: NSPanel.ButtonActionType | '' = 'U1'; //unlock1ActionName*~*
let iconcolor = rgb_dec565({ red: 223, green: 76, blue: 30 }); //icon*~* let iconcolor = rgb_dec565({ red: 223, green: 76, blue: 30 }); //icon*~*
let icon = Icons.GetIcon('lock-remove'); //iconcolor*~* let icon = Icons.GetIcon('lock-remove'); //iconcolor*~*
@@ -5845,12 +5845,12 @@ async function createAutoQRAlias(id:string, dpPath:string) {
} }
} }
function GenerateQRPage(page: PageQR): Payload[] { function GenerateQRPage(page: NSPanel.PageQR): NSPanel.Payload[] {
try { try {
activePage = page; activePage = page;
if (!page.items[0].id) throw new Error ('Missing pageItem.id for cardQRPage!'); 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<NSPanel.Payload> = [];
out_msgs.push({ payload: 'pageType~cardQR' }); out_msgs.push({ payload: 'pageType~cardQR' });
let dpPath : string = '' let dpPath : string = ''
@@ -5963,7 +5963,7 @@ function subscribePowerSubscriptions(id: string): void {
}); });
} }
function GeneratePowerPage(page: PagePower): Payload[] { function GeneratePowerPage(page: NSPanel.PagePower): NSPanel.Payload[] {
try { try {
if (!page.items[0].id) throw new Error ('Missing pageItem.id for PowerPage!'); if (!page.items[0].id) throw new Error ('Missing pageItem.id for PowerPage!');
@@ -5991,7 +5991,7 @@ function GeneratePowerPage(page: PagePower): Payload[] {
obj = JSON.parse((getState(page.items[0].id + '.ACTUAL').val)); obj = JSON.parse((getState(page.items[0].id + '.ACTUAL').val));
} }
let out_msgs: Array<Payload> = []; let out_msgs: Array<NSPanel.Payload> = [];
// Leave the display on if the alwaysOnDisplay parameter is specified (true) // Leave the display on if the alwaysOnDisplay parameter is specified (true)
if (page.type == 'cardPower' && pageCounter == 0 && page.items[0].alwaysOnDisplay != undefined) { if (page.type == 'cardPower' && pageCounter == 0 && page.items[0].alwaysOnDisplay != undefined) {
@@ -6085,12 +6085,12 @@ function GeneratePowerPage(page: PagePower): Payload[] {
} }
} }
function GenerateChartPage(page: PageChart): Payload[] { function GenerateChartPage(page: NSPanel.PageChart): NSPanel.Payload[] {
try { try {
activePage = page; activePage = page;
let id = page.items[0].id; let id = page.items[0].id;
let out_msgs: Array<Payload> = []; let out_msgs: Array<NSPanel.Payload> = [];
out_msgs.push({ payload: 'pageType~' + page.type }); out_msgs.push({ payload: 'pageType~' + page.type });
let heading = page.heading !== undefined ? page.heading : "Chart..."; let heading = page.heading !== undefined ? page.heading : "Chart...";
@@ -6185,7 +6185,7 @@ function HandleButtonEvent(words: any): void {
let tempid = words[2].split('?'); let tempid = words[2].split('?');
let id = tempid[0]; let id = tempid[0];
let buttonAction: ButtonActionType = words[3] as ButtonActionType; let buttonAction: NSPanel.ButtonActionType = words[3] as NSPanel.ButtonActionType;
let pageItemID: string = ''; let pageItemID: string = '';
if (!isNaN(id)) { if (!isNaN(id)) {
@@ -6364,8 +6364,8 @@ function HandleButtonEvent(words: any): void {
if (Debug) { if (Debug) {
log('HandleButtonEvent -> OnOff: ' + words[4] + ' - ' + id + ' - Role - ' + o.common.role, 'info') log('HandleButtonEvent -> OnOff: ' + words[4] + ' - ' + id + ' - Role - ' + o.common.role, 'info')
} }
const role = o.common.role as roles; const role = o.common.role as NSPanel.roles;
switch (role as roles) { switch (role) {
case 'level.mode.fan': case 'level.mode.fan':
case 'socket': case 'socket':
case 'light': case 'light':
@@ -6401,7 +6401,7 @@ function HandleButtonEvent(words: any): void {
if (words[4] == '1') if (words[4] == '1')
action = true; action = true;
let o = getObject(id); let o = getObject(id);
switch (o.common.role as roles) { switch (o.common.role as NSPanel.roles) {
case 'lock': case 'lock':
case 'button': case 'button':
toggleState(id + '.SET') ? true : toggleState(id + '.ON_SET'); toggleState(id + '.SET') ? true : toggleState(id + '.ON_SET');
@@ -6446,7 +6446,7 @@ function HandleButtonEvent(words: any): void {
if (isPageMediaItem(pageItemRepeat)) { if (isPageMediaItem(pageItemRepeat)) {
let adapterInstanceRepeat = pageItemRepeat.adapterPlayerInstance; let adapterInstanceRepeat = pageItemRepeat.adapterPlayerInstance;
let adapterRepeat = adapterInstanceRepeat.split('.'); let adapterRepeat = adapterInstanceRepeat.split('.');
const deviceAdapterRP: PlayerType = adapterRepeat[0] as PlayerType; const deviceAdapterRP: NSPanel.PlayerType = adapterRepeat[0] as NSPanel.PlayerType;
switch (deviceAdapterRP) { switch (deviceAdapterRP) {
case 'spotify-premium': case 'spotify-premium':
@@ -6587,8 +6587,8 @@ function HandleButtonEvent(words: any): void {
if (existsObject(id)) { if (existsObject(id)) {
let o = getObject(id); let o = getObject(id);
let pageItem = findPageItem(id); let pageItem = findPageItem(id);
const role = o.common.role as roles; const role = o.common.role as NSPanel.roles;
switch (role as roles) { switch (role) {
case 'dimmer': case 'dimmer':
if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) { if (pageItem.minValueBrightness != undefined && pageItem.maxValueBrightness != undefined) {
let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness)); let sliderPos = Math.trunc(scale(parseInt(words[4]), 0, 100, pageItem.maxValueBrightness, pageItem.minValueBrightness));
@@ -6634,7 +6634,7 @@ function HandleButtonEvent(words: any): void {
log('HandleButtonEvent colorWeel -> getHue-Werte: ' + getHue(rgb.red, rgb.green, rgb.blue), 'info'); log('HandleButtonEvent colorWeel -> getHue-Werte: ' + getHue(rgb.red, rgb.green, rgb.blue), 'info');
} }
let o = getObject(id); let o = getObject(id);
switch (o.common.role as roles) { switch (o.common.role as NSPanel.roles) {
case 'hue': case 'hue':
setIfExists(id + '.HUE', getHue(rgb.red, rgb.green, rgb.blue)); setIfExists(id + '.HUE', getHue(rgb.red, rgb.green, rgb.blue));
break; break;
@@ -6780,7 +6780,7 @@ function HandleButtonEvent(words: any): void {
if (isPageMediaItem(pageItem)) { if (isPageMediaItem(pageItem)) {
let adapterInstance = pageItem.adapterPlayerInstance!; let adapterInstance = pageItem.adapterPlayerInstance!;
let adapter = adapterInstance!.split('.'); let adapter = adapterInstance!.split('.');
const deviceAdapter: PlayerType = adapter[0] as PlayerType; const deviceAdapter: NSPanel.PlayerType = adapter[0] as NSPanel.PlayerType;
switch (deviceAdapter) { switch (deviceAdapter) {
case 'spotify-premium': case 'spotify-premium':
@@ -6826,7 +6826,7 @@ function HandleButtonEvent(words: any): void {
if (!isPageMediaItem(pageItemPL)) break; if (!isPageMediaItem(pageItemPL)) break;
let adapterInstancePL = pageItemPL.adapterPlayerInstance!; let adapterInstancePL = pageItemPL.adapterPlayerInstance!;
let adapterPL = adapterInstancePL.split('.'); let adapterPL = adapterInstancePL.split('.');
const deviceAdapterPL: PlayerType = adapterPL[0] as PlayerType; const deviceAdapterPL: NSPanel.PlayerType = adapterPL[0] as NSPanel.PlayerType;
switch (deviceAdapterPL) { switch (deviceAdapterPL) {
case 'spotify-premium': case 'spotify-premium':
@@ -6889,7 +6889,7 @@ function HandleButtonEvent(words: any): void {
if (!isPageMediaItem(pageItemTL)) break; if (!isPageMediaItem(pageItemTL)) break;
let adapterInstanceTL = pageItemTL.adapterPlayerInstance!; let adapterInstanceTL = pageItemTL.adapterPlayerInstance!;
let adapterTL = adapterInstanceTL.split('.'); let adapterTL = adapterInstanceTL.split('.');
const deviceAdapterTL: PlayerType = adapterTL[0] as PlayerType; const deviceAdapterTL: NSPanel.PlayerType = adapterTL[0] as NSPanel.PlayerType;
switch (deviceAdapterTL) { switch (deviceAdapterTL) {
case 'spotify-premium': case 'spotify-premium':
@@ -6938,7 +6938,7 @@ function HandleButtonEvent(words: any): void {
if (!isPageMediaItem(pageItemRP)) break; if (!isPageMediaItem(pageItemRP)) break;
let adapterInstanceRP = pageItemRP.adapterPlayerInstance!; let adapterInstanceRP = pageItemRP.adapterPlayerInstance!;
let adapterRP = adapterInstanceRP.split('.'); let adapterRP = adapterInstanceRP.split('.');
let deviceAdapterRP: PlayerType = adapterRP[0] as PlayerType; let deviceAdapterRP: NSPanel.PlayerType = adapterRP[0] as NSPanel.PlayerType;
if (Debug) log(pageItemRP.repeatList![words[4]], 'warn'); if (Debug) log(pageItemRP.repeatList![words[4]], 'warn');
switch (deviceAdapterRP) { switch (deviceAdapterRP) {
@@ -6969,7 +6969,7 @@ function HandleButtonEvent(words: any): void {
if (!isPageMediaItem(pageItemSeek)) break; if (!isPageMediaItem(pageItemSeek)) break;
let adapterInstanceSK = pageItemSeek.adapterPlayerInstance!; let adapterInstanceSK = pageItemSeek.adapterPlayerInstance!;
let adapterSK = adapterInstanceSK.split('.'); let adapterSK = adapterInstanceSK.split('.');
let deviceAdapterSK: PlayerType = adapterSK[0] as PlayerType; let deviceAdapterSK: NSPanel.PlayerType = adapterSK[0] as NSPanel.PlayerType;
switch (deviceAdapterSK) { switch (deviceAdapterSK) {
case 'spotify-premium': case 'spotify-premium':
break; break;
@@ -6990,7 +6990,7 @@ function HandleButtonEvent(words: any): void {
if (!isPageMediaItem(pageItemCrossfade)) break; if (!isPageMediaItem(pageItemCrossfade)) break;
let adapterInstanceCF = pageItemCrossfade.adapterPlayerInstance!; let adapterInstanceCF = pageItemCrossfade.adapterPlayerInstance!;
let adapterCF = adapterInstanceCF.split('.'); let adapterCF = adapterInstanceCF.split('.');
let deviceAdapterCF: PlayerType = adapterCF[0] as PlayerType; let deviceAdapterCF: NSPanel.PlayerType = adapterCF[0] as NSPanel.PlayerType;
switch (deviceAdapterCF) { switch (deviceAdapterCF) {
case 'spotify-premium': case 'spotify-premium':
break; break;
@@ -7139,7 +7139,7 @@ function HandleButtonEvent(words: any): void {
break; break;
case 'number-set': case 'number-set':
let nobj = getObject(id); let nobj = getObject(id);
switch (nobj.common.role as roles) { switch (nobj.common.role as NSPanel.roles) {
case 'level.mode.fan': case 'level.mode.fan':
(function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })(); (function () { if (timeoutSlider) { clearTimeout(timeoutSlider); timeoutSlider = null; } })();
timeoutSlider = setTimeout(async function () { timeoutSlider = setTimeout(async function () {
@@ -7346,10 +7346,10 @@ function GetNavigationString(pageId: number): string {
} }
return ''; return '';
} }
function GenerateDetailPage(type: PopupType, optional: mediaOptional | undefined, pageItem: PageItem, placeId: number | undefined): 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 {
let out_msgs: Array<Payload> = []; let out_msgs: Array<NSPanel.Payload> = [];
let id = pageItem.id; let id = pageItem.id;
if (id && existsObject(id)) { if (id && existsObject(id)) {
@@ -7358,7 +7358,7 @@ function GenerateDetailPage(type: PopupType, optional: mediaOptional | undefined
let val: (boolean | number) = 0; let val: (boolean | number) = 0;
let icon = Icons.GetIcon('lightbulb'); let icon = Icons.GetIcon('lightbulb');
let iconColor = rgb_dec565(config.defaultColor); let iconColor = rgb_dec565(config.defaultColor);
const role = o.common.role as roles; const role = o.common.role as NSPanel.roles;
if (type == 'popupLight') { if (type == 'popupLight') {
@@ -8034,10 +8034,10 @@ function GenerateDetailPage(type: PopupType, optional: mediaOptional | undefined
if (role == 'media') { if (role == 'media') {
let actualState: any = ''; let actualState: any = '';
let optionalString: string = 'Kein Eintrag'; let optionalString: string = 'Kein Eintrag';
let mode: mediaOptional | '' = ''; let mode: NSPanel.mediaOptional | '' = '';
if (isPageMediaItem(pageItem)) { if (isPageMediaItem(pageItem)) {
const vTempAdapter = (pageItem.adapterPlayerInstance!).split('.'); const vTempAdapter = (pageItem.adapterPlayerInstance!).split('.');
const vAdapter: PlayerType = vTempAdapter[0] as PlayerType; const vAdapter: NSPanel.PlayerType = vTempAdapter[0] as NSPanel.PlayerType;
if (optional == 'seek') { if (optional == 'seek') {
const actualStateTemp: number = getState(pageItem.adapterPlayerInstance + 'root.' + pageItem.mediaDevice + '.seek').val; const actualStateTemp: number = getState(pageItem.adapterPlayerInstance + 'root.' + pageItem.mediaDevice + '.seek').val;
actualState = Math.round(actualStateTemp / 10) * 10 + '%'; actualState = Math.round(actualStateTemp / 10) * 10 + '%';
@@ -8245,7 +8245,7 @@ function GenerateDetailPage(type: PopupType, optional: mediaOptional | undefined
} }
let tempId = placeId != undefined ? placeId : id; let tempId = placeId != undefined ? placeId : id;
// {tempid | color | mediaOptional | actualState | optionalString} // {tempid | color | NSPanel.mediaOptional | actualState | optionalString}
out_msgs.push({ out_msgs.push({
payload: 'entityUpdateDetail2' + '~' //entityUpdateDetail payload: 'entityUpdateDetail2' + '~' //entityUpdateDetail
+ tempId + '?' + optional + '~~' //{entity_id} + tempId + '?' + optional + '~~' //{entity_id}
@@ -8274,7 +8274,7 @@ function GenerateDetailPage(type: PopupType, optional: mediaOptional | undefined
let valueList = pageItem.modeList != undefined ? tempModeList.join('?') : ''; let valueList = pageItem.modeList != undefined ? tempModeList.join('?') : '';
let tempId = placeId != undefined ? placeId : id; let tempId = placeId != undefined ? placeId : id;
// {tempid | color | mediaOptional | actualValue | valueList} // {tempid | color | NSPanel.mediaOptional | actualValue | valueList}
out_msgs.push({ out_msgs.push({
payload: 'entityUpdateDetail2' + '~' //entityUpdateDetail2 payload: 'entityUpdateDetail2' + '~' //entityUpdateDetail2
+ tempId + '~~' //{entity_id} + tempId + '~~' //{entity_id}
@@ -8703,7 +8703,7 @@ function HandleScreensaverUpdate(): void {
if (screensaverAdvanced) { if (screensaverAdvanced) {
// 5 indicatorScreensaverEntities // 5 indicatorScreensaverEntities
for (let i = 0; i < 5 && i < config.indicatorScreensaverEntity.length; i++) { for (let i = 0; i < 5 && i < config.indicatorScreensaverEntity.length; i++) {
const indicatorScreensaverEntity:ScreenSaverElementWithUndefined = config.indicatorScreensaverEntity[i]; const indicatorScreensaverEntity:NSPanel.ScreenSaverElementWithUndefined = config.indicatorScreensaverEntity[i];
if (indicatorScreensaverEntity === null || indicatorScreensaverEntity === undefined) { if (indicatorScreensaverEntity === null || indicatorScreensaverEntity === undefined) {
break; break;
} }
@@ -8747,7 +8747,7 @@ function HandleScreensaverUpdate(): void {
} }
if (Debug) log('HandleScreensaverUpdate payload: weatherUpdate~' + payloadString, 'info'); if (Debug) log('HandleScreensaverUpdate payload: weatherUpdate~' + payloadString, 'info');
SendToPanel(<Payload>{ payload: 'weatherUpdate~' + payloadString }); SendToPanel(<NSPanel.Payload>{ payload: 'weatherUpdate~' + payloadString });
HandleScreensaverStatusIcons(); HandleScreensaverStatusIcons();
} }
@@ -8944,7 +8944,7 @@ function HandleScreensaverStatusIcons() : void {
payloadString += '~'; payloadString += '~';
} }
SendToPanel(<Payload>{ payload: 'statusUpdate~' + payloadString }); SendToPanel(<NSPanel.Payload>{ payload: 'statusUpdate~' + payloadString });
} catch (err: any) { } catch (err: any) {
log('error at function HandleScreensaverStatusIcons: ' + err.message, 'warn'); log('error at function HandleScreensaverStatusIcons: ' + err.message, 'warn');
@@ -9035,17 +9035,17 @@ function HandleScreensaverColors(): void {
rgb_dec565(sctMainTextAlt) + '~' + //tMainTextAlt rgb_dec565(sctMainTextAlt) + '~' + //tMainTextAlt
rgb_dec565(sctTimeAdd); //tTimeAdd rgb_dec565(sctTimeAdd); //tTimeAdd
SendToPanel(<Payload>{ payload: payloadString }); SendToPanel(<NSPanel.Payload>{ payload: payloadString });
} catch (err: any) { } catch (err: any) {
log('error at function HandleScreensaverColors: '+ err.message, 'warn'); log('error at function HandleScreensaverColors: '+ err.message, 'warn');
} }
} }
function GetScreenSaverEntityColor(configElement: ScreenSaverElement | null): number { function GetScreenSaverEntityColor(configElement: NSPanel.ScreenSaverElement | null): number {
try { try {
let colorReturn: number; let colorReturn: number;
if (configElement && configElement.ScreensaverEntityIconColor != undefined) { if (configElement && configElement.ScreensaverEntityIconColor != undefined) {
const ScreensaverEntityIconColor = configElement.ScreensaverEntityIconColor as IconScaleElement; const ScreensaverEntityIconColor = configElement.ScreensaverEntityIconColor as NSPanel.IconScaleElement;
if (typeof getState(configElement.ScreensaverEntity).val == 'boolean') { if (typeof getState(configElement.ScreensaverEntity).val == 'boolean') {
let iconvalbest = (typeof ScreensaverEntityIconColor == 'object' && ScreensaverEntityIconColor.val_best !== undefined ) ? ScreensaverEntityIconColor.val_best : false ; let iconvalbest = (typeof ScreensaverEntityIconColor == 'object' && ScreensaverEntityIconColor.val_best !== undefined ) ? ScreensaverEntityIconColor.val_best : false ;
colorReturn = (getState(configElement.ScreensaverEntity).val == iconvalbest) ? rgb_dec565(colorScale0) : rgb_dec565(colorScale10); colorReturn = (getState(configElement.ScreensaverEntity).val == iconvalbest) ? rgb_dec565(colorScale0) : rgb_dec565(colorScale10);
@@ -9606,20 +9606,98 @@ function spotifyGetDeviceID(vDeviceString: string): string {
let strDevID = arrayDeviceListIds[indexPos]; let strDevID = arrayDeviceListIds[indexPos];
return strDevID; return strDevID;
} }
type PopupType = 'popupFan' | 'popupInSel' | 'popupLight' | 'popupLightNew' | 'popupNotify' | 'popupShutter' | 'popupThermo' | 'popupTimer' type RGB = NSPanel.RGB;
type PageItem = NSPanel.PageItem;
type PageType = NSPanel.PageType;
type Config = NSPanel.Config;
const ArrayPlayerTypeWithMediaDevice = ['alexa2', 'sonos', 'squeezeboxrpc'] as const
const ArrayPlayerTypeWithOutMediaDevice = ['spotify-premium', 'volumio', 'bosesoundtouch'] as const
function isPlayerWithMediaDevice (F: string | NSPanel._PlayerTypeWithMediaDevice): F is NSPanel._PlayerTypeWithMediaDevice {
return ArrayPlayerTypeWithMediaDevice.indexOf(F as NSPanel._PlayerTypeWithMediaDevice) != -1;
}
/** check if NSPanel.adapterPlayerInstanceType has all Playertypes */
function checkSortedPlayerType(F: NSPanel.notSortedPlayerType) {
const test: NSPanel.adapterPlayerInstanceType = F;
}
function isMediaOptional(F: string | NSPanel.mediaOptional): F is NSPanel.mediaOptional {
switch(F as NSPanel.mediaOptional) {
case "seek":
case "crossfade":
case "speakerlist":
case "playlist":
case "tracklist":
case "equalizer":
case "repeat":
case "favorites":
return true;
default:
return false
}
}
function isEventMethod(F: string | NSPanel.EventMethod): F is NSPanel.EventMethod {
switch(F as NSPanel.EventMethod) {
case "startup":
case "sleepReached":
case "pageOpenDetail":
case "buttonPress2":
case "renderCurrentPage":
case "button1":
case "button2":
return true;
default:
// Have to talk about this.
log(`Please report to developer: Unknown NSPanel.EventMethod: ${F} `, 'warn');
return false;
}
}
function isPopupType(F: NSPanel.PopupType | string): F is NSPanel.PopupType {
switch(F as NSPanel.PopupType) {
case "popupFan":
case "popupInSel":
case "popupLight":
case "popupLightNew":
case "popupNotify":
case "popupShutter":
case "popupThermo":
case "popupTimer":
return true;
default:
log(`Please report to developer: Unknown NSPanel.PopupType: ${F} `, 'warn');
return false;
}
}
// If u get a error here u forgot something in PagetypeType or PageType
function checkPageType(F: NSPanel.PagetypeType, A: NSPanel.PageType) {
A.type = F;
}
function isPageMediaItem(F: NSPanel.PageItem | NSPanel.PageMediaItem):F is NSPanel.PageMediaItem {
return 'adapterPlayerInstance' in F
}
function isPageThermoItem(F: PageItem | NSPanel.PageThermoItem):F is NSPanel.PageThermoItem {
return 'popupThermoMode1' in F;
}
namespace NSPanel {
export type PopupType = 'popupFan' | 'popupInSel' | 'popupLight' | 'popupLightNew' | 'popupNotify' | 'popupShutter' | 'popupThermo' | 'popupTimer'
type EventMethod = 'startup' | 'sleepReached' | 'pageOpenDetail' | 'buttonPress2' | 'renderCurrentPage' | 'button1' | 'button2' export type EventMethod = 'startup' | 'sleepReached' | 'pageOpenDetail' | 'buttonPress2' | 'renderCurrentPage' | 'button1' | 'button2'
type SerialType = 'button' | 'light' | 'shutter' | 'text' | 'input_sel' | 'timer' | 'number' | 'fan' export type SerialType = 'button' | 'light' | 'shutter' | 'text' | 'input_sel' | 'timer' | 'number' | 'fan'
type roles = 'light' |'socket'|'dimmer'| 'hue' | 'rgb' | 'rgbSingle' | 'cd' | 'blind' | 'door' | 'window' | 'volumeGroup' | 'volume' export type roles = 'light' |'socket'|'dimmer'| 'hue' | 'rgb' | 'rgbSingle' | 'cd' | 'blind' | 'door' | 'window' | 'volumeGroup' | 'volume'
| 'info' | 'humidity' | 'temperature' | 'value.temperature' | 'value.humidity' | 'sensor.door' | 'sensor.window' | 'thermostat' | 'warning' | 'ct' | 'info' | 'humidity' | 'temperature' | 'value.temperature' | 'value.humidity' | 'sensor.door' | 'sensor.window' | 'thermostat' | 'warning' | 'ct'
| 'cie' | 'gate' | 'motion' | 'buttonSensor' | 'button' | 'value.time' | 'level.timer' | 'value.alarmtime' | 'level.mode.fan' | 'lock' | 'slider' | 'cie' | 'gate' | 'motion' | 'buttonSensor' | 'button' | 'value.time' | 'level.timer' | 'value.alarmtime' | 'level.mode.fan' | 'lock' | 'slider'
| 'switch.mode.wlan' | 'media' | 'timeTable' | 'airCondition' | 'switch.mode.wlan' | 'media' | 'timeTable' | 'airCondition'
type ButtonActionType = 'bExit' | 'bUp' | 'bNext' | 'bSubNext' | 'bPrev' | 'bSubPrev' | 'bHome' | 'notifyAction' | 'OnOff' | 'button' | 'up' | 'stop' | 'down' export type ButtonActionType = 'bExit' | 'bUp' | 'bNext' | 'bSubNext' | 'bPrev' | 'bSubPrev' | 'bHome' | 'notifyAction' | 'OnOff' | 'button' | 'up' | 'stop' | 'down'
| 'positionSlider' | 'tiltOpen' | 'tiltStop' | 'tiltSlider' | 'tiltClose' | 'brightnessSlider' | 'colorTempSlider' | 'colorWheel' | 'tempUpd' | 'tempUpdHighLow' | 'media-back' | 'positionSlider' | 'tiltOpen' | 'tiltStop' | 'tiltSlider' | 'tiltClose' | 'brightnessSlider' | 'colorTempSlider' | 'colorWheel' | 'tempUpd' | 'tempUpdHighLow' | 'media-back'
| 'media-pause' | 'media-next' | 'media-shuffle' | 'volumeSlider' | 'mode-speakerlist' | 'mode-playlist' | 'mode-tracklist' | 'mode-repeat' | 'mode-equalizer' | 'mode-seek' | 'mode-crossfade' | 'media-pause' | 'media-next' | 'media-shuffle' | 'volumeSlider' | 'mode-speakerlist' | 'mode-playlist' | 'mode-tracklist' | 'mode-repeat' | 'mode-equalizer' | 'mode-seek' | 'mode-crossfade'
| 'mode-favorites' | 'mode-insel' | 'media-OnOff' | 'timer-start' | 'timer-pause' | 'timer-cancle' | 'timer-finish' | 'hvac_action' | 'mode-modus1' | 'mode-modus2' | 'mode-modus3' | 'number-set' | 'mode-favorites' | 'mode-insel' | 'media-OnOff' | 'timer-start' | 'timer-pause' | 'timer-cancle' | 'timer-finish' | 'hvac_action' | 'mode-modus1' | 'mode-modus2' | 'mode-modus3' | 'number-set'
@@ -9627,17 +9705,17 @@ type ButtonActionType = 'bExit' | 'bUp' | 'bNext' | 'bSubNext' | 'bPrev' | 'bSub
type RGB = { export type RGB = {
red: number, red: number,
green: number, green: number,
blue: number blue: number
}; };
type Payload = { export type Payload = {
payload: string; payload: string;
}; };
type PageBaseType = { export type PageBaseType = {
type: PagetypeType, type: PagetypeType,
heading: string, heading: string,
items: PageItem[], items: PageItem[],
@@ -9655,78 +9733,67 @@ type PageBaseType = {
home?: string, home?: string,
homeIcon?: string, homeIcon?: string,
homeIconColor?: RGB homeIconColor?: RGB
}; };
type PagetypeType = 'cardChart' | 'cardLChart' | 'cardEntities' |'cardGrid'|'cardGrid2'|'cardThermo'|'cardMedia'|'cardUnlock'|'cardQR'|'cardAlarm'|'cardPower' //| 'cardBurnRec'
type PageType = PageChart | PageEntities | PageGrid | PageGrid2 | PageThermo | PageMedia | PageUnlock | PageQR | PageAlarm | PagePower export type PagetypeType = 'cardChart' | 'cardLChart' | 'cardEntities' |'cardGrid'|'cardGrid2'|'cardThermo'|'cardMedia'|'cardUnlock'|'cardQR'|'cardAlarm'|'cardPower' //| 'cardBurnRec'
// If u get a error here u forgot something in PagetypeType or PageType export type PageType = PageChart | PageEntities | PageGrid | PageGrid2 | PageThermo | PageMedia | PageUnlock | PageQR | PageAlarm | PagePower
function checkPageType(F: PagetypeType, A: PageType) {
A.type = F;
}
type PageEntities = { export type PageEntities = {
type: 'cardEntities', type: 'cardEntities',
items: PageItem[], items: PageItem[],
} & PageBaseType } & PageBaseType
type PageGrid = { export type PageGrid = {
type: 'cardGrid', type: 'cardGrid',
items: PageItem[], items: PageItem[],
} & PageBaseType } & PageBaseType
type PageGrid2 = { export type PageGrid2 = {
type: 'cardGrid2', type: 'cardGrid2',
items: PageItem[], items: PageItem[],
} & PageBaseType } & PageBaseType
type PageThermo = { export type PageThermo = {
type: 'cardThermo', type: 'cardThermo',
items: PageThermoItem[], items: PageThermoItem[],
} & Omit<PageBaseType, 'useColor'> } & Omit<PageBaseType, 'useColor'>
type PageMedia = { export type PageMedia = {
type: 'cardMedia', type: 'cardMedia',
items: PageMediaItem[], items: PageMediaItem[],
} & Omit<PageBaseType, 'useColor' | 'autoCreateAlias'> } & Omit<PageBaseType, 'useColor' | 'autoCreateAlias'>
type PageAlarm = { export type PageAlarm = {
type: 'cardAlarm', type: 'cardAlarm',
items: PageItem[], items: PageItem[],
} & Omit<PageBaseType, 'useColor'> } & Omit<PageBaseType, 'useColor'>
type PageUnlock = { export type PageUnlock = {
type: 'cardUnlock', type: 'cardUnlock',
items: PageItem[], items: PageItem[],
} & Omit<PageBaseType, 'useColor'> & Partial<Pick<PageBaseType, 'useColor'>> } & Omit<PageBaseType, 'useColor'> & Partial<Pick<PageBaseType, 'useColor'>>
type PageQR = { export type PageQR = {
type: 'cardQR', type: 'cardQR',
items: PageItem[], items: PageItem[],
} & Omit<PageBaseType, 'useColor'> } & Omit<PageBaseType, 'useColor'>
type PagePower = { export type PagePower = {
type: 'cardPower', type: 'cardPower',
items: PageItem[], items: PageItem[],
} & Omit<PageBaseType, 'useColor'> } & Omit<PageBaseType, 'useColor'>
type PageChart = { export type PageChart = {
type: 'cardChart' | 'cardLChart', type: 'cardChart' | 'cardLChart',
items: PageItem[], items: PageItem[],
} & Omit<PageBaseType, 'useColor'> } & Omit<PageBaseType, 'useColor'>
type PageItem = PageBaseItem | PageMediaItem | PageThermoItem export type PageItem = PageBaseItem | PageMediaItem | PageThermoItem
function isPageMediaItem(F: PageItem | PageMediaItem):F is PageMediaItem { export type PageMediaItem = {
return 'adapterPlayerInstance' in F
}
function isPageThermoItem(F: PageItem | PageThermoItem):F is PageThermoItem {
return 'popupThermoMode1' in F;
}
type PageMediaItem = {
adapterPlayerInstance: adapterPlayerInstanceType, adapterPlayerInstance: adapterPlayerInstanceType,
mediaDevice?: string, mediaDevice?: string,
colorMediaIcon?: RGB, colorMediaIcon?: RGB,
@@ -9738,26 +9805,26 @@ type PageMediaItem = {
repeatList?: string[], repeatList?: string[],
globalTracklist?: string[], globalTracklist?: string[],
crossfade?: boolean, crossfade?: boolean,
} & PageBaseItem } & PageBaseItem
type PageThermoItem = { export type PageThermoItem = {
popupThermoMode1?: string[], popupThermoMode1?: string[],
popupThermoMode2?: string[], popupThermoMode2?: string[],
popupThermoMode3?: string[], popupThermoMode3?: string[],
popUpThermoName?: string[], popUpThermoName?: string[],
setThermoAlias?: string[], setThermoAlias?: string[],
setThermoDestTemp2?: string, setThermoDestTemp2?: string,
} & PageBaseItem | } & PageBaseItem |
{ {
popupThermoMode1?: string[], popupThermoMode1?: string[],
popupThermoMode2?: string[], popupThermoMode2?: string[],
popupThermoMode3?: string[], popupThermoMode3?: string[],
popUpThermoName?: string[], popUpThermoName?: string[],
setThermoAlias?: string[], setThermoAlias?: string[],
setThermoDestTemp2?: string, setThermoDestTemp2?: string,
} & PageBaseItem } & PageBaseItem
type PageBaseItem = { export type PageBaseItem = {
id?: string | null, id?: string | null,
icon?: string, icon?: string,
icon2?: string, icon2?: string,
@@ -9800,24 +9867,24 @@ type PageBaseItem = {
fontSize?: number, fontSize?: number,
actionStringArray?: string[], actionStringArray?: string[],
alwaysOnDisplay?: boolean, alwaysOnDisplay?: boolean,
} }
type DimMode = { export type DimMode = {
dimmodeOn: (boolean | undefined), dimmodeOn: (boolean | undefined),
brightnessDay: (number | undefined), brightnessDay: (number | undefined),
brightnessNight: (number | undefined), brightnessNight: (number | undefined),
timeDay: (string | undefined), timeDay: (string | undefined),
timeNight: (string | undefined) timeNight: (string | undefined)
} }
type ConfigButtonFunction = { export type ConfigButtonFunction = {
mode: 'page' | 'toggle' | 'set' | null, mode: 'page' | 'toggle' | 'set' | null,
page: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid | PageGrid2 | PagePower | PageChart | PageUnlock | null), page: (PageThermo | PageMedia | PageAlarm | PageQR | PageEntities | PageGrid | PageGrid2 | PagePower | PageChart | PageUnlock | null),
entity: string | null, entity: string | null,
setValue: string | number | boolean | null setValue: string | number | boolean | null
} }
type Config = { export type Config = {
panelRecvTopic: string, panelRecvTopic: string,
panelSendTopic: string, panelSendTopic: string,
weatherEntity: string, weatherEntity: string,
@@ -9834,11 +9901,11 @@ type Config = {
subPages: PageType[], subPages: PageType[],
button1: ConfigButtonFunction, button1: ConfigButtonFunction,
button2: ConfigButtonFunction button2: ConfigButtonFunction
} }
type leftScreensaverEntityType = [ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined] | []; export type leftScreensaverEntityType = [ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined, ScreenSaverElementWithUndefined] | [];
type indicatorScreensaverEntityType = [ScreenSaverElementWithUndefined?, ScreenSaverElementWithUndefined?, ScreenSaverElementWithUndefined?, ScreenSaverElementWithUndefined?, ScreenSaverElementWithUndefined?] | []; export type indicatorScreensaverEntityType = [ScreenSaverElementWithUndefined?, ScreenSaverElementWithUndefined?, ScreenSaverElementWithUndefined?, ScreenSaverElementWithUndefined?, ScreenSaverElementWithUndefined?] | [];
type ScreenSaverElementWithUndefined = null | undefined | ScreenSaverElement export type ScreenSaverElementWithUndefined = null | undefined | ScreenSaverElement
type ScreenSaverElement = { export type ScreenSaverElement = {
ScreensaverEntity: string, ScreensaverEntity: string,
ScreensaverEntityText: string, ScreensaverEntityText: string,
ScreensaverEntityFactor?: number, ScreensaverEntityFactor?: number,
@@ -9852,9 +9919,9 @@ type ScreenSaverElement = {
ScreensaverEntityOffColor?: RGB ScreensaverEntityOffColor?: RGB
ScreensaverEntityOnText?: string | null, ScreensaverEntityOnText?: string | null,
ScreensaverEntityOffText?: string | null, ScreensaverEntityOffText?: string | null,
} }
type ScreenSaverMRElement = { export type ScreenSaverMRElement = {
ScreensaverEntity: string | null, ScreensaverEntity: string | null,
ScreensaverEntityIconOn: string | null, ScreensaverEntityIconOn: string | null,
ScreensaverEntityIconOff: string | null, ScreensaverEntityIconOff: string | null,
@@ -9863,89 +9930,29 @@ type ScreenSaverMRElement = {
ScreensaverEntityValueUnit: string | null, ScreensaverEntityValueUnit: string | null,
ScreensaverEntityOnColor: RGB, ScreensaverEntityOnColor: RGB,
ScreensaverEntityOffColor: RGB ScreensaverEntityOffColor: RGB
} }
type IconScaleElement = { export type IconScaleElement = {
val_min:number, val_min:number,
val_max:number, val_max:number,
val_best?: number val_best?: number
} }
/** we need this to have a nice order when using switch() */ /** we need this to have a nice order when using switch() */
type adapterPlayerInstanceType = export type adapterPlayerInstanceType =
'alexa2.0.' | 'alexa2.1.'| 'alexa2.2.' | 'alexa2.3.' | 'alexa2.4.' | 'alexa2.5.' | 'alexa2.6.' | 'alexa2.7.' | 'alexa2.8.' | 'alexa2.9.' 'alexa2.0.' | 'alexa2.1.'| 'alexa2.2.' | 'alexa2.3.' | 'alexa2.4.' | 'alexa2.5.' | 'alexa2.6.' | 'alexa2.7.' | 'alexa2.8.' | 'alexa2.9.'
| 'sonos.0.' | 'sonos.1.' | 'sonos.2.' | 'sonos.3.' | 'sonos.4.' | 'sonos.5.' | 'sonos.6.' | 'sonos.7.' | 'sonos.8.' | 'sonos.9.' | 'sonos.0.' | 'sonos.1.' | 'sonos.2.' | 'sonos.3.' | 'sonos.4.' | 'sonos.5.' | 'sonos.6.' | 'sonos.7.' | 'sonos.8.' | 'sonos.9.'
| 'spotify-premium.0.' | 'spotify-premium.1.' | 'spotify-premium.2.' | 'spotify-premium.3.' | 'spotify-premium.4.' | 'spotify-premium.5.' | 'spotify-premium.6.' | 'spotify-premium.7.' | 'spotify-premium.8.' | 'spotify-premium.9.' | 'spotify-premium.0.' | 'spotify-premium.1.' | 'spotify-premium.2.' | 'spotify-premium.3.' | 'spotify-premium.4.' | 'spotify-premium.5.' | 'spotify-premium.6.' | 'spotify-premium.7.' | 'spotify-premium.8.' | 'spotify-premium.9.'
| 'volumio.0.' | 'volumio.1.' | 'volumio.2.' | 'volumio.3.' |'volumio.4.' | 'volumio.5.' | 'volumio.6.' | 'volumio.7.' | 'volumio.8.' | 'volumio.9.' | 'volumio.0.' | 'volumio.1.' | 'volumio.2.' | 'volumio.3.' |'volumio.4.' | 'volumio.5.' | 'volumio.6.' | 'volumio.7.' | 'volumio.8.' | 'volumio.9.'
| 'squeezeboxrpc.0.' | 'squeezeboxrpc.1.' | 'squeezeboxrpc.2.' | 'squeezeboxrpc.3.' | 'squeezeboxrpc.4.' | 'squeezeboxrpc.5.' | 'squeezeboxrpc.6.' | 'squeezeboxrpc.7.' | 'squeezeboxrpc.8.' | 'squeezeboxrpc.9.' | 'squeezeboxrpc.0.' | 'squeezeboxrpc.1.' | 'squeezeboxrpc.2.' | 'squeezeboxrpc.3.' | 'squeezeboxrpc.4.' | 'squeezeboxrpc.5.' | 'squeezeboxrpc.6.' | 'squeezeboxrpc.7.' | 'squeezeboxrpc.8.' | 'squeezeboxrpc.9.'
| 'bosesoundtouch.0.' | 'bosesoundtouch.1.' | 'bosesoundtouch.2.' | 'bosesoundtouch.3.' |'bosesoundtouch.4.' | 'bosesoundtouch.5.' | 'bosesoundtouch.6.' | 'bosesoundtouch.7.' | 'bosesoundtouch.8.' | 'bosesoundtouch.9.' | 'bosesoundtouch.0.' | 'bosesoundtouch.1.' | 'bosesoundtouch.2.' | 'bosesoundtouch.3.' |'bosesoundtouch.4.' | 'bosesoundtouch.5.' | 'bosesoundtouch.6.' | 'bosesoundtouch.7.' | 'bosesoundtouch.8.' | 'bosesoundtouch.9.'
type PlayerType = _PlayerTypeWithMediaDevice | _PlayerTypeWithOutMediaDevice; export type PlayerType = _PlayerTypeWithMediaDevice | _PlayerTypeWithOutMediaDevice;
const ArrayPlayerTypeWithMediaDevice = ['alexa2', 'sonos', 'squeezeboxrpc'] as const export type _PlayerTypeWithOutMediaDevice = typeof ArrayPlayerTypeWithOutMediaDevice[number]
const ArrayPlayerTypeWithOutMediaDevice = ['spotify-premium', 'volumio', 'bosesoundtouch'] as const export type _PlayerTypeWithMediaDevice = typeof ArrayPlayerTypeWithMediaDevice[number]
type _PlayerTypeWithOutMediaDevice = typeof ArrayPlayerTypeWithOutMediaDevice[number]
type _PlayerTypeWithMediaDevice = typeof ArrayPlayerTypeWithMediaDevice[number] export type notSortedPlayerType = `${PlayerType}.0.` | `${PlayerType}.1.` | `${PlayerType}.2.` | `${PlayerType}.3.` | `${PlayerType}.4.` | `${PlayerType}.5.` | `${PlayerType}.6.` | `${PlayerType}.7.` | `${PlayerType}.8.` | `${PlayerType}.9.`
export type mediaOptional = 'seek' | 'crossfade' | 'speakerlist' | 'playlist' | 'tracklist' | 'equalizer' | 'repeat' | 'favorites'
function isPlayerWithMediaDevice (F: string | _PlayerTypeWithMediaDevice): F is _PlayerTypeWithMediaDevice {
return ArrayPlayerTypeWithMediaDevice.indexOf(F as _PlayerTypeWithMediaDevice) != -1;
}
type notSortedPlayerType = `${PlayerType}.0.` | `${PlayerType}.1.` | `${PlayerType}.2.` | `${PlayerType}.3.` | `${PlayerType}.4.` | `${PlayerType}.5.` | `${PlayerType}.6.` | `${PlayerType}.7.` | `${PlayerType}.8.` | `${PlayerType}.9.`
/** check if adapterPlayerInstanceType has all Playertypes */
function checkSortedPlayerType(F: notSortedPlayerType) {
const test: adapterPlayerInstanceType = F;
}
type mediaOptional = 'seek' | 'crossfade' | 'speakerlist' | 'playlist' | 'tracklist' | 'equalizer' | 'repeat' | 'favorites'
function isMediaOptional(F: string | mediaOptional): F is mediaOptional {
switch(F as mediaOptional) {
case "seek":
case "crossfade":
case "speakerlist":
case "playlist":
case "tracklist":
case "equalizer":
case "repeat":
case "favorites":
return true;
default:
return false
}
}
function isEventMethod(F: string | EventMethod): F is EventMethod {
switch(F as EventMethod) {
case "startup":
case "sleepReached":
case "pageOpenDetail":
case "buttonPress2":
case "renderCurrentPage":
case "button1":
case "button2":
return true;
default:
// Have to talk about this.
log(`Please report to developer: Unknown EventMethod: ${F} `, 'warn');
return false;
}
}
function isPopupType(F: PopupType | string): F is PopupType {
switch(F as PopupType) {
case "popupFan":
case "popupInSel":
case "popupLight":
case "popupLightNew":
case "popupNotify":
case "popupShutter":
case "popupThermo":
case "popupTimer":
return true;
default:
log(`Please report to developer: Unknown PopupType: ${F} `, 'warn');
return false;
}
} }