diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-10-30 22:37:51 -0700 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-10-30 22:37:51 -0700 |
commit | 058e9bac2dd8166051bafa16d51f27ee5856929a (patch) | |
tree | b95f12df96a563ea9629912971d3b4f28b255c69 /examples | |
parent | e8b38f242876f99966c3d13cefae2f5863c5bb9e (diff) | |
download | hands-on-scala-js-058e9bac2dd8166051bafa16d51f27ee5856929a.tar.gz hands-on-scala-js-058e9bac2dd8166051bafa16d51f27ee5856929a.tar.bz2 hands-on-scala-js-058e9bac2dd8166051bafa16d51f27ee5856929a.zip |
web pages
Diffstat (limited to 'examples')
-rw-r--r-- | examples/build.sbt | 11 | ||||
-rw-r--r-- | examples/src/main/scala/Splash.scala | 3 | ||||
-rw-r--r-- | examples/src/main/scala/canvasapp/Clock.scala (renamed from examples/src/main/scala/Clock.scala) | 5 | ||||
-rw-r--r-- | examples/src/main/scala/canvasapp/FlappyLine.scala (renamed from examples/src/main/scala/FlappyLine.scala) | 4 | ||||
-rw-r--r-- | examples/src/main/scala/canvasapp/ScratchPad.scala (renamed from examples/src/main/scala/ScratchPad.scala) | 2 | ||||
-rw-r--r-- | examples/src/main/scala/webpage/HelloWorld0.scala | 19 | ||||
-rw-r--r-- | examples/src/main/scala/webpage/HelloWorld1.scala | 18 | ||||
-rw-r--r-- | examples/src/main/scala/webpage/Inputs.scala | 35 | ||||
-rw-r--r-- | examples/src/main/scala/webpage/Search0.scala | 50 | ||||
-rw-r--r-- | examples/src/main/scala/webpage/Search1.scala | 62 |
10 files changed, 206 insertions, 3 deletions
diff --git a/examples/build.sbt b/examples/build.sbt new file mode 100644 index 0000000..7e6b685 --- /dev/null +++ b/examples/build.sbt @@ -0,0 +1,11 @@ +scalaJSSettings + +name := "Example" + +version := "0.1-SNAPSHOT" + +scalaVersion := "2.11.1" + +libraryDependencies += "org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6" + +libraryDependencies += "com.scalatags" %%% "scalatags" % "0.4.2"
\ No newline at end of file diff --git a/examples/src/main/scala/Splash.scala b/examples/src/main/scala/Splash.scala index 1dcc528..c68bdca 100644 --- a/examples/src/main/scala/Splash.scala +++ b/examples/src/main/scala/Splash.scala @@ -1,4 +1,5 @@ -import Math._ +import java.lang.Math._ + import org.scalajs.dom import scala.scalajs.js.annotation.JSExport diff --git a/examples/src/main/scala/Clock.scala b/examples/src/main/scala/canvasapp/Clock.scala index 1db7c23..af9d8aa 100644 --- a/examples/src/main/scala/Clock.scala +++ b/examples/src/main/scala/canvasapp/Clock.scala @@ -1,7 +1,10 @@ +package canvasapp + import org.scalajs.dom + +import scala.scalajs.js import scala.scalajs.js.annotation.JSExport -import scalajs.js @JSExport object Clock extends{ @JSExport diff --git a/examples/src/main/scala/FlappyLine.scala b/examples/src/main/scala/canvasapp/FlappyLine.scala index 92583b5..50c9906 100644 --- a/examples/src/main/scala/FlappyLine.scala +++ b/examples/src/main/scala/canvasapp/FlappyLine.scala @@ -1,8 +1,10 @@ +package canvasapp + import org.scalajs.dom + import scala.scalajs.js.annotation.JSExport import scala.util.Random -import scalajs.js @JSExport object FlappyLine extends{ diff --git a/examples/src/main/scala/ScratchPad.scala b/examples/src/main/scala/canvasapp/ScratchPad.scala index 225e567..cc3d7e0 100644 --- a/examples/src/main/scala/ScratchPad.scala +++ b/examples/src/main/scala/canvasapp/ScratchPad.scala @@ -1,3 +1,5 @@ +package canvasapp + import org.scalajs.dom diff --git a/examples/src/main/scala/webpage/HelloWorld0.scala b/examples/src/main/scala/webpage/HelloWorld0.scala new file mode 100644 index 0000000..df458ac --- /dev/null +++ b/examples/src/main/scala/webpage/HelloWorld0.scala @@ -0,0 +1,19 @@ +package webpage +import org.scalajs.dom +import scala.scalajs.js.annotation.JSExport +@JSExport +object HelloWorld0 extends{ + @JSExport + def main(target: dom.HTMLDivElement) = { + val (animalA, animalB) = ("fox", "dog") + target.innerHTML = s""" + <div> + <h1>Hello World!</h1> + <p> + The quick brown <b>$animalA</b> + jumped over the lazy <i>$animalB</b> + </p> + </div> + """ + } +}
\ No newline at end of file diff --git a/examples/src/main/scala/webpage/HelloWorld1.scala b/examples/src/main/scala/webpage/HelloWorld1.scala new file mode 100644 index 0000000..1dc77b3 --- /dev/null +++ b/examples/src/main/scala/webpage/HelloWorld1.scala @@ -0,0 +1,18 @@ +package webpage +import org.scalajs.dom +import scala.scalajs.js.annotation.JSExport +import scalatags.JsDom.all._ +@JSExport +object HelloWorld1 extends{ + @JSExport + def main(target: dom.HTMLDivElement) = { + val (animalA, animalB) = ("fox", "dog") + target.appendChild( + div( + h1("Hello World!"), + p("The quick brown ", b(animalA), + " jumped over the lazy ", i(animalB), ".") + ).render + ) + } +}
\ No newline at end of file diff --git a/examples/src/main/scala/webpage/Inputs.scala b/examples/src/main/scala/webpage/Inputs.scala new file mode 100644 index 0000000..9339e84 --- /dev/null +++ b/examples/src/main/scala/webpage/Inputs.scala @@ -0,0 +1,35 @@ +package webpage + +import org.scalajs.dom +import scala.scalajs.js.annotation.JSExport +import scalatags.JsDom.all._ + +@JSExport +object Inputs extends{ + @JSExport + def main(target: dom.HTMLDivElement) = { + val box = input( + `type`:="text", + placeholder:="Type here!" + ).render + + val output = span.render + + box.onkeyup = (e: dom.Event) => { + output.textContent = + box.value.toUpperCase + } + + target.appendChild( + div( + h1("Capital Box!"), + p( + "Type here and " + + "have it capitalized!" + ), + div(box), + div(output) + ).render + ) + } +}
\ No newline at end of file diff --git a/examples/src/main/scala/webpage/Search0.scala b/examples/src/main/scala/webpage/Search0.scala new file mode 100644 index 0000000..300b506 --- /dev/null +++ b/examples/src/main/scala/webpage/Search0.scala @@ -0,0 +1,50 @@ +package webpage + +import org.scalajs.dom +import scala.scalajs.js.annotation.JSExport +import scalatags.JsDom.all._ + +@JSExport +object Search0 extends{ + @JSExport + def main(target: dom.HTMLDivElement) = { + val listings = Seq( + "Apple", "Apricot", "Banana", "Cherry", + "Mango", "Mangosteen", "Mandarin", + "Grape", "Grapefruit", "Guava" + ) + + def renderListings = ul( + for { + fruit <- listings + if fruit.toLowerCase.startsWith( + box.value.toLowerCase + ) + } yield li(fruit) + ).render + + lazy val box = input( + `type`:="text", + placeholder:="Type here!" + ).render + + val output = div(renderListings).render + + box.onkeyup = (e: dom.Event) => { + output.innerHTML = "" + output.appendChild(renderListings) + } + + target.appendChild( + div( + h1("Search Box!"), + p( + "Type here to filter " + + "the list of things below!" + ), + div(box), + output + ).render + ) + } +}
\ No newline at end of file diff --git a/examples/src/main/scala/webpage/Search1.scala b/examples/src/main/scala/webpage/Search1.scala new file mode 100644 index 0000000..1936898 --- /dev/null +++ b/examples/src/main/scala/webpage/Search1.scala @@ -0,0 +1,62 @@ +package webpage + +import org.scalajs.dom +import scala.scalajs.js.annotation.JSExport +import scalatags.JsDom.all._ + +@JSExport +object Search1 extends{ + @JSExport + def main(target: dom.HTMLDivElement) = { + val listings = Seq( + "Apple", "Apricot", "Banana", "Cherry", + "Mango", "Mangosteen", "Mandarin", + "Grape", "Grapefruit", "Guava" + ) + + def renderListings = ul( + for { + fruit <- listings + if fruit.toLowerCase.startsWith( + box.value.toLowerCase + ) + } yield { + val (first, last) = fruit.splitAt( + box.value.length + ) + li( + span( + backgroundColor:="yellow", + first + ), + last + ) + } + ).render + + + lazy val box = input( + `type`:="text", + placeholder:="Type here!" + ).render + + val output = div(renderListings).render + + box.onkeyup = (e: dom.Event) => { + output.innerHTML = "" + output.appendChild(renderListings) + } + + target.appendChild( + div( + h1("Search Box!"), + p( + "Type here to filter " + + "the list of things below!" + ), + div(box), + output + ).render + ) + } +}
\ No newline at end of file |