Wechselnde Farben in Smashing Dashboards

An dieser Stelle habe ich meine ersten Gehversuche mit Smashing Dashboard beschrieben. Mein Dashboard ist inzwischen etwas weiter und enthält jetzt die wichtigsten Information aus der Homematic. Hauptsächlich geht es darum schnell zu sehen ob

  • alle Fenster geschlossen sind
  • die Kellertür zu ist
  • Der Bewegungsmelder angeschlagen hat
  • Den Status der Alarmanlage zu überwachen. (hier muss später noch mehr dazukommen)

Jetzt möchte ich natürlich das sich die Farben ändern wenn sich ein Status ändert. Hier meine Schritte mit denen ich das hin bekommen habe:

Zuerst erstellen wir ein leeres Widget

  smashing generate widget Alert
   exist  widgets
   create  widgets/alert/alert.coffee
   create  widgets/alert/alert.html
   create  widgets/alert/alert.scss

Damit das Widget auf dem Dashboard sichtbar ist brauche wir mindestens einen Hintergrund

vi widgets/alert/alert.html 
  .widget-alert { background: #00ff99;}

Um das ganze etwas hübscher zu machen möchte ich den Titel und den Wert im Widget angezeigt bekommen

vi widgets/alert/alert.html 
 <h1 class="title" data-bind="title"></h1>
 <div data-bind="value"></div>

Das Widget muss nun in meinem Dashboard eingebunden werden

vi dashboards/hm.erb
 
  <li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
      <div data-id="hm_keller_tuer" data-view="Alert" data-title="Kellertür" ></div>
  </li>

Jetzt können wir wieder mit curl die ersten Tests durchführen ob das Widget funktioniert

 curl -d '{ "auth_token":"asp2y9yd2","value":"zu" }' http://your.dashing.srv:3030/widgets/hm_keller_tuer
 curl -d '{ "auth_token":"asp2y9yd2","value":"offen"}' http://your.dashing.srv:3030/widgets/hm_keller_tuer

Für die Farbanpassung nach Status fügen wir dem Widget auf dem Dashboard noch ein data-addclass-…. Attribut zu

vi dashboards/hm.erb
  <div data-id="hm_keller_tuer" data-view="Alert" data-title="Kellertür" data-addclass-danger="isOpen"></div>

Und legen für das Widget jetzt fest wann “isOpen” zutrifft

vi widgets/alert/alert.coffee 
   class Dashing.Alert extends Dashing.Widget
   onData: (data) ->
    @accessor 'isOpen', ->
      @get('value') =offen 

und definieren die css Eigenschaften durch eine neue Klasse .danger

vi widgets/alert/alert.scss
 .danger { background:  #003399;}

So ist das dann in live aus. Oben der Ausschnitt aus dem Browser und unten das Terminal das die REST-API aufruft. “In echt” das natürlich von der Homematic bei der Statusänderung