feat(14): controls models for fragment rendering
This commit is contained in:
parent
91c53429e0
commit
560ce6896a
|
@ -0,0 +1,79 @@
|
|||
package rockpaperscissors
|
||||
|
||||
import java.beans.BeanProperty
|
||||
|
||||
object Models {
|
||||
sealed trait Positioning
|
||||
object Positioning {
|
||||
case object Relative extends Positioning {
|
||||
override def toString(): String = " position: absolute; "
|
||||
}
|
||||
final case class Absolute(
|
||||
topOffset: String,
|
||||
leftOffset: String,
|
||||
translation: String = "50%"
|
||||
) extends Positioning {
|
||||
override def toString(): String =
|
||||
s"""
|
||||
--top-offset: $topOffset;
|
||||
--left-offset: $leftOffset;
|
||||
--translation: $translation;
|
||||
position: absolute;
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
sealed trait Choice {
|
||||
def diameter: String
|
||||
def bgDark: String
|
||||
def bgBright: String
|
||||
}
|
||||
object Choice {
|
||||
val scissorsDark = "hsl(39, 89%, 49%)"
|
||||
val scissorsBright = "hsl(40, 84%, 53%)"
|
||||
val paperDark = "hsl(230, 89%, 62%)"
|
||||
val paperBright = "hsl(230, 89%, 65%)"
|
||||
val rockDark = "hsl(349, 71%, 52%)"
|
||||
val rockBright = "hsl(349, 70%, 56%)"
|
||||
|
||||
case class Paper(
|
||||
diameter: String,
|
||||
bgDark: String = paperDark,
|
||||
bgBright: String = paperBright
|
||||
) extends Choice
|
||||
case class Scissors(
|
||||
diameter: String,
|
||||
bgDark: String = scissorsDark,
|
||||
bgBright: String = scissorsBright
|
||||
) extends Choice
|
||||
case class Rock(
|
||||
diameter: String,
|
||||
bgDark: String = rockDark,
|
||||
bgBright: String = rockBright
|
||||
) extends Choice
|
||||
}
|
||||
|
||||
/**
|
||||
* this will be Data Transfer Object, because Thymeleaf wants var and Bean Object Notation
|
||||
* and i want vals and enums
|
||||
*/
|
||||
final class ChoiceBadge(
|
||||
var diameter: String = "",
|
||||
var bgDark: String = "",
|
||||
var bgBright: String = "",
|
||||
var positioningStyle: String = "",
|
||||
) {
|
||||
def this(c: Choice, p: Positioning) = {
|
||||
this(c.diameter, c.bgDark, c.bgBright, p.toString())
|
||||
}
|
||||
}
|
||||
|
||||
val choiceSelectionItems = {
|
||||
List(
|
||||
ChoiceBadge(Choice.Paper("8rem"), Positioning.Absolute("6rem", "6rem")),
|
||||
ChoiceBadge(Choice.Scissors("8rem"), Positioning.Absolute("6rem", "17rem")),
|
||||
ChoiceBadge(Choice.Rock("8rem"), Positioning.Absolute("15rem", "11.5rem")),
|
||||
)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue