Hello,

i modified my monkeygtd to support "sequenced"-Actions. I use the
normal Tag-Feature to Control the sequence of the actions. When i
create an action that depends on another action i just "Tag" it with
the name of the first one, and set it to "Future". When the first
Action is marked as "Done" or, if it is a Ticker, is marked as
"Actioned" (only works for one-time-Ticklers). the second action is
modified from "Future" to "Next". There is no GUI-Support for this, i
have to edit the Actions and type in manualy the name of the Actions
in the Tags-Field.

Maybe with an Example its more clear to understand:

First
Action:
"Action 1"

Can be done when Action 1 is finished:                   "Action
2"      "Action3"

Can be done when A2 and A3 are finished:                      "Action
4"


I create the actions like this

Action 1, a normal "Next" Action

Action 2 and Action 3 "Future" Actions Tagged with "[Action 1]"

Action 4 "Future" action Tagged with "[Action 2] [Action 3]"


- Now, when i finish "Action 1", the code searches for Actions with
the Tag "Action 1", and finds "Action 2" and "Action 3".
- For each Action the code searches if all required Actions (only
"Action 1" in this case) are done. If this is true, the Action (here
Action 2 and 3) are moved from "Future" to "Next"
- If i "undo" Action 1, Action 2 and Action 3 are moved from "Next" to
"Future"

- When "Action 2" is finished, again all Actions with the Tag "Action
2" are searched, in this case just "Action 4".
- The Code starts searching all Actions and Ticklers that are
referenced in the Tag-field of Action 4. It finds "Action 2" as done,
but "Action 3" as not done, so the "Action 4"-Action is NOT moved from
"Future" to "Next"
- Now "Action 3" is done, too.
- The Code again searches for all Actions and Tickers that are
referenced in the Tag-field of Action 4. Now it finds both Actions
(Action 2 and Action 3) as "Done" so "Action 4"  is moved from
"Future" to Next".

The visualisation in the GUI for this solution is not very good. In
the Project-Dashboard the Actions are not ordered in the right way,
and  you can not see that there are dependencies between the actions.
But for me this is ok, its just for "auto-nexting" one of the future
actions, so that i dont have to do a check of the "Projects with no
next action"-View. Or Project Dashboard every time i finish an Action
that is part of a Project.

Maybe someone else can add some UI-Support to this solution.

Until now i did not test it with MonkeyGTDs with many Actions, so
maybe there is still a performance problem with this, but for my (at
the moment) small test environment it works good. Next step will be
more tests and the integration in my "production"-monkeygtd.

Please do not integrate this without good testing in your production-
Monkey-GTDs. Maybe there is still something wrong that can cause your
data to be damaged!

So here is what i have done.


I modified the function "TiddlyWiki.prototype.setTiddlerTag". now it
contains this code:

TiddlyWiki.prototype.setTiddlerTag = function(title,status,tag)
{
        var tiddler = this.fetchTiddler(title);
        if(tiddler) {
                var t = tiddler.tags.indexOf(tag);
                if(t != -1)
                        tiddler.tags.splice(t,1);
                if(status)
                        tiddler.tags.push(tag);
                tiddler.changed();
                this.incChangeCount(title);
                this.notify(title,true);
                this.setDirty(true);

               // here starts my modification
                if (tag == "Done" || tag == "Actioned") {
                        var dependend = this.getTaggedTiddlers(title);
                        var tiddlersWithTag = "";
                        for(var m = 0; m < dependend.length; m++) {
                                var currentTiddler = dependend[m];
                                if (status) {
                                        if 
(this.allPreviousActionsAreDone(currentTiddler)) {
                                                
this.setTiddlerTag(currentTiddler.title, !status, "Future");
                                                
this.setTiddlerTag(currentTiddler.title, status, "Next");
                                        }
                                } else {
                                        
this.setTiddlerTag(currentTiddler.title, !status, "Future");
                                        
this.setTiddlerTag(currentTiddler.title, status, "Next");
                                }
                        }
                        story.refreshAllTiddlers();
                }
        }
};

and i added this new function:

TiddlyWiki.prototype.allPreviousActionsAreDone = function
(tiddlerToCheck) {
        var tagsToIgnore = ["Future", "Done", "Tickler", "Action", "Realm",
"Project", "[(Waiting For)]"];
        var tags = tiddlerToCheck.tags;
        var allPreviousDone = true;
        for (var m = 0; m < tags.length; m++) {
                var currentTag = tags[m];
                if (!tagsToIgnore.contains(currentTag)) {
                        var tiddlerToCheck = this.fetchTiddler(currentTag);
                        if((tiddlerToCheck.tags.contains("Action") && !
tiddlerToCheck.tags.contains("Done")) || (tiddlerToCheck.tags.contains
("Tickler") && !tiddlerToCheck.tags.contains("Actioned"))) {
                                allPreviousDone = false;
                        }
                }
        }
        return allPreviousDone;
}

Maybe this is usefull for someone, comments are welcome.

Carsten

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "GTD 
TiddlyWiki" group.
To post to this group, send email to GTD-TiddlyWiki@googlegroups.com
To unsubscribe from this group, send email to 
gtd-tiddlywiki+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/GTD-TiddlyWiki?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to