Slider: Reine Anzeige / Farbe dyn. ändern?

Begonnen von M_I_B, 09 November 2016, 08:37:04

Vorheriges Thema - Nächstes Thema

M_I_B

Morgähn Kinnaz,

SuFu hat leider nix ergeben, daher mal hier, wobei es sich im Grunde um drei Fragen handelt...

1.:
Kann ich einen Slider als reine Anzeige setzen, also die Möglichkeit des Bewegens mit der Maus deaktivieren?

2.:
Wie kann man die Wertangabe des Sliders "vor" dem Slider unterbinden (siehe Bild)?

3.:
Gibt es eine (geschickte) Möglichkeit, den Slider dynamisch einzufärben? Also z.B. von blau über grün zu rot in Abhängigkeit eines Vergleiches zwischen dem Wert des Sliders und einem SOLL- Wert?


Das hat bestimmt schon mal wer gefragt oder gemacht, nur leider finde ich es über die SuFu nicht...


rudolfkoenig

Ich gehe davon aus (ohne es geprueft oder getestet zu haben), dass die Fragen mit Nein/Gar nicht/Nein zu beantworten sind. Soweit ich weiss, bis du der Erste mit diesen Fragen, und hast damit die Ehre, meine Annahmen zu verifizieren und ggf. Abhilfe implementieren zu duerfen :)

justme1968

der wer vor dem slider müsste STATE sein. das bekommst du über stateFormat weg.

zu read-only und farbe: mit ein paar zeilen java script würde das gehen.

der colorpicker verwendet im hsv mode schon eine positions abhängige farbe.

genau so könnte man einen rangeSlider bauen der zwei zusätzliche parameter für den grün bereich hat.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

M_I_B

@rudolfkoenig: Ich und irgend was implementieren? Ich DAU? *prust* Ne, so weit bin ich noch lange nicht ::)
Wundert mich aber, das noch niemand auf die Idee gekommen ist, die Slider als reine IST-Wert - Anzeige zu nutzen. Finde ich optisch recht gut und im Zusammenhang mit Slidern für SOLL-Werte auf einen Blick zu erfassen ...

@andre: Hmmm... mit stateFormat hatte ich schon rumgehampelt, allerdings ohne Erfolg. Mal ging der Slider nicht mehr, mal war er ganz weg, ... Bin ich wohl zu doof zu  ::)
Was das ReadOnly und Farbe betrifft: JS habe ich nicht auf'm Schirm, fällt also von meiner Seite aus flach. Aber die HSV-ColorPicker- Sache ist ja schon mal ein Ansatz. Den nutze ich ja schon für die China-RGBW- Teile (der hat übrigens eine Macke; wenn der im Raum nicht am Ende steht, funktionieren alle folgenden Slider nicht mehr)...

justme1968

#4
@M_I_B: das angehängte fhemweb_rangeslider.js file nach .../fhem/www/pgm2

