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 -~----------~----~----~----~------~----~------~--~---