From b9624be0c341ad070869497d2d10db0bb6beb3ed Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Fri, 5 Sep 2014 14:17:29 -0700 Subject: 0.2.0 --- .../src/main/scala/workbench/WorkbenchClient.scala | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'client') diff --git a/client/src/main/scala/workbench/WorkbenchClient.scala b/client/src/main/scala/workbench/WorkbenchClient.scala index 662e797..9fc5b89 100644 --- a/client/src/main/scala/workbench/WorkbenchClient.scala +++ b/client/src/main/scala/workbench/WorkbenchClient.scala @@ -6,24 +6,24 @@ import upickle.{Reader, Writer, Js} import scala.scalajs.js import scala.scalajs.js.annotation.JSExport import scalajs.concurrent.JSExecutionContext.Implicits.runNow -object WireServer extends autowire.Server[Js.Value, upickle.Reader, upickle.Writer]{ - def write[Result: Writer](r: Result) = upickle.writeJs(r) - def read[Result: Reader](p: Js.Value) = upickle.readJs[Result](p) +/** + * The connection from workbench server to the client + */ +object Wire extends autowire.Server[Js.Value, upickle.Reader, upickle.Writer] with ReadWrite{ def wire(parsed: Js.Arr): Unit = { val Js.Arr(path, args: Js.Obj) = parsed - - val req = new Request( - upickle.readJs[Seq[String]](path), - args.value.toMap - ) - WireServer.route[Api](WorkbenchClient).apply(req) + val req = new Request(upickle.readJs[Seq[String]](path), args.value.toMap) + Wire.route[Api](WorkbenchClient).apply(req) } } @JSExport object WorkbenchClient extends Api{ + @JSExport val shadowBody = dom.document.body.cloneNode(deep = true) + @JSExport var interval = 1000 + @JSExport var success = false @JSExport def main(bootSnippet: String, host: String, port: Int): Unit = { @@ -35,7 +35,7 @@ object WorkbenchClient extends Api{ json.read(data.responseText) .asInstanceOf[Js.Arr] .value - .foreach(v => WireServer.wire(v.asInstanceOf[Js.Arr])) + .foreach(v => Wire.wire(v.asInstanceOf[Js.Arr])) main(bootSnippet, host, port) case util.Failure(e) => if (!success) println("Workbench disconnected " + e) @@ -44,7 +44,7 @@ object WorkbenchClient extends Api{ dom.setTimeout(() => main(bootSnippet, host, port), interval) } } - + @JSExport override def clear(): Unit = { dom.document.asInstanceOf[js.Dynamic].body = shadowBody.cloneNode(true) for(i <- 0 until 100000){ @@ -52,12 +52,12 @@ object WorkbenchClient extends Api{ dom.clearInterval(i) } } - + @JSExport override def reload(): Unit = { dom.console.log("Reloading page...") dom.location.reload() } - + @JSExport override def run(path: String, bootSnippet: Option[String]): Unit = { val tag = dom.document.createElement("script") var loaded = false @@ -75,7 +75,7 @@ object WorkbenchClient extends Api{ } dom.document.head.appendChild(tag) } - + @JSExport override def print(level: String, msg: String): Unit = { level match { case "error" => dom.console.error(msg) -- cgit v1.2.3