[codedefine range dummy                                                       
attr range room range                                                     
attr range setList state:rangeslider,0,0.1,100,1,rmin:45,rmax:55,readonly:1
attr range webCmd state[/code]

mit attr range stateFormat {''} verschwindet die zahl vor dem slider.
eigentlich sollte der slider mit stateFormat nichts zu tun und beides sollte sich auch nicht in die quere kommen.
das ist aber scheinbar nicht so. sieht unten für rudi.

was genau ist das für ein problem mit dem colorpicker?

@rudi:
attr range2 room range
attr range2 setList state:slider,0,1,100
attr range2 stateFormat {''}
attr range2 webCmd state


es schaut so aus als ob sich der slider nicht (nur?) auf das event für state (range2-state) aktualisiert sondern auch noch beim event für STATE (range2). sobald bei stateFormat keine zahl steht 'spinnt' der slider beim anfassen, wenn sich state ändert und auch wenn man z.b. ein attribut setzt da er auf all das reagiert. das passiert nicht wenn man statt state ein anderes reading verwendet, dann geht auch die longpoll aktualisierung, aber wenn man den slider von hand verstellt wird die eigene setValueFn nicht aufgerufen. dadurch wird z.b. beim rangeslider von oben die farbe nicht mehr gesetzt.

ich vermute das ist auch der grund warum bei den abgeleiteten slidern nach dem seinenaufbau (manchmal) der slider wert nicht richtig initialisiert wird wenn ich in meinem js code nicht noch ein $(document).ready(function(arg) { newEl.setValueFn(currVal) }); drin habe.

edit: ich denke es liegt unter anderem an diesen zeilen: 894   if( $(newEl).find("[informId]").length == 0 && !$(newEl).attr("informId") ) {
895     if(reading && reading == "state")
896       $(newEl).attr("informId", devName);
897     else if(reading)
898       $(newEl).attr("informId", devName+"-"+reading);

hier wird explizit die informId so geändert das das event für STATE greif sobald das reading state heisst. ich denke das ist falsch. wenn ich den state sonderfall raus schmeisse funktionieren beide slider von oben wie erwartet. auch wenn stateFormat auf {''} gesetzt wird. inklusive longpoll und farben bei verstellen von hand, der slider spinnt nicht mehr wenn ein attribut gesetz wird.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

M_I_B

@Andre:
Hey super! Danke für das Script! Baue ich nachher mal gleich ein ;D

Colorpicker- SLider- Dingens:
Damit ist ja das Ding ganz unten in der Anlage gemeint, wa?
Das Ganze im Raum resp. innerhalb einer Gruppe sortiere ich ja mit "sortby x". Wenn ich jetzt den Picker damit z.B. nach ganz oben verlege, dann funktionieren alle danach folgenden Slider nicht mehr. Ich habe den mal bei Umweltdaten einsortiert, einmal an 3. und einmal an 2. Stelle und das Ergebnis als Anlagen angefügt.

justme1968

das problem kann ich mit:define slider1 dummy
attr slider1 room slider
attr slider1 setList state:colorpicker,HSV
attr slider1 webCmd state
define slider2 dummy
attr slider2 room slider
attr slider2 setList state:slider,0,1,100
attr slider2 webCmd state
nicht nachstellen. auch nicht wenn ich die beiden dumys auf unterschiedliche weisen in gruppen packe. bitte probiermal was man ändern muss damit es das problem gibt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

@rudi: nur damit es nicht unter geht. bitte schau dir mal das problem an das ich hier: https://forum.fhem.de/index.php/topic,60425.msg518198.html#msg518198 gefunden habe.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

#8
Das war schon auf der TODO, ich habe nur mehr Zeit gebraucht, um darueber nachzudenken, wozu die Sonderhandlung gut war. Ich vermute, damit der slider immer das anzeigt, was links daneben steht. Bin jetzt zwar deinem Vorschlag gefolgt, und die Sonderbehandlung entfernt, ganz ueberzeugt von meinem eigenen Handeln bin ich aber nicht. Falls jemand gute Argumente hat, her damit :)

justme1968

ich finde die änderung gut :)

das gleiche kann man ja immer noch anzeigen lassen wenn man will. es ist sogar der default. aber mit der änderung geht es eben auch anders und das ist sonst nicht möglich.

das links daneben gehört ja auch garnicht zum slider sondern ist STATE und wenn man webCmd anders konfiguriert steht es ja nicht unbedingt direkt neben dem slider.


ich glaube die sonderbehandlung kommt noch aus der zeit als das js komplett umgebaut wurde und es die event spezifischen readings noch garnicht wieder gab. die haben wir ja erst nach und nach wieder eingebaut.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

M_I_B

#10
... so ... war ein bisschen Busy mit anderen Aufgaben ...

Das JS funktioniert wunderbar, nachdem ich dahinter gekommen bin, das man erst mal ein ShutDown&Restart hinlegen muss, das es auch zum Tragen kommt  ::)

