aboutsummaryrefslogtreecommitdiff
path: root/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Instrument.scala
blob: bf5c9caa490af4360cbb830886d9574d92426797 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package vfd.dashboard.ui.instruments

import rx._
import org.scalajs.dom.html

/** Common trait to all flight instruments. */
trait Instrument[A] {

  /** Current value that is displayed in the instrument. */
  val value: Rx[A]

  /** HTML element that contains the rendered instrument */
  val element: html.Element

  /** Performs the actual UI update of this instrument. */
  protected def update(newValue: A): Unit

  /** Call when instrument has finished setting up its UI. */
  protected def ready() = {
    Obs(value, skipInitial = true) {
      update(value())
    }
  }

}