diff options
Diffstat (limited to 'mavigator-cockpit/src/main/scala/mavigator/util')
-rw-r--r-- | mavigator-cockpit/src/main/scala/mavigator/util/Application.scala | 26 | ||||
-rw-r--r-- | mavigator-cockpit/src/main/scala/mavigator/util/environment.scala | 24 |
2 files changed, 50 insertions, 0 deletions
diff --git a/mavigator-cockpit/src/main/scala/mavigator/util/Application.scala b/mavigator-cockpit/src/main/scala/mavigator/util/Application.scala new file mode 100644 index 0000000..7cb6f27 --- /dev/null +++ b/mavigator-cockpit/src/main/scala/mavigator/util/Application.scala @@ -0,0 +1,26 @@ +package mavigator +package util + +import scala.scalajs.js.annotation.JSExport +import scala.scalajs.js + +import org.scalajs.dom.html + +trait Application { + + def main(args: Map[String, String])(implicit env: Environment): Unit + + @JSExport + final def start(settings: js.Dynamic): Unit = { + + val env = new StaticEnvironment( + root = settings.root.asInstanceOf[html.Element], + assetsBase = settings.assetsBase.asInstanceOf[String] + ) + + val args = settings.args.asInstanceOf[js.Dictionary[Any]].mapValues(_.toString).toMap + + main(args)(env) + } + +} diff --git a/mavigator-cockpit/src/main/scala/mavigator/util/environment.scala b/mavigator-cockpit/src/main/scala/mavigator/util/environment.scala new file mode 100644 index 0000000..3d58c5a --- /dev/null +++ b/mavigator-cockpit/src/main/scala/mavigator/util/environment.scala @@ -0,0 +1,24 @@ +package mavigator +package util + +import org.scalajs.dom.html + +/** Represents an application's environment */ +trait Environment { + + /** The application's root element. */ + def root: html.Element + + /** Retrieve an asset's URL based on its file location. */ + def asset(file: String): String + +} + +class StaticEnvironment( + override val root: html.Element, + assetsBase: String +) extends Environment { + + override def asset(file: String): String = assetsBase + "/" + file + +} |