Estimates for TVA Data Object Enhancements / Phil Weinstein / July 2015
Edit: 7-21-2015 (c) -- Ready for review.
Task | Est. Hours |
Description. | |
1 | Slot Groups | 120.0 | SEE SEPERATE SECTION BELOW |
2 | Copy slots to multiple data objects. | 16.0 | This could be implemented either with or without Slot Groups. We would show the Object Selector -- limited to Data Objects (proper) -- and copy the currently selected slots and slot groups (from the original Open Object Dialog from which the operation was launched) to the picked target data objects. (Note that basic manual copying of Slot Groups is part of the prior task). This would be conditioned with the option to overwrite existing slots. |
2c | ... Fixup of slot-internal slot references. | 8.0 | With the prior task, when a Time Aggregation Series Slots or Statistical Table Slots is copied, if it internally refers to a slot on the containing Data Object, modify the copied slot to refer to the analogous slot on the target Data Object. [Note: this is not an explicit TVA requirement]. |
3 | Copy/Paste Shortcuts |
4.0 | These operations do already exist as menubar menu items, and Ctrl-C and Ctrl-V shortcuts are not currently used (i.e. for anything) in this dialog. |
4 | Duplicate Slot | 4.0 | This is just a hybrid of the Copy and Paste operations. |
152 | TOTAL [Hours] (Estimate revision: 7-21-2015, Phil). |
Create Slot Groups on Data Objects: Allow arbitrary sets of slots to be grouped together (such as SEPA data, Policy Data, etc).
Allow the group and slots to be copied/pasted.
This, of course, involves GUI work. But it also requires the introduction of new internal data model provisions to represent "slot groups". It also requires an enhancement to our internal "slot clipboard".
In the object dialog, we would present a two-level tree-view presentation -- similar to what's done for Aggregate Object's Element's slots, but we still may want to make available a flat list presentation, perhaps with a conditionally-shown slot group name column.
Assumption: each slot instance can be in only one slot group (or no slot groups).
The following tasks wouldn't be done in this exact order. GUI provisions will be implemented as the required data model provisions are put in place.
Task | Est. Hours |
Description |
Data Model Development Tasks: | ||
1.1 | 16.0 | Basic Slot Group Data Model: An arbitrary list of Slot Groups will be maintained in either the "Data Object" or "SimObj" class. Each slot on that object can belong to zero or one Slot Groups. Perhaps, internally, Slot Groups should not actually be defined as a collection of slot references (pointers to dynamic objects). Rather, a list of unique Slot Group names is maintained, and Slots have an optional Slot Group name string (normally empty, and not serialized when empty). (Run-time performance is not an issue -- we don't need to be able to rapidly enumerate the slots within a Slot Group). When the name of a Slot Group changes or the group is removed, the object's slot's referring to the group need to be updated. |
1.2 | 4.0 | Revise slot-name uniqueness algorithms to ensure that the names of slots and slot groups are distinct (on any particular object). |
1.3 | 12.0 | SlotOrderManager Data Model enhancement to support Slot Group (names) AMONG an ordered list of Slots. This data model is quite complex. Fortunately, references to Slot instances is done with the name of the slot -- so, a particular name will correspond to either a Slot or a Slot Group. |
1.4 | 8.0 | SimObj::HideSlotSpec Data Model and use: enhancement to support Slot Group (names) AMONG the set of hidden slot names. (Similar issues as prior item). |
1.5 | 8.0 | Internal Slot Clipboard enhancements to support inclusion of whole (Object-) Slot Groups. Slot Groups placed in the slot clipboard need to be expanded to a sequence of slots for Slot Clipboard clients that don't support Slot Groups. |
User Interface Development Tasks: | ||
1.6 | 16.0 | Open Object Dialog Slot TreeView. Implement two-level tree support for Slots in a Slot Group, potentially based on the similar current support for Slots on Aggregate Object Element Objects -- SEE FIGURE 1, below. (A technical decision to be made is whether Slot Group items are to be implemented within OpenObjectDlg::SlotListViewItem class, or a new QTreeWidgetItem class). |
1.7 | 6.0 | Slot Group Name editing -- inline, within the TreeView. |
1.8 | 6.0 | (Conventional, manual) Slot and Slot Group Copy/Paste operations. |
1.9 | 4.0 | Relevant context menu operation adjustments for Slot Group list items. |
1.10 | 8.0 | Slot Custom Order "Move Up and Down" re-implementation to keep Slots within their Slot Group, and to move whole Groups up and down. |
1.11 | 6.0 | Other Slot/Slot Group Ordering implementations |
1.12 | 8.0 | Slot Group Filtering (Hiding) implementation. |
Other Relevant Tasks | ||
1.13 | 6.0 | Completeness and Usability Testing and Resolution. |
1.14 | 6.0 | Post-development review and revisions. |
1.15 | 6.0 | Completed Feature Documentation |
120 | TOTAL [Hours] (Estimate revision: 7-21-2015, Phil). |
This is relevant to task "2c".
---