Ankündigung

Einklappen
Keine Ankündigung bisher.

KNOB, zusätzlich mit Wertebereich-Skala (SVG generiert)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    KNOB, zusätzlich mit Wertebereich-Skala (SVG generiert)

    Hallo,

    wie gefällt diese Erweiterung ? Die bisherige Möglichkeit von Wertenbereichen war auf aufwendige .png Grafiken beschränkt.
    Verwendete meines Wissens nur HAPE. Braucht dafür gutes Know-How in Grafikprogrammen (Adobe Illustrator ).

    Hier die elegante Lösung, zur Ergänzung der KNOB-Funktion. Es wird im Hintergrund eine parametrierbare SVG-Grafik erzeugt. Aus heutiger Sicht die bestmögliche Technik.

    XXKNOB ist von der "Haptik" das beste mir bekannte Control. Vergleicht es mit XXSLIDER. Besser zu bedienen ist eindeutig XXKNOB.

    Sogar die recht kleinen drei KNOBs sind problemlos zu steuern. Probiert eine solche Lösung mit XXSLIDER. Auf dieser kleinen Größe unmöglich.

    Übrigens. Auf hochauflösenden Tablets, mit "Retina" Grafik noch wirklich lesbar.

    Darum auch die Initiative zur "optischen" Verbesserung von XXKNOB.

    image_59892.pngBildschirmfoto 2017-03-26 um 10.19.17.png

    Ist eine Erweiterung in custom.js.

    NilsS vielleicht könntest DU einen kurzen Qualitätscheck durchführen. Ist meine erste -ohne Unterstützung- erstellte XXAPI-Funktion.

    Hier der Code:

    Code:
    hs.functions.element_loader([
        "js/gauge.min.js"    // http://cdn.rawgit.com/Mikhus/canvas-gauges/gh-pages/download/2.1.2/radial/gauge.min.js
       ]
    );
    
    
    xxAPI.functions.XXRADIALGAUGE = function( oarg ) {
        var _id = 'id_radialgauge';
        oarg.item.text = "";
        /*
        if($.isEmptyObject(oarg.item.info)) {
            debug(4,"XXRADIALGAUGE no item info " + oarg.item.uid,oarg);
            oarg.item.item_callback = function() {
                oarg.iscallback = true;
                xxAPI.functions.XXRADIALGAUGE( oarg );
            }
            return;
        }
        */
        if(!oarg.item.xxapi.hasOwnProperty("gauge")) {
            var _majorTicks = ['0','10','20','30','40','50','60','70','80','90','100'];
            var _min = 0;
            var _max = 100;
            var _minorTicks = 2;
            var _startAngle = 56;
    
            if(oarg.args[1]=='vol') {
                _majorTicks = ['0','10','20','30','40','50','60','70','80'];
                _max = 80
            }
            if(oarg.args[1]=='temp') {
                _majorTicks = ['7','9','11','13','15','17','19','21','23','25','27'];
                _min = 7;
                _max = 27
            }
            if(oarg.args[1]=='sw') {
                _majorTicks = ['','-2','','-1','','0','','1','','2',''];
                _min = -2.5;
                _max = 2.5
            }
         // oarg.item.html = "<canvas data-type='radial-gauge' id='id_radialgauge' />";
            oarg.item.xxapi.gauge = new RadialGauge({
                renderTo: document.createElement('canvas'),
                width: oarg.item.width,
                height: oarg.item.height,
                units: false,
                title: false,
                value: 0,
                borders: false,
                minValue: _min,
                maxValue: _max,
                needle: false,
                valueBox: false,
                colorValueBoxBackground: 'transparent',
                barWidth: 14,
                barShadow: 0,
                startAngle: _startAngle,
                ticksAngle: 360-2*_startAngle,
                majorTicks: _majorTicks,
                highlights: [{from: _min, to: _max, color: 'transparent'}],
                strokeTicks: false,
                minorTicks: _minorTicks,
                colorPlate: 'transparent',
                colorMajorTicks : oarg.item.color,
                colorMinorTicks : oarg.item.color,
                colorTitle      : oarg.item.color,
                colorUnits      : oarg.item.color,
                colorNumbers    : oarg.item.color
            });
            document.body.appendChild(oarg.item.xxapi.gauge.options.renderTo);
            oarg.item.xxapi.gauge.draw();
        }
        if(oarg.iscallback) {
            oarg.item.object.html(oarg.item.xxapi.gauge.options.renderTo);
        } else {
            oarg.item.html = oarg.item.xxapi.gauge.options.renderTo;
        }
    };
    Im Experten ist nur ein Textfeld (gleiche Größe und Position wie XXKNOB) mit XXRADIALGAUGE* unterhalb von XXKNOB einzufügen.

    image_59893.pngimage_59894.png

    Hans
    Angehängte Dateien
    Zuletzt geändert von TirochH; 27.03.2017, 01:19.
    Hans

    #2
    Einige zusätzliche Beispiele:

    1. Ausgefeilte KNOB-Control mit runden "Cursor" (statt "Gauge" in den folgenden Beispielen).

    und farblich hinterlegte "Canvas-Gauge" Skala, mit "individuellen Ticks" von -2.5 bis +2.5.


    fullsizeoutput_b99.jpeg

    2. Klassische KNOB-Control, kombiniert mit schwarzer "Canvas-Gauge" Skala.

    fullsizeoutput_b96.jpeg

    3. KNOB-Control, kombiniert mit weißer hinterlegter "Canvas-Gauge" Skala (0..80).

    fullsizeoutput_b9f.jpeg

    4. Mehrere KNOB-Controls, kombiniert mit einfacher weißer "Canvas-Gauge" Skala.

    fullsizeoutput_ba0.jpeg


    Hans

    Angehängte Dateien
    Hans

    Kommentar


      #3
      Auch sowas wäre möglich. Ist nur eine Frage der Integration. Auch technisch mit meiner Lösung vergleichbar, aber mit aufwendigeren Grafiken.

      Siehe mit Live- Anzeige: http://www.weather-display.com/windy/gb/gauges-ss.html


      Bildschirmfoto 2017-03-28 um 11.19.02.png

      Hans
      Angehängte Dateien
      Hans

      Kommentar


        #4
        Das sieht ja alles sehr gut aus. Wie bekommst du denn die Hintergründe hin?
        wollte das Design der Spider und Knob auch schon mal verändern. Siehe hier:
        https://knx-user-forum.de/forum/play...elbst-designen

        bin da aber nicht weitergekommen. Fand den Puls-Effekt ganz gut.

        Kommentar


          #5
          Zitat von SirTom Beitrag anzeigen
          Das sieht ja alles sehr gut aus. Wie bekommst du denn die Hintergründe hin?
          wollte das Design der Spider und Knob auch schon mal verändern. Siehe hier:
          https://knx-user-forum.de/forum/play...elbst-designen

          bin da aber nicht weitergekommen. Fand den Puls-Effekt ganz gut.
          Das Design zu ändern ist nicht immer einfach bzw. oft auch unmöglich. Brauchen immer eine JavaScript Library die wir integrieren können. Ändern kann man nur das was dort vorgesehen ist. Bei XXKNOB und bei der von uns eingesetzten Version von XXSLIDER ist zB eine Werteskala mit Zahlen gar nicht vorgesehen.

          Habe das Design der bestehenden Lösung auch nicht geändert, sondern in die darunterlegende Ebene ein eigenständiges Instrumentenlayout geschoben.

          Diese untenstehende Lösung als Beispiel für eine von vielen möglichen hochwertigen Layout Alternativen, schaut auch sehr gut aus. Die Frage ist nur, wie integriert man sowas auf technischer Ebene?

          Hier ein Link mit Live Bedienung. Probiert mal. Knopf ist drehbar, Skala ist dynamisch.. Ultrageil.

          http://demo.tutorialzine.com/2011/11...s-css3-

          Bildschirmfoto 2017-03-29 um 14.22.22.png

          Beispielsweise diese Lösung oberhalb wäre eine komplette Alternative zur bestehenden KNOB Lösung. Aber auch ohne Werteskala mit Zahlen.

          Meine im vorherigen Posting (#2) gezeigten Beispiele (einfache Instrumentenlayouts mit Zahlen-Wertskala) sind via "custom.js" integriert und laufen im Echtbetrieb. Besteht im Prinzip aus 2 Layern. Jeder Layer ist dabei eine separate eigenständige Lösung. Im unteren Layer wurde die Skalierung eingebaut (als Erweiterung in custom.js). In der oberen Ebene wird die bestehende XXKNOB Lösung verwendet.
          Es muß nicht - im Vergleich zu der im Forum diskutierten Lösung (von HAPE) - für jeden Problemfall ein separates Instrumentenlayout als Image bereitgestellt werden, sondern das neue Plugin generiert zur Laufzeit die unterschiedliche Instrumentenlayouts in einer separierten darunter liegenden Ebene (zB Werteskalen, Farben, Ticks, etc.). Vorteil dieses Lösungsansatzes ist, dass Änderungen automatisch bzw. durch einfache Änderung via Parameter automatisch umgesetzt werden. Instrumentenlayouts als Bitmap Grafiken müssen neu "manuell" erstellt werden.

          Im oberen Posting #1 (https://knx-user-forum.de/forum/playground/xxapi/1075565-knob-zusätzlich-mit-wertebereich-skala-svg-generiert#post1075565) ist sogar der Code - der zusätzlich in der custom,js integriert werden muss - enthalten.

          Vorsicht bei Änderungen in der custom.js. Es gibt da einige Problemchen denen man sich bewusst sein muss. Nicht immer werden die aktuellen Änderungen der custom.js übernommen.

          Siehe Posting https://knx-user-forum.de/forum/playground/xxapi/819791-xxapi²-loader?p=1076044#post1076044

          Hans
          Zuletzt geändert von TirochH; 29.03.2017, 13:24.
          Hans

          Kommentar


            #6
            Das hört sich sehr gut an. Werde mich am Wochenende mal reindenken. Danke Hans für den Beitrag

            LG Andy

            Kommentar


              #7
              Hallo zusammen.

              Wollte mal fragen wie man da ran geht?
              Hans Peter hat sowas anscheinend am laufen....

              Wenn ich eine Werteingabe mit XXKNOB habe sieht das ungefähr so aus.
              Werteingabe.png
              Wenn ich jetzt eine Grafik drüber lege wie das Hans Peter im Photoshop oder der gleichen macht, sieht das so aus.
              Dimmer Fertig.png
              Jetzt meine Frage. Wie bekomme ich auf dieses Popup (Werteingabe) noch einen Button z.B. für + Temperatur rauf oder - Temperatur runter?
              Temp.png

              Lg Andy
              Angehängte Dateien

              Kommentar


                #8
                Zitat von Andreas1986 Beitrag anzeigen
                Das hört sich sehr gut an. .....
                LG Andy
                Es wird noch besser. Hier der "ultimativ" aufwendigste Knopf den ich je gesehen habe.

                Diesen habe ich auch inzwischen in meine "custom.js" eingebaut.

                Er ist mit umfangreichen Animations-Eigenschaften ausgestattet. Wie beschleunigen, abbremsen. Man kann ihm einen "Schups" geben, dann läuft er alleine. und bremst sich dann ab. Es gibt auch drehende Ziffern auf dem Knopf, die während der Drehung immer waagrecht bleiben. Ist so gut gemacht, dass man es gar nicht sofort realisiert.

                Hier eine Kopie meiner Integration in meine App.

                fullsizeoutput_ba6.jpeg

                Und hier ein Link zu einer von mir erstellten Demo auf "CodePen". Man kann es natürlich auch von einen Tablet aufrufen und bedienen. Live.

                https://codepen.io/TirochH/pen/oWNoeX?editors=0010

                Hans
                Angehängte Dateien
                Hans

                Kommentar


                  #9
                  Echt Cool. Leider keinen Plan wie man so was einbindet.
                  Mfg

                  Kommentar


                    #10
                    Zitat von Andreas1986 Beitrag anzeigen
                    Echt Cool. Leider keinen Plan wie man so was einbindet.
                    Mfg
                    Einfach, ich hab es schon gemacht.


                    Hans
                    Hans

                    Kommentar


                      #11
                      Habs gesehen Design ist echt Klasse. Sieht für mich als JS-Script dummy zu kompliziert aus.

                      Nochmal Feedback für die USZU. Funktioniert wunderbar. Hab mich das jetzt mal ein bisschen eingearbeitet.

                      Kommentar


                        #12
                        Zitat von Andreas1986 Beitrag anzeigen
                        Habs gesehen Design ist echt Klasse. Sieht für mich als JS-Script dummy zu kompliziert aus.

                        Nochmal Feedback für die USZU. Funktioniert wunderbar. Hab mich das jetzt mal ein bisschen eingearbeitet.
                        Brauchst nur vordefinierten JS-CODE in custom.js geben, zusätzliche js-librarys einbinden und so wie KNOB Einbindung von xxAPI2 aufrufen.

                        Statt den Übergabe-Text "XXKNOB*", gibst DU "XXRSLIDER* ein. Und schon hast es eingebunden.

                        Hans

                        Hast es auch probiert im CODEPEN?
                        Hans

                        Kommentar


                          #13
                          Habe ich Probiert ist echt lässig mit dem nachlaufen und anstupsen. Werd mal sehen ob ich das hinbekomm. Wie kann man in dieses Popup noch Buttons einfügen so wie oben in #8?

                          Kommentar


                            #14
                            Zitat von Andreas1986 Beitrag anzeigen
                            Habe ich Probiert ist echt lässig mit dem nachlaufen und anstupsen. Werd mal sehen ob ich das hinbekomm. Wie kann man in dieses Popup noch Buttons einfügen so wie oben in #8?
                            Dieses Popup wird im Experten mit dem Standard-Tool für Oberflächen "Visu" erstellt.

                            Der Knopf ist bei mir nichts anderes wie ein dynamisches Textfeld in der Größe 240x240 (kann auch größer oder kleiner sein). Die spezielle xxAPI Funktionalität ist, wenn der Text mit XX beginnt, dieses Control intern abgefangen wird und mit der überschriebenen Funktionalität ausgeführt wird.
                            In diesem Fall wird der Drehknopf eingespielt.

                            Daneben kannst Du die sonst üblichen Knöpfe, Texte, Grafiken von der VISU plazieren.

                            Hans.

                            Du brauchst aber meinen CODE und die BIBLIOTHEKEN:
                            Zuletzt geändert von TirochH; 14.04.2017, 19:44.
                            Hans

                            Kommentar


                              #15
                              Morgen Allerseits. Dann wäre so was in der Richtung auch möglich?

                              http://codepen.io/planetoftheweb/pen/HCLzc

                              Hans um die Bibliotheken zu bekommen muss ich mich Anmelden?

                              Kommentar

                              Lädt...
                              X