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,7 +44,7 @@ public:
void clear();
std::set<std::string> quantities() const;
std::vector<std::string> quantities() const;
std::set<std::string> quantityNamesWithHistory() const;
std::set<std::string> quantityNamesNoHistory() 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,7 +40,7 @@ public:
bool isSegmentInTitle() const override;
bool isCompletionInTitle() const override;
std::set<std::string> vectorNames() const override;
std::vector<std::string> vectorNames() const override;
QString caseName() const override;
std::string titleVectorName() const override;

View File

@ -48,7 +48,7 @@ public:
virtual bool isSegmentInTitle() const = 0;
virtual bool isCompletionInTitle() const = 0;
virtual std::set<std::string> vectorNames() const = 0;
virtual std::vector<std::string> vectorNames() const = 0;
virtual QString caseName() const = 0;
virtual std::string titleVectorName() 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;
@ -308,7 +307,6 @@ private:
RimSummaryCase* summaryCase,
const RifEclipseSummaryAddress& addressX,
RimSummaryCase* summaryCaseX );
RimEnsembleCurveSet* addNewEnsembleCurve( const RiaSummaryCurveAddress& curveAddress, RimSummaryCaseCollection* ensemble );
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,7 +61,7 @@ public:
bool isSegmentInTitle() const override;
bool isCompletionInTitle() const override;
std::set<std::string> vectorNames() const override;
std::vector<std::string> vectorNames() const override;
QString caseName() const override;
std::string titleVectorName() const override;