#8773 Source Stepping : Realization cases are missing in some cases

This commit is contained in:
Magne Sjaastad 2022-04-06 08:43:02 +02:00
parent 22673c1073
commit 6417daf167
5 changed files with 78 additions and 65 deletions

View File

@ -22,6 +22,9 @@
#include "RiaTextStringTools.h"
#include "RimCaseDisplayNameTools.h"
#include "RimProject.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "cafAppEnum.h"
@ -131,6 +134,54 @@ std::vector<QStringList> RiaEnsembleNameTools::groupFilesByEnsemble( const QStri
return groupedByIteration;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaEnsembleNameTools::uniqueShortNameForEnsembleCase( RimSummaryCase* summaryCase )
{
CAF_ASSERT( summaryCase && summaryCase->ensemble() );
auto ensembleCaseName = summaryCase->nativeCaseName();
auto ensemble = summaryCase->ensemble();
auto summaryCases = ensemble->allSummaryCases();
QStringList summaryFilePaths;
summaryFilePaths.push_back( summaryCase->summaryHeaderFilename() );
for ( auto otherSummaryCase : summaryCases )
{
if ( otherSummaryCase != summaryCase )
{
summaryFilePaths.push_back( otherSummaryCase->summaryHeaderFilename() );
}
}
return RiaEnsembleNameTools::uniqueShortName( summaryCase->summaryHeaderFilename(), summaryFilePaths, ensembleCaseName );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaEnsembleNameTools::uniqueShortNameForSummaryCase( RimSummaryCase* summaryCase )
{
std::set<QString> allAutoShortNames;
std::vector<RimSummaryCase*> allCases;
RimProject::current()->descendantsOfType( allCases );
for ( auto sumCase : allCases )
{
if ( sumCase && sumCase != summaryCase )
{
allAutoShortNames.insert( sumCase->displayCaseName() );
}
}
return RimCaseDisplayNameTools::uniqueShortName( summaryCase->nativeCaseName(),
allAutoShortNames,
RimCaseDisplayNameTools::CASE_SHORT_NAME_LENGTH );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -19,9 +19,12 @@
#pragma once
#include <QString>
#include <map>
#include <vector>
class RimSummaryCase;
//==================================================================================================
//
//==================================================================================================
@ -49,6 +52,9 @@ public:
static std::vector<QStringList> groupFilesByEnsemble( const QStringList& fileNames, EnsembleGroupingMode groupingMode );
static QString uniqueShortNameForEnsembleCase( RimSummaryCase* summaryCase );
static QString uniqueShortNameForSummaryCase( RimSummaryCase* summaryCase );
private:
static QStringList findUniqueEnsembleNames( const QStringList& fileNames,
const std::vector<QStringList>& fileNameComponents,

View File

@ -304,58 +304,6 @@ void RimSummaryCase::initAfterRead()
refreshMetaData();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimSummaryCase::uniqueShortNameForEnsembleCase( RimSummaryCase* summaryCase )
{
CAF_ASSERT( summaryCase && summaryCase->ensemble() );
QString ensembleCaseName = summaryCase->caseName();
auto ensemble = summaryCase->ensemble();
std::vector<RimSummaryCase*> summaryCases = ensemble->allSummaryCases();
QRegularExpression trimRe( "^[^a-zA-Z0-9]+" );
QStringList summaryFilePaths;
summaryFilePaths.push_back( summaryCase->summaryHeaderFilename() );
for ( auto otherSummaryCase : summaryCases )
{
if ( otherSummaryCase != summaryCase )
{
summaryFilePaths.push_back( otherSummaryCase->summaryHeaderFilename() );
}
}
return RiaEnsembleNameTools::uniqueShortName( summaryCase->summaryHeaderFilename(), summaryFilePaths, ensembleCaseName );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimSummaryCase::uniqueShortNameForSummaryCase( RimSummaryCase* summaryCase )
{
std::set<QString> allAutoShortNames;
std::vector<RimSummaryCase*> allCases;
RimProject::current()->descendantsOfType( allCases );
for ( RimSummaryCase* sumCase : allCases )
{
if ( sumCase && sumCase != summaryCase )
{
allAutoShortNames.insert( sumCase->displayCaseName() );
}
}
return RimCaseDisplayNameTools::uniqueShortName( summaryCase->caseName(),
allAutoShortNames,
RimCaseDisplayNameTools::CASE_SHORT_NAME_LENGTH );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -369,11 +317,11 @@ void RimSummaryCase::updateAutoShortName()
{
if ( ensemble() )
{
m_displayName = RimSummaryCase::uniqueShortNameForEnsembleCase( this );
m_displayName = RiaEnsembleNameTools::uniqueShortNameForEnsembleCase( this );
}
else
{
m_displayName = RimSummaryCase::uniqueShortNameForSummaryCase( this );
m_displayName = RiaEnsembleNameTools::uniqueShortNameForSummaryCase( this );
}
}
updateTreeItemName();

View File

@ -95,9 +95,6 @@ protected:
void initAfterRead() override;
private:
static QString uniqueShortNameForEnsembleCase( RimSummaryCase* summaryCase );
static QString uniqueShortNameForSummaryCase( RimSummaryCase* summaryCase );
void buildChildNodes();
protected:

View File

@ -18,6 +18,7 @@
#include "RimSummaryPlotSourceStepping.h"
#include "RiaEnsembleNameTools.h"
#include "RiaGuiApplication.h"
#include "RiaStdStringTools.h"
#include "RiaSummaryAddressAnalyzer.h"
@ -58,8 +59,8 @@ RimSummaryPlotSourceStepping::RimSummaryPlotSourceStepping()
CAF_PDM_InitField( &m_includeEnsembleCasesForCaseStepping,
"IncludeEnsembleCasesForCaseStepping",
false,
"Allow Stepping on Ensemble cases" );
true,
"Include Ensemble Cases in Case List" );
CAF_PDM_InitFieldNoDefault( &m_wellName, "WellName", "Well Name" );
CAF_PDM_InitFieldNoDefault( &m_wellGroupName, "GroupName", "Group Name" );
@ -195,21 +196,32 @@ QList<caf::PdmOptionItemInfo>
{
return caf::PdmObject::calculateValueOptions( fieldNeedingOptions, useOptionsOnly );
}
else if ( fieldNeedingOptions == &m_placeholderForLabel )
if ( fieldNeedingOptions == &m_placeholderForLabel )
{
return options;
}
else if ( fieldNeedingOptions == &m_summaryCase )
if ( fieldNeedingOptions == &m_summaryCase )
{
auto summaryCases = RimSummaryPlotSourceStepping::summaryCasesForSourceStepping();
for ( auto sumCase : summaryCases )
{
options.append( caf::PdmOptionItemInfo( sumCase->displayCaseName(), sumCase ) );
if ( sumCase->ensemble() )
{
auto name = sumCase->ensemble()->name() + " : " + sumCase->displayCaseName();
options.append( caf::PdmOptionItemInfo( name, sumCase ) );
}
else
{
options.append( caf::PdmOptionItemInfo( sumCase->displayCaseName(), sumCase ) );
}
}
return options;
}
else if ( fieldNeedingOptions == &m_ensemble )
if ( fieldNeedingOptions == &m_ensemble )
{
RimProject* proj = RimProject::current();
for ( auto ensemble : proj->summaryGroups() )
@ -745,8 +757,7 @@ std::vector<caf::PdmFieldHandle*> RimSummaryPlotSourceStepping::activeFieldsForD
m_summaryCase = *( sumCases.begin() );
fields.push_back( &m_summaryCase );
m_includeEnsembleCasesForCaseStepping.uiCapability()->setUiHidden( false );
fields.push_back( &m_includeEnsembleCasesForCaseStepping );
}
}