Skip to content

Instantly share code, notes, and snippets.

@prikhi
Forked from cschneid/updatefunc.elm
Last active May 26, 2017 20:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save prikhi/1f2fa08231b9bb959772453cfd0c042a to your computer and use it in GitHub Desktop.
Save prikhi/1f2fa08231b9bb959772453cfd0c042a to your computer and use it in GitHub Desktop.
type FilterMsg
= UpdateTitleFilter String
| UpdateDescriptionFilter String
| UpdateTagFilter String
type Msg
= Filter FilterMsg
| DoSomethingElse
| DoAnotherThing
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
Filter subMsg ->
updateFilter subMsg model
DoSomethingElse ->
-- ...
DoAnotherThing ->
-- ...
updateFilter : FilterMsg -> Model -> ( Model, Cmd Msg )
updateFilter msg model =
let
setFilters m =
{ m | filters =
createFilters m.currentTitleSearchField
m.currentDescriptionSearchField
m.currentFilteredTags
}
addTag tag =
{ model | currentFilteredTags = tag :: model.currentFilteredTags }
removeTag tag =
{ model | currentFilteredTags = List.filter (\t -> t /= tag) model.currentFilteredTags }
in
case msg of
UpdateTitleFilter titleSearch ->
( setFilters { model | currentTitleSearchField = titleSearch }, Cmd.none )
UpdateDescriptionFilter descSearch ->
( setFilters { model | currentDescriptionSearchField = descSearch } , Cmd.none )
UpdateTagFilter tagSearch ->
( { model | currentTagSearchField = tagSearch }, Cmd.none )
SubmitTagFilter ->
( setFilters <| addTag model.currentTagSearchField, Cmd.none )
AddTagFilter tag ->
( setFilters <| addTag tag, Cmd.none )
RemoveTagFilter tag ->
( setFilters <| removeTag tag, Cmd.none )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment