progs/display/MinimalApplication.scala
changeset 738 084e2843f478
equal deleted inserted replaced
737:14a348d050b3 738:084e2843f478
       
     1 package app
       
     2 
       
     3 import scalatags.Text.all._
       
     4 import scala.util.Random
       
     5 
       
     6 
       
     7 object MinimalApplication extends cask.MainRoutes{
       
     8 
       
     9   val bootstrap = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.css"
       
    10 
       
    11   var x = Random.between(0, 7)
       
    12   var y = Random.between(0, 7) 
       
    13   var z = Random.between(0, 7) 
       
    14 
       
    15   abstract class Answer
       
    16   case object No extends Answer
       
    17   case object Correct extends Answer
       
    18   case class Wrong(n: Int) extends Answer
       
    19 
       
    20   var ans : Answer = No
       
    21   var cnt = 1
       
    22 
       
    23   val heart = raw("❤️")
       
    24   val unicorn = raw("🦄")
       
    25 
       
    26   var nms = List("Christiane", "Sebastian")
       
    27 
       
    28   @cask.get("/")
       
    29   def hello() = 
       
    30       doctype("html")(
       
    31       html(
       
    32         head(link(rel := "stylesheet", href := bootstrap)), 
       
    33         body(
       
    34           div(cls := "container")( 
       
    35             //h1(s"Hello ${nms((cnt / 3) % 2)}!"), 
       
    36             h1(s"Hello Christiane"),  
       
    37             h1(s"$x + $y = ??"),  
       
    38 	    ans match {
       
    39               case No => ""
       
    40               case Correct => i(color.green)("Correct!")
       
    41               case Wrong(n) => i(color.red)(s"$n is wrong!")
       
    42 	    },
       
    43             form(action := "/", method := "post")(
       
    44 	      frag(
       
    45 		for (i <- 0 to 12) yield button(`type` := "submit", name := "name", value := i.toString)(i.toString)  
       
    46               )
       
    47             ),
       
    48             frag(
       
    49               for (i <- 0 until cnt) yield 
       
    50                 if ((i + 1) % 10 != 0) heart else unicorn
       
    51             )
       
    52           )
       
    53         )
       
    54       )
       
    55   )
       
    56 
       
    57   @cask.postForm("/")
       
    58   def answer(name: String) = {
       
    59     if (x + y == name.toInt) {
       
    60       ans = Correct
       
    61       x = Random.between(0, 7)
       
    62       y = Random.between(0, 7)
       
    63       z = Random.between(0, 7)
       
    64       cnt = cnt + 1
       
    65     }
       
    66     else 
       
    67       ans = Wrong(name.toInt)
       
    68     hello()
       
    69   }
       
    70 
       
    71   initialize()
       
    72 }