@@ -34,51 +34,57 @@ object Main extends IOWebApp {
3434 def resultPane (dog : SignallingRef [IO , GameDog ]): Resource [IO , HtmlElement [IO ]] = {
3535 val calculatedSignal = dog.map(_.masterGene.calculateGenes())
3636 div(
37- p(" Horn type: " , calculatedSignal.map(_.hornType.display)),
38- p(" Horn placement: " , calculatedSignal.map(_.hornPlacement.display)),
39- p(" Ear type: " , calculatedSignal.map(_.earType.display)),
40- p(" Nose type: " , calculatedSignal.map(_.noseType.display)),
41- p(" Tail type: " , calculatedSignal.map(_.tailType.display)),
42- p(" Wing type: " , calculatedSignal.map(_.wingType.display)),
43- p(" Eye type: " , calculatedSignal.map(_.eyeType.displayName)),
44- p(" Mouth type: " , calculatedSignal.map(_.mouthType.displayName)),
45- p(" Front leg pairs: " , calculatedSignal.map(_.frontLegPairs.toString)),
46- p(" Back leg pairs: " , calculatedSignal.map(_.backLegPairs.toString)),
47- p(" Wing number: " , calculatedSignal.map(_.wingNumber.toString)),
48- p(" Tail number: " , calculatedSignal.map(_.tailNumber.toString)),
49- p(" Head number: " , calculatedSignal.map(_.headNumber.toString))
37+ cls := " scrollView" ,
38+ div(
39+ p(" Horn type: " , calculatedSignal.map(_.hornType.display)),
40+ p(" Horn placement: " , calculatedSignal.map(_.hornPlacement.display)),
41+ p(" Ear type: " , calculatedSignal.map(_.earType.display)),
42+ p(" Nose type: " , calculatedSignal.map(_.noseType.display)),
43+ p(" Tail type: " , calculatedSignal.map(_.tailType.display)),
44+ p(" Wing type: " , calculatedSignal.map(_.wingType.display)),
45+ p(" Eye type: " , calculatedSignal.map(_.eyeType.displayName)),
46+ p(" Mouth type: " , calculatedSignal.map(_.mouthType.displayName)),
47+ p(" Front leg pairs: " , calculatedSignal.map(_.frontLegPairs.toString)),
48+ p(" Back leg pairs: " , calculatedSignal.map(_.backLegPairs.toString)),
49+ p(" Wing number: " , calculatedSignal.map(_.wingNumber.toString)),
50+ p(" Tail number: " , calculatedSignal.map(_.tailNumber.toString)),
51+ p(" Head number: " , calculatedSignal.map(_.headNumber.toString))
52+ )
5053 )
5154 }
5255 def generalPane (dog : SignallingRef [IO , GameDog ]): Resource [IO ,HtmlElement [IO ]] = {
5356 val ageSignal = dog.imapCopied[DogAge ](" age" )
5457 val ageProgress = dog.imapCopied[Float ](" ageProgress" )
5558 div(
56- strCompTextbox(" Name:" , dog.imapCopied(" dogName" )),
57- p(
58- " Age:" ,
59- select.withSelf { self =>
60- (
61- DogAge .values.filter(_ != DogAge .Empty ).map(it => option(value := it.ordinal.toString, it.toString)).toList,
62- onChange --> {
63- _.evalMap(_ => self.value.get).map(DogAge .parseString).foreach(ageSignal.set)
64- },
65- value <-- ageSignal.map(_.ordinal.toString)
66- )
67- }
68- ),
69- p(
70- " Age Progress:" ,
71- input.withSelf { self =>
72- (
73- tpe := " text" ,
74- onChange --> {
75- _.evalMap(_ => self.value.get).foreach(_.toFloatOption.map(it => ageProgress.set(it)).getOrElse(IO .pure(())))
76- },
77- value <-- ageProgress.map(_.toString)
78- )
79- }
80- ),
81- strCompTextbox(" Random Seed:" , SignallingRef .lens[IO , GameDog , String ](dog)(_.masterGene.randomSeed, src => it => src.copy(masterGene = src.masterGene.copy(randomSeed = it))))
59+ cls := " scrollView" ,
60+ div(
61+ strCompTextbox(" Name:" , dog.imapCopied(" dogName" )),
62+ p(
63+ " Age:" ,
64+ select.withSelf { self =>
65+ (
66+ DogAge .values.filter(_ != DogAge .Empty ).map(it => option(value := it.ordinal.toString, it.toString)).toList,
67+ onChange --> {
68+ _.evalMap(_ => self.value.get).map(DogAge .parseString).foreach(ageSignal.set)
69+ },
70+ value <-- ageSignal.map(_.ordinal.toString)
71+ )
72+ }
73+ ),
74+ p(
75+ " Age Progress:" ,
76+ input.withSelf { self =>
77+ (
78+ tpe := " text" ,
79+ onChange --> {
80+ _.evalMap(_ => self.value.get).foreach(_.toFloatOption.map(it => ageProgress.set(it)).getOrElse(IO .pure(())))
81+ },
82+ value <-- ageProgress.map(_.toString)
83+ )
84+ }
85+ ),
86+ strCompTextbox(" Random Seed:" , SignallingRef .lens[IO , GameDog , String ](dog)(_.masterGene.randomSeed, src => it => src.copy(masterGene = src.masterGene.copy(randomSeed = it))))
87+ )
8288 )
8389 }
8490 def dualGeneGroup (name : String , dualGene : SignallingRef [IO , DualGene ]): Resource [IO , HtmlElement [IO ]] = {
@@ -191,6 +197,8 @@ object Main extends IOWebApp {
191197 val nicenessPersonality = personality.imapCopied[NicenessPersonality ](" niceness" )
192198 val pettablePersonality = personality.imapCopied[PettablePersonality ](" pettable" )
193199 val loudnessPersonality = personality.imapCopied[LoudnessPersonality ](" loudness" )
200+ div(
201+ cls := " scrollView" ,
194202 div(
195203 personalityBinder[SocialPersonality ](socialPersonality, " Social: " ),
196204 personalityBinder[EnergyPersonality ](energyPersonality, " Energy: " ),
@@ -200,6 +208,7 @@ object Main extends IOWebApp {
200208 personalityBinder[PettablePersonality ](pettablePersonality, " Pettable: " ),
201209 personalityBinder[LoudnessPersonality ](loudnessPersonality, " Loudness: " )
202210 )
211+ )
203212 }
204213 def tab (selectedTab : SignallingRef [IO , Int ], name : String , id : Int ): Resource [IO , HtmlElement [IO ]] = {
205214 button(
0 commit comments