Refactor code

This commit is contained in:
Magne Sjaastad
2021-11-16 09:23:45 +01:00
parent bc906f737c
commit 21fd4f74b5
5 changed files with 423 additions and 376 deletions

View File

@@ -60,58 +60,6 @@
#include <QRegularExpression>
#include <QStringList>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryCurve* RicSummaryPlotFeatureImpl::addDefaultCurveToPlot( RimSummaryPlot* plot, RimSummaryCase* summaryCase )
{
if ( plot && summaryCase && summaryCase->summaryReader() )
{
RifEclipseSummaryAddress defaultAddressToUse;
RiaPreferencesSummary* prefs = RiaPreferencesSummary::current();
QString curvesTextFilter = prefs->defaultSummaryCurvesTextFilter();
QStringList curveFilters = curvesTextFilter.split( ";", QString::SkipEmptyParts );
if ( curveFilters.size() )
{
const std::set<RifEclipseSummaryAddress>& addrs = summaryCase->summaryReader()->allResultAddresses();
for ( const auto& addr : addrs )
{
const QString& filter = curveFilters[0];
{
if ( addr.isUiTextMatchingFilterText( filter ) )
{
defaultAddressToUse = addr;
}
}
}
}
RimSummaryCurve* newCurve = new RimSummaryCurve();
// Use same counting as RicNewSummaryEnsembleCurveSetFeature::onActionTriggered
cvf::Color3f curveColor =
RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f( plot->singleColorCurveCount() );
newCurve->setColor( curveColor );
plot->addCurveNoUpdate( newCurve );
if ( summaryCase )
{
newCurve->setSummaryCaseY( summaryCase );
}
newCurve->setSummaryAddressYAndApplyInterpolation( defaultAddressToUse );
return newCurve;
}
return nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -183,16 +131,17 @@ caf::PdmObject* RicSummaryPlotFeatureImpl::createDefaultSummaryPlot( RimSummaryC
return itemToSelect;
}
RimSummaryCurve* createHistoryCurve( const RifEclipseSummaryAddress& addr, RimSummaryCase* summaryCasesToUse )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryCurve* RicSummaryPlotFeatureImpl::createHistoryCurve( const RifEclipseSummaryAddress& addr,
RimSummaryCase* summaryCasesToUse )
{
RifEclipseSummaryAddress historyAddr = addr;
historyAddr.setQuantityName( historyAddr.quantityName() + "H" );
if ( summaryCasesToUse->summaryReader()->allResultAddresses().count( historyAddr ) )
{
RimSummaryCurve* historyCurve = new RimSummaryCurve();
historyCurve->setSummaryCaseY( summaryCasesToUse );
historyCurve->setSummaryAddressYAndApplyInterpolation( historyAddr );
return historyCurve;
return createCurve( summaryCasesToUse, historyAddr );
}
return nullptr;
@@ -418,13 +367,22 @@ void RicSummaryPlotFeatureImpl::createSummaryPlotsFromArgumentLine( const QStrin
if ( isSinglePlot )
{
RimSummaryPlot* newPlot = createSummaryPlotFromAddresses( sumPlotColl,
summaryCasesToUse,
ensemble,
summaryAddressFilters,
addHistoryCurves,
ensembleColoringStyle,
ensembleColoringParameter );
RimSummaryPlot* newPlot = nullptr;
if ( ensemble )
{
newPlot = createSummaryPlotForEnsemble( sumPlotColl,
summaryCasesToUse,
ensemble,
summaryAddressFilters,
addHistoryCurves,
ensembleColoringStyle,
ensembleColoringParameter );
}
else
{
newPlot =
createSummaryPlotForCases( sumPlotColl, summaryCasesToUse, summaryAddressFilters, addHistoryCurves );
}
lastPlotCreated = newPlot;
@@ -597,14 +555,13 @@ void RicSummaryPlotFeatureImpl::createSummaryPlotsFromArgumentLine( const QStrin
}
}
RimSummaryPlot*
RicSummaryPlotFeatureImpl::createSummaryPlotFromAddresses( RimSummaryPlotCollection* sumPlotColl,
const std::vector<RimSummaryCase*>& summaryCasesToUse,
RimSummaryCaseCollection* ensemble,
QStringList summaryAddressFilters,
bool addHistoryCurves,
EnsembleColoringType ensembleColoringStyle,
QString ensembleColoringParameter )
RimSummaryPlot* RicSummaryPlotFeatureImpl::createSummaryPlotForEnsemble( RimSummaryPlotCollection* sumPlotColl,
const std::vector<RimSummaryCase*>& summaryCasesToUse,
RimSummaryCaseCollection* ensemble,
QStringList summaryAddressFilters,
bool addHistoryCurves,
EnsembleColoringType ensembleColoringStyle,
QString ensembleColoringParameter )
{
RimSummaryPlot* newPlot = sumPlotColl->createSummaryPlotWithAutoTitle();
@@ -615,25 +572,10 @@ RimSummaryPlot*
for ( const auto& addr : filteredAdressesFromCases )
{
RimEnsembleCurveSet* curveSet = new RimEnsembleCurveSet();
curveSet->setSummaryCaseCollection( ensemble );
curveSet->setSummaryAddress( addr );
if ( ensembleColoringStyle == EnsembleColoringType::PARAMETER ||
ensembleColoringStyle == EnsembleColoringType::LOG_PARAMETER )
{
curveSet->setColorMode( RimEnsembleCurveSet::ColorMode::BY_ENSEMBLE_PARAM );
curveSet->setEnsembleParameter( ensembleColoringParameter );
if ( ensembleColoringStyle == EnsembleColoringType::LOG_PARAMETER )
{
curveSet->legendConfig()->setMappingMode( RimRegularLegendConfig::MappingType::LOG10_CONTINUOUS );
}
}
auto curveSet = createCurveSet( ensemble, addr, ensembleColoringStyle, ensembleColoringParameter );
newPlot->ensembleCurveSetCollection()->addCurveSet( curveSet );
if ( addHistoryCurves )
if ( addHistoryCurves && !summaryCasesToUse.empty() )
{
RimSummaryCurve* historyCurve = createHistoryCurve( addr, summaryCasesToUse[0] );
@@ -641,18 +583,54 @@ RimSummaryPlot*
}
}
}
else
newPlot->applyDefaultCurveAppearances();
return newPlot;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEnsembleCurveSet* RicSummaryPlotFeatureImpl::createCurveSet( RimSummaryCaseCollection* ensemble,
const RifEclipseSummaryAddress& addr,
EnsembleColoringType ensembleColoringStyle,
QString ensembleColoringParameter )
{
auto curveSet = new RimEnsembleCurveSet();
curveSet->setSummaryCaseCollection( ensemble );
curveSet->setSummaryAddress( addr );
if ( ensembleColoringStyle == EnsembleColoringType::PARAMETER ||
ensembleColoringStyle == EnsembleColoringType::LOG_PARAMETER )
{
for ( RimSummaryCase* sumCase : summaryCasesToUse )
curveSet->setColorMode( RimEnsembleCurveSet::ColorMode::BY_ENSEMBLE_PARAM );
curveSet->setEnsembleParameter( ensembleColoringParameter );
if ( ensembleColoringStyle == EnsembleColoringType::LOG_PARAMETER )
{
RicSummaryPlotFeatureImpl::addCurvesFromAddressFiltersToPlot( summaryAddressFilters,
newPlot,
sumCase,
addHistoryCurves );
addHistoryCurves = false;
curveSet->legendConfig()->setMappingMode( RimRegularLegendConfig::MappingType::LOG10_CONTINUOUS );
}
}
return curveSet;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryPlot* RicSummaryPlotFeatureImpl::createSummaryPlotForCases( RimSummaryPlotCollection* sumPlotColl,
const std::vector<RimSummaryCase*>& summaryCasesToUse,
QStringList summaryAddressFilters,
bool addHistoryCurves /*= false */ )
{
RimSummaryPlot* newPlot = sumPlotColl->createSummaryPlotWithAutoTitle();
for ( RimSummaryCase* sumCase : summaryCasesToUse )
{
RicSummaryPlotFeatureImpl::addCurvesFromAddressFiltersToPlot( summaryAddressFilters, newPlot, sumCase, addHistoryCurves );
}
newPlot->applyDefaultCurveAppearances();
return newPlot;
@@ -681,20 +659,7 @@ std::vector<RimSummaryPlot*> RicSummaryPlotFeatureImpl::createMultipleSummaryPlo
std::vector<RimEnsembleCurveSet*> createdEnsembleCurveSets;
if ( ensemble )
{
RimEnsembleCurveSet* curveSet = new RimEnsembleCurveSet();
curveSet->setSummaryCaseCollection( ensemble );
curveSet->setSummaryAddress( addr );
if ( ensembleColoringStyle == EnsembleColoringType::PARAMETER ||
ensembleColoringStyle == EnsembleColoringType::LOG_PARAMETER )
{
curveSet->setColorMode( RimEnsembleCurveSet::ColorMode::BY_ENSEMBLE_PARAM );
curveSet->setEnsembleParameter( ensembleColoringParameter );
if ( ensembleColoringStyle == EnsembleColoringType::LOG_PARAMETER )
{
curveSet->legendConfig()->setMappingMode( RimRegularLegendConfig::MappingType::LOG10_CONTINUOUS );
}
}
auto curveSet = createCurveSet( ensemble, addr, ensembleColoringStyle, ensembleColoringParameter );
createdEnsembleCurveSets.push_back( curveSet );
}
else
@@ -704,9 +669,7 @@ std::vector<RimSummaryPlot*> RicSummaryPlotFeatureImpl::createMultipleSummaryPlo
const std::set<RifEclipseSummaryAddress>& allAddrsInCase = sumCase->summaryReader()->allResultAddresses();
if ( allAddrsInCase.count( addr ) )
{
RimSummaryCurve* newCurve = new RimSummaryCurve();
newCurve->setSummaryCaseY( sumCase );
newCurve->setSummaryAddressYAndApplyInterpolation( addr );
auto* newCurve = createCurve( sumCase, addr );
createdCurves.push_back( newCurve );
}
}
@@ -742,24 +705,21 @@ std::vector<RimSummaryPlot*> RicSummaryPlotFeatureImpl::createMultipleSummaryPlo
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryPlotFeatureImpl::splitAddressFiltersInGridAndSummary( RimSummaryCase* summaryBaseCases,
const QStringList& allCurveAddressFilters,
void RicSummaryPlotFeatureImpl::splitAddressFiltersInGridAndSummary( RimSummaryCase* summaryCase,
const QStringList& addressFilters,
QStringList* summaryAddressFilters,
QStringList* gridResultAddressFilters )
{
if ( summaryBaseCases )
if ( summaryCase )
{
const std::set<RifEclipseSummaryAddress>& addrs = summaryBaseCases->summaryReader()->allResultAddresses();
std::vector<bool> usedFilters;
std::set<RifEclipseSummaryAddress> setToInsertFilteredAddressesIn;
filteredSummaryAdressesFromCase( allCurveAddressFilters, addrs, &setToInsertFilteredAddressesIn, &usedFilters );
const std::set<RifEclipseSummaryAddress>& addrs = summaryCase->summaryReader()->allResultAddresses();
QRegularExpression gridAddressPattern( "^[A-Z]+:[0-9]+,[0-9]+,[0-9]+$" );
for ( int filterIdx = 0; filterIdx < allCurveAddressFilters.size(); ++filterIdx )
for ( int filterIdx = 0; filterIdx < addressFilters.size(); ++filterIdx )
{
const QString& address = allCurveAddressFilters[filterIdx];
if ( usedFilters[filterIdx] )
const QString& address = addressFilters[filterIdx];
if ( hasFilterAnyMatch( address, addrs ) )
{
summaryAddressFilters->push_back( address );
}
@@ -791,7 +751,7 @@ std::set<RifEclipseSummaryAddress>
const std::set<RifEclipseSummaryAddress>& addrs = sumCase->summaryReader()->allResultAddresses();
std::vector<bool> usedFilters;
filteredSummaryAdressesFromCase( summaryAddressFilters, addrs, &filteredAdressesFromCases, &usedFilters );
insertFilteredAddressesInSet( summaryAddressFilters, addrs, &filteredAdressesFromCases, &usedFilters );
for ( size_t cfIdx = 0; cfIdx < usedFilters.size(); ++cfIdx )
{
@@ -805,6 +765,33 @@ std::set<RifEclipseSummaryAddress>
return filteredAdressesFromCases;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicSummaryPlotFeatureImpl::hasFilterAnyMatch( const QString& curveFilter,
const std::set<RifEclipseSummaryAddress>& summaryAddresses )
{
for ( const auto& addr : summaryAddresses )
{
if ( addr.isUiTextMatchingFilterText( curveFilter ) ) return true;
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryCurve* RicSummaryPlotFeatureImpl::createCurve( RimSummaryCase* summaryCase,
const RifEclipseSummaryAddress& address )
{
auto curve = new RimSummaryCurve();
curve->setSummaryCaseY( summaryCase );
curve->setSummaryAddressYAndApplyInterpolation( address );
return curve;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -823,7 +810,7 @@ std::vector<RimSummaryCurve*> RicSummaryPlotFeatureImpl::addCurvesFromAddressFil
const std::set<RifEclipseSummaryAddress>& addrs = summaryCase->summaryReader()->allResultAddresses();
std::vector<bool> usedFilters;
filteredSummaryAdressesFromCase( curveFilters, addrs, &curveAddressesToUse, &usedFilters );
insertFilteredAddressesInSet( curveFilters, addrs, &curveAddressesToUse, &usedFilters );
for ( size_t cfIdx = 0; cfIdx < usedFilters.size(); ++cfIdx )
{
@@ -857,14 +844,10 @@ std::vector<RimSummaryCurve*> RicSummaryPlotFeatureImpl::addCurvesFromAddressFil
for ( const auto& addr : curveAddressesToUse )
{
RimSummaryCurve* newCurve = new RimSummaryCurve();
plot->addCurveNoUpdate( newCurve );
if ( summaryCase )
{
newCurve->setSummaryCaseY( summaryCase );
}
newCurve->setSummaryAddressYAndApplyInterpolation( addr );
auto* newCurve = createCurve( summaryCase, addr );
createdCurves.push_back( newCurve );
plot->addCurveNoUpdate( newCurve );
}
return createdCurves;
@@ -873,11 +856,10 @@ std::vector<RimSummaryCurve*> RicSummaryPlotFeatureImpl::addCurvesFromAddressFil
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryPlotFeatureImpl::filteredSummaryAdressesFromCase(
const QStringList& curveFilters,
const std::set<RifEclipseSummaryAddress>& allAddressesInCase,
std::set<RifEclipseSummaryAddress>* setToInsertFilteredAddressesIn,
std::vector<bool>* usedFilters )
void RicSummaryPlotFeatureImpl::insertFilteredAddressesInSet( const QStringList& curveFilters,
const std::set<RifEclipseSummaryAddress>& allAddressesInCase,
std::set<RifEclipseSummaryAddress>* setToInsertFilteredAddressesIn,
std::vector<bool>* usedFilters )
{
int curveFilterCount = curveFilters.size();

View File

@@ -34,6 +34,7 @@ class RimSummaryPlot;
class RimSummaryCase;
class RimSummaryCaseCollection;
class RimSummaryPlotCollection;
class RimEnsembleCurveSet;
class QStringList;
@@ -48,7 +49,6 @@ public:
NONE
};
static RimSummaryCurve* addDefaultCurveToPlot( RimSummaryPlot* plot, RimSummaryCase* summaryCase );
static std::vector<RimSummaryCurve*> addDefaultCurvesToPlot( RimSummaryPlot* plot, RimSummaryCase* summaryCase );
static void ensureAtLeastOnePlot( RimSummaryPlotCollection* summaryPlotCollection, RimSummaryCase* summaryCase );
static caf::PdmObject* createDefaultSummaryPlot( RimSummaryCase* summaryCase );
@@ -56,13 +56,18 @@ public:
static void createSummaryPlotsFromArgumentLine( const QStringList& arguments );
static RimSummaryPlot*
createSummaryPlotFromAddresses( RimSummaryPlotCollection* sumPlotColl,
const std::vector<RimSummaryCase*>& summaryCasesToUse,
RimSummaryCaseCollection* ensemble,
QStringList summaryAddressFilters,
bool addHistoryCurves = false,
EnsembleColoringType ensembleColoringStyle = EnsembleColoringType::NONE,
QString ensembleColoringParameter = "" );
createSummaryPlotForEnsemble( RimSummaryPlotCollection* sumPlotColl,
const std::vector<RimSummaryCase*>& summaryCasesToUse,
RimSummaryCaseCollection* ensemble,
QStringList summaryAddressFilters,
bool addHistoryCurves = false,
EnsembleColoringType ensembleColoringStyle = EnsembleColoringType::NONE,
QString ensembleColoringParameter = "" );
static RimSummaryPlot* createSummaryPlotForCases( RimSummaryPlotCollection* sumPlotColl,
const std::vector<RimSummaryCase*>& summaryCasesToUse,
QStringList summaryAddressFilters,
bool addHistoryCurves = false );
static std::vector<RimSummaryPlot*>
createMultipleSummaryPlotsFromAddresses( RimSummaryPlotCollection* sumPlotColl,
@@ -73,14 +78,25 @@ public:
EnsembleColoringType ensembleColoringStyle = EnsembleColoringType::NONE,
QString ensembleColoringParameter = "" );
static void filteredSummaryAdressesFromCase( const QStringList& curveFilters,
const std::set<RifEclipseSummaryAddress>& allAddressesInCase,
std::set<RifEclipseSummaryAddress>* setToInsertFilteredAddressesIn,
std::vector<bool>* usedFilters );
static void insertFilteredAddressesInSet( const QStringList& curveFilters,
const std::set<RifEclipseSummaryAddress>& allAddressesInCase,
std::set<RifEclipseSummaryAddress>* setToInsertFilteredAddressesIn,
std::vector<bool>* usedFilters );
static QString summaryPlotCommandLineHelpText();
private:
static RimEnsembleCurveSet* createCurveSet( RimSummaryCaseCollection* ensemble,
const RifEclipseSummaryAddress& addr,
EnsembleColoringType ensembleColoringStyle,
QString ensembleColoringParameter );
static RimSummaryCurve* createCurve( RimSummaryCase* summaryCase, const RifEclipseSummaryAddress& address );
static bool hasFilterAnyMatch( const QString& curveFilter, const std::set<RifEclipseSummaryAddress>& summaryAddresses );
static RimSummaryCurve* createHistoryCurve( const RifEclipseSummaryAddress& addr, RimSummaryCase* summaryCasesToUse );
static std::vector<RimSummaryCurve*> addCurvesFromAddressFiltersToPlot( const QStringList& curveFilters,
RimSummaryPlot* plot,
RimSummaryCase* summaryCase,
@@ -90,8 +106,8 @@ private:
applySummaryAddressFiltersToCases( const std::vector<RimSummaryCase*>& summaryCasesToUse,
const QStringList& summaryAddressFilters );
static void splitAddressFiltersInGridAndSummary( RimSummaryCase* summaryBaseCases,
const QStringList& allCurveAddressFilters,
static void splitAddressFiltersInGridAndSummary( RimSummaryCase* summaryCase,
const QStringList& addressFilters,
QStringList* summaryAddressFilters,
QStringList* gridResultAddressFilters );
};