A mock of the controls above the cost attribution table, at the width of the matter panel. Group by, search, Filter and Columns share one row, and wrap only at phone width. The entry count on a row opens its detail view.
| Area | Decision | Why |
|---|---|---|
| Group by | The menu is generated from a list of levels, not a hand-picked list of pairs. | Any pair that means something is offered, so a new question does not need a design change. Only pairs where the first level fixes the second are left out. |
| Event and Role are levels. | Event then Timekeeper (who worked on this motion) was the question the earlier design could not answer. Role is the Position on the time entry. | |
| Month, Quarter and Year are one level, Time, with a switch. | Three entries in a short menu for one idea was too many. | |
| Phase is offered only under Docket. | The dockets of one matter can be in different phases at once. | |
| Under the two chosen levels the rows continue Task, Event, Slot. | Slot is real data and is how a motion's cost is read: filing, response, reply, hearing, decision. | |
| A general row is hidden when it is the only child, and shown last otherwise. | A lone General work row says nothing. Next to a named event it is needed so the children add up. | |
| Columns | The user picks the columns; they do not change with the grouping. | The earlier design swapped Leverage for Rate when Timekeeper was a level. That broke for Role, for filters, and for sorting, and more measures are coming. |
| Leverage is blank at or under a Timekeeper or Role row. | There it can only be 0% or 100%. | |
| Time entries is always on and pinned to the right edge. | It is the way into a row's detail view, so it must always be in the same place. | |
| Three rates: standard, billed and matter. | Billed rate leaves out work in progress; matter rate is billed plus work in progress over worked hours. | |
| A changed column set can be reset to the default. | The Columns button is marked when the set is not the default. | |
| Sorting | Task, Timekeeper and Role open sorted by worked hours, highest first. | The firm reads cost as effort, not dollars. The earlier spec sorted tasks alphabetically. |
| Events, slots, phases and time open in case order. | They are read as a sequence. | |
| Clicking a heading sorts every level by that column; general rows stay last. | One rule for the whole table. | |
| Filter | Ten fields; several values in a field are alternatives, fields combine. | The earlier design had five. Event, Event type, Motion outcome, Role and Phase were added. |
| Event type and Motion outcome are filters, not levels. | You narrow to denied motions far more often than you group by outcome, and it keeps the Group by menu short. | |
| The hours beside a value reflect every other filter. | The list then says what picking the value would add, and the picked values add up to the table total. | |
| Search | Search reads the names on a row's path in the current grouping. No narratives. | You can search what you can see. Narrative search across a matter is much more expensive and is left to the detail view. |
| It narrows like a filter rather than highlighting. | Every number on screen is then a sum over what matched. | |
| Detail and layout | The entry count opens a detail view; there is no separate focus action. | Totals, a breakdown by the next level, and the time entries, with the filters still applied. |
| All controls sit on one row at the 689px panel width. | Search takes the spare width. Filter and Columns are icons, with labels when the panel is wide. | |
| The name column is pinned left and Time entries right. | Extra columns scroll between them instead of breaking the panel. |