As I mentioned on the GTD TW forums, great work! I've been meaning to do something similar to your showReminders for the check box function I added (http://shared.snapgrid.com/gtd-forum/viewtopic.php?t=96). I'd like to be able to have one tiddler show me all of the actions (check boxes) that I have open in every tiddler.
By all means, take the time to read the detail of how each reminder works, and they really begin to make sense. The only real trick that I see is in understanding how the "leadtime" in a "reminder" affects the "leadtime" in "showReminders". Other than that, it's pretty simple.
An application for this that I may try implementing is using this to create a sort of "pre-programmed" auto-display News Items on my http://TiddlyWikiTips.com site. ie: I could write News items as Reminders, assign them specific days, and then let the showReminder Macro handle displaying them.
At work, I am going to use this to create a number of reminders and then use the showReminders to display those items that upcoming in n-days out.
OK, as always, my mind reels with ideas, so here are some enhancement ideas:
ENHANCEMENT IDEA #1: Currently, you can specify the number of "days out" in showReminders with a leadtime setting. This very is useful. How about enhancing it by allowing a "leadtime range" that would display Reminders within a lead time range.
For example: Currently: <<showReminders leadtime:7>> displays Reminders in the next 7 days <<showReminders leadtime:30>> displays Reminders in the next 30 days
I'd love to see something like this added: <<showReminders leadtime:8-30>> display Reminders between 8 and 30 days out <<showReminders leadtime:31-60>> display Reminders between 31 and 60 days out
ENHANCEMENT IDEA #2: How about adding some leadtime "keywords" like thisWeek, nextWeek, thisMonth, nextMonth, etc. that would display reminders through the end of this week, next week, this month, next month, etc.? Maybe even work in Enhancement #1 somehow such that nextMonth would display either from now through the end of next month, or just the Reminders occurring within nextMonth.
> The only real trick that I > see is in understanding how the "leadtime" in a "reminder" affects the > "leadtime" in "showReminders". Other than that, it's pretty simple.
I did that so that some reminders would only show up when they are the most pressing. This is good for frequently recurring reminders, like "Bill Day" in the examples. I don't need two weeks warning for that.
> ENHANCEMENT IDEA #1: > ... > <<showReminders leadtime:8-30>> display Reminders between 8 and 30 days > out
I'm confused as to the benefit of a lower bound. Why would you want to filter out the nearest reminders? Those are the ones that I would want to see the most.
> ENHANCEMENT IDEA #2: > How about adding some leadtime "keywords" like thisWeek, nextWeek, > thisMonth, nextMonth, etc. that would display reminders through the end > of this week, next week, this month, next month, etc.?
This is especially tricky with thisMonth when you check your reminders on the 29th. If someone's birthday is on the 2nd, you won't see the reminder until it's too late. I do see the benefit of not worrying about Monday's reminders on Friday, so thisWeek is probably a good idea. Specifying a leadtime in the reminder would override the leadtime in showReminders anyway. So <<reminder month:10 day:2 leadtime:14>> would give 14 days notice, even if it was September 29th and you used <<showReminders thisMonth>>.
Jeremy Sheeley wrote: > > ENHANCEMENT IDEA #1: > > ... > > <<showReminders leadtime:8-30>> display Reminders between 8 and 30 days > > out
> I'm confused as to the benefit of a lower bound. Why would you want to > filter out the nearest reminders? Those are the ones that I would want > to see the most.
It could help in "grouping" Reminders. For example, say I set up a Tiddler with the following enteries:
!Upcoming Events: ''Within next 7 Days:'' <<showReminders leadtime:7>> ''Within next 30 Days:'' <<showReminders leadtime:30>>
The resulting Tiddler would display duplicates entries (ie: All those with a leadtime of 7 in the first list would also show in the second list.)
But if we could have leadtime ranges, we could group like this:
Upcoming Events: Within next 7 Days: Reminder #1 Reminder #2 Reminder #3
Within next 30 Days: Reminder #4 Reminder #5 Reminder #6 ...
Mostly aesthetic, but functional.
> > ENHANCEMENT IDEA #2: > > How about adding some leadtime "keywords" like thisWeek, nextWeek, > > thisMonth, nextMonth, etc. that would display reminders through the end > > of this week, next week, this month, next month, etc.?
> This is especially tricky with thisMonth when you check your reminders > on the 29th. If someone's birthday is on the 2nd, you won't see the > reminder until it's too late.
Hmmm. Maybe if you set the leadtime on the birthday reminder to, say 7, it could show up because the date of the leadtime would fall within the thisMonth? Yes, this does get tricky...
> I do see the benefit of not worrying > about Monday's reminders on Friday, so thisWeek is probably a good > idea.
Cool!
> Specifying a leadtime in the reminder would override the > leadtime in showReminders anyway. So <<reminder month:10 day:2 > leadtime:14>> would give 14 days notice, even if it was September 29th > and you used <<showReminders thisMonth>>.
So if I understand you correctly, then the thisMonth concept would work because Reminders occurring later than thisMonth with a leadtime that falls within thisMonth would show up, which is what we would want, right?
I also like this idea but in for different use. A website TW could use this to effectively "Google-fy" the site...meaning that on certain dates special messages could appear using the DefaultTiddlers and this Reminders macro. ~AlanH
Yep, that's what I mean by Google-fy. I tried it, and it works pretty well. You set up a DefaultTiddler with a reminder leadtime macro and all your upcoming event reminders. Voila!
I can see using this to publish a revolving list of upcoming training opportunities.
JeremySheeley, this is awesome! Thanks for your contribution.
I think that to get the true Google-fy experience, we would need a openTiddlersWithReminders, which opened all of the tiddlers, instead of printing them in a list. That way, custom content would be shown, instead of just a countdown. Again, good idea.
I agree with you that this approach would be best if the custom content were itself "tiddler based." I just wanted a simple one line message (like "Happy New Year" or "Last Day to Register for Classes"), and the existing functionality works pretty well for that.
Although, I currently have to delete the code that adds the TiddlerLink to the end of a leadtime reminder or put up with "Today:" showing up at the beginning. Maybe a parameter could be added to give a "clean" reminder with no pre or post elements. ~AlanH
Jeremy Sheeley wrote: > I think that to get the true Google-fy experience, we would need a > openTiddlersWithReminders, which opened all of the tiddlers, instead of > printing them in a list. That way, custom content would be shown, > instead of just a countdown. Again, good idea.
I agree with no need for a lower bound in term of personal toDo lists, but to reiterate Jim's point another way...if you were to use reminders in the Google-fy way we talked about, you might not want a message displaying x days before the event.
For instance, let's say I have training session planned and want to put a notice on my TW page. But people need to register for the session at least a week ahead of time. In that case, I want the event to disappear if it's 7 days out or less. However, <<showReminders leadtime:8-30>> still won't do it as I don't want this "a week out" preference to apply to ALL my reminders.
So I guess I'd just be better off just offsetting the reminder date by a week but having the title reflect the actual training date. ~AlanH
Jeremy Sheeley wrote: > Jim Barr wrote: > > ENHANCEMENT IDEA #1: > > ... > > <<showReminders leadtime:8-30>> display Reminders between 8 and 30 days > > out
> I'm confused as to the benefit of a lower bound. Why would you want to > filter out the nearest reminders? Those are the ones that I would want > to see the most.
I've put up a new version of the reminder macros, which incorporate all the good ideas I've heard, and hopefully make integration with Steve Rumsby's calendar macro easier. The new plugin code and documentation are at http://www.geocities.com/allredfaq/reminderMacros.html
Here's the changelog:
1. showReminders now takes an optional tag parameter that limits the search to tiddlers with the given tag. 2. New macro <<displayTiddlersWithReminders>>, which takes all the same arguments as showReminders, but opens the matching tiddlers, instead of listing them. 3. The display messages are now easily editable at the top of the plugin code. 4. showReminders now takes an optional limit argument that prevents reminder leadtime from overriding the showReminders leadtime. 5. showReminders now takes an optional nolinks argument that removes the link to the matching tiddler at the end of the countdown. 6. reminder takes an optional hidden argument that prevents it from displaying inside the tiddler. That way, tiddlers opened with displayTiddlersWithReminders don't have to have the regular countdown display of a reminder.
I appreciate any more comments that you have for me.
It does not work when called from inside a table though. I think it applies to all other macros. Is there a way to make it work or is it a TW limitation?
I've put up another update to the reminder macros, which include some
features requested here.
1. Ranges for leadtime. You can specify leadtime:7...14 or even
leadtime:-3...-1 for reminders that you're late on. :)
2. Tag-based exclusion for showReminders. You can now specify
tag:"!examples !holidays" to exclude holidays and examples.
3. A user-supplied format string which can override the default "N
days: TITLE...". Also, every string that is displayed to the user
should be changeable. This should make it really easy for people to
translate to other languages.
4. Documentation. :)