Dashboard Design Discussion
01/23/06
Mimi, Sheila, Philippe, Alec, John, Jeffrey, Reid
Actions
- John: Look in wx contributions what is relevant to dashboard and can be reused. See wxTreeMultiCtrl for instance and others contributed by the same author.
- Jeffrey, Alec: Bring to the @dev the issues related to sorting, date computation/redirection and others that may requires reindexing.
- Philippe: Organize and post the meeting notes (done!)
3 main areas of work:
- Basic Table
- Stamping and Basic Triage workflow support
- Sections and more advanced Task management support
We assumed that we were working with wxGrid.
Basic Table Features
- Table header needs to look native:
- Integrate wxColumnHeader (David's widget)
- Allow icons in headers
- Table styling must be clean: this could prove tricky depending on whether or not we use some off the shelf wx widgets
- Precise margins and gutters: could be problematic using existing widgets (to be confirmed)
- Specify alignment per column (center, right aligned, left aligned)
- The important thing is alignment between text of header and text of cells
- Columns can be redefined and and reordered:
- UI to show/hide column per attribute (we didn't discuss this)
- Reorder column with DnD (?)
- Sorting per column:
- Basic primary sorting on a column shouldn't be a big deal (consensus here)
- Secondary sorting: depends if we do that through an ad-hoc UI or using the previous sorting column (as most table do)
- Date sorting is tricky: long debate that boils down to the fact that the date we show is not a straightforward redirect but a value that is computed depending on the state of the item (e.g. could be the start date or the tickle date depending of the item triage status)
- Triage Status sorting needs some work: we'll need to secondary sort according to an internal (not displayed) triage time stamp (used for tickle items and reordered items)
- Widgets in cells:
- Allow icons to be displayed in cells
- Allow in place editing in cells (using Attribute Editor)
- Allow toggle (on/off) iconic buttons in cells
- Allow drop down menu in cells (multiple choice for status for instance)
- Variable row height: having rows of different heights will make rendering and computation of the scroll bar size and position tricker and potentially slower
- Allow auto size (depending of content per row): tricky
- Fixed but changeable globally (per table): easy
- Draggable (per row): trickiest
- "Generic" label column that can display a list of user-defined attributes.
Triage Workflow Support
- Most issues revolve around attribute computation, i.e., what we have in columns might not be a direct mapping of items attribute but some combinaison of redirection and computation based on heuristic depending on the state of each item.
- Who column:
- Differentiate between To and From
- We'll defer "who shared this with you" information
- Dates and Tickling
- Sort by date is hard because of the computed nature of this column (not a simple attribute)
- Adding custom Tickler dates is more UI work for detail view
- Changing the Tickler date to the Event start-date when the Tickler fires is hard
- Ordering by Triage status and Explicit ordering: feasible if we add an internal (hidden) triage time stamp we can manipulate
Sections
We don't know yet which technical solution we'll go. There are possibilities using an "Outlook" like UI (accordion) with one level only of depth or a more richer nested tree structure, allowing sections within sections.
We mostly debated issues related to using sections. We'll see what we can find in the existing widgets that will cover most of those.
- DnD items between sections: means that some attribute will change. OK if the section is based on an attribute, potentially very tricky if the sections are filtered sections (queries) instead of attribute based (what to change so that the item show in the other section?)
- DnD within a section: used to reorder elements in a section (e.g. in the Now section)
- Sections could be multiple separate panes with one unique header
- Scrollbar (unique) can be tricky to make work correctly
- Separate scrollbars for each section feasible (but may look weird)
- Resizing column across section tricky but feasible
- We may want to experiment with limiting section just to Triage status in 0.7 (will make things easier)
- Virtual "timeframe" sections is hard (?)
We didn't discuss:
- Defining new sections/new
- DnD a section to the sidebar
Search
- We won't search on computed values (like "date") but on indexed one so, for instance, search on "When: September 2nd, 2006" will return any item with a September 2nd, 2006 date attribute value, whether or not its the value displayed in the Date column
- Split pane search + calendar a la iCal
- We may want to consider "free-form text" search returns a la Google, rather than limiting what gets displayed in search results to "just the metadata displayed in the columns".
Open Issues that need to be resolved (might be difficult from a technical perspective)
- Dragging and dropping to assign attributes
- Sectioning on the fly (as opposed to hard-coding sections to be limited to Triage status)
- Sub section
- Virtual sections (ie. Today, Yesterday, Last week, Last 2 weeks, Last month, Older)
- MimiYin: I'm not sure these were necessarily hard?
- Searching on computed attributes
- Explicit ordering for triage status
- Secondary sort
Design Team priorities
- Basic table
- Integrate native header
- Icon in header
- Ascending and Descending Sorting
- 2ndary sort
- Margins/gutters
- Scrollbar bug
- Solution for what displays in what column (who, date)
- Separate columns for Communications, Tasks and Calendar stamps
- Stamping and Triage status widget - comm, task, calendar,
- Explicit ordering via Triage status attribute
- Tickling
- Search
- Sections
- User definable sections
- In-place editing & variable row heights
- Generic labeling column
- Defining and ordering columns