Ankündigung

Einklappen
Keine Ankündigung bisher.

neues Widget "showValue"

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

    neues Widget "showValue"

    Hi!

    Ich brauchte für mich die Möglichkeit, aus Werten, die mir das Backend liefert,
    andere Werte zu machen um sie anzeigen zu können.
    In meinem Fall sind das die Stufen der Lüftungsanlage, die ich per Analogaktor steuere.
    Senden muss ich Werte zwischen 0 und 255 und die kommen auch als Status vom Aktor zurück.
    Anzeigen wollte ich aber "Stufe 1 bis 8". Ausrechnen ging nicht, so dass ich mir ein
    klitzekleines Widget gebaut habe, das mir das abnimmt.
    Ich hoffe, so etwas gibt es noch nicht und dass jemand ausser mir das auch
    benötigen kann.

    Das Widget benötigt 4 Parameter.
    1. eine eindeutige ID
    2. ein einzelnes Item / GAD
    3. ein Eingangswerte Array
    4. ein Ausgangswerte Array

    Eingangswerte und Ausgangswerte Array müssen die gleiche Anzahl Zellen beinhalten.

    Das Widget fragt die GAD nach einem Wert ab, geht das Eingangswerte Array durch und zeigt,
    sobald der Returnwert der GAD gefunden wird, das entsprechende Feld aus dem Ausgangswerte
    Array an.

    Beispiel:
    Eingangswerte: 12,45,72,81,86
    Ausgangswerte: A,B,C,D,E
    Wert der GAD: 72
    ausgegeben wird: C

    Das Widget:

    Code:
    /**
    * displays a value in dependence of a other value
    *
    * @param unique id for this widget
    * @param gad/item
    * @param array of input values
    * @param array of output values
    *
    * @see misc/fundamentals#Array-Form
    * @author Raik Alber
    */
    {% macro showvalue(id, gad, valuein, valueout) %}
    
            <span id="{{ uid(page, id) }}" data-item="{{ gad }}" class="text" data-widget="basic.showvalue" data-valuein="{{ implode(valuein) }}" data-valueout="{{ implode(valueout) }}">---</span>
    
    {% endmacro %}
    Funktion für die "visu.js"

    Code:
    // ----- basic.showvalue ----------------------------------------------------------
    $(document).delegate('[data-widget="basic.showvalue"]', {
            'update': function (event, response) {
                    var valuein = $(this).attr('data-valuein').split(',');
                    var valueout = $(this).attr('data-valueout').split(',');
                    var toDisplay = null;
    
                    for ( var counter = 0; counter < valuein.length; counter++) {
                         if (valuein[counter] == response[0]) {
                             toDisplay = valueout[counter];
                         }
                    }
                    $("#" + this.id).html(toDisplay);
            }
    });
    Einbau:

    Code:
    {% import "widgets/widget_showvalue.html" as import %}
     Aktuelle Stufe {{ import.showvalue('luestuf', 'hwr.lueftung.stufe_status', ['51','77','102','128','153','179',204,'250'],['1','2','3','4','5','6','7','8'] ) }}
    Bei Gefallen bitte in das nächste Release mit aufnehmen.

    Bye
    Rhaegar
Lädt...
X