From 3e92267b4f030f7bc7f0040fef50bd07e4709b21 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Wed, 4 Feb 2015 06:28:31 -0800 Subject: clientserver examples now work with crossProject --- .../app/js/src/main/scala/simple/Client.scala | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 examples/crossBuilds/clientserver2/app/js/src/main/scala/simple/Client.scala (limited to 'examples/crossBuilds/clientserver2/app/js/src/main/scala/simple/Client.scala') diff --git a/examples/crossBuilds/clientserver2/app/js/src/main/scala/simple/Client.scala b/examples/crossBuilds/clientserver2/app/js/src/main/scala/simple/Client.scala new file mode 100644 index 0000000..8894262 --- /dev/null +++ b/examples/crossBuilds/clientserver2/app/js/src/main/scala/simple/Client.scala @@ -0,0 +1,47 @@ +package simple +import scalatags.JsDom.all._ +import org.scalajs.dom +import dom.html +import scalajs.js.annotation.JSExport +import scalajs.concurrent.JSExecutionContext.Implicits.runNow +import autowire._ + +object Ajaxer extends autowire.Client[String, upickle.Reader, upickle.Writer]{ + override def doCall(req: Request) = { + dom.ext.Ajax.post( + url = "/ajax/" + req.path.mkString("/"), + data = upickle.write(req.args) + ).map(_.responseText) + } + + def read[Result: upickle.Reader](p: String) = upickle.read[Result](p) + def write[Result: upickle.Writer](r: Result) = upickle.write(r) +} + +@JSExport +object Client extends{ + @JSExport + def main(container: html.Div) = { + val inputBox = input.render + val outputBox = ul.render + def update() = Ajaxer[Api].list(inputBox.value).call().foreach{ data => + outputBox.innerHTML = "" + for(FileData(name, size) <- data){ + outputBox.appendChild( + li( + b(name), " - ", size, " bytes" + ).render + ) + } + } + inputBox.onkeyup = (e: dom.Event) => update() + update() + container.appendChild( + div( + h1("File Search"), + inputBox, + outputBox + ).render + ) + } +} \ No newline at end of file -- cgit v1.2.3