Use vector instead of set to make to avoid sorting of quantities

The plot title for cross plots should use insertion order to make sure the title is displayed correctly
This commit is contained in:
Magne Sjaastad 2023-10-09 10:24:28 +02:00
parent 660051954a
commit 6e41ef8af9
8 changed files with 28 additions and 25 deletions

View File

@ -70,15 +70,16 @@ void RiaSummaryAddressAnalyzer::appendAddresses( const std::vector<RiaSummaryCur
for ( const auto& adr : addresses )
{
analyzeSingleAddress( adr.summaryAddressX() );
// Use Y address first, to make sure the ordering of cross plot names is correct
analyzeSingleAddress( adr.summaryAddressY() );
analyzeSingleAddress( adr.summaryAddressX() );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<std::string> RiaSummaryAddressAnalyzer::quantities() const
std::vector<std::string> RiaSummaryAddressAnalyzer::quantities() const
{
return m_quantities;
}
@ -445,7 +446,7 @@ void RiaSummaryAddressAnalyzer::computeQuantityNamesWithHistory() const
{
std::string correspondingHistoryCurve = correspondingHistorySummaryCurveName( s );
if ( m_quantities.find( correspondingHistoryCurve ) != m_quantities.end() )
if ( std::find( m_quantities.begin(), m_quantities.end(), correspondingHistoryCurve ) != m_quantities.end() )
{
// Insert the curve name without H
if ( RiaStdStringTools::endsWith( s, historyIdentifier ) )
@ -488,7 +489,11 @@ void RiaSummaryAddressAnalyzer::analyzeSingleAddress( const RifEclipseSummaryAdd
if ( !address.vectorName().empty() )
{
m_quantities.insert( address.vectorName() );
// The ordering of the quantities is used when creating titles of plots
if ( std::find( m_quantities.begin(), m_quantities.end(), address.vectorName() ) == m_quantities.end() )
{
m_quantities.push_back( address.vectorName() );
}
}
if ( !address.groupName().empty() )

View File

@ -44,9 +44,9 @@ public:
void clear();
std::set<std::string> quantities() const;
std::set<std::string> quantityNamesWithHistory() const;
std::set<std::string> quantityNamesNoHistory() const;
std::vector<std::string> quantities() const;
std::set<std::string> quantityNamesWithHistory() const;
std::set<std::string> quantityNamesNoHistory() const;
bool isSingleQuantityIgnoreHistory() const;
@ -93,7 +93,7 @@ private:
static std::vector<std::vector<RifEclipseSummaryAddress>> valuesInMap( const std::multimap<int, RifEclipseSummaryAddress>& map );
private:
std::set<std::string> m_quantities;
std::vector<std::string> m_quantities;
mutable std::set<std::string> m_quantitiesWithMatchingHistory;
mutable std::set<std::string> m_quantitiesNoMatchingHistory;

View File

@ -127,14 +127,14 @@ bool RimMultiSummaryPlotNameHelper::isCompletionInTitle() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<std::string> RimMultiSummaryPlotNameHelper::vectorNames() const
std::vector<std::string> RimMultiSummaryPlotNameHelper::vectorNames() const
{
std::set<std::string> allNames;
std::vector<std::string> allNames;
for ( auto nameHelper : m_nameHelpers )
{
auto nameHelperVectorNames = nameHelper->vectorNames();
allNames.insert( nameHelperVectorNames.begin(), nameHelperVectorNames.end() );
allNames.insert( allNames.end(), nameHelperVectorNames.begin(), nameHelperVectorNames.end() );
}
return allNames;

View File

@ -40,8 +40,8 @@ public:
bool isSegmentInTitle() const override;
bool isCompletionInTitle() const override;
std::set<std::string> vectorNames() const override;
QString caseName() const override;
std::vector<std::string> vectorNames() const override;
QString caseName() const override;
std::string titleVectorName() const override;
std::string titleWellName() const override;

View File

@ -48,8 +48,8 @@ public:
virtual bool isSegmentInTitle() const = 0;
virtual bool isCompletionInTitle() const = 0;
virtual std::set<std::string> vectorNames() const = 0;
virtual QString caseName() const = 0;
virtual std::vector<std::string> vectorNames() const = 0;
virtual QString caseName() const = 0;
virtual std::string titleVectorName() const = 0;
virtual std::string titleWellName() const = 0;

View File

@ -207,6 +207,7 @@ public:
RimPlotAxisPropertiesInterface* axisPropertiesForPlotAxis( RiuPlotAxis plotAxis ) const;
RimPlotAxisProperties* addNewAxisProperties( RiaDefines::PlotAxis, const QString& name );
RimPlotAxisProperties* addNewAxisProperties( RiuPlotAxis plotAxis, const QString& name );
void findOrAssignPlotAxisX( RimSummaryCurve* curve );
std::vector<RimPlotCurve*> visibleCurvesForLegend() override;
@ -240,8 +241,6 @@ private:
void connectCurveToPlot( RimSummaryCurve* curve, bool update, bool autoAssignPlotAxis );
RimPlotAxisProperties* addNewAxisProperties( RiuPlotAxis plotAxis, const QString& name );
protected:
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
void childFieldChangedByUi( const caf::PdmFieldHandle* changedChildField ) override;
@ -304,11 +303,10 @@ private:
void assignYPlotAxis( RimSummaryCurve* curve );
void assignXPlotAxis( RimSummaryCurve* curve );
RimSummaryCurve* addNewCurve( const RifEclipseSummaryAddress& address,
RimSummaryCase* summaryCase,
const RifEclipseSummaryAddress& addressX,
RimSummaryCase* summaryCaseX );
RimEnsembleCurveSet* addNewEnsembleCurve( const RiaSummaryCurveAddress& curveAddress, RimSummaryCaseCollection* ensemble );
RimSummaryCurve* addNewCurve( const RifEclipseSummaryAddress& address,
RimSummaryCase* summaryCase,
const RifEclipseSummaryAddress& addressX,
RimSummaryCase* summaryCaseX );
void updateStackedCurveData();
bool updateStackedCurveDataForAxis( RiuPlotAxis plotAxis );

View File

@ -193,7 +193,7 @@ bool RimSummaryPlotNameHelper::isCompletionInTitle() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<std::string> RimSummaryPlotNameHelper::vectorNames() const
std::vector<std::string> RimSummaryPlotNameHelper::vectorNames() const
{
return m_analyzer->quantities();
}

View File

@ -61,8 +61,8 @@ public:
bool isSegmentInTitle() const override;
bool isCompletionInTitle() const override;
std::set<std::string> vectorNames() const override;
QString caseName() const override;
std::vector<std::string> vectorNames() const override;
QString caseName() const override;
std::string titleVectorName() const override;
std::string titleWellName() const override;