mirror of
https://github.com/OPM/ResInsight.git
synced 2026-08-27 05:37:21 -05:00
CellFilters: Add case-level Data Filters with per-view wrappers
Introduce RimDataFilterCollection on RimEclipseCase to hold filter configuration that is shared across all views of the case. Each RimEclipseView gets a RimDataFilterInViewCollection of RimDataFilterInView wrappers that auto-sync with the case-level list and expose an independent on/off toggle per view. The wrapper's applyToCellVisibility delegates to the wrapped RimCellFilter via the existing unified virtual, so property, range, and combined filters all work uniformly. RimDataFilterCollection is built on caf::PdmObjectCollection<RimCellFilter> and emits a filtersChanged signal on add/remove/reorder/child changes. The wrapper collection mirrors RimSurfaceInViewCollection's sync pattern: new wrappers default to checked, removed sources drop their wrappers, and the wrapper list follows the case order. Per-view wrappers feed into RivReservoirViewPartMgr::computePropertyVisibility after the existing view-level property-filter loop. The RicNew*Feature commands now route into a selected RimDataFilterCollection, and the existing combined-filter path is generalized to allow combined filters living under either a per-view RimEclipsePropertyFilterCollection or the new case-level collection. Several Asserted ancestor lookups in RimEclipsePropertyFilter, RimCellFilter and RimEclipseResultDefinition that assumed a Rim3dView ancestor were relaxed to the non-asserting variant with graceful fallbacks, so case-level filters can be created and edited without a host view. Backwards compatible: empty Data Filter collection is a no-op, existing per-view RimEclipsePropertyFilterCollection and RimCellFilterCollection paths are unchanged. GeoMech parity deferred.
This commit is contained in:
@@ -48,6 +48,7 @@ class RigGridBase;
|
||||
class RigMainGrid;
|
||||
class RigVirtualPerforationTransmissibilities;
|
||||
class RimCaseCollection;
|
||||
class RimDataFilterCollection;
|
||||
class RimEclipseContourMapView;
|
||||
class RimEclipseContourMapViewCollection;
|
||||
class RimEclipseInputPropertyCollection;
|
||||
@@ -109,6 +110,7 @@ public:
|
||||
RimCaseCollection* parentCaseCollection();
|
||||
RimEclipseContourMapViewCollection* contourMapCollection() const;
|
||||
RimEclipseInputPropertyCollection* inputPropertyCollection() const;
|
||||
RimDataFilterCollection* dataFilterCollection() const;
|
||||
|
||||
QStringList timeStepStrings() const override;
|
||||
QString timeStepName( int frameIdx ) const override;
|
||||
@@ -191,6 +193,7 @@ private:
|
||||
caf::PdmChildField<RimReservoirCellResultsStorage*> m_matrixModelResults;
|
||||
caf::PdmChildField<RimReservoirCellResultsStorage*> m_fractureModelResults;
|
||||
caf::PdmChildField<RimEclipseViewCollection*> m_viewCollection;
|
||||
caf::PdmChildField<RimDataFilterCollection*> m_dataFilterCollection;
|
||||
|
||||
caf::PdmChildArrayField<RimWellTargetMapping*> m_wellTargetMappings;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user