zusammenfassung
[phd-thesis.git] / intro / lst / sharedlist.icl
1 module sharedlist
2
3 import iTasks
4 import iTasks.Extensions.DateTime
5
6 :: ToDo = {description :: String, date :: Date}/*\label{lst:todo_dt}*/
7 derive class iTask ToDo/*\label{lst:todo_derive}*/
8
9 todos :: SimpleSDSLens [ToDo]
10 todos = sharedStore "todos" []/*\label{lst:todo_sds}*/
11
12 toDoTask :: Task [ToDo]
13 toDoTask = upToDos/*\label{lst:todo_update}*/
14 -|| viewSharedInformation [ViewAs length] todos <<@ Label "Length"/*\label{lst:todo_length}*/
15
16 upToDos :: Task [ToDo]
17 upToDos = updateSharedInformation [] todos <<@ Title "My todo-list"/*\label{lst:todo_ui}\label{lst:todo_editor}*/
18 >>* [ OnAction (Action "Sort") (hasValue \_->upd sort todos >-| upToDos)/*\label{lst:todo_contfro}*/
19 , OnAction (Action "Clear") (always (set [] todos >-| upToDos))
20 , OnAction (Action "Quit") (always (get todos))/*\label{lst:todo_contto}*/
21 ]
22 where sort list = sortBy (\x y->x.ToDo.date < y.ToDo.date) list
23
24 Start w = doTasks toDoTask w