Re: Customize Chart needs love before release




Le lundi 29 octobre 2007 à 10:47 +0100, Adrian Custer a écrit : 
Emmanuel, again sorry for coming on so strong. The disappearing charts
reminded me of the old days. You don't know this about me but I arrived
into the Gnumeric project back in the days when computers were vaccum
tubes and Guppi ruled the charting world (I'm thrilled to see a "Guppi"
theme whatever that may mean). I spent a lot of time, back in the day,
breaking trow's work in any way I could. So seeing a new area for users
to prod the charts, I set at breaking things and was very surprised to
see how easily I could make things difficult for everyone: users,
documenters, bug reporters and coders. "my chart disappeared" is a
puzzle kind of bug especially if the program is in a totally happy
state.

What we really miss is a undo/redo that works also inside the graph
editor. I'll try to implement one, but it's too late for the next stable
version.

Meanwhile, I don't think the current situation is that terrible. It's
already possible to recover an item that was placed inadvertently
outside of the graph area, by either setting it's position via the
property dialog, or by canceling all the editor session changes. 

Yes, some data is much too big to handle on screen (say a year long time
series with five data points per day 6:00/9/12/15/18:00). The most
elegant thing for that would be to have the plot scale nicely from the
smoothed full year view into the daily 'connect the dot' view with a
horizontal scrollbar; but that's for tomorrow. The example is mostly to
answer Andreas who wonders why users might not want the whole plot in
the visible area. I used to make the guppi window the size of 20
desktops and then slide the window back and forth to look at the shapes
of different days in the different seasons---what Havoc calls a broken
answer to a broken app.

The configurable chart area is *awesome*, much more intuitive than the
tree configuration system. This could grow to get a dynamic 'Add' area
which shows, as widgets, the appropriate elements from the "Add" menu as
each piece is selected in the configurable chart area; this could then
become the primary interface. 

The current implementation is relatively rough, and will take some times
before being really good. The idea of the 'add' area is interesting.

We would have to offer the users their
familiar basics as well such as cut/copy/paste. Actually, this occurs to
me as something we want to do regarless; the drop down "Add" menu hides
from users the potential of the chart widget.

However, while the configurable chart area is very cool, it is also
equivalently *hard*, a complex paradigm to build and offer users. I
offer these two principles for that paradigm only to prod your thinking.


Principle: In a 'visual editor,' all elements present must remain
visible.

I'm not sure to agree with this principle, or even simply to know how to
achieve it. A user may position an object under another, may change it's
color and make it invisible. That's where the object tree is useful.

This has consequences for the widget. I would make the "charting
        area" white to show the aspect ratio of the 'visible area'
        designated on the worksheet. This might be done with an alpha
        10% grey mask over all the non-charting area. 

I'm going to add a visual indication of the graph area.

You may need to
        make the border around the visible area big enough to hold any
        piece you want to permit to leave charts out of the 'visible
        area' (say if you want to let users to have a 'scrap heap' on
        the side).

I agree we should see objects placed outside of the graph area. 
        
I would also block the charts from becoming too small, say
        smaller than makes the bottom right handle clearly identifiable
        as a handle. (10px wide or some such).

Good idea. 

I would prevent charts from "inverting" (in the worksheet, this
        is done by changing handle when the user drags the mouse
        diagonally back across the chart; since you have only one handle
        in your widget, I am not sure what you want to do).
        
        I would prevent charts from leaving the chart area or at least
        from leaving too far *but* would keep them visible regardless.
        You might want to prevent charts from moving more than 95% from
        the center to force them to stay 'worksheet visible' or from
        moving more than 110% percent from the center (i.e. not
        worksheet visible but still 'Configure Chart' visible) according
        to your desires *but* the user should still see the chart and be
        able to drag it back if needs be. To answer Andreas, I could
        imagine this would let us store alternative charts but only show
        one on the page that gets printed. I'm not sure I would do that,
        merely arguing that it's a reasonable idea.

Principle: make the common needs easy at the expense of the uncommon
ones.

With the following difficulty: what is common, and what is uncommon ? 

       Since you now have the infrastructure to be totally crazy, you
need to design the UI to help users do what they want. Right
        now, this UI feels like it was designed to make *everything*
        possible. That's fantastic. However, I suspect most users
        wanting to re-arrange their charts want to do simple things like
        flip charts from vertically stacked to horizontally, side by
        side. The first thing I tried, before I realized what you were
        letting me do, was to make the plot areas uneven by dragging the
        "bar" between the charts to make one bigger and the other
        smaller. So vertical <-> horizontal and uneven I suspect will be
        popular and should therefore be easy to do. Perhaps users may
        also frequently want to place one smaller chart on top of an
        other. But mostly, I wouldn't expect them to get too much
        crazier.
        Starting small, perhaps you start by making the charts only
        jointly resizable, not fully, independently re-sizable but
        merely able to shuffle around and exchange space. That may be
        more intuitive. You would then eventually have to add a special
        "place chart on top" UI workflow and 'visual' look.

The array like chart layout inside a graph is already implemented, but
changes are not persistent for now. That's why there's no UI for that. 

This lead me to something I wonder. Currently, it's only possible to
move the objects freely. I've planed to add a secondary mode, where if a
modifier key is pressed, the object is moved by changing the "hint" of
the automatic position (for example, for a chart title, top, bottom,
left of right position). Perhaps it could be the primary moving mode ?

Again these ideas are merely offered to prod you to reset your thinking
from the coder's perspective to the user's perspective long enough to
design a UI as great as the code that you have already written. 

Do you really think we're coding a graphing framework including a visual
editor without thinking about the user ? We try our best to provides a
useful and usable tool for the gnumeric users. Things are far from
perfect, but are improving. Constructive criticisms, suggestions (like
what can be found in this email) or patches are welcomed.

Emmanuel.




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