-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtimesheet.elm
85 lines (71 loc) · 1.61 KB
/
timesheet.elm
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import Timer
import Tasklist
import Html exposing (..)
import Html.Attributes exposing (..)
import Time exposing (Time, second)
import Html.Events exposing (onClick)
import Html.App as Html
import Task exposing (perform)
import Date exposing (Date)
import Date.Extra.Config.Config_en_us exposing (config)
import Date.Extra.Format as Format exposing (format, formatUtc, isoMsecOffsetFormat)
main =
Html.program
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}
-- model
type alias Model =
{ clock : Timer.Model
, list : Tasklist.Model
}
init : (Model, Cmd Msg)
init =
let
(clockModel, clockFx) =
Timer.init
(listModel, listFx) =
Tasklist.init
in
( Model clockModel listModel
, Cmd.batch
[ Cmd.map Clock clockFx
, Cmd.map Tasks listFx
]
)
-- update
type Msg
= Clock Timer.Msg
| Tasks Tasklist.Msg
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
Clock msg ->
let
(clock, clockCmds) =
Timer.update msg model.clock
in
({ model | clock = clock }
, Cmd.map Clock clockCmds
)
Tasks msg ->
let
(list, listCmds) =
Tasklist.update msg model.list
in
({ model | list = list }
, Cmd.map Tasks listCmds
)
-- subscriptions
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.map Clock (Timer.subscriptions model.clock)
-- view
view : Model -> Html Msg
view model =
div []
[ Html.map Clock (Timer.view model.clock)
, Html.map Tasks (Tasklist.view model.list)
]