Pull Request: Multibutton-State als CSS-Klasse

Begonnen von peterk_de, 07 März 2017, 14:24:21

Vorheriges Thema - Nächstes Thema

peterk_de

Huhu,

ich bin mal wieder  bei der erweiterten Nutzung von TabletUI an eine Grenze gestoßen.

Und zwar kann man per CSS nicht (einfach) unterscheiden, in welchem Zustand sich ein Symbol, Switch, ... gerade befindet. Daher hatte ich mir mal in einer alten Version von TabletUI einen Patch für die den widget_famultibutton.js gebastelt, die einfach allen Erben eine entsprechende css-Klasse hinzufügt - bei an/aus-knöpfen state0 oder state1, bei mehr Werten entsprechend state0 ... stateN.

Patch für 2.6:


--- widget_famultibutton.js.old 2017-03-07 13:49:12.449315913 +0100
+++ widget_famultibutton.js     2017-03-07 14:13:52.947013217 +0100
@@ -189,11 +189,13 @@ var Modul_famultibutton = function () {
             if (typeof bgcolors[s] == 'undefined') {
                 bgcolors[s] = bgcolors[s > 0 ? s - 1 : 0];
             }
+            elem.removeClass("state"+s);
         }

         var elm = elem.children().children('#fg');
         var idx = ftui.indexOfGeneric(states, state);
         if (idx > -1) {
+               elem.addClass("state"+idx);
             var faelem = elem.data('famultibutton');
             if (faelem) {
                 idxOn = idxOn || 0;
@@ -493,9 +495,13 @@ var Modul_famultibutton = function () {
                         if (faelem) {
                             if (elem.matchingState('get', state) === 'on') {
                                 faelem.setOn();
+                                elem.removeClass("state0");
+                                elem.addClass("state1");
                             }
                             if (elem.matchingState('get', state) === 'off') {
                                 faelem.setOff();
+                                elem.removeClass("state1");
+                                elem.addClass("state0");
                             }
                         }
                     }


So kann man ganz einfach z.B. einen gedrückten Button (hat dann immer auch die css-klasse state1) von einen nicht gedrückten (hat immer klasse state0) unterscheiden und über Custom-CSS einfärben.

Ich hatte das ursprünglich in eine alte Eval-Version eingebaut, da lief es ewig und gut - und eben nach 2.6. übertragen und kurz getestet. Es läuft noch und würd mich freuen wenn das auch noch wer testen könnte und es VIELEICHT sogar ins Repo einfließt, so dass ich es nicht immer selbst bei mir updaten muss ;)
FHEM auf Ubuntu-VM / 2xNUC Proxmox Cluster
UI: HomeKit, TabletUI, Grafana
IOdevs: 2xHueBridge, RaspiMatic-CCU, CUL868, 2xHarmonyHub, 6xRaspi-Roomnode mit CO2, VOC und lepresenced
Devices: 107xHomematic(IP), 96xPhilips Hue, 17xTECHEM, 12xBTLE, 8xSONOS, 2xHomeConnect, 1xShelly 3em, 1xNanoleaf ...