blob: 14b26f658e81860c278b910f692f9b1abe01861c (
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package vfd.dashboard.ui.panels
import org.mavlink.messages.Attitude
import org.scalajs.dom.HTMLElement
import rx.core.Obs
import scalatags.JsDom.all.bindNode
import scalatags.JsDom.all.`class`
import scalatags.JsDom.all.stringAttr
import scalatags.JsDom.all.table
import scalatags.JsDom.all.tbody
import scalatags.JsDom.all.td
import scalatags.JsDom.all.tr
import vfd.dashboard.Environment
import vfd.dashboard.MavlinkSocket
import vfd.dashboard.ui.components.Altimeter
import vfd.dashboard.ui.components.Compass
import vfd.dashboard.ui.components.Horizon
object Primary {
def apply(socket: MavlinkSocket)(implicit env: Environment): HTMLElement = {
val compass = new Compass
val horizon = new Horizon
val altimeter = new Altimeter
Obs(socket.message, skipInitial = true) {
socket.message() match {
case Attitude(roll, pitch, yaw) =>
horizon.update(pitch, roll)
compass.update(yaw)
case _ => ()
}
}
table(`class` := "table-instrument")(
tbody(
tr(
td(compass.element),
td(horizon.element),
td(altimeter.element)))).render
}
}
|