Ich habe das ganze jetzt mal für VIS-2 kompatibel hinbekommen.
Es werden Widgets vom vis-inventwo desgin Adapter und vom Widget Sammlung Adapter ( siehe 2 Posts oben drüber) benötigt.
Für das List-Widget (Auswahl, Boolscherwert,Zahl, Zeichenkette) aus dem Adapter Widget Sammlung wird zusätzlich der Hilfsdatenpunkt z.B 0_userdata.0.Test.TV_Sender_Auswahl benötigt. Den muß man im Script (TypeScript -> siehe zwei Posts drüber) den Pfad anpassen (const targetDpId: string = '0_userdata.0.TV_Sender_Auswahl';)
Hier die Seite aus der VIS-2:
epg-Vis2.txt
Für das PopUp Window zum editieren beim Klick auf den Button 'Details' wird ein weiteres Script (TypeScript) benötigt, diese legt zwei neue DP unter '0_userdata.0.epg.edit' an, einmal '0_userdata.0.epg.edit.btn_down' und einmal '0_userdata.0.epg.edit.btn_up' .
Im PopUp Window werden damit die zwei Button +Plus und -Minus gesteuert.
Hier das TypeScript:
const dpTarget = '0_userdata.0.epg.edit.order';
const dpBtnUp = '0_userdata.0.epg.edit.btn_up';
const dpBtnDown = '0_userdata.0.epg.edit.btn_down';
// Trigger-Datenpunkte automatisch anlegen
createState(dpBtnUp, false, {
type: 'boolean',
role: 'button',
name: 'EPG Order Erhöhen',
read: false,
write: true,
def: false
});
createState(dpBtnDown, false, {
type: 'boolean',
role: 'button',
name: 'EPG Order Verringern',
read: false,
write: true,
def: false
});
// Listener für Erhöhen (+)
on({ id: dpBtnUp, change: 'any', val: true }, async () => {
const currentState = await getStateAsync(dpTarget);
if (currentState && typeof currentState.val === 'number') {
await setStateAsync(dpTarget, currentState.val + 1, true);
} else {
// Fallback, falls der Wert leer oder kein Number ist
await setStateAsync(dpTarget, 1, true);
}
});
// Listener für Verringern (-)
on({ id: dpBtnDown, change: 'any', val: true }, async () => {
const currentState = await getStateAsync(dpTarget);
if (currentState && typeof currentState.val === 'number') {
// Zieht 1 ab, nimmt aber mindestens die 1 (verhindert 0 oder Minuswerte)
const newValue = Math.max(1, currentState.val - 1);
await setStateAsync(dpTarget, newValue, true);
} else {
// Fallback, falls der Ursprungswert leer oder fehlerhaft war
await setStateAsync(dpTarget, 1, true);
}
});
Und das PopUp Widget:
epgPopUp-Vis2.txt
Bei mir funktioniert das soweit.