Add missing dates to tasks
This commit is contained in:
parent
04dbb364cc
commit
bac127e82c
2 changed files with 31 additions and 3 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue