First of all, let me say that I consider this purely a fun technical exercise - I think for the next release, cleaning up the usability of the current solution is probably the right answer....

I still think that if we are adding new things into the list in the right place, that my original idea would work. Let's take Ron's example. The convention I'll use is that when a task is moved, I'll put it in bold here. The system has to keep track of which have been moved in order for this to work. It's a simple data field, per view.

So his original list of sort-values was:
1,1,2,2,2,3,3,4,4,5,6,7,7,8,9

Then he moved them around:
1,5,2,2,3,7,4,6,2,3,4,7,1,8,9.

(notice that the non-bold are in numerical order - they were never moved).

Now, you want to insert something into the list. You simply ignore the moved tasks in your calculations.

So, to insert a 3, you would pass 1 because of sort order, pass 5 because it's ignored, pass 2, 2, and 3 because of sort order, you pass 7 because it's ignored, and now you see it goes before 4. Now, there is a choice - do you put it before or after the moved items - in this case, 7? I say after - it's easier to implement (slightly) because you don't have to back up, and it makes more sense to me, but either way works. Or if you want to get complicated, once you find the place in the list not using your moved tasks (between 3 and 4), you could place it within the sublist of moved tasks according to their values - basically a secondary sort.

So, you put it between 7 and 4. Because that is where it would go if the 7 wasn't there. If you were doing the second refinement, you would first figure out that it goes between the unmodified 3 and 4, and then since 3 is leass than 7, you would put it ahead of 7. But if the 7 was a 1 that you had put there earlier, you put the 3 behind the 1.

When an non-moved item's sort-value is modified, you have to use this same strategy to place it as if its a new item, or mark it as "moved" in the list so it will be ignored...otherwise your list gets corrupted.

The big disadvantage of my strategy is that things you have moved will tend to drift up over time, as other tasks are completed and new tasks are added. That's true of manual mode now though.

As my husband pointed out, a more elegant way to do this is not to have manual vs. automatic mode at all. You could keep an alternate value for each sort criteria on items manually moved. So when you moved the 5 in the first place, you would give it a manual-sort-value of 1. (I don't know how you would tell where in the "1s" to put it though). You wouldn't change it's actual sort value, which is 5. Then, basically you wouldn't have any differentiation between manual and automatic sort. The UI would have to mark the moved items (perhaps a "pinned" icon) and alllow you to "unpin" them, to set them back to normal. It seems pretty tricky to take into account all the special cases though.

He then suggested you could take this even further for computed score. When you manually moved an item with a computed score, you could set it's "manual-sort-computed-score-offset" to be used as an offset from it's previous value that would put it into that particular position. (In the above example, when you are moving that first 5, you give it an offset of 1 (the value of the spot you put it in the list) minus 5, or -4. Then, if you changed one of the parameters that went into the computed score, it would change the base that the offset is applied to, making even your "pinned" (moved) items, dynamically update when you modify them, but keep their relative places in line. For most sort orders, this would be confusing for users, but since computed-score is such a black box for most of us anyway, it might just work :)

Now see, isn't this discussion much more fun than the things at the top of your task list? :)


Lisa


----------
Lisa Stroyan, mailto:lstro...@gmail.com
www.empathic-parenting.com
--
You received this message because you are subscribed to the Google Groups 
"MyLifeOrganized" group.
To post to this group, send email to mylifeorgani...@googlegroups.com.
To unsubscribe from this group, send email to 
mylifeorganized+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/mylifeorganized?hl=en.

Reply via email to