feat(15): adding only required validation
This commit is contained in:
parent
dd590e1530
commit
96edd50450
|
@ -134,6 +134,7 @@
|
||||||
th:value="${formData.userAnswers.step1.name}"
|
th:value="${formData.userAnswers.step1.name}"
|
||||||
name="name"
|
name="name"
|
||||||
type="text"
|
type="text"
|
||||||
|
required
|
||||||
placeholder="e.g. Stephen King"
|
placeholder="e.g. Stephen King"
|
||||||
class="p-1 px-4 h-10 text-sm font-semibold rounded border md:p-6 md:px-4 md:text-base md:rounded-lg placeholder:text-cool-gray"
|
class="p-1 px-4 h-10 text-sm font-semibold rounded border md:p-6 md:px-4 md:text-base md:rounded-lg placeholder:text-cool-gray"
|
||||||
/>
|
/>
|
||||||
|
@ -145,6 +146,7 @@
|
||||||
th:value="${formData.userAnswers.step1.email}"
|
th:value="${formData.userAnswers.step1.email}"
|
||||||
name="email"
|
name="email"
|
||||||
type="email"
|
type="email"
|
||||||
|
required
|
||||||
placeholder="e.g. stephenking@lorem.com"
|
placeholder="e.g. stephenking@lorem.com"
|
||||||
class="p-1 px-4 h-10 text-sm font-semibold rounded border md:p-6 md:px-4 md:text-base md:rounded-lg placeholder:text-cool-gray"
|
class="p-1 px-4 h-10 text-sm font-semibold rounded border md:p-6 md:px-4 md:text-base md:rounded-lg placeholder:text-cool-gray"
|
||||||
/>
|
/>
|
||||||
|
@ -156,6 +158,7 @@
|
||||||
th:value="${formData.userAnswers.step1.phone}"
|
th:value="${formData.userAnswers.step1.phone}"
|
||||||
name="phone"
|
name="phone"
|
||||||
type="tel"
|
type="tel"
|
||||||
|
required
|
||||||
placeholder="e.g. +1 234 567 890"
|
placeholder="e.g. +1 234 567 890"
|
||||||
class="p-1 px-4 h-10 text-sm font-semibold rounded border md:p-6 md:px-4 md:text-base md:rounded-lg placeholder:text-cool-gray"
|
class="p-1 px-4 h-10 text-sm font-semibold rounded border md:p-6 md:px-4 md:text-base md:rounded-lg placeholder:text-cool-gray"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.util.UUID
|
||||||
import scala.jdk.CollectionConverters._
|
import scala.jdk.CollectionConverters._
|
||||||
|
|
||||||
object Models {
|
object Models {
|
||||||
|
|
||||||
/** Labels and form info which dynamically depend on user answers e.g plan
|
/** Labels and form info which dynamically depend on user answers e.g plan
|
||||||
* name 'Arcade (Yearly)' vs 'Pro (Monthly)'
|
* name 'Arcade (Yearly)' vs 'Pro (Monthly)'
|
||||||
*/
|
*/
|
||||||
|
@ -47,14 +48,11 @@ object Models {
|
||||||
}
|
}
|
||||||
|
|
||||||
final case class Answers(
|
final case class Answers(
|
||||||
sessionId: String = "id1",
|
sessionId: String = "",
|
||||||
currentStep: Int = 1,
|
currentStep: Int = 1,
|
||||||
step1: StepAnswers.Step1 =
|
step1: StepAnswers.Step1 = StepAnswers.Step1(),
|
||||||
StepAnswers.Step1("Test Name", "some@email.com", "+9876", true),
|
step2: StepAnswers.Step2 = StepAnswers.Step2(),
|
||||||
step2: StepAnswers.Step2 =
|
step3: StepAnswers.Step3 = StepAnswers.Step3(),
|
||||||
StepAnswers.Step2(PlanType.Advanced, true, true),
|
|
||||||
step3: StepAnswers.Step3 =
|
|
||||||
StepAnswers.Step3(Set(Addons.LargerStorage), true),
|
|
||||||
step4: StepAnswers.Step4 = StepAnswers.Step4()
|
step4: StepAnswers.Step4 = StepAnswers.Step4()
|
||||||
) {
|
) {
|
||||||
// this is not enforced by compiler, sad, maintain by hand in html template files
|
// this is not enforced by compiler, sad, maintain by hand in html template files
|
||||||
|
@ -87,9 +85,8 @@ object Models {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** TODO would be nice to connect answers to the steps enum in some helpful
|
||||||
* TODO would be nice to connect answers to the steps enum
|
* way.
|
||||||
* in some helpful way.
|
|
||||||
*/
|
*/
|
||||||
enum Steps(val index: Int, val name: String):
|
enum Steps(val index: Int, val name: String):
|
||||||
case Step1 extends Steps(1, "Your info")
|
case Step1 extends Steps(1, "Your info")
|
||||||
|
@ -132,6 +129,7 @@ object Models {
|
||||||
println(s"parsing step 1 data $rawData")
|
println(s"parsing step 1 data $rawData")
|
||||||
val fieldValues = rawData
|
val fieldValues = rawData
|
||||||
.split("&")
|
.split("&")
|
||||||
|
.filterNot(_.isEmpty())
|
||||||
.map { field =>
|
.map { field =>
|
||||||
val Array(name, value) = field.split("=")
|
val Array(name, value) = field.split("=")
|
||||||
name -> value
|
name -> value
|
||||||
|
@ -154,6 +152,7 @@ object Models {
|
||||||
println(s"parsing step 2 data $rawData")
|
println(s"parsing step 2 data $rawData")
|
||||||
val fieldValues = rawData
|
val fieldValues = rawData
|
||||||
.split("&")
|
.split("&")
|
||||||
|
.filterNot(_.isEmpty())
|
||||||
.map { field =>
|
.map { field =>
|
||||||
val Array(name, value) = field.split("=")
|
val Array(name, value) = field.split("=")
|
||||||
name -> value
|
name -> value
|
||||||
|
@ -183,6 +182,7 @@ object Models {
|
||||||
// addon-services=OnlineService&addon-services=CustomProfile
|
// addon-services=OnlineService&addon-services=CustomProfile
|
||||||
val fieldValues = rawData
|
val fieldValues = rawData
|
||||||
.split("&")
|
.split("&")
|
||||||
|
.filterNot(_.isEmpty())
|
||||||
.map { field =>
|
.map { field =>
|
||||||
val Array(name, value) = field.split("=")
|
val Array(name, value) = field.split("=")
|
||||||
name -> value
|
name -> value
|
||||||
|
@ -200,10 +200,10 @@ object Models {
|
||||||
final case class Step4(
|
final case class Step4(
|
||||||
override val submitted: Boolean = false
|
override val submitted: Boolean = false
|
||||||
) extends StepAnswers {
|
) extends StepAnswers {
|
||||||
override def fromFormData(rawData: String): Step4 =
|
override def fromFormData(rawData: String): Step4 = {
|
||||||
{
|
|
||||||
val fieldValues = rawData
|
val fieldValues = rawData
|
||||||
.split("&").filterNot(_.isEmpty())
|
.split("&")
|
||||||
|
.filterNot(_.isEmpty())
|
||||||
.map { field =>
|
.map { field =>
|
||||||
println(s"working with field $field")
|
println(s"working with field $field")
|
||||||
val Array(name, value) = field.split("=")
|
val Array(name, value) = field.split("=")
|
||||||
|
|
Loading…
Reference in New Issue