aboutsummaryrefslogtreecommitdiff
path: root/src/client/LoggedIn/Home/Update.elm
blob: 06c2c7e33686ac34aa10e03022bcdbd8a52ffb38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
module LoggedIn.Home.Update exposing
  ( update
  )

import Form exposing (Form)

import LoggedData exposing (LoggedData)
import LoggedIn.Home.Model as Home
import LoggedIn.Home.Msg as Home
import Model.Frequency as Frequency exposing (Frequency(..))

update : LoggedData -> Home.Msg -> Home.Model -> (Home.Model, Cmd Home.Msg)
update loggedData msg model =
  case msg of

    Home.NoOp ->
      ( model
      , Cmd.none
      )

    Home.UpdatePage page ->
      ( updatePage page model
      , Cmd.none
      )

    Home.SearchMsg formMsg ->
      let newModel =
            case formMsg of
              Form.Input "name" _ _ -> updatePage 1 model
              _ -> model
      in  ( { model | search = Form.update Home.validation formMsg model.search }
          , Cmd.none
          )

updatePage : Int -> Home.Model -> Home.Model
updatePage page model =
  let frequency =
        Form.getFieldAsString "frequency" model.search
          |> .value
          |> Maybe.andThen Frequency.fromString
  in  case frequency of
        Just Punctual -> { model | punctualPage = page }
        Just Monthly -> { model | monthlyPage = page }
        Nothing -> model