lmi
[Top][All Lists]

## 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 [#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

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 [*])

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

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.

```