Einen dazu hätte ich aber noch in Bezug auf die Parameter- Zeile bezgl. rmin/rmax:
Wie kann ich da das Reading eines andren Dummy einbauen? Ich habe jetzt einen auf ...
setList state:rangeslider,20,0.1,80,1,rmin:{([HZSP]-[HYS])},rmax:{([HZSP]+5)},readonly:1
... gemacht, aber dat gei ja nu nimmernich. Muss ich vermutlich anders notieren, odda? Irgendwie muss das da aber rein, da sich ja der IST- Wert und die Hysterese ändern bei Umschaltung auf Nachtbetrieb und zurück resp. beim manuellen Verändern der jeweiligen Einstellungen...
Axso... Könnte man die dargestellten Farben für rmin, rmax und "alles ok" als RGB und/oder Klartext (lightblue z.B. > https://html-colors.org/de/web-farbtabelle/) in der Parametrierung mitgeben? Also wenn nix, dann default, wenn, dann eben das....

Zum Thema "Irrer Iwan Slider" mit stateFormat {''}: Kann ich die entsprechende Codestelle selber raus frickeln (wo?), oder wird die Änderung zeitnah ins Update gegeben?

rudolfkoenig

ZitatDas JS funktioniert wunderbar, nachdem ich dahinter gekommen bin, das man erst mal ein ShutDown&Restart hinlegen muss, das es auch zum Tragen kommt  (https://forum.fhem.de/Smileys/default/rolleyes.gif)
Bei mir reicht fuer JS Aktualisierung ein reload im Browser.

ZitatWie kann ich da das Reading eines andren Dummy einbauen?
Die {()} Konstrukte (intern SetMagic genannt) funktioniert nur fuer die set und setreading Befehle.
Wuerde fuer attr aber auch nicht viel helfen, weil es beim ausfuehren des Befehls ersetz wird, und nicht bei jede  Abfrage. Ich wuerde ein notify bauen, und damit setList aendern.

der "Irrer Iwan Slider" sollte nach dem update heute weg sein.

M_I_B

Zitat von: rudolfkoenig am 11 November 2016, 07:24:55Bei mir reicht fuer JS Aktualisierung ein reload im Browser.
Hmmm... Die Datei hatte ich ja schon vorgestern Abend rein kopiert und seit dem hatte ich reichlich Browser- Reloads / Starts und ebenso reichlich ReRead Config. Aber nach Einbau der Parameter hatte ich an Stelle des Sliders nur den KlickPfeil eines DropDown. Das war erst nach einem ShutDown/Restart richtig...

Zitat von: rudolfkoenig am 11 November 2016, 07:24:55Wuerde fuer attr aber auch nicht viel helfen, weil es beim ausfuehren des Befehls ersetz wird, und nicht bei jede  Abfrage.
Ok, das erklärt einiges ;D Da kann ich mir ja'n Wolf frickeln  ::) Dann mache ich das mal wie vorgeschlagen...

Zitat von: rudolfkoenig am 11 November 2016, 07:24:55der "Irrer Iwan Slider" sollte nach dem update heute weg sein.
Super! Dann brauche ich nicht an Dingen rumfrickeln, wovon ich keine Ahnung habe; finde ich gut  ;D ;D ;D

Invers

Bei mir half:
chown -c fhem:dialout /opt/fhem/www/pgm2/fhemweb_rangeslider.js

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

M_I_B

#14
... ich bin jetzt nicht der Linux- Held, aber wenn ich das richtig lese, hast du damit dem User "fhem" und der Gruppe "Dialout" als Besitzer der Datei deklariert?

Ich weiß im Moment nicht, ob das bei mir Sinn macht. Denn nach dem Fhem- Neustart geht es ja; somit sollten die Rechte stimmen. Ich habe die Datei ja von einem Windows via als Root gemappter persistenter Samba- Verbindung auf den PI kopiert. Daher nehme ich an, das hier Rechte beim Kopieren gesetzt wurden, die Fhem das Anfassen er Datei gestattet.

EDIT hat mal nachgesehen:
-rw-r--r--  1 fhem dialout  39647 Nov  5 11:56 fhemweb.js
-rw-r--r--  1 fhem dialout   1168 Nov 15  2015 fhemweb_knob.js
-rwxrwxr--+ 1 root root      1209 Nov  9 12:57 fhemweb_rangeslider.js
-rw-r--r--  1 fhem dialout   3449 Aug 14 12:33 fhemweb_readingsGroup.js
-rw-r--r--  1 fhem dialout    658 Nov 15  2015 fhemweb_readingsHistory.js
-rw-r--r--  1 fhem dialout   6964 Aug 14 12:33 fhemweb_sortable.js


Also werden alle per SMB kopierten Dateien erwartungsgemäß unter dem user:gruppe Root abgelegt