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
|
, actionDelete
|
||||||
, actionEditNew
|
, actionEditNew
|
||||||
, actionEditSelected
|
, actionEditSelected
|
||||||
|
, actionToggleCompletion
|
||||||
, actionSortTasks
|
, actionSortTasks
|
||||||
, actionFinishEdit
|
, actionFinishEdit
|
||||||
) where
|
) where
|
||||||
|
|
@ -136,11 +137,29 @@ actionToggleCompletion s =
|
||||||
actionSortTasks :: Action
|
actionSortTasks :: Action
|
||||||
actionSortTasks s = pure s{tasks=sortTaskList (tasks s)}
|
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...
|
-- combining all of the above...
|
||||||
|
|
||||||
taskListBehavior :: Behavior
|
taskListBehavior :: Behavior
|
||||||
-- Clean up: Add todays date where creation/completion date is missing
|
-- 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)
|
-- Delete currently selected task (implicit save)
|
||||||
taskListBehavior s (VTY.EvKey (VTY.KChar 'd') []) =
|
taskListBehavior s (VTY.EvKey (VTY.KChar 'd') []) =
|
||||||
actionDelete >=> actionSave >=> B.continue $ s
|
actionDelete >=> actionSave >=> B.continue $ s
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ module TaskMachine.UI.TaskList
|
||||||
, appendTask
|
, appendTask
|
||||||
, replaceTask
|
, replaceTask
|
||||||
, deleteTask
|
, deleteTask
|
||||||
|
, modifyAllTasks
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Data.Function
|
import Data.Function
|
||||||
|
|
@ -58,10 +59,11 @@ updateTaskList event (TaskList list) =
|
||||||
|
|
||||||
sortTaskList :: TaskList n -> TaskList n
|
sortTaskList :: TaskList n -> TaskList n
|
||||||
sortTaskList (TaskList list) =
|
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
|
sortedTasks = sortBy (compareTasks `on` toTask) tasks
|
||||||
newVector = V.fromList sortedTasks
|
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 n -> Maybe Task
|
||||||
selectedTask (TaskList list) = toTask . snd <$> B.listSelectedElement list
|
selectedTask (TaskList list) = toTask . snd <$> B.listSelectedElement list
|
||||||
|
|
@ -89,6 +91,13 @@ deleteTask tl@(TaskList list) =
|
||||||
| index == 0 -> TaskList $ B.listRemove index list
|
| index == 0 -> TaskList $ B.listRemove index list
|
||||||
| otherwise -> TaskList $ B.listMoveBy 1 $ 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 -}
|
{- helper functions -}
|
||||||
|
|
||||||
listSize :: B.List n e -> Int
|
listSize :: B.List n e -> Int
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue