r6 - 19 Sep 2006 - 11:44:35 - BryanStearnsYou are here: OSAF >  Journal Web  >  ContributorNotes > BryanStearnsNotes > DashboardTasks20060629
(This page is obsolete; the tasks are in Bugzilla and being worked on.)

A breakdown of tasks from my review of the dashboard spec...

Domain Model Issues

First, here's a list of domain issues that many of the tasks below are blocked by:

  • Sorting
    • New indexes, or indexing changes, to represent complex sort orderings like sectioned-triage (which has different sorts for sections, at least one of which is spec'd to order differently forwards and backwards) and the who/date/comm/reminder columns (which depend on presence/absence of many kind-specific attributes)
    • Do we need specific Calculated methods for index-dependent dynamic values? (Does Calculated need to move to Schema for this?)
    • For later: how to model manually-set ordering in the table (when the user manually reprioritizes items by dragging them within a summary view)
      Proposal:
    • Add a sortBy attribute to each Column, naming a Calculated attribute on the item that'll return a sort key to be used in sorting that column; the index created by this sort key will also use this name. (If no sortBy is present, the raw attribute would be used as it is now, but none of our columns actually want raw sorting like this, since it doesn't include a secondary sort).
    • Add a method on ContentItem for each sort, that'll return the appropriate key for that item.
    • Don't worry about manually-set ordering for now.
  • Ticklers
    • Are they just a special type of (or the same as) existing Reminder objects?
    • How to represent ticklers relative to event start time (when start time changes)? Do we convert to an absolute date upon set? Timezone interactions?
    • How to represent ticklers relative to current time? Do we convert to an absolute date upon set?
    • How to model ticklers with no date set (eg, when user removes the date from the Date column of a non-event with a tickler)
    • How to model ticklers which persist after firing (do we need a "fired" boolean, to avoid re-finding fired ticklers?)
    • How to model ticklers vs recurrence?
      Proposal:
    • Internally, they're exactly the same as reminders. We'd need to rework Reminder a little to support non-relative reminders.
    • Modelling event-relative ticklers: an OnValueChanged method on CalendarEvents watches the attrs that affect the tickler time (startTime, allDay, etc) and updates the tickler time appropriately if an affecting value changes. Unstamping a CalendarEvent with a relative tickler leaves the tickler around with an absolute time.
    • Modelling now-relative ticklers (including snooze): they're just normal absolute-time reminders.
    • Ticklers with no date set: treat them just like expired reminders (maybe rename Reminder.expiredReminderItems?)
    • Ticklers that have fired: (use the existing expired reminder mechanisms we've got)
    • Recurrence: (I don't know how we do it now - will the existing mechanism continue to work?)
    • Rename the eventsWithReminders collection to itemsWithReminders, and store all items with reminders in it (sorted by firing time)
  • How to represent triage status
    • How to represent pending-but-not-Purged triage status?
    • How to represent last time Triage changed (needed for sorting)
    • How to set automatically triage status to NOW when a tickler time arrives
    • How to set automatically triage status to NOW when a start datetime arrives (should all events have a hidden tickler for this?)
      Proposal:
    • Add an internalPendingTriageStatus attribute with no default.
    • Add a pendingTriageStatus Calculated that returns internalPendingTriageStatus if it exists, else triageStatus.
    • The triageStatus column will actually reference pendingTriageStatus, and sort on it.
    • (As an alternative to the extra-attribute-and-Calculated trick, we could add schema and repository support for having an attribute's value default to another attribute.)
    • Create the indexes for triageStatus and pendingTriageStatus at SmartCollection-creation time?
    • Add a 'hidden' attribute on Reminder and create hidden reminders for all events with starttimes.
    • Use the reminder timer to update triage status when ticklers fire. (Mimi says all tickler firing should appear in the reminder alert, anyway)
  • Sections (these are more CPIAish)
    • Where to persist open/closed state of sections in a general way
    • What's the architectural connection between columns and sectioning? (Right now, columns specify an attribute name, and the attribute name is used for indexing and sectioning)
      Proposal:
    • Add a contractedSections list on Column (which hangs off the Table block) to store a list of closed sections; add the section name to this list when the user contracts a section, and remove it when the user opens a section.
    • (no proposal on how sectioning should be specified for non-multiple-choice attributes like dates)

  • General domain issues
    • Are we sticking with attribute redirection as it is? This impacts how the complex decisions about what to show in Who & Date work, and hence how sorting works. (Bug 2167)
    • How to represent (and what mechanisms will update) First-time Communication, Update, Created, Edited, Draft, Queued, Sent, Error (and in future, Forwarded, Replied To)
    • How to update LastModified (same as Edited?) time?
    • Need to represent Read/Unread state; by what mechanism should it change? (nb, "clicking on an unread row also marks the item as read")
    • Need to represent Needs Reply - is this just a boolean field that defaults to False, is settable by the user clicking on the comm cell, and is cleared on Send?
    • How to represent In versus Out versus Neither
    • Who/Date column labeling specifies displaying selected attribute of most-recently-selected item if more than one is selected. How should we model and persist selection order in table views?
    • How to model calendar events with no date set (eg, when user removes the date from the Date column of an event with no tickler): do we make startTime optional? There's also a future requirement to store 'gobbledygook' in the start time field, though I don't know what this means for sorting, attribute-editor picking, etc.
    • For future, displaying items more than once in the summary would preclude assuming one collection member == one row; do we need a different model for this?

Tasks

Not organized or prioritized yet... (060721: These have now been entered in Bugzilla: organization and prioritization will happen there.)

  • Column header: 'sorted' column highlighted (done?) (Bug:6283)
  • Column header: mousedown state on windows & linux (done?; why not Mac too?) (Bug:6284)
  • Column header: columns should be resizable (done?) (Bug:6285)
  • Column header: columns can display text or icon (done? icon clipped on windows, Bug:6168)
  • Column header: conditioning mechanism for visibility of sort arrows, for icon columns (Bug:6286)

  • 12 point content font size (done?) (Bug:6287)
  • 10-pixel gutter between columns (not sure what's necessary to achieve this; might not apply to triage column, which specs 1-pixel whitespace) (Bug:6288)
  • no divider lines (pretty sure this is done: no bug filed)
  • correct resizing: no h-scrollbar (pretty sure this is done: no bug filed)
  • "smart" default column widths (see question above) (Bug:6289)
  • Establish minimum width for summary sizer (Bug:6290)
  • (Also, probably) Establish minimum width for calendar sizer (Bug:6291)
  • all columns resizable (done? should widget columns be resizable?) (Bug:6292)
  • Attribute redirection work: "Which attribute is displayed in which column needs to be determined by context" (Bug:6293)
  • Rename "My" collections to "Dashboard" (see sidebar spec) (Bug:6294)
  • Change "Keep out of my items" somehow? (Bug:6295)
  • Set up index for task column (Bug:6296)
  • Set up index for communications column (Bug:6297)
  • Set up index for reminder column (Bug:6298)
  • Column header labels should be capitalized (done? no bug filed for this)
  • Column header labels should include parenthetical text for selected item's attribute (done? no bug filed for this)
  • Column header labels should pick parenthetical text from most-recently-selected item, if multiple selected. (new domain work req'd for this!) (Bug:6299)
  • Column header parentheticals should be formatted ALL CAPS, 10pt, bold, 50% gray (wx work on column header widget required?) (Bug:6300)
  • Multi-selection with shift-click for range selection (done? no bug filed.)
  • Multi-selection with ctrl-click for discontiguous selection (done? no bug filed.)
  • Selecting more than one item blanks detail view (done? no bug filed.)
  • cut/paste/copy/remove/delete of multiple selected items (done? Bug:6301)
  • duplicate of multiple selected items (Bug:6302)
  • drag multiple selected items from trash to another collection (Bug:6303)
  • drag multiple selected items from non-trash collection to another collection (Bug:6304)
  • drag multiple selected items from non-trash collection to trash (Bug:6305)
  • Handling of multiple selected items from disjoint collections (Bug:6306)
  • Later: drag multiple selected items from collection to desktop (Bug:6307)
  • Later: drop multiple items from desktop into unsectioned table (Bug:6308)
  • Later: drag and drop multiple items between sections of triage-sectioned table, setting triage (Bug:6309)
  • Later: drop multiple items from desktop into triage-sectioned table, setting triage (Bug:6310)
  • Later: drag and drop to manually reorder triage items within a section (Bug:6311)
  • Later: In-place editing of Date column (Bug:6312)
  • Triage: new items are NOW (Bug:6313)
  • Triage: received messages are NOW (Bug:6314)
  • Triage: new items received by sharing are NOW (Bug:6315)
  • Triage: automatic NOW when ticklers go off (Bug:6316)
  • Triage: automatic NOW when event startTime arrives (Bug:6317)
  • Triage: clickable widget in detail view markup bar (Bug:6318)
  • Later: Triage: clickable table cell (Bug:6319)
  • Triage: Sectioning by triage status, Now, Later, Done (Bug:6320)
  • Sectioning: Sections 80% gray background, Medium size (12-point) black title text (Bug:6321)
  • Sectioning: Section titles show triangles for open/closed, 50% gray (Bug:6322)
  • Later: Sectioning: Section titles show # of items in section (Bug:6323)
  • Sectioning: Triage sections show block of color, right-aligned, with white outline. (Bug:6324)
  • Sectioning: Section open/close state should persist (Bug:6325)
  • Sectioning: Triage sections initially Now open, Later & Done closed. (Bug:6326)
  • Triage: Sort isn't consistent within sections (Now section sort is different than Later...) (Bug:6327)
  • Triage: Purge button in toolbar when table is shown (Bug:6328)
  • Triage: Purge button commits pending triage-status changes (Bug:6329)
  • Future: Triage: Auto-purge every [x] minutes/hours/days (Bug:6330)
  • Future: Triage: Auto-purge at xx:xx every day (Bug:6331)
  • Later: clicking one widget cell (task, comm, reminder, triagestatus) in a selected group of rows conditionally changes state of all selected rows (Bug:6332)
  • Tickler: All items can have reminders (Bug:6333)
  • Tickler: detail view popup choices for all items: None: Custom Date (displays date & time editfields) (Bug:6334)
  • Tickler: detail view popup choices for calendarevents: Before event... (displays [n] + minutes/hours/days x before/after popup) (Bug:6335)
  • Later: Tickler: other nice-to-have detail view popup choices: End of Day, Tomorrow, End of Week, Next Week, End of Month, Next Month (what happens when the user picks these? Does it change to Custom and show the calc'd date/time?) (Bug:6336)
  • Tickler: default tickler time is 5PM today (alternative defaults from Darshana?) (Bug:6337)
  • Tickler: automatic changes to displayed items ticklers automatically update & resort (Bug:6338)
  • Future: Tickler: support multiple ticklers (Bug:6339)
  • Later: Add custom-date tickler by editing the date column (conflicts with editing whatever date is there?) (Bug:6340)
  • Later: Who column displays CR, ED, FR, TO (Bug:6341)
  • Later: Date column displays first of [ tickler date if present, start date/time if present, later of [date sent if present, date last modified (which is date created if new)]] (Bug:6342)
  • Later: Date column: editable if item has tickler or is on calendar; read-only otherwise. If user removes text, tickler still exists. (Bug:6343)
  • Later: Date column: Removing text of a tickler removes the tickler, and remains blank ? (Bug:6344)
  • Future: in-place editing of Who column (Bug:6345)
  • Future: store gobbledy-gook in the start date field (Bug:6346) and addressing fields (Bug:6347)
  • Keyboard nav: make grid support focus, on whole rows (Bug:6348)
  • Keyboard nav: up/down arrow keys move row focus by whole rows, modifying selection only if ctrl or shift is down. (Bug:6349)
  • Future: Keyboard nav: figure out strategy for one-cell focus, tabbing, etc. (Bug:6350)
  • Sorting by Title (Title, then date field) (Bug:6351)
  • Sorting by Task (tasks sort before non-tasks, then by triage status, then by triage-status change date?) (Bug:6352)
  • Sorting by Date (requires complex indexing) (Bug:6353)
  • Sorting by Comm (requires complex indexing) (Bug:6354)
  • Sorting by Reminder (requires complex indexing) (Bug:6355)
  • Sorting by Triage status (now, later, done; date of triage status change) (Bug:6356)
  • Support tooltips on table cell widgets (Bug:6357)
  • Comm column: Mechanism for selecting current icon and tooltip based on various item attributes (other than in/out/neither, error, draft, queued, updated) (Bug:5433)
  • Later: Comm column: Mechanism for selecting current icon and tooltip based on in/out/neither, error (Bug: 6358)
  • Later: Comm column: Mechanism for selecting current icon and tooltip based on draft, queued, updated (Bug:6359)
  • Reminder column: Mechanism for selecting current icon and tooltip based on various attributes of item (as well as the associated Reminder) (Bug:6360)
  • Later: Task column: clicking to stamp/unstamp (done, no bug filed)
  • Task column: Mechanism for selecting tooltip based on stamped state (Bug: 6361)
  • Later: Comm column: clicks cycle through Unread, Read, Needs Reply (Bug 6362)
  • Later: Reminder column: clicking adds a tickler (today @ 5PM) or removes it if it's there. (Bug:6363)
  • Need the 18 Comm column icons in each of the four variations (active [== normal?], rollover, mousedown, mousedown-off) (Bug:6364)
  • Clicking on an Unread item row also marks the item as Read (Bug:6365)
  • Later: sectioning by Who (drag-and-drop behavior?) (Bug:6366)
  • Later: sectioning by Date (drag-and-drop behavior?) (Bug:6367)
  • Later: sectioning by Title (drag-and-drop behavior?) (Bug:6368)
  • Future: drop items into table sectioned other than by triage (data change behavior?) (Bug:6369)
  • Future: unspec'd UI for adding/removing summary view columns, user-configurable columns ("on a per-app area - collection intersection"?), user-configurable column order via drag-and-drop, user-configurable sort order ("more sophisticated UI for sorting-like affordances (being hashed out on the design list right now") (Bug:6370)
  • Future: display of multiple detail views (Bug:6371)
  • Future: display of overlapped items in the detail view, to allow changing of an attribute across multiple items. (Bug:6372)
  • Future: Left-align date / Right-align time in Date column like Apple Mail (Bug:6373)
  • Future: user-configurable triage-status values (Bug:6374)
  • Future: support multiple flavors of task (different icons & tooltips; cycling behavior in Task column?) (Bug:6375)
  • Future: Multi-line display in the dashboard (Bug:6376)
  • Future: popup-up on column titles to control sorting (Bug:6377)
  • Future: Items appearing more than once in the table (potentially really hard) (Bug:6378)
  • List of existing 0.7 table bugs on SummaryTableBugs20051019

-- BryanStearns - 29 Jun 2006

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r6 < r5 < r4 < r3 < r2 | More topic actions
 
Open Source Applications Foundation
Except where otherwise noted, this site and its content are licensed by OSAF under an Creative Commons License, Attribution Only 3.0.
See list of page contributors for attributions.