Hi all, I'm writing an application that has a “advanced search” form. In my context it means a form with approx. 20 input fields.
As a newbie the only way I could think of coding this is quite repetitive. I bet that there is a more cleaver and a DRY way to do it, but I couldn't figure out how. Any ideias? This is the terrible idea I have in mind: 1. My initial model would have 20 form fields definition like that: initialModel = { form : { applicant = { label = "Applicant name" , selected = True , value = "" , msg = UpdateApplicant } , year = { label = "Year" , selected = True , value = "" , msg = UpdateYear } , state = { label = "State" , selected = True , value = "" , msg = UpdateState } … } … } 2. Consequently my type Msg would have another 20 very similar fields: type Msg = UpdateApplicant String | UpdateYear String | UpdateState | … 3. And my update would have 20 very similar cases: update msg model = case msg of UpdateApplicant query -> let applicant = model.form.applicant newApplicant = { applicant | value = query } currentForm = model.form form = { currentForm | applicant = newApplicant } in ( { model | form = form }, Cmd.none ) UpdateYear query -> let year = model.form.year newYear = { year | value = query } currentForm = model.form form = { currentForm | year = newYear } in ( { model | form = form }, Cmd.none ) UpdateState query -> let state = model.form.state newState = { state | value = query } currentForm = model.form form = { currentForm | state = newState } in ( { model | form = form }, Cmd.none ) Many thanks, -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.