Changeset 6450

Show
Ignore:
Timestamp:
08/21/08 14:15:36 (5 months ago)
Author:
simon
Message:

monkeygtd:

  • Don't show every project in drop down lists. Limit to non-complete projects in the applicable realm (as suggested by several people on the mailling list)
  • Configurable activation hour for ticklers. Defaults to 5am (instead of midnight which is what it used to be) as suggested by someone on the mailing list.
  • A bug fixes for users of MTS provided by Daniel D.
  • A bug fix for TiddlerEncryptionPlugin? with MTS provided by Patrick O.
  • New context-sensitive help screens provided by mankoff
  • New "Completed Projects" view sorted by date. It's a good one to show your boss at the end of the month.
Location:
Trunk/contributors/SimonBaird/mgtd3
Files:
1 added
12 modified

Legend:

Unmodified
Added
Removed
  • Trunk/contributors/SimonBaird/mgtd3/build.rb

    r5879 r6450  
    193193  get_tiddler('MgtdSettings').fields['ticklerdateformat'] = 'ddd, DD-mmm-YY'; # set default tickler date format. gotcha: use lowercase only for fields please. 
    194194  get_tiddler('MgtdSettings').fields['newjournaldateformat'] = 'ddd DD-mmm-YY, 0hh:0mm'; # set default tickler date format. gotcha: use lowercase only for fields please. 
     195  get_tiddler('MgtdSettings').fields['tickleractivatehour'] = '5'; # set default tickler date format. gotcha: use lowercase only for fields please. 
    195196  to_file          "upload/empty3.html" unless ARGV[0] == 'fast' 
    196197 
  • Trunk/contributors/SimonBaird/mgtd3/framework/MgtdDateUtils.js

    r5142 r6450  
    77}); 
    88 
    9 // TODO. this doesn't really belong here 
    10 merge(Tiddler.prototype,{ 
    11         touch: function() { 
    12                 this.changed(); 
    13                 this.modified = new Date(); 
    14                 store.setDirty(true); 
    15                 store.notify(this.title,true); 
    16         } 
    17 }); 
    189 
  • Trunk/contributors/SimonBaird/mgtd3/framework/MgtdIndexedTags.js

    r6102 r6450  
    6363                if (oldTags) 
    6464                        oldTags.each(function(tagName) { 
     65                                if (!config.indexedTags.tagLists[tagName]) 
     66                                        config.indexedTags.tagLists[tagName] = []; // fixes TiddlerEncryption/MTS, thanks Patrick Ohly. 
    6567                                config.indexedTags.tagLists[tagName].remove(title); 
    6668                        }); 
  • Trunk/contributors/SimonBaird/mgtd3/framework/MgtdList.js

    r5623 r6450  
    11 
     2merge(Tiddler.prototype,{ 
     3        // doesn't belong here.. 
     4        ticklerIsActive: function() { 
     5                var defaultHourToActivate = 5; // fixme put elsewhere 
     6                var hourToActivate = config.mGTD.getOptTxt('tickleractivatehour') || defaultHourToActivate; 
     7                var nowTime = new Date(); 
     8                nowTime.setHours(nowTime.getHours() - hourToActivate); // i'm confused because of UTC versus local. I think mgtd_date is UTC. But has hh:mm:ss is 00:00:00 in local time 
     9                return (this.fields.mgtd_date && nowTime.convertToYYYYMMDDHHMM() >= this.fields.mgtd_date ); 
     10                 
     11        } 
     12 
     13}); 
    214merge(config.macros,{ 
    315 
     
    921                        var theList = fastTagged('Tickler'). 
    1022                                                filterByTagExpr('!Actioned'). 
    11                                                                 filterByEval('tiddler.fields.mgtd_date <= (new Date()).convertToYYYYMMDDHHMM()'+realmFilter); 
     23                                                                filterByEval('tiddler.ticklerIsActive()'+realmFilter); 
    1224                        if (theList.length > 0) { 
    1325                                var blinker = createTiddlyElement(place,'blink'); 
  • Trunk/contributors/SimonBaird/mgtd3/framework/MgtdTagControls.js

    r5879 r6450  
    255255                        }); 
    256256 
     257 
     258                        // a few automagic filters should make life easier 
     259 
     260                        var thisRealm = tiddler.getParent('Realm')[0]; 
     261                        var thisProject = tiddler.getParent('Project')[0]; 
     262 
     263                        var filterRealm = ""; 
     264                        var filterComplete = ""; 
     265 
     266                        if (thisRealm && tag != "Realm") { 
     267                                // only want to see things in my realm 
     268                                filterRealm += "[("+thisRealm+")]"; 
     269                        } 
     270 
     271                        if (tag == "Project") { 
     272                                // only want to see active projects 
     273                                filterComplete += "!Complete"; 
     274                        } 
     275 
     276                        var filterTagExpr = ""; 
     277 
     278                        if (filterRealm != "" && filterComplete != "") { 
     279                                filterTagExpr = filterRealm + " && " + filterComplete; 
     280                        } 
     281                        else if (filterRealm !=  "") { 
     282                                filterTagExpr = filterRealm; 
     283                        } 
     284                        else if (filterComplete !=  "") { 
     285                                filterTagExpr = filterComplete; 
     286                        } 
     287                        // ...yuck 
     288 
     289                        filterExpr = filterTagExpr.parseTagExpr(); 
     290                         
     291                        if (thisProject) { 
     292                                // prevent weirdness if the current value isn't in the list 
     293                                // eg an action in a completed project 
     294                                filterExpr = "(" + filterExpr + ") || tiddler.title == '" + thisProject + "'"; // i'm confused now... 
     295 
     296                        } 
     297                        if (tag == "Project" && tiddler.hasTag('Project')) { 
     298                                // don't let a project be a subproject of itself 
     299                                filterExpr = "(" + filterExpr + ") && tiddler.title != '" + tiddler.title + "'"; 
     300                        } 
     301 
     302                        getValues = getValues.filterByEval(filterExpr); 
     303 
     304 
    257305                        getValues.each(function(t) { 
    258306                                var useTitle = store.getTiddlerSlice(t.title,"button"); 
  • Trunk/contributors/SimonBaird/mgtd3/globalviews/Tickler Dashboard.tiddler

    r5140 r6450  
    77 
    88<<mgtdList title:'Upcoming Ticklers' startTag:Tickler tags:'!Actioned' view:Tickler mode:global newButtonTags:'Tickler Once' 
    9         where:'!tiddler.fields.mgtd_date || ((new Date()).convertToYYYYMMDDHHMM() < tiddler.fields.mgtd_date )' 
     9        where:'!tiddler.fields.mgtd_date || !tiddler.ticklerIsActive()' 
    1010        sort:'tickleDate' 
    1111        >> 
  • Trunk/contributors/SimonBaird/mgtd3/globalviews/Ticklers Requiring Action.tiddler

    r5451 r6450  
    66        mode:global 
    77        newButtonTags:'Tickler Enabled Once' 
    8         where:'tiddler.fields.mgtd_date && ((new Date()).convertToYYYYMMDDHHMM() >= tiddler.fields.mgtd_date )' 
     8        where:'tiddler.ticklerIsActive()' 
    99        sort:'tickleDate' 
    1010        dontShowEmpty:yes 
  • Trunk/contributors/SimonBaird/mgtd3/menus/ReviewMenu.tiddler

    r5879 r6450  
    33[[Action Dashboard by Project]] 
    44[[Active Projects With No Next Action]] 
     5[[Completed Projects]] 
     6[[Done Actions]] 
    57[[SomedayMaybe and Future]] 
    68[[Delegated Tasks Dashboard]] 
  • Trunk/contributors/SimonBaird/mgtd3/supporting/dateChooserPlugin.js

    r5142 r6450  
    3131                var callback = function(el,objDate){ 
    3232                    el.value = objDate.formatString(dateFormat); 
    33                     useTiddler.fields['mgtd_date'] = objDate.convertToYYYYMMDDHHMM(); 
    34                                         useTiddler.touch();     // see MgtdDateUtils 
     33                                        store.setValue(useTiddler, 'mgtd_date',objDate.convertToYYYYMMDDHHMM()); 
    3534                } 
    3635                DatePicker.create(dateBox,startDate,callback); 
     
    5352                                curDate[macroName](1); 
    5453                                createTiddlyButton(place,config.macros.addDay.label[macroName],"add a "+config.macros.addDay.tooltip[macroName],function() { 
    55                     useTiddler.fields['mgtd_date'] = curDate.convertToYYYYMMDDHHMM(); 
    56                                         useTiddler.touch();     // see MgtdDateUtils 
     54                                        store.setValue(useTiddler, 'mgtd_date',objDate.convertToYYYYMMDDHHMM()); 
    5755                                        return false; 
    5856                                }); 
  • Trunk/contributors/SimonBaird/mgtd3/tiddlers/MgtdSettings.tiddler

    r5451 r6450  
    2121(see [[Date Formats|http://tiddlywiki.org/wiki/Date_Formats]])  
    2222 
     23Hour that ticklers should become active on their tickler date. (0 = Midnight, 12 = Midday) 
     24Tickler activate hour:<<mgtdEditField tickleractivatehour MgtdSettings>> 
  • Trunk/contributors/SimonBaird/mgtd3/views/MonkeyGTDHelp.tiddler

    r4545 r6450  
    44 
    55!Project 
    6 No help yet for Project 
     6A [[Project|Projects Dashboard]] is made up of sub-projects, [[Action|Next and Waiting Actions]] items, and [[Reference Items]]. A project should have a defined set of tasks or actions (that may change) and when these tasks are done the project is done. If a project has no defined finish, consider calling it an [[Area]], and then make terminable projects in the area. 
    77 
    88!Action 
    9 No help yet for Action 
     9An [[Action|Next and Waiting Actions]] is a single task that can be completed at one point in time. If an action is more complex than this, considering making it a [[subproject|Subprojects]], or storing information in the action notes area. Using the [[CheckboxPlugin| http://www.tiddlytools.com/#CheckboxPlugin]] you can hid sub-actions inside an action. 
    1010 
    1111!Tickler 
    12 No help yet for Tickler 
     12A [[tickler|Tickler Dashboard]] is an [[Action|Next and Waiting Actions]] with a date attached. For example, if you need to call someone as part of a [[Project|Projects Dashboard]], that should be an action. But if you need to call someone on a specific day, then make it a [[tickler|Tickler Dashboard]] and MonkeyGTD will remind you on the day that you need to call them. 
     13 
     14Example: The Health area contains a Dentist project with Actions Schedule Dentist, Go To Dentist and File Reimbursement. The latter two are Waiting while Schedule Dentist is Next. Once you call and schedule it, select the Go To Dentist Action, set it to Next, and then choose Make Tickler and set a date for the day of (or the day before) your appointment. 
    1315 
    1416!View 
     
    1921 
    2022!Area 
    21 No help yet for Area 
     23An [[Area]] is similar to a project, but it has no possible completion. Areas contain projects. 
     24 
     25Example: The Health area might contain the project ''Run Marathon'', and the ''Household'' area might contain projects like ''Sell House'' and ''Buy House'' and ''Plant Garden'', each of which might have sub-projects. 
    2226 
    2327!Realm 
    24 No help yet for Realm 
     28Realms are the top of the MonkeyGTD hierarchy. Realms contain Areas. Areas contain Projects. A Realm is a large-scale division of all the Areas, Projects, and Actions that might be placed into a GTD context. 
    2529 
    2630!Reference 
  • Trunk/contributors/SimonBaird/mgtd3/views/TagDashboards.tiddler

    r5451 r6450  
    189189        ignoreRealm:yes 
    190190        dontShowEmpty:yes 
    191         where:'tiddler.fields.mgtd_date && ((new Date()).convertToYYYYMMDDHHMM() >= tiddler.fields.mgtd_date ) ' 
     191        where:'tiddler.ticklerIsActive()' 
    192192        sort:tickleDate 
    193193        "></div> 
     
    200200<div macro="mgtdList title:'Upcoming Ticklers' tags:'Tickler && !Actioned' view:Tickler newButtonTags:'Tickler Once' 
    201201        ignoreRealm:yes 
    202         where:'!tiddler.fields.mgtd_date || ((new Date()).convertToYYYYMMDDHHMM() < tiddler.fields.mgtd_date ) ' 
     202        where:'!tiddler.ticklerIsActive()' 
    203203        sort:tickleDate 
    204204        "></div>