Carsten:

Brilliant plug-in.  Thanks for the Christmas present!

I agree that rather than turning this into a project management mess,
it just automates a very repetitive task.  I think this will let me
keep more stuff out of my next actions, since urgent follow-on actions
won't have to wait for the next project review to be added to my task
list.

I tested some circular dependencies (e.g. Action1 depending on Action5
in your demo), and nothing broke, which was good.  I don't think there
is a good way to handle this, but at least the TW didn't go into an
infinite loop.

For others interested:
I just installed it with
Backstage -> Import -> [Enter the URL...]
http://www.carsten-thiele.de/monkeygtd/SequencedActionsPlugin.html
-> check only the box: SequencedActionsPlugin
-> un-check "Keep these tiddler linked..."
-> Import
It doesn't take effect until you reload the web page.
(I'm sure that's pretty standard, but it was the first time I tried it
and I thought it would be helpful for others to write it out)

Jason

On Dec 24, 5:35 am, Carsten Thiele <[email protected]>
wrote:
> Hi Jim,
>
> thank you for your comment. Yes your are right, the right order of
> Actions is more related to Project planning.
>
> But for me it is just a convenience feature. There are Projects (in
> the GTD meaning of a project) where you exactly know what you have to
> do after one Action. Normaly you finish one Action, mark it as done
> and do the next thing, perhaps related to other projects. When you
> review your projects you find your project and move the obvious future
> action to next. And exactly that is what i want to automate. IF i know
> what to do next, i can define that dependency while defining my
> actions. It saves time doing the Project review.
>
> Example: Person B wants to know the result of a call with Person A. so
> both "call person A" and "call person b to inform about call with A"
> are in my call list. The second is "Future" beause it can not be done
> now. So when i finished the call with "A" the second call is moved
> automaticaly to the "call" context. Now it is  possible that the next
> call will be to person B right now, and not after the next project
> review.
>
> I fully agree, please don't turn MGTD into a Project Management tool.
> If this happens it will be more complicated (and maybe slower) to use
> for GTD.
>
> Merry Christmas,
> Carsten
>
> On 23 Dez., 15:15, Jim McD <[email protected]> wrote:
>
> > Hi,
> >    Well done on the coding.  Action dependancies are outside of GTD
> > though, and within the realm of project planning.  There are loads of
> > free and commercial project planning tools on the market, that will do
> > dependancies, critical path ananlysis, "float", resource management
> > etc.  MS Project is one.
>
> > However there are very few GTD tools, and MGTD is probably the best
> > there is.  Please don't change MGTD from a GTD tool into a ten-a-penny
> > project manager.
>
> > About half the posts to this group are requests for MGTD to be turned
> > into something else, eg. project planner, mail client, address book,
> > PIM tool, calenndar manager.  All worthy applications, but nothing to
> > do with GTD really, and well catered for elsewhere.
>
> > Sorry to be so negative around Christmas time.  Have a happy
> > Christmas!  And well done on the coding, it's more than I could have
> > managed.
>
> > Jim.
>
> > On Dec 20, 1:33 pm, Carsten Thiele <[email protected]>
> > wrote:
>
> > > 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-SequencedActions...
> > > ) 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
>
> ...
>
> read more »

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