diff --git a/15-multi-step-form/src/main/resources/templates/step4.html b/15-multi-step-form/src/main/resources/templates/step4.html
index 17668a0..f7238a9 100644
--- a/15-multi-step-form/src/main/resources/templates/step4.html
+++ b/15-multi-step-form/src/main/resources/templates/step4.html
@@ -122,7 +122,14 @@
>
$90/y
- Change
+ Change
-
+
Total (per
year)
- $120
+
+ $120
+
@@ -166,9 +175,11 @@
hx-target="#form-step"
href="step3.html"
class="ml-6 text-sm font-semibold md:pb-3 md:ml-20 md:text-base text-cool-gray"
+ hx-params="not form-confirmed"
>Go Back
+
this.copy(
- step4 = this.step4,
+ step4 = this.step4.fromFormData(rawData),
currentStep = nextStep
)
case _ => this
@@ -200,7 +191,7 @@ object Models {
val addonsStrings = fieldValues
.groupMap(_._1)(_._2)
.getOrElse("addon-services", Array.empty[String])
- println(s"in step 3 got strings $addonsStrings")
+ println(s"in step 3 got strings ${addonsStrings.mkString(", ")}")
val addons = addonsStrings.map(Addons.valueOf(_)).toSet
Step3(addons, submitted = true)
@@ -209,7 +200,20 @@ object Models {
final case class Step4(
override val submitted: Boolean = false
) extends StepAnswers {
- override def fromFormData(rawData: String): Step4 = Step4(true)
+ override def fromFormData(rawData: String): Step4 =
+ {
+ val fieldValues = rawData
+ .split("&").filterNot(_.isEmpty())
+ .map { field =>
+ println(s"working with field $field")
+ val Array(name, value) = field.split("=")
+ name -> value
+ }
+ .toMap
+
+ val isConfirmed = fieldValues.contains("form-confirmed")
+ Step4(isConfirmed)
+ }
}
}
}