lmi
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lmi] InputSequence questions


From: Vaclav Slavik
Subject: Re: [lmi] InputSequence questions
Date: Wed, 24 Mar 2010 14:48:26 +0100

Hi,

thanks.

On Tue, 2010-03-23 at 21:22 +0000, Greg Chicares wrote: 
> I haven't given a lot of thought to what an input-sequence editor
> should show in such a case, but I think showing every interval would
> be best. 

I agree.

> But OTTH I think an input-sequence editor could require half-open
> [) intervals and forbid any other kind { [] (] () }. (Any other kind
> of interval has a [) equivalent because endpoints are integral.)

And I think this should be done too. 

> > e_attained_age     - "until the anniversary of N years"
> 
> I'd omit the word "until", which to me suggests whether an interval
> includes an endpoint; this just quantifies an endpoint without saying
> whether or not it's included. But yes, it's the Nth anniversary, N
> years after the "issue date"; thus, it equals duration minus issue age.
> 
> > e_number_of_years  - "for N years", is this end_mode only?
> 
> No--I'd omit the word "for", which suggests that this is a right-hand
> endpoint; 

That's because I had trouble seeing how it could meaningfully be used
for the left-hand point; that's clear now.

> this just quantifies an endpoint. AFAICS these have the
> same meaning in the example above (issue age 45, retirement age 65):
>   1000 [5,retirement); 123 address@hidden, @72); 0 address@hidden, maturity)
>   1000 [#5,retirement); 123 [#5, @72); 0 address@hidden, maturity)
> A number without '#' means a duration--the number of full years
> elapsed since inception. A number with '#' means the number of full
> years elapsed since the beginning of the preceding interval. 

(I think this should have been "the end of the preceding interval". And
for use in the left endpoint only; for right-hand one it means "since
the left-hand endpoint". So "from the previous endpoint"?)


What do you think about the following UI? It's based on these
assumptions:

(a) any sequence (but not necessarily its textual representation) is
    continuous and covers the entire [inception,maturity) domain
(b) it's natural to express the intervals as [a,b); so let that be
    the only way they are shown to the user in this UI
(c) the number of intervals is small, ~6 even for complicated
    expressions, and almost always <10 or so

You commented on both (a) and (b) in affirmative above and I assume (c)
based on the examples I've seen so far; if anything, I suspect they are
more complicated than the real usage is.

You suggest in #104480 to use value, from-duration, to-duration columns.
I'd get rid of the from-duration one and only show the data like this:


      Value  |  When

    [     ]     [-----------------------]   [-Remove]
    [     ]     [-----------------------]   [-Remove]
    ...
    [     ]     until maturity              
                                            [+Add]

Note that this isn't a grid, but grid-like layout of regular dialog
controls. I think this is pretty common in email clients for setting up
filters, for example. The "Value" column would contain text controls,
wxChoices or wxComboBoxes (for entering number-of-keyword [*])

To repeat your earlier example:

  1000 [5,retirement); 123 address@hidden, @72); 0

which normalized according to (a)+(b) is

     0 in [ 0,  5)  *** implicitly zero
  1000 in [ 5, 20)
     0 in [20, 25)  *** implicitly zero
   123 in [25, 27)
     0 in [27, 55)

this would look like this:


      Value  |  When

    [    0]     [until year      ] [5     ]      [-Remove]
    [ 1000]     [until retirement]               [-Remove]
    [    0]     [until age       ] [70    ]      [-Remove]
    [  123]     [until age       ] [72    ]      [-Remove]
    [    0]     until maturity              
                                                 [+Add]


Noteworthy properties of this design:

* It reads as text. Hopefully it's clear that it begins at the beginning
  and that every line continues where the previous one ended. We can --
  and probably should -- add "and then" static text after every row
  (before [-Remove]) to emphasize this, if the read-only "until
  maturity" is not enough of a hint.

* In the first part of "When", you choose duration_mode; then, if it
  makes sense for it, a numeric entry field appears.

* There's the problem with "until" that you mentioned yourself; it's not
  clear whether the interval is closed or open. I hope that this can be
  fixed by better wording alone (any ideas?). If not, the "When" header
  may spell it out ("Until when (not including the endpoint)").

* [-Remove] and [+Add] buttons make it easy to do big changes without
  making a mess of the UI. It's still possible to clean the sequence
  completely easily (4 clicks in the same place in the above example).
  [+Add] adds a new row to the end of editable rows, i.e. just above
  the last line, "until maturity".

* The ability to enter invalid data (overlapping intervals, incomplete
  sequences) is much reduced.

* For completeness, here's the list of "When" phrases needed (modulo
  Greg's justified critique of the phrasing):

     "until retirement"
             (no text field)
     "until year %i"
     "until age %i"
             (numeric text field)
     "for the next %i years"
             (I'd much prefer phrasing that doesn't require putting
             text input field in the middle of the phrase here, for
             obvious reasons)

  Note that "until maturity" is not needed, it's always the implicit
  last row.


A variation of the same could include from-duration too, as read-only
text repeated from previous row, to improve understanding:


    [    0]  from inception   [until year      ] [5     ]
    [ 1000]  from year 5      [until retirement]         
  

What do you think?

Thanks,
Vaclav

[*] It would be useful to know the different value types that can be
    used with this control, with corresponding controls in current GUI.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]