progs/display/MinimalApplication.scala
changeset 738 084e2843f478
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/progs/display/MinimalApplication.scala	Fri Jul 24 12:58:19 2020 +0100
@@ -0,0 +1,72 @@
+package app
+
+import scalatags.Text.all._
+import scala.util.Random
+
+
+object MinimalApplication extends cask.MainRoutes{
+
+  val bootstrap = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.css"
+
+  var x = Random.between(0, 7)
+  var y = Random.between(0, 7) 
+  var z = Random.between(0, 7) 
+
+  abstract class Answer
+  case object No extends Answer
+  case object Correct extends Answer
+  case class Wrong(n: Int) extends Answer
+
+  var ans : Answer = No
+  var cnt = 1
+
+  val heart = raw("❤️")
+  val unicorn = raw("🦄")
+
+  var nms = List("Christiane", "Sebastian")
+
+  @cask.get("/")
+  def hello() = 
+      doctype("html")(
+      html(
+        head(link(rel := "stylesheet", href := bootstrap)), 
+        body(
+          div(cls := "container")( 
+            //h1(s"Hello ${nms((cnt / 3) % 2)}!"), 
+            h1(s"Hello Christiane"),  
+            h1(s"$x + $y = ??"),  
+	    ans match {
+              case No => ""
+              case Correct => i(color.green)("Correct!")
+              case Wrong(n) => i(color.red)(s"$n is wrong!")
+	    },
+            form(action := "/", method := "post")(
+	      frag(
+		for (i <- 0 to 12) yield button(`type` := "submit", name := "name", value := i.toString)(i.toString)  
+              )
+            ),
+            frag(
+              for (i <- 0 until cnt) yield 
+                if ((i + 1) % 10 != 0) heart else unicorn
+            )
+          )
+        )
+      )
+  )
+
+  @cask.postForm("/")
+  def answer(name: String) = {
+    if (x + y == name.toInt) {
+      ans = Correct
+      x = Random.between(0, 7)
+      y = Random.between(0, 7)
+      z = Random.between(0, 7)
+      cnt = cnt + 1
+    }
+    else 
+      ans = Wrong(name.toInt)
+    hello()
+  }
+
+  initialize()
+}