NEWS
(gelöst) mehrere DP toggeln
-
Hallo zusammen,
aktuell setzte ich das Widget "materialdesign - Icon List" ein um Farben in einer Tabelle wählen zu können. Jede Farbe darf nur einmal vorkommen, d.h. wenn ein Button gedrückt wird (true) sollen alle anderen Farben (Button) auf "false" springen:
Widget-Export
als JS-Script habe ich das nun bisher sehr umständlich umgesetzt:
welches ist die eleganteste Lösung um dies einfacher zu gestalten? Evtl. hat jemand einen guten Input/Denkanstoss?
-
Hallo zusammen,
aktuell setzte ich das Widget "materialdesign - Icon List" ein um Farben in einer Tabelle wählen zu können. Jede Farbe darf nur einmal vorkommen, d.h. wenn ein Button gedrückt wird (true) sollen alle anderen Farben (Button) auf "false" springen:
Widget-Export
als JS-Script habe ich das nun bisher sehr umständlich umgesetzt:
welches ist die eleganteste Lösung um dies einfacher zu gestalten? Evtl. hat jemand einen guten Input/Denkanstoss?
Zumindest ein Denkanstoß, mehr ggf. Später, bin gerade unterwegs.
Ein Array mit allen gewünschten Datenpunkten definieren.
Ein trigger auf alle dp‘s, mit change:“gt“ um nur den Wechsel false->true zu fangen.In der Funktion durch das Array durch gehen. Wenn Eintrag gleich dem Objekt welches den trigger ausgelöst hat nix tun, sonst value auf True setzen.
-
Zumindest ein Denkanstoß, mehr ggf. Später, bin gerade unterwegs.
Ein Array mit allen gewünschten Datenpunkten definieren.
Ein trigger auf alle dp‘s, mit change:“gt“ um nur den Wechsel false->true zu fangen.In der Funktion durch das Array durch gehen. Wenn Eintrag gleich dem Objekt welches den trigger ausgelöst hat nix tun, sonst value auf True setzen.
@Asgothian sagte:
In der Funktion durch das Array durch gehen. Wenn Eintrag gleich dem Objekt welches den trigger ausgelöst hat nix tun, sonst
Etwa so:
const ids = [ "0_userdata.0.farbe.gelb", "0_userdata.0.farbe.orange", "0_userdata.0.farbe.pink", "0_userdata.0.farbe.gruen" ]; on({id: ids, change: 'gt'}, function (dp) { for(let i = 0; i < ids.length; i++) { if(dp.id != ids[i]) setState(ids[i], false, true); } }); -
@Asgothian sagte:
In der Funktion durch das Array durch gehen. Wenn Eintrag gleich dem Objekt welches den trigger ausgelöst hat nix tun, sonst
Etwa so:
const ids = [ "0_userdata.0.farbe.gelb", "0_userdata.0.farbe.orange", "0_userdata.0.farbe.pink", "0_userdata.0.farbe.gruen" ]; on({id: ids, change: 'gt'}, function (dp) { for(let i = 0; i < ids.length; i++) { if(dp.id != ids[i]) setState(ids[i], false, true); } }); -
@Asgothian sagte:
In der Funktion durch das Array durch gehen. Wenn Eintrag gleich dem Objekt welches den trigger ausgelöst hat nix tun, sonst
Etwa so:
const ids = [ "0_userdata.0.farbe.gelb", "0_userdata.0.farbe.orange", "0_userdata.0.farbe.pink", "0_userdata.0.farbe.gruen" ]; on({id: ids, change: 'gt'}, function (dp) { for(let i = 0; i < ids.length; i++) { if(dp.id != ids[i]) setState(ids[i], false, true); } });Vielen Dank für eure Unterstützung!
zu meinem Verständnis (kopieren kann ja jeder):
Es wird ein Array generiert mit dem Namen ids, welches alle DP's beinhaltet. Der Inhalt dieses Arrays dient als Wert für den Trigger. Change: 'gt' (gem. Definition: "(greater) New value must be greater than old value (state.val > oldState.val)"): ist somit "true" grösser als "false". Der auslösende DP wird der Funktion mit "dp" übergeben. In der Schlaufe "for" wird bei jedem Element des Arrays geprüft ob der Arrayeintrag dem Auslöser entspricht. Wenn nein dann "setState vom jeweiligen Element auf "false" sonst "true". -
Vielen Dank für eure Unterstützung!
zu meinem Verständnis (kopieren kann ja jeder):
Es wird ein Array generiert mit dem Namen ids, welches alle DP's beinhaltet. Der Inhalt dieses Arrays dient als Wert für den Trigger. Change: 'gt' (gem. Definition: "(greater) New value must be greater than old value (state.val > oldState.val)"): ist somit "true" grösser als "false". Der auslösende DP wird der Funktion mit "dp" übergeben. In der Schlaufe "for" wird bei jedem Element des Arrays geprüft ob der Arrayeintrag dem Auslöser entspricht. Wenn nein dann "setState vom jeweiligen Element auf "false" sonst "true".@ice987 sagte:
Wenn nein dann "setState vom jeweiligen Element auf "false" sonst "true".
Richtig: Wenn nein dann "setState vom jeweiligen Element auf "false", der auslösende Datenpunkt bleibt "true" (wird nicht verändert).
Ansonsten alles richtig interpretiert.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden