It is actually pretty easy, and as with all things Tinderbox, fairly
flexible for recurring tasks! I implemented them using this system.
Attributes:
1. Due [Date] [Default: never]
2. Completed [Boolean] [Default: false]
3. Repeating [Boolean] [Default: false]
4. RepeatInterval [String] [Default: 1day]
Agents:
# Repeating Projects
AgentQuery [Repeating=true]
AgentAction [Color=magenta]
This simply collects all repeating objects and colours them so that it is
obvious which actions are not one-offs.
# Repeating Project Renewer
AgentQuery [Repeating=true&Completed=true]
AgentAction [Due=$Due+$RepeatInterval;Completed=false]
My action does a little more because I have some other features in the list
to take care of, but this is the important part. What it does is collect
completed actions which are set to be repeating. It looks at the
RepeatInterval attribute, and adds that time to the current Due time. So if
the RepeatInterval is 1day, the next due date will be one day from when it
was originally slated to be finished.
It is important, if you have another agent colouring completed tasks, for
instance, to make sure that it does not touch recurring tasks. Otherwise you
could get unreliable results.
The drawback to this system is that if you complete something after the date
it is scheduled to be completed, and the interval is less than the time
between then and now -- it can still be marked as needing to be done.
Example, on a 1day repeat -- if it is three days late, you would have to
mark it as completed several times before it caught up with the present.
So you could make an alternate repeat mode for tasks that are more fluid,
like that, which simply adds the RepeatInterval attribute to "today" instead
of the prior due date. I have less need for that, so I simply do not have it
as a feature in my list. The nice thing about this method is that it is
extremely flexible. You can set any interval you like with one attribute,
and using Tinderbox's time syntax it is easy to do so (30days, 1year,
5months, et cetera).
--AmberV
Received on Wed Apr 19 13:10:48 2006
This archive was generated by hypermail 2.1.8 : Mon Jun 19 2006 - 13:29:08 EDT