progs/display/MinimalApplication.scala
author Christian Urban <christian.urban@kcl.ac.uk>
Mon, 14 Dec 2020 19:22:12 +0000
changeset 818 ea65778368cc
parent 738 03f46065ef04
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
738
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     1
package app
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     2
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     3
import scalatags.Text.all._
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     4
import scala.util.Random
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     5
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     6
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     7
object MinimalApplication extends cask.MainRoutes{
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     8
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
     9
  val bootstrap = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.css"
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    10
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    11
  var x = Random.between(0, 7)
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    12
  var y = Random.between(0, 7) 
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    13
  var z = Random.between(0, 7) 
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    14
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    15
  abstract class Answer
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    16
  case object No extends Answer
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    17
  case object Correct extends Answer
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    18
  case class Wrong(n: Int) extends Answer
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    19
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    20
  var ans : Answer = No
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    21
  var cnt = 1
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    22
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    23
  val heart = raw("&#10084;&#65039;")
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    24
  val unicorn = raw("&#129412;")
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    25
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    26
  var nms = List("Christiane", "Sebastian")
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    27
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    28
  @cask.get("/")
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    29
  def hello() = 
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    30
      doctype("html")(
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    31
      html(
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    32
        head(link(rel := "stylesheet", href := bootstrap)), 
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    33
        body(
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    34
          div(cls := "container")( 
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    35
            //h1(s"Hello ${nms((cnt / 3) % 2)}!"), 
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    36
            h1(s"Hello Christiane"),  
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    37
            h1(s"$x + $y = ??"),  
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    38
	    ans match {
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    39
              case No => ""
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    40
              case Correct => i(color.green)("Correct!")
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    41
              case Wrong(n) => i(color.red)(s"$n is wrong!")
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    42
	    },
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    43
            form(action := "/", method := "post")(
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    44
	      frag(
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    45
		for (i <- 0 to 12) yield button(`type` := "submit", name := "name", value := i.toString)(i.toString)  
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    46
              )
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    47
            ),
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    48
            frag(
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    49
              for (i <- 0 until cnt) yield 
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    50
                if ((i + 1) % 10 != 0) heart else unicorn
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    51
            )
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    52
          )
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    53
        )
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    54
      )
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    55
  )
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    56
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    57
  @cask.postForm("/")
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    58
  def answer(name: String) = {
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    59
    if (x + y == name.toInt) {
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    60
      ans = Correct
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    61
      x = Random.between(0, 7)
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    62
      y = Random.between(0, 7)
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    63
      z = Random.between(0, 7)
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    64
      cnt = cnt + 1
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    65
    }
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    66
    else 
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    67
      ans = Wrong(name.toInt)
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    68
    hello()
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    69
  }
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    70
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    71
  initialize()
03f46065ef04 updated
Christian Urban <christian dot urban at kcl dot ac dot uk>
parents:
diff changeset
    72
}