Hi Eric,
 

> The problem in the OP is still unsolved.  He doesn't want a multi-level 
> sort.  He want to have a single list, sorted by either "due" OR 
> "scheduled"... not "due" AND "scheduled".  This can't be done using the 
> current sort[] filters.
>

I think I understand your point now. Here's a demo I had to make to realize 
what you mean with OR sorting:

http://doublesort.tiddlyspot.com/#DueAndSchedule

TL;DR;

Summing up that general advise:

   1. use core date formats for custom date fields
   2. whether or not a date is *all day* is computed by the length of the 
   entered date, not a suffix
   3. a due date should always be later than a scheduled date
      - the other case should only occur when you're overdue
      - your examples seem to demonstrate that
      - for this reason, your sorting should always take the due date when 
      you're overdue
      - even if you want a scheduled date to take precedence
      
Truly, this date handling stuff for GTD-style planing is anything but 
trivial.
There is a loooong list of issues around this and that is why there are 
things like MGSD, GSD5, etc...

   1. your problem is *not* only about some filter that can sort by, say a 
   scheduled date and only then a due date
      - as you say: *I want both fields on a single list, where it is 
      sorted by date.*
         - well, there is no such "date" (field) to sort by: the date you 
         refer to is temporarily computed
         - you not only want one field should the other not exist, you 
         possibly also want to sort by *always the lower* of both!
            - interestingly, if the due date was before the scheduled date, 
            then you did some mis-planning
               - this should only be the case for tasks that are *overdue*, 
               and so they should possibly always be up top
                  - i.e. the due date here should take precedence because 
                  it is before the scheduled date
               - I'd prefer a separate "overdue" list where only those 
               where *due < today && scheduled < today *are shown
                  - and I don't think there's a filter for that
               - so, you really have 3 dates:
         - optionally, a *due* date — when to hand something in (may not 
         exist)
            - if today is past the due date, we're *overdue*
         - optionally, a *scheduled* date — when to do something
            - if this was ever after the due date, then we're doing some 
            awkward "overdue management"
               - in other words, this should only occur if we're already 
               past the due date
            - a "*target date*"
            - being computed, not manually entered
            - and then I am not so sure what to do, because...
               - when you're overdue, where do you show these items?
                  - at the due date?
                  - at some even more overdue scheduled date?
                  - imho, they should not be on the same task list but be a 
                  separate list of *overdue* items
                     - sorted by whatever you want, possibly switchable
                     - by default, sort by due date, but allow to switch to 
                     sort by scheduled date
                     - if you want them on your main task list, overdue 
                     should always be up top, in red
                  - which field should take precedence?
                     - possibly the scheduled field since...
                        - if we took the due field, then we'll not properly 
                        sort by how things are scheduled
                     - however, if we're overdue, then we should possibly 
                     sort by due date
                        - this is why overdue needs to be separate from the 
                        main list
                        - it's also why mixing due and scheduled is 
                        confusing, make it two lists!
                     2. however, you possibly not only want this sorted by 
*target 
   date*
      - chances are, you should also (always) display the "*target date*"
         - at least indicate which of your date fields actually is your 
         target date
         - and also show the other date, if present
         - perhaps you could simply make the field that is your target date 
         bold
            - this would currently require six states, one to check if the 
            field exists and a flag as to whether it's the target date
               - [if we have a due date: <not being the target date> / 
               <being the target date> ]
               - [if we have a scheduled date: <not being the target date> 
               / <being the target date>]
            3. we cannot, currently, tell the sort filters where to put 
   empty items
      - meaning: tiddlers that either don't have a due field or a scheduled 
      field
      - this is problematic, because in this case, we possibly always want 
      them *last*, not first
         - if there was no scheduled field, they are somewhat "*unscheduled*", 
         although *due*
         - if there was no due field but a scheduled field they should sort 
         just fine
            - assuming that the scheduled field is generally what we sort by
               - i.e. "when to next work on what"
            - so, I opened an issue for that:
      
      *#2137 sort filters and empty value position*
      https://github.com/Jermolene/TiddlyWiki5/issues/2137
      
With all of the above complexity, here's why I much prefer and advocate 
reminder tiddlers (and why we have GTD editions)...

   - for me, reminders should be their own tiddlers with a date, 
   consciously set
      - they should relate to a task tiddler either via tagging or a 
      reference field
      - a due date would perhaps be set at the tiddler to which the 
      reminder relates
      - the moment you set the due date, you may actually want to 
         "schedule" a reminder
            - otherwise the task is *unscheduled*
         - alternatively, a due date could and perhaps should be a special 
         form of a reminder tiddler that has a given tag or field set
      - if you deleted a tiddler for which you have reminders, then that 
      reminder is in limbo
   - then you use different lists for your task tiddlers
      - *scheduled:*
         - tiddlers having an associated reminder at all
         - sorted by urgency, i.e. by how close the reminder date is with 
         respect to today
            - using color to hint at the delta between now and the reminder 
            date, overdue being red
         - *unscheduled*
         - tiddlers sorted by due date that have no reminders associated
      - so, you do not try to make one big messy list, but instead...
      - consciously look at things with respect to whichever sequence is 
      most important
         - if there is something overdue, always check first
         - if you have unscheduled tasks, see if you want to do some 
         scheduling
      
Personally, I think this the pattern for how a reminder list should look, 
overdue being red and today being *2015-12-18*:

       2015-12-15 *foo* (due: 2015-12-18)
                  do something

  8:00 2015-12-16 *bar* (due: 2015-12-20)
                  do another thing with loads of text
                  mooooaaaaar text
                  and then some
                  
 14:00 2015-12-18 
*baz*                  also do this
                  
 14:00 2015-12-20 *mumble*

So, *foo*, *bar*, *baz* and *mumble* would be task tiddlers but the dates 
to the left are actually dates stored at distinct reminder tiddlers and the 
reminder text, should one be defined, is the reminder tiddler's text. 
Because, for one, you can have a number of reminders per task tiddler, not 
just one.

If due dates were also reminder tiddlers, then the list would look like 
this:

       2015-12-15 *foo* (due: 2015-12-18)
                  do something

  8:00 2015-12-16 *bar* (due: 2015-12-20)
                  do another thing with loads of text
                  mooooaaaaar text
                  and then some

       2015-12-18 *foo* (due)
                  go celebrate!
                  
 14:00 2015-12-18 
*baz*                  also do this
                  
 14:00 2015-12-20 *mumble*

       2015-12-20 *bar* (due)
                  Now, go hand it in!

So much for reminders and dates. :D

Best wishes,

Tobias.

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/5dff7378-d004-4fee-91fa-ade7c39d855a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to