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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user