import iTasks.Extensions.DateTime
import iTasks.UI.Editor.Common
+import qualified Data.Map as DM
+import Data.Map.GenJSON
+
+//Start w = doTasks (gui1 0) w
+//Start w = doTasks gui2 w
+//Start w = doTasks gui3 w
+//Start w = doTasks (get currentTimestamp >>- \t->gui4 30 t) w
Start w = doTasks gui5 w
gui1 :: Int -> Task Int
-|| updateSharedInformation "Fahrenheit"
[UpdateAs (\c->1.8*c+32.0) \_ f->(f-32.0)/1.8] sh
+//This should be possible with just a custom editor...
:: Flight
= OneWay Date
| Return (Date, Date)
derive class iTask Flight
-
gui3 :: Task Flight
gui3 = get currentDate
>>- \now->editChoice () [] ["one-way flight", "return flight"] (Just "one-way flight")
toProgress (now, duration) =
(Just $ toInt $ on (-) (toReal o toInt) now startTime / toReal duration * 100.0, Nothing)
-gui5 = withShared [(0, "Emil", "Hans"), (1, "Mustermann", "Max"), (2, "Tisch", "Roman")] \data->
+:: Name = {name :: String, surname :: String}
+name :: String String -> Name
+name name surname = {name=name, surname=surname}
+derive class iTask Name
+instance toString Name where toString n = n.Name.name +++ ", " +++ n.surname
+
+gui5 = withShared ('DM'.fromList [(0, name "Emil" "Hans"), (1, name "Mustermann" "Max"), (2, name "Tisch" "Roman")]) \data->
enterInformation "Filter prefix" []
>&> \v->whileUnchanged (mapRead (fromMaybe " ") v) \filter->
- tune ArrangeHorizontal
- $ enterChoiceWithShared () [ChooseFromList (\(_, f, l)->f +++ ", " +++ l)] data
- >&> \v->whileUnchanged v \selection->case selection of
- Nothing = viewInformation "Nothing selected" [] () @? const NoValue
- Just x = updateInformation () [] x
+ tune ArrangeHorizontal
+ $ enterChoiceWithShared () [ChooseFromList (toString o snd)] (mapRead 'DM'.toList data)
+ >&> \sh->whileUnchanged sh \v->case v of
+ Nothing = return () @? const NoValue
+ Just x = updateInformation () [UpdateAs snd (tuple o fst)] x
+ >^* [ OnAction (Action "new") $ always $ upd (\l->'DM'.put (inc $ maxList $ 'DM'.keys l) (name "-" "-") l) data
+ , OnAction (Action "update") $ withValue \(i, n)->Just $ upd ('DM'.put i n) data
+ , OnAction (Action "delete") $ withValue \(i, n)->Just $ upd ('DM'.del i) data
+ ]