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

Reply via email to