From 0d1b7e92ada02c5149abefdbc8e70d02241951ca Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Wed, 22 Feb 2017 17:21:43 +0800 Subject: Add small and simple scala js example --- examples/scalajs-plain-example/README.md | 9 +++++++ examples/scalajs-plain-example/js/App.scala | 27 +++++++++++++++++++++ examples/scalajs-plain-example/js/Plotly.scala | 8 +++++++ .../scalajs-plain-example/js/build/build.scala | 18 ++++++++++++++ .../js/build/build/build.scala | 4 ++++ .../scalajs-plain-example/jvm/build/build.scala | 6 +++++ .../scalajs-plain-example/server/public/index.html | 17 +++++++++++++ .../shared/SomeSharedClass.scala | 2 ++ examples/scalajs-react-example/server/app.js | 28 +++++++++++----------- 9 files changed, 105 insertions(+), 14 deletions(-) create mode 100644 examples/scalajs-plain-example/README.md create mode 100644 examples/scalajs-plain-example/js/App.scala create mode 100644 examples/scalajs-plain-example/js/Plotly.scala create mode 100644 examples/scalajs-plain-example/js/build/build.scala create mode 100644 examples/scalajs-plain-example/js/build/build/build.scala create mode 100644 examples/scalajs-plain-example/jvm/build/build.scala create mode 100644 examples/scalajs-plain-example/server/public/index.html create mode 100644 examples/scalajs-plain-example/shared/SomeSharedClass.scala (limited to 'examples') diff --git a/examples/scalajs-plain-example/README.md b/examples/scalajs-plain-example/README.md new file mode 100644 index 0000000..280a555 --- /dev/null +++ b/examples/scalajs-plain-example/README.md @@ -0,0 +1,9 @@ + +Compilation instructions +------------------------------------------- +1. `cd js` +2. `cbt compile` or `cbt fullOpt.compile` + +Execution instructions +------------------------------------------- +1. open `server/public/index.html` in a browser diff --git a/examples/scalajs-plain-example/js/App.scala b/examples/scalajs-plain-example/js/App.scala new file mode 100644 index 0000000..71a285e --- /dev/null +++ b/examples/scalajs-plain-example/js/App.scala @@ -0,0 +1,27 @@ +package prototype + +import org.scalajs.dom + +import scala.scalajs.js +import scala.scalajs.js.JSON +import scala.scalajs.js.JSApp +import scala.scalajs.js.annotation.JSExport + +@JSExport("App") +object App extends JSApp { + def main(): Unit = { + val trace1 = """{ + | "x": [1, 2, 3, 4], + | "y": [10, 15, 13, 17], + | "type": "scatter" + |} """.stripMargin + val trace2 = """{ + | "x": [1, 2, 3, 4], + | "y": [16, 5, 11, 9], + | "type": "scatter" + |} """.stripMargin + val data = js.Array(trace1, trace2).map(trace => JSON.parse(trace)) + val doc = dom.document + Plotly.newPlot("plotly", data) + } +} diff --git a/examples/scalajs-plain-example/js/Plotly.scala b/examples/scalajs-plain-example/js/Plotly.scala new file mode 100644 index 0000000..a4623c6 --- /dev/null +++ b/examples/scalajs-plain-example/js/Plotly.scala @@ -0,0 +1,8 @@ +package prototype + +import scala.scalajs.js + +@js.native +object Plotly extends js.Object { + def newPlot(id: String, data: js.Array[js.Dynamic]): js.Any = js.native +} diff --git a/examples/scalajs-plain-example/js/build/build.scala b/examples/scalajs-plain-example/js/build/build.scala new file mode 100644 index 0000000..06e4876 --- /dev/null +++ b/examples/scalajs-plain-example/js/build/build.scala @@ -0,0 +1,18 @@ +import cbt._ +class Build(val context: Context) extends ScalaJsBuild{ + override def projectName = "my-project" + + override def sources = super.sources ++ Seq( + projectDirectory.getParentFile ++ "/shared" + ) + + override def dependencies = ( + super.dependencies ++ + Resolver( mavenCentral ).bind( + "org.scala-js" %%% "scalajs-dom" % "0.9.0" + ) + ) + + override def scalaJsTargetFile = + projectDirectory.getParentFile ++ ("/server/public/generated/" ++ projectName ++ ".js") +} diff --git a/examples/scalajs-plain-example/js/build/build/build.scala b/examples/scalajs-plain-example/js/build/build/build.scala new file mode 100644 index 0000000..b30e005 --- /dev/null +++ b/examples/scalajs-plain-example/js/build/build/build.scala @@ -0,0 +1,4 @@ +import cbt._ +class Build(val context: Context) extends BuildBuild{ + override def dependencies = super.dependencies :+ plugins.scalaJs +} diff --git a/examples/scalajs-plain-example/jvm/build/build.scala b/examples/scalajs-plain-example/jvm/build/build.scala new file mode 100644 index 0000000..327d705 --- /dev/null +++ b/examples/scalajs-plain-example/jvm/build/build.scala @@ -0,0 +1,6 @@ +import cbt._ +class Build(val context: Context) extends BaseBuild{ + override def sources = super.sources ++ Seq( + projectDirectory.getParentFile ++ "/shared" + ) +} diff --git a/examples/scalajs-plain-example/server/public/index.html b/examples/scalajs-plain-example/server/public/index.html new file mode 100644 index 0000000..a06fc3a --- /dev/null +++ b/examples/scalajs-plain-example/server/public/index.html @@ -0,0 +1,17 @@ + + + + Prototype + + + + + execute
cbt fastOptJs
in
js/
to generate/update the .js file +
+ + + + + diff --git a/examples/scalajs-plain-example/shared/SomeSharedClass.scala b/examples/scalajs-plain-example/shared/SomeSharedClass.scala new file mode 100644 index 0000000..44d4ca8 --- /dev/null +++ b/examples/scalajs-plain-example/shared/SomeSharedClass.scala @@ -0,0 +1,2 @@ +package prototype +case class SomeSharedClass(i: Int) diff --git a/examples/scalajs-react-example/server/app.js b/examples/scalajs-react-example/server/app.js index 620c26a..d44adcc 100644 --- a/examples/scalajs-react-example/server/app.js +++ b/examples/scalajs-react-example/server/app.js @@ -9,20 +9,20 @@ app.get('/data', function(req, res){ //'https://api.instagram.com/v1/media/popular?client_id=642176ece1e7445e99244cec26f4de1f&callback=?', 'https://pixabay.com/api/?key=2741116-9706ac6d4a58f2b5416225505&q=yellow+flowers&image_type=photo', function(response) { - - var body = ""; - response.on('data', function(data) { - body += data; - }); - response.on('end', function() { - console.log(body); - try { - res.send(JSON.parse(body)); - } catch (e) { - return console.error(e); - } - }); - }); + var body = ""; + response.on('data', function(data) { + body += data; + }); + response.on('end', function() { + console.log(body); + try { + res.send(JSON.parse(body)); + } catch (e) { + return console.error(e); + } + }); + } + ); request.on('error', function(e) { console.log('Problem with request: ' + e.message); }); -- cgit v1.2.3