aboutsummaryrefslogtreecommitdiff
path: root/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala
diff options
context:
space:
mode:
Diffstat (limited to 'vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala')
-rw-r--r--vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala194
1 files changed, 143 insertions, 51 deletions
diff --git a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala
index 1d6090d..b3c9387 100644
--- a/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala
+++ b/vfd-dashboard/src/main/scala/vfd/dashboard/ui/Layout.scala
@@ -31,15 +31,13 @@ class Layout(socket: MavlinkSocket)(implicit env: Environment) {
div(style := "float: right")(mode("CRITICAL", "danger", true)))
val map = iframe(
- width := 100.pct,
- height := 350.px,
"frameborder".attr := "0",
"scrolling".attr := "no",
"marginheight".attr := "0",
"marginwidth".attr := "0",
src := "http://www.openstreetmap.org/export/embed.html?bbox=6.5611016750335684%2C46.51718501017836%2C6.570038795471191%2C46.520577350893525&layer=mapnik")
- val feed = div(style := "width: 100%; height: 460px; color: #ffffff; background-color: #c2c2c2; text-align: center;")(
+ val feed = div(style := "width: 100%; color: #ffffff; background-color: #c2c2c2; text-align: center;")(
p(style := "padding-top: 220px")("video feed"))
val altimeter = new Altimeter(
@@ -78,69 +76,163 @@ class Layout(socket: MavlinkSocket)(implicit env: Environment) {
div("UAV " + socket.remoteSystemId)
)
- val left = panel(
- map,
- table(`class` := "table-instrument")(
- thead("Motors"),
- tbody(
- tr(
- td(motor1.element),
- td(),
- td(motor0.element),
- td()
- ),
- tr(
- td(),
- td(powerDistribution.element),
- td(),
- td()
- ),
- tr(
- td(motor2.element),
- td(),
- td(motor3.element),
- td()
+ val left = div(
+ panel(
+ table(`class` := "table-instrument")(
+ thead("Communication"),
+ tbody(
+ tr(
+ td("Uplink RSSI"),
+ td("89"),
+ td("Socket"),
+ td("5ms")
+ ),
+ tr(
+ td("Something else"),
+ td("unknown"),
+ td("Heartbeat"),
+ td(i(`class` := "fa fa-heart heartbeat"))
+ )
+ )
+ ),
+ table(`class` := "table-instrument")(
+ thead("Packets"),
+ tbody(
+ tr(
+ td("OK"),
+ Rx{td(socket.stats.packets())},
+ td("CRC"),
+ Rx{td(socket.stats.crcErrors())},
+ td("OFLW"),
+ Rx{td(socket.stats.overflows())},
+ td("BID"),
+ Rx{td(socket.stats.wrongIds())}
+ ),
+ tr(
+ td("Ratio"),
+ Rx{
+ import socket.stats._
+ val sum = packets() + crcErrors() + overflows() + wrongIds()
+ td(1.0 * packets() / sum formatted "%.2f")
+ },
+ td(),
+ td(),
+ td(),
+ td(),
+ td(),
+ td()
+ )
)
)
- )
- )
-
- val center = panel(feed)
-
- val below = panel(
- table(`class` := "table-instrument")(
- tbody(
- tr(
- td(compass.element),
- td(horizon.element),
- td(altimeter.element)
+ ),
+ panel(
+ table(`class` := "table-instrument")(
+ tbody(
+ tr(
+ td(compass.element),
+ td(horizon.element),
+ td(altimeter.element),
+ td(altimeter.element)
+ )
+ )
+ )
+ ),
+ panel(
+ div(style := "width: 50%; display: inline-block;")(
+ table(`class` := "table-instrument")(
+ tbody(
+ tr(
+ td(motor1.element),
+ td(),
+ td(motor0.element)
+ ),
+ tr(
+ td(),
+ td(powerDistribution.element),
+ td()
+ ),
+ tr(
+ td(motor2.element),
+ td(),
+ td(motor3.element)
+ )
+ )
+ )
+ ),
+ div(style := "width: 50%; display: inline-block;")(
+ table(`class` := "table-instrument")(
+ thead("Power"),
+ tbody(
+ tr(
+ td("VHIGH"),
+ td("12.6V"),
+ td("VLOW"),
+ td("9V")
+ ),
+ tr(
+ td("Voltage"),
+ td("11.2V"),
+ td("Remaining"),
+ td("80%")
+ ),
+ tr(
+ td("Flight"),
+ td("05:00"),
+ td("Endurance"),
+ td("12:00")
+ )
+ )
+ ),
+ table(`class` := "table-instrument")(
+ thead("Navigation"),
+ tbody(
+ tr(
+ td("Satellites"),
+ td("5"),
+ td("Precision"),
+ td("10cm")
+ ),
+ tr(
+ td("LON"),
+ td(""),
+ td("LAT"),
+ td("")
+ ),
+ tr(
+ td("GSpeed"),
+ td("3 m/s"),
+ td(),
+ td()
+ ),
+ tr(
+ td("Travelled"),
+ td("5000m"),
+ td("Home"),
+ td("1200m")
+ )
+ )
)
)
)
)
- val right = panel()
-
val element = div(`class` := "d-container d-column")(
div(`class` := "d-above")(
- top),
+ top
+ ),
div(`class` := "d-above d-container d-row")(
panel(modes),
- panel(infos)),
+ panel(infos)
+ ),
div(`class` := "d-container d-row")(
- div(`class` := "d-container d-details")(
- panel("foo")),
div(`class` := "d-container d-left")(
- left),
+ left
+ ),
div(`class` := "d-container d-column d-middle")(
- div(`class` := "d-container d-center")(
- center),
- div(`class` := "d-container d-below")(
- below)
+ panel(feed),
+ panel(map)
),
- div(`class` := "d-container d-right")(
- right
- )
+ div(`class` := "d-container d-right")()
)
).render