Partitioned dataset collection improvements
Requires vtk/vtk!7727 (merged)
Doc updates: paraview-docs!10 (merged)
This is collection of changes to improve support for partitioned dataset collections in ParaView.
The MR started with changes to vtkPVDataInformation to make it support communicating information about data-assembly. Original intention was to get rid of multiblock datasets entirely (as discussed here). However, during implementation we discovered that data-assembly can indeed be used to convey hierarchical relationships in a Multiblock dataset as well. Thus was born the concept of a Hierarchy for composite dataset stored using a vtkDataAssembly.
vtkPVDataInformationwas updated to populate hierarchy and any other vtkDataAssembly that may be provided by the data object. Currently, only vtkPartitionedDataSetCollection can support additional data-assemblies. vtkPVDataInformation has long been slow and compicated since it used to build this vtkPVCompositeDataInformation tree. This has now been entirely replaced by vtkDataAssemblies. Thus, the vtkPVDataInformation was greatly simplified. The code was also refactored to be more reable and use newer APIs on vtkDataObject to access element types, dataset-attributes etc.
Now that vtkPVDataInformation API was changed, we needed to update the data information panel. Instead of merely fixing the API changes, this MR refactors the whole panel to make it better organized and match the styling of other panels.
The highlights are:
- compact -- less wasted horizontal space
- selected node in "Hierarchy" preserved across time changes -- thus easier to monitor changing data information for a specific block during animation playback. you can also use arrow keys to change selection in the tree widget with ease.
- Data Statistics heading provides information about how many individual datasets that result is comprised of.
- Improved locale-based formatting for numbers. Memory shown in KB,MB, or GB as appropriate.
Now that vtkPVCompositeDataInformation is gone, all domains (
vtkSMCompositeTreeDomain) and property widgets (
pqCompositeTreePropertyWidget) needed to be updated.
vtkSMCompositeTreeDomainis simply returns the vtkDataAssembly for the hierarchy instead of
pqCompositeTreePropertyWidgetis subsumed by
pqDataAssmeblyPropertyWidgetwhich now supports properties that take selector strings or composite ids both using the
vtkDataAssemblyavailable and thus reducing components doing similar things using different way of representing trees.
While composite ids are supported, we want to change proxies to instead use selectors. As a first example, the spreadsheet view was updated to use selectors to pick which blocks to show rather than composite ids. Similarly, Extract Block filter was updated as was block opacity, color etc. properties on geometry representation. Others like chart representations have been left unchanged. They need a little more work to switch to using selectors instead of composite ids. Also, while spreadsheet view and extract block support hierarchies as well any other data assembly available for selecting blocks (test with IOSS reader), the block visibilites, colors, opacities for geometry representation still only work with hierarchy. Work is independently underway (ref: @vbolea ) to support that eventually.
Previous changes led to changes to Multiblock Inspector too. This relied on
vtkPVCompositeDataInformation. It too now uses
vtkDataAssemblyinstead. Infact, the code now is simply using a pqProxyWidget and the same
pqDataAssmeblyPropertyWidgetthat would have been used for Extract Block, for example. Thus, lots of custom code here is now gone. The multiblock inspector is now morphed into simply showing a pqProxyWidget for the active representation proxy, except only for some of its properties like block-visibility, block-color etc.
To make it possible to define properties that one wants to show on the standard Properties panel or Multiblock inspector, pqProxyWidget was extended to add ability to support additional
pqProxyWidgetstill classifies properties shown in 2 modes, which text corresonds to default and which to advanced is now configurable. If unknown value for
panel_visibilityis encountered, it's simply treated as hidden.
The other component where
vtkPVCompositeDataInformationwas used was Find Data dialog. Instead of simply fixing the dialog, this MR fixes #19271 (closed) too. Find Data is now a panel. Here too, we rely on simply using
pqProxyWidget. A new
pqSelectionQueryPropertyWidgetnicely supports defining queries without the complexity introduced by
Known issues already present (not caused by this MR, but impact this MR's usability)
- query-selection limited to a particular rank deadlocks #20526
- Python version cannot distinguish between 5.1 and 5.10 #20539 (closed)
- Python state does not record selection sources #20538
- GlyphMapper: doesn't not handle block visibility correctly #20508
- Multiblock Inspector: volume rendering #20504
- vtkPythonSelector does not respect block (or selector) based selection qualifiers. This causes the blocks selected in Find Data panel to be simply ignored #20488 (closed)
Known issues introduced by this MR:
- Re-enable selection tracking in multiblock inspector #20525 (closed)
- Information panel does not show correct data type for a leaf node when selected -- it always shows it as Multiblock Dataset.
- Find Data button should be disabled if no valid value is provided #20543 Improvements:
- Allow editing of selection on "Extract Selection" panel: #20536