Hello, i converted my "Hack" to a complete plugin. I Uploaded a Demo into this group as file: monkeygtd-SequencedActionsPlugin-demo.zip ( http://gtd-tiddlywiki.googlegroups.com/web/monkeygtd-SequencedActionsPlugin-demo.zip ) The html-Upload did not work, so i added the zip-File, that can be downloaded from the files area.
When you unzip it, and open the file with this added to the filename: #[[SequencedActions%20Demo]]%20Action1%20Action2%20Action3%20Action4%20 [[Do%20Something]]%20Action5 or just open the "SequencedActions Demo" Tidder for instructions. Maybe this helps, Carsten On 17 Dez., 22:22, Carsten Thiele <[email protected]> wrote: > 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/GTD-TiddlyWiki?hl=en -~----------~----~----~----~------~----~------~--~---
