From 6e41ef8af91f24d14b74d8b93924381a4ccbf3b0 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Mon, 9 Oct 2023 10:24:28 +0200 Subject: [PATCH] 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 --- .../Application/Tools/RiaSummaryAddressAnalyzer.cpp | 13 +++++++++---- .../Application/Tools/RiaSummaryAddressAnalyzer.h | 8 ++++---- .../Summary/RimMultipleSummaryPlotNameHelper.cpp | 6 +++--- .../Summary/RimMultipleSummaryPlotNameHelper.h | 4 ++-- .../ProjectDataModel/Summary/RimSummaryNameHelper.h | 4 ++-- .../ProjectDataModel/Summary/RimSummaryPlot.h | 12 +++++------- .../Summary/RimSummaryPlotNameHelper.cpp | 2 +- .../Summary/RimSummaryPlotNameHelper.h | 4 ++-- 8 files changed, 28 insertions(+), 25 deletions(-) diff --git a/ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.cpp b/ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.cpp index e293c82f03..d045e62f8d 100644 --- a/ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.cpp +++ b/ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.cpp @@ -70,15 +70,16 @@ void RiaSummaryAddressAnalyzer::appendAddresses( const std::vector RiaSummaryAddressAnalyzer::quantities() const +std::vector 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() ) diff --git a/ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.h b/ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.h index 3b8d088389..342d2a178b 100644 --- a/ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.h +++ b/ApplicationLibCode/Application/Tools/RiaSummaryAddressAnalyzer.h @@ -44,9 +44,9 @@ public: void clear(); - std::set quantities() const; - std::set quantityNamesWithHistory() const; - std::set quantityNamesNoHistory() const; + std::vector quantities() const; + std::set quantityNamesWithHistory() const; + std::set quantityNamesNoHistory() const; bool isSingleQuantityIgnoreHistory() const; @@ -93,7 +93,7 @@ private: static std::vector> valuesInMap( const std::multimap& map ); private: - std::set m_quantities; + std::vector m_quantities; mutable std::set m_quantitiesWithMatchingHistory; mutable std::set m_quantitiesNoMatchingHistory; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimMultipleSummaryPlotNameHelper.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimMultipleSummaryPlotNameHelper.cpp index 81c11540f6..6a2b987ccc 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimMultipleSummaryPlotNameHelper.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimMultipleSummaryPlotNameHelper.cpp @@ -127,14 +127,14 @@ bool RimMultiSummaryPlotNameHelper::isCompletionInTitle() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::set RimMultiSummaryPlotNameHelper::vectorNames() const +std::vector RimMultiSummaryPlotNameHelper::vectorNames() const { - std::set allNames; + std::vector 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; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimMultipleSummaryPlotNameHelper.h b/ApplicationLibCode/ProjectDataModel/Summary/RimMultipleSummaryPlotNameHelper.h index 62039afd7c..641e4da947 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimMultipleSummaryPlotNameHelper.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimMultipleSummaryPlotNameHelper.h @@ -40,8 +40,8 @@ public: bool isSegmentInTitle() const override; bool isCompletionInTitle() const override; - std::set vectorNames() const override; - QString caseName() const override; + std::vector vectorNames() const override; + QString caseName() const override; std::string titleVectorName() const override; std::string titleWellName() const override; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryNameHelper.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryNameHelper.h index 5759db3e6f..f2c6b48680 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryNameHelper.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryNameHelper.h @@ -48,8 +48,8 @@ public: virtual bool isSegmentInTitle() const = 0; virtual bool isCompletionInTitle() const = 0; - virtual std::set vectorNames() const = 0; - virtual QString caseName() const = 0; + virtual std::vector vectorNames() const = 0; + virtual QString caseName() const = 0; virtual std::string titleVectorName() const = 0; virtual std::string titleWellName() const = 0; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.h index 57001ce9e9..af71a8722c 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlot.h @@ -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 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 ); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotNameHelper.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotNameHelper.cpp index e51d143c72..50123b51a6 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotNameHelper.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotNameHelper.cpp @@ -193,7 +193,7 @@ bool RimSummaryPlotNameHelper::isCompletionInTitle() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::set RimSummaryPlotNameHelper::vectorNames() const +std::vector RimSummaryPlotNameHelper::vectorNames() const { return m_analyzer->quantities(); } diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotNameHelper.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotNameHelper.h index a6fb2a42d7..0c86e67192 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotNameHelper.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotNameHelper.h @@ -61,8 +61,8 @@ public: bool isSegmentInTitle() const override; bool isCompletionInTitle() const override; - std::set vectorNames() const override; - QString caseName() const override; + std::vector vectorNames() const override; + QString caseName() const override; std::string titleVectorName() const override; std::string titleWellName() const override;