aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2014-10-09 16:17:25 +0200
committerJakob Odersky <jodersky@gmail.com>2014-10-09 16:17:25 +0200
commit27826e19ef54cb45b8ca46ada856f60281c2de25 (patch)
treeabc7a4e59a120854e2e70379a1da5d934198acc8
parent0226a83f40e0126f8e75e155609f3f295661a3a5 (diff)
downloadmavigator-27826e19ef54cb45b8ca46ada856f60281c2de25.tar.gz
mavigator-27826e19ef54cb45b8ca46ada856f60281c2de25.tar.bz2
mavigator-27826e19ef54cb45b8ca46ada856f60281c2de25.zip
implement separate application launcher
-rw-r--r--vfd-backend/app/views/index.scala.html8
-rw-r--r--vfd-backend/app/views/main.scala.html3
-rw-r--r--vfd-frontend/src/main/scala/vfd/frontend/Frontend.scala13
-rw-r--r--vfd-frontend/src/main/scala/vfd/frontend/Launcher.scala25
4 files changed, 34 insertions, 15 deletions
diff --git a/vfd-backend/app/views/index.scala.html b/vfd-backend/app/views/index.scala.html
index da7a79f..eaae450 100644
--- a/vfd-backend/app/views/index.scala.html
+++ b/vfd-backend/app/views/index.scala.html
@@ -2,12 +2,14 @@
@main("Main"){
- <div id="app"></div>
+ <div id="app">
+ Loading...
+ </div>
<script type="text/javascript">
window.onload = function () {
- var frontend = new Frontend('app', '@routes.Assets.at("")', '@socket')
- frontend.main()
+ var launcher = new Launcher
+ launcher.launch('app', '@routes.Assets.at("")', '@socket')
}
</script>
}
diff --git a/vfd-backend/app/views/main.scala.html b/vfd-backend/app/views/main.scala.html
index f65ca66..beb7dbd 100644
--- a/vfd-backend/app/views/main.scala.html
+++ b/vfd-backend/app/views/main.scala.html
@@ -54,8 +54,9 @@
@content
- <script type="text/javascript" src="@routes.Assets.at("lib/vfd-frontend-fastopt.js")"></script>
<script type="text/javascript" src="@routes.Assets.at("lib/jquery/jquery.js")"></script>
<script type="text/javascript" src="@routes.Assets.at("lib/bootstrap/js/bootstrap.min.js")"></script>
+ <script type="text/javascript" src="@routes.Assets.at("lib/vfd-frontend-fastopt.js")"></script>
+
</body>
</html> \ No newline at end of file
diff --git a/vfd-frontend/src/main/scala/vfd/frontend/Frontend.scala b/vfd-frontend/src/main/scala/vfd/frontend/Frontend.scala
index ffae846..8438b4c 100644
--- a/vfd-frontend/src/main/scala/vfd/frontend/Frontend.scala
+++ b/vfd-frontend/src/main/scala/vfd/frontend/Frontend.scala
@@ -1,9 +1,6 @@
package vfd.frontend
-
import scala.scalajs.js
-import js.annotation.JSExport
-
import org.scalajs.dom
import org.scalajs.spickling._
import org.scalajs.spickling.jsany._
@@ -16,15 +13,10 @@ import vfd.frontend.ui._
import vfd.frontend.util.Application
import vfd.uav.DataFrame
-@JSExport
-class Frontend(rootId: String, assetsBase: String, socketUrl: String) {
-
- lazy val root = dom.document.getElementById(rootId)
- implicit lazy val app = new Application(root, assetsBase)
+class Frontend(socketUrl: String)(implicit app: Application) {
PicklerRegistry.register[vfd.uav.DataFrame]
- @JSExport
def main() = {
val connection = new dom.WebSocket(socketUrl);
val input: Var[DataFrame] = Var(DataFrame(0,0,0,0,0))
@@ -70,8 +62,7 @@ class Frontend(rootId: String, assetsBase: String, socketUrl: String) {
)
)
- root.appendChild(element.render)
-
+ app.root.appendChild(element.render)
}
diff --git a/vfd-frontend/src/main/scala/vfd/frontend/Launcher.scala b/vfd-frontend/src/main/scala/vfd/frontend/Launcher.scala
new file mode 100644
index 0000000..c4ca6fd
--- /dev/null
+++ b/vfd-frontend/src/main/scala/vfd/frontend/Launcher.scala
@@ -0,0 +1,25 @@
+package vfd.frontend
+
+import scala.scalajs.js
+import js.annotation.JSExport
+
+import org.scalajs.dom
+
+import vfd.frontend.util.Application
+
+@JSExport
+class Launcher {
+
+ @JSExport
+ def launch(rootId: String, assetsBase: String, socketUrl: String) = {
+ val root = dom.document.getElementById(rootId)
+ val app = new Application(root, assetsBase)
+ val frontend = new Frontend(socketUrl)(app)
+
+ while(root.hasChildNodes) {
+ root.removeChild(root.firstChild)
+ }
+ frontend.main()
+ }
+
+} \ No newline at end of file