Estimates for URGWOM / Phil, April 2014
Phil Weinstein, CADSWES, edit: 4-17-2014. (See also "Updates" below).
Project: COE-ABQ User Support
|
Task Description: Develop Model Run Analysis for Water Quality: Add the ability to display the status of water-quality solutions (dispatch methods) to the Run Analysis window. The Run Analysis window indicates if simulation objects are solved or not; however, water-quality functionality is currently not included.
There are three Run Analysis graphical capabilities which can be separately considered for supporting Water Quality. The initial implementation will support only the first two:
|
![]() |
User Interface Design: A global Run Analysis "Water Quality" toggle will effect the contents of the Run Analysis Dialog (grid), the optionally shown Detail panel within that dialog, and all stand-alone Detail dialog instances. Checkboxes for this toggle will be added to these dialogs (all synchronized to the global state). In the Run Analysis Dialog, it will appear as a "Water Quality" checkbox; in the Detail dialog, this will be abbreviated with "WQ" (see mocked up images). These checkboxes are shown only when water quality modeling is enabled in the Run Parameters dialog. | ![]() |
|
![]() |
![]() |
|
![]() |
Data Model issues: The internal data model for simulation object Water Quality dispatch information looks complete -- sufficiently implemented -- with the exception of the serialization of the Water Quality values in the SimObj _dispatchedEntryDict (dictionary). Probably only the SimObj::dumpDisplatchEntryDict() method needs to be enhanced -- the corresponding load method looks to support both kinds of dispatch information (mass balance and water quality).
Other Coding issues: Required changes will be easy to locate. Searching for the two DispatchCategory symbols: DC_MASS_BALANCE and DC_WATER_QUAL will generally identify those places. In much of the Model Run Analysis user interface implementation, DC_MASS_BALANCE is used explicitly. This will just need to be changed to either mass balance or water quality depending on the global Run Analysis Water Quality toggle.
Water Quality Reference Models:
Note: Some experimental work has been done. See the PhilWQ git branch.
Estimate (Phil, edit 4-17-2014) -- (5.5) Model Run Analysis for Water Quality Modeling:
Task | Est. hours |
Description |
1 | 1.0 | Run Analysis Display Dispatch Category global ("global toggle") implementation. This will be a scalar value on the RunInfo instance. It will have one of two values: DC_MASS_BALANCE or DC_WATER_QUAL. Changes will generate a new RI_DISPLAY_DISPATCH_CAT_CHG callback. |
2 | 2.0 | Addition of conditionally shown "Water Quality" toggles to the QtRunAnalysisDlg and RunAnalDetailsPanel. Synchronization with the global toggle via RunInfo callbacks (see above). |
3 | 4.0 | Run Analysis Grid support for the Water Quality dispatch category (small simulation icons only), based on the global toggle. When switching to Water Quality, the Rules Grid would be reverted to the simpler Simulation Grid. |
4 | 4.0 | Detail Panel support for the Water Quality dispatch category. |
5 | 6.0 | Completion of persistence for Water Quality dispatch information, and other discovered data model issues. |
6 | 4.0 | Completion testing and documentation |
21.0 | TOTAL [hours] |
Task Description: Table Slot Columns: Add capability to insert a column to a table slot and [reorder] columns in a table slot. This applies to all types of multiple column slots on data objects -- except for multiple-column slots with Numeric Headers. ("Rearrange the columns with the arrow buttons used elsewhere, but horizontal rather than vertical").
Inserting a column within a Table Slot is already supported. The ability to insert columns was recently provided for AggSeries Slots (in RW 6.5 development) -- except for inserting a column before the first AggSeries Slot column. We'll add that.
The relevant Open Slot Dialogs for Table, Periodic and AggSeries slots on data objects will have a new "Reorder Columns..." menu operation. That will show a "Reorder Columns" panel below the data table with Right and Left arrow buttons. The panel will have a pale yellow background. The arrow buttons will be enabled only when one or more columns are completely selected (e.g. by clicking or shift-clicking in the column header). (Also, the Left button is disabled if the leftmost column is selected; and the Right button is disabled if the rightmost column is selected). Clicking either button will move the selected columns -- including of course table data and column headers -- left or right. The moved columns will stay selected so that the operation can be repeated to move the selected columns more than once. A "Dismiss" button in the panel will hide the panel.
Since these operations are initiated by the user (so are not especially performance-critical), they can be implemented mostly with existing lower-level Table and AggSeries Slot operations of inserting columns, copy column values, and deleting columns.
Estimate (Phil, edit 4-17-2014) -- (5.7) Multiple-Column Slots: Reorder Columns:
Task | Est. hours |
Description |
1 | 3.0 | Open Slot Dialog GUI controls: New menu operation, conditinally shown "Reorder Columns" panel, selection-based enabling of arrow buttons. |
2 | 3.0 | Column move operations on Table Slots and Periodic Slots (not having numeric headers). |
3 | 4.0 | Column move operations on AggSeries Slots; add insert-column-before-first. |
4 | 2.0 | Completion testing and documentation |
12.0 | TOTAL [hours] |
The original task description defers to a generally understood definition of this feature. This was originally proposed in this document:
Smart Zooming: Simulation Object icons and their attached labels are scaled only when zooming out to see a broader view of the model. When zooming in beyond the standard zoom level, icons and labels remain their natural size (instead of becoming larger) for the purpose of exposing more detail around closely clustered objects.
Smart Zooming will be implemented for the Simulation and Geospatial views -- and not initially for the Accounting view.
A prototype level of functionality was demonstrated with the current development build (6.5). This makes use of the Qt4 QGraphicsItem:: ItemIgnoresTransformations flag. It is enabled on items when (and only when) the zoom level of the QGraphicsView is greater than 100% (i.e. when zoomed-in). Although "Smart Zooming" is an intended use of the "ignore transformations" feature, this conditional use (based on a view's zoom level) breaks Qt4's graphics view architecture paradigm -- so needs some explicit fixing up. Some of the issues are:
In the current prototype implementation, there are some problems which still need to be worked out for the latter issue: In some circumstances, drawing artifacts are being left behind (i.e. junk). Also, on certain simulation object icon move operations, the object "jumps" to the scene coordinate origin (upper left). This looks to be some kind of race condition with low-level mouse events. These things need to be solved.
The prototype Smart Zoom feature effects only simulation object icons and associated labels (in the Simulation and Geospatial views) -- it does not effect non-zero-thickness link lines. That is, even when Smart Zooming is enabled, those lines DO get thicker when zooming in. Probably we will want to "smart zoom" those graphics items too -- but we might consider not doing so. The current (missing) functionality doesn't interfere very much with seeing the background around a zoomed-in object, but it does provide some useful user-feedback when zooming. Note that with "cosmetic pen" line drawing (i.e. a pen width of "0"), lines are always thin (one pixel wide) -- regardless of the zoom level (i.e. even without Smart Zooming).
Update [4-25-2014]: It's possible that a fix applied to Qt 4.8.6 (and to 5.1.1) may be relevant to some of the dysfunctions we're seeing with the prototype implementation. See QTBUG-21618: "QGraphicsItem: sceneTransform being set equal to local transform when ItemIgnoresTransformations flag is set".
Estimate (Phil, edit 4-16-2014) -- (5.15) Smart Zooming:
Task | Est. hours |
Est. hours |
Description |
1 | 12.0 | 12.0 | Debugging "drawing artifacts" problem. |
2 | 12.0 | 12.0 | Debugging "jump to origin" problem. |
3 | 4.0 | --- | Removal of Locator View, OR |
4 | --- | 16.0 | Reimplementation of Locator View using its own QGraphicsScene. |
5 | 4.0 | 4.0 | Completion testing and documentation |
32.0 | 44.0 | TOTALS [hours] (two options) |
--- (end) ---