From 96cf5dd9d3ae86699f58f362e42a03bb83e66b1e Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Thu, 18 Dec 2014 12:01:55 +0100 Subject: Add UI power component --- vfd-frontend/src/main/scala/vfd/frontend/Main.scala | 8 +++++--- .../src/main/scala/vfd/frontend/ui/Components.scala | 15 ++++++++++++++- .../main/scala/vfd/frontend/ui/panels/Communication.scala | 3 +++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/vfd-frontend/src/main/scala/vfd/frontend/Main.scala b/vfd-frontend/src/main/scala/vfd/frontend/Main.scala index 446d56d..7b7990e 100644 --- a/vfd-frontend/src/main/scala/vfd/frontend/Main.scala +++ b/vfd-frontend/src/main/scala/vfd/frontend/Main.scala @@ -29,7 +29,7 @@ object Main { val message = socket.packet.map { p => Message.unpack(socket.packet().messageId, socket.packet().payload) } - + Obs(message) { println(message().toString()) } @@ -39,8 +39,10 @@ object Main { div(`class` := "col-xs-12")( div(`class` := "panel panel-default")( div(`class` := "panel-body")( - button(`class` := "btn")("ACK"), - img(`src` := env.asset("images/leds/red-on.svg"), height := "30px"))))), + button(`class` := "btn")("LOCKED"), + button(`class` := "btn")("MANUAL"), + button(`class` := "btn")("GUIDED"), + button(`class` := "btn")("AUTO"))))), div(`class` := "row")( div(`class` := "col-xs-4")( div(`class` := "panel panel-default")( diff --git a/vfd-frontend/src/main/scala/vfd/frontend/ui/Components.scala b/vfd-frontend/src/main/scala/vfd/frontend/ui/Components.scala index 4c17ecf..f911865 100644 --- a/vfd-frontend/src/main/scala/vfd/frontend/ui/Components.scala +++ b/vfd-frontend/src/main/scala/vfd/frontend/ui/Components.scala @@ -75,7 +75,7 @@ object Components { frame(inst, size) } - def basic(value: Rx[Double], size: String)(implicit app: Environment) = { + def basic(value: Rx[Double], size: String)(implicit app: Environment) = { val inst = instrument("basic") Obs(value, skipInitial = true) { val svg = inst.contentDocument @@ -87,6 +87,19 @@ object Components { } frame(inst, size) } + + def bar(value: Rx[Double], size: String)(implicit app: Environment) = { + val inst = instrument("bar") + Obs(value, skipInitial = true) { + val svg = inst.contentDocument + val level = svg.getElementById("level") + level.style.transform = "translate(0px, " + 97 * (1 - value() / 100) + "px)"; + level.style.transition = "transform 250ms ease-out" + svg.getElementById("unit").textContent = "%" + svg.getElementById("value").textContent = value().toString + } + frame(inst, size) + } } diff --git a/vfd-frontend/src/main/scala/vfd/frontend/ui/panels/Communication.scala b/vfd-frontend/src/main/scala/vfd/frontend/ui/panels/Communication.scala index ba0d490..813b695 100644 --- a/vfd-frontend/src/main/scala/vfd/frontend/ui/panels/Communication.scala +++ b/vfd-frontend/src/main/scala/vfd/frontend/ui/panels/Communication.scala @@ -28,6 +28,7 @@ object Communication { val m1 = Var(0.0) val m2 = Var(0.0) val m3 = Var(0.0) + val battery = Var(0.0) Obs(message) { message() match { @@ -36,6 +37,7 @@ object Communication { m1() = _m1 m2() = _m2 m3() = _m3 + case Power(mV) => battery() = mV / 120 case _ => () } } @@ -64,6 +66,7 @@ object Communication { td(overflows), td("BID"), td(wrongIds)))), + div(Components.bar(battery, "25%")), div( Components.basic(m0, "25%"),Components.basic(m1, "25%"),Components.basic(m2, "25%"),Components.basic(m3, "25%"))) } -- cgit v1.2.3