Add missing dates to tasks

This commit is contained in:
Joscha 2018-10-23 16:23:19 +00:00
parent 04dbb364cc
commit bac127e82c
2 changed files with 31 additions and 3 deletions

View file

@ -14,6 +14,7 @@ module TaskMachine.UI.Behaviors
, actionDelete
, actionEditNew
, actionEditSelected
, actionToggleCompletion
, actionSortTasks
, actionFinishEdit
) where
@ -136,11 +137,29 @@ actionToggleCompletion s =
actionSortTasks :: Action
actionSortTasks s = pure s{tasks=sortTaskList (tasks s)}
-- cleaning up tasks
cleanUpTask :: Day -> Task -> Task
cleanUpTask today (Task (Complete Nothing) p d Nothing desc) =
Task (Complete (Just today)) p d (Just today) desc
cleanUpTask today (Task (Complete Nothing) p d c desc) =
Task (Complete (Just today)) p d c desc
cleanUpTask today (Task c p d Nothing desc) =
Task c p d (Just today) desc
cleanUpTask _ t = t
actionCleanUp :: Action
actionCleanUp s = do
today <- liftIO getCurrentDay
let tasks' = modifyAllTasks (cleanUpTask today) (tasks s)
pure s{tasks=tasks'}
-- combining all of the above...
taskListBehavior :: Behavior
-- Clean up: Add todays date where creation/completion date is missing
--taskListBehavior s (VTY.EvKey (VTY.KChar 'c') []) = undefined s
taskListBehavior s (VTY.EvKey (VTY.KChar 'c') []) =
actionCleanUp >=> actionSave >=> B.continue $ s
-- Delete currently selected task (implicit save)
taskListBehavior s (VTY.EvKey (VTY.KChar 'd') []) =
actionDelete >=> actionSave >=> B.continue $ s

View file

@ -9,6 +9,7 @@ module TaskMachine.UI.TaskList
, appendTask
, replaceTask
, deleteTask
, modifyAllTasks
) where
import Data.Function
@ -58,10 +59,11 @@ updateTaskList event (TaskList list) =
sortTaskList :: TaskList n -> TaskList n
sortTaskList (TaskList list) =
let tasks = V.toList $ B.listElements list
let index = B.listSelected list
tasks = V.toList $ B.listElements list
sortedTasks = sortBy (compareTasks `on` toTask) tasks
newVector = V.fromList sortedTasks
in TaskList $ B.listReplace newVector Nothing list
in TaskList $ B.listReplace newVector index list
selectedTask :: TaskList n -> Maybe Task
selectedTask (TaskList list) = toTask . snd <$> B.listSelectedElement list
@ -89,6 +91,13 @@ deleteTask tl@(TaskList list) =
| index == 0 -> TaskList $ B.listRemove index list
| otherwise -> TaskList $ B.listMoveBy 1 $ B.listRemove index list
modifyAllTasks :: (Task -> Task) -> TaskList n -> TaskList n
modifyAllTasks f (TaskList list) =
let index = B.listSelected list
vector = B.listElements list
vector' = V.map (modifyLTask f) vector
in TaskList $ B.listReplace vector' index list
{- helper functions -}
listSize :: B.List n e -> Int