mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4584 Text Based Curve Creation: Add <Outdated> flag if the actual curves does not match the filter
Add address access on gridTimeHistoryCurves.
This commit is contained in:
@@ -127,3 +127,22 @@ size_t RimEclipseGeometrySelectionItem::cellIndex() const
|
|||||||
{
|
{
|
||||||
return m_cellIndex;
|
return m_cellIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
cvf::Vec3st RimEclipseGeometrySelectionItem::cellIJK() const
|
||||||
|
{
|
||||||
|
cvf::Vec3st IJK( -1, -1, -1 );
|
||||||
|
|
||||||
|
if ( m_cellIndex != cvf::UNDEFINED_SIZE_T )
|
||||||
|
{
|
||||||
|
if ( m_eclipseCase && m_eclipseCase->eclipseCaseData() && m_eclipseCase->eclipseCaseData()->grid( m_gridIndex ) )
|
||||||
|
{
|
||||||
|
m_eclipseCase->eclipseCaseData()->grid( m_gridIndex )->ijkFromCellIndex( m_cellIndex, &IJK[0], &IJK[1], &IJK[2] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return IJK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public:
|
|||||||
RimEclipseCase* eclipseCase() const;
|
RimEclipseCase* eclipseCase() const;
|
||||||
size_t gridIndex() const;
|
size_t gridIndex() const;
|
||||||
size_t cellIndex() const;
|
size_t cellIndex() const;
|
||||||
|
cvf::Vec3st cellIJK() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
|
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
|
||||||
|
|||||||
@@ -45,6 +45,7 @@
|
|||||||
#include "RiuQwtPlotCurve.h"
|
#include "RiuQwtPlotCurve.h"
|
||||||
|
|
||||||
#include "qwt_plot.h"
|
#include "qwt_plot.h"
|
||||||
|
#include "SummaryPlotCommands/RicSummaryPlotFeatureImpl.h"
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT( RimGridTimeHistoryCurve, "GridTimeHistoryCurve" );
|
CAF_PDM_SOURCE_INIT( RimGridTimeHistoryCurve, "GridTimeHistoryCurve" );
|
||||||
|
|
||||||
@@ -169,6 +170,30 @@ void RimGridTimeHistoryCurve::setFromEclipseCellAndResult(
|
|||||||
geomSelectionItem->setFromCaseGridAndIJK( eclCase, gridIdx, i, j, k );
|
geomSelectionItem->setFromCaseGridAndIJK( eclCase, gridIdx, i, j, k );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RigGridCellResultAddress RimGridTimeHistoryCurve::resultAddress()
|
||||||
|
{
|
||||||
|
RimEclipseGeometrySelectionItem* eclipseGeomSelectionItem = dynamic_cast<RimEclipseGeometrySelectionItem*>(
|
||||||
|
m_geometrySelectionItem.value() );
|
||||||
|
|
||||||
|
if ( m_eclipseResultDefinition && eclipseGeomSelectionItem )
|
||||||
|
{
|
||||||
|
cvf::Vec3st IJK = eclipseGeomSelectionItem->cellIJK();
|
||||||
|
|
||||||
|
return RigGridCellResultAddress( eclipseGeomSelectionItem->gridIndex(),
|
||||||
|
IJK[0],
|
||||||
|
IJK[1],
|
||||||
|
IJK[2],
|
||||||
|
m_eclipseResultDefinition->eclipseResultAddress() );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Todo: support geomech stuff
|
||||||
|
|
||||||
|
return RigGridCellResultAddress();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include "cafPdmPtrField.h"
|
#include "cafPdmPtrField.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include "SummaryPlotCommands/RicSummaryPlotFeatureImpl.h"
|
||||||
|
|
||||||
class RigMainGrid;
|
class RigMainGrid;
|
||||||
class RimEclipseCase;
|
class RimEclipseCase;
|
||||||
@@ -62,6 +63,8 @@ public:
|
|||||||
std::vector<time_t> timeStepValues() const;
|
std::vector<time_t> timeStepValues() const;
|
||||||
std::vector<double> daysSinceSimulationStart() const;
|
std::vector<double> daysSinceSimulationStart() const;
|
||||||
|
|
||||||
|
RigGridCellResultAddress resultAddress();
|
||||||
|
|
||||||
QString quantityName() const;
|
QString quantityName() const;
|
||||||
QString caseName() const;
|
QString caseName() const;
|
||||||
RimCase* gridCase() const;
|
RimCase* gridCase() const;
|
||||||
|
|||||||
@@ -50,6 +50,8 @@
|
|||||||
|
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
|
|
||||||
|
#define FILTER_TEXT_OUTDATED_TEXT "<Outdated>"
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT( RimSummaryPlotFilterTextCurveSetEditor, "SummaryPlotFilterTextCurveSetEditor" );
|
CAF_PDM_SOURCE_INIT( RimSummaryPlotFilterTextCurveSetEditor, "SummaryPlotFilterTextCurveSetEditor" );
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -105,7 +107,7 @@ void RimSummaryPlotFilterTextCurveSetEditor::fieldChangedByUi( const caf::PdmFie
|
|||||||
|
|
||||||
std::set<RiaSummaryCurveDefinition> curveDefinitions;
|
std::set<RiaSummaryCurveDefinition> curveDefinitions;
|
||||||
|
|
||||||
QStringList allCurveAddressFilters = m_curveFilterText().split( QRegExp( "\\s+" ) , QString::SkipEmptyParts);
|
QStringList allCurveAddressFilters = curveFilterTextWithoutOutdatedLabel().split( QRegExp( "\\s+" ) , QString::SkipEmptyParts);
|
||||||
std::vector<bool> accumulatedUsedFilters( allCurveAddressFilters.size(), false );
|
std::vector<bool> accumulatedUsedFilters( allCurveAddressFilters.size(), false );
|
||||||
|
|
||||||
for ( SummarySource* currSource : selectedSummarySources() )
|
for ( SummarySource* currSource : selectedSummarySources() )
|
||||||
@@ -258,6 +260,11 @@ void RimSummaryPlotFilterTextCurveSetEditor::fieldChangedByUi( const caf::PdmFie
|
|||||||
parentPlot->updateConnectedEditors();
|
parentPlot->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (changedField == &m_curveFilterText)
|
||||||
|
{
|
||||||
|
m_curveFilterText = curveFilterTextWithoutOutdatedLabel();
|
||||||
|
}
|
||||||
|
|
||||||
m_isFieldRecentlyChangedFromGui = true;
|
m_isFieldRecentlyChangedFromGui = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,6 +280,9 @@ void RimSummaryPlotFilterTextCurveSetEditor::defineUiOrdering(QString uiConfigNa
|
|||||||
RimSummaryPlot* parentPlot;
|
RimSummaryPlot* parentPlot;
|
||||||
this->firstAncestorOrThisOfType( parentPlot );
|
this->firstAncestorOrThisOfType( parentPlot );
|
||||||
std::set<SummarySource*> sourcesFromExistingCurves;
|
std::set<SummarySource*> sourcesFromExistingCurves;
|
||||||
|
std::set<RifEclipseSummaryAddress> addressesInUse;
|
||||||
|
std::vector<RigGridCellResultAddress> gridaddressesInUse;
|
||||||
|
|
||||||
if ( parentPlot )
|
if ( parentPlot )
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -280,12 +290,14 @@ void RimSummaryPlotFilterTextCurveSetEditor::defineUiOrdering(QString uiConfigNa
|
|||||||
for (auto ensCurvSet: ensembleCurveSets)
|
for (auto ensCurvSet: ensembleCurveSets)
|
||||||
{
|
{
|
||||||
sourcesFromExistingCurves.insert(ensCurvSet->summaryCaseCollection());
|
sourcesFromExistingCurves.insert(ensCurvSet->summaryCaseCollection());
|
||||||
|
addressesInUse.insert(ensCurvSet->summaryAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<RimSummaryCurve*> sumCurves = parentPlot->summaryCurveCollection()->curves();
|
std::vector<RimSummaryCurve*> sumCurves = parentPlot->summaryCurveCollection()->curves();
|
||||||
for (auto sumCurve: sumCurves)
|
for (auto sumCurve: sumCurves)
|
||||||
{
|
{
|
||||||
sourcesFromExistingCurves.insert(sumCurve->summaryCaseY());
|
sourcesFromExistingCurves.insert(sumCurve->summaryCaseY());
|
||||||
|
addressesInUse.insert(sumCurve->summaryAddressY());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -296,6 +308,7 @@ void RimSummaryPlotFilterTextCurveSetEditor::defineUiOrdering(QString uiConfigNa
|
|||||||
if (eclCase)
|
if (eclCase)
|
||||||
{
|
{
|
||||||
sourcesFromExistingCurves.insert(eclCase);
|
sourcesFromExistingCurves.insert(eclCase);
|
||||||
|
gridaddressesInUse.push_back(grCurve->resultAddress());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -305,11 +318,40 @@ void RimSummaryPlotFilterTextCurveSetEditor::defineUiOrdering(QString uiConfigNa
|
|||||||
m_selectedSources.clear();
|
m_selectedSources.clear();
|
||||||
m_selectedSources.setValue(usedSources);
|
m_selectedSources.setValue(usedSources);
|
||||||
|
|
||||||
|
// Check if existing filtertext matches all the curves
|
||||||
|
// Todo: possibly check grid time history curves also
|
||||||
|
|
||||||
|
QStringList allCurveAddressFilters = curveFilterTextWithoutOutdatedLabel().split( QRegExp( "\\s+" ) , QString::SkipEmptyParts);
|
||||||
|
std::vector<bool> accumulatedUsedFilters( allCurveAddressFilters.size(), false );
|
||||||
|
|
||||||
|
std::vector<bool> usedFilters;
|
||||||
|
std::set<RifEclipseSummaryAddress> filteredAddressesFromSource;
|
||||||
|
RicSummaryPlotFeatureImpl::filteredSummaryAdressesFromCase( allCurveAddressFilters,
|
||||||
|
addressesInUse,
|
||||||
|
&filteredAddressesFromSource,
|
||||||
|
&usedFilters );
|
||||||
|
|
||||||
|
if (filteredAddressesFromSource != addressesInUse)
|
||||||
|
{
|
||||||
|
m_curveFilterText = FILTER_TEXT_OUTDATED_TEXT + curveFilterTextWithoutOutdatedLabel();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_curveFilterText = curveFilterTextWithoutOutdatedLabel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_isFieldRecentlyChangedFromGui = false;
|
m_isFieldRecentlyChangedFromGui = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimSummaryPlotFilterTextCurveSetEditor::setupBeforeSave()
|
||||||
|
{
|
||||||
|
m_curveFilterText = curveFilterTextWithoutOutdatedLabel();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -425,3 +467,17 @@ std::vector<SummarySource*> RimSummaryPlotFilterTextCurveSetEditor::selectedSumm
|
|||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RimSummaryPlotFilterTextCurveSetEditor::curveFilterTextWithoutOutdatedLabel() const
|
||||||
|
{
|
||||||
|
QString filterText = m_curveFilterText();
|
||||||
|
|
||||||
|
if ( filterText.startsWith( FILTER_TEXT_OUTDATED_TEXT ) )
|
||||||
|
{
|
||||||
|
return filterText.right( filterText.length() - QString( FILTER_TEXT_OUTDATED_TEXT ).length() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return filterText;
|
||||||
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ protected:
|
|||||||
const QVariant& oldValue,
|
const QVariant& oldValue,
|
||||||
const QVariant& newValue ) override;
|
const QVariant& newValue ) override;
|
||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||||
|
virtual void setupBeforeSave() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void appendOptionItemsForSources( QList<caf::PdmOptionItemInfo>& options,
|
static void appendOptionItemsForSources( QList<caf::PdmOptionItemInfo>& options,
|
||||||
@@ -45,9 +46,10 @@ private:
|
|||||||
bool hideEnsembles );
|
bool hideEnsembles );
|
||||||
|
|
||||||
std::vector<SummarySource*> selectedSummarySources() const;
|
std::vector<SummarySource*> selectedSummarySources() const;
|
||||||
|
QString curveFilterTextWithoutOutdatedLabel() const;
|
||||||
|
|
||||||
caf::PdmPtrArrayField<SummarySource*> m_selectedSources;
|
caf::PdmPtrArrayField<SummarySource*> m_selectedSources;
|
||||||
caf::PdmField<QString> m_curveFilterText;
|
caf::PdmField<QString> m_curveFilterText;
|
||||||
|
|
||||||
bool m_isFieldRecentlyChangedFromGui;
|
bool m_isFieldRecentlyChangedFromGui;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user