From d06a6f5121da83fda721672aca71d265a606f555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Jensen?= Date: Thu, 28 Jun 2018 15:15:25 +0200 Subject: [PATCH] #3120 Summary plot export. Always include vector, case and optionally ensemble for summary curves in export data column headers --- .../ProjectDataModel/RimPlotCurve.h | 1 + .../Summary/RimSummaryCurve.cpp | 31 +++++++++++++++++++ .../Summary/RimSummaryCurve.h | 2 ++ .../Summary/RimSummaryPlot.cpp | 8 ++--- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimPlotCurve.h b/ApplicationCode/ProjectDataModel/RimPlotCurve.h index a5261dbe51..247929439f 100644 --- a/ApplicationCode/ProjectDataModel/RimPlotCurve.h +++ b/ApplicationCode/ProjectDataModel/RimPlotCurve.h @@ -94,6 +94,7 @@ public: void updateCurveNameNoLegendUpdate(); QString curveName() const { return m_curveName; } + virtual QString curveExportDescription() const { return m_curveName; } void updateCurveVisibility(bool updateParentPlot); void updateLegendEntryVisibilityAndPlotLegend(); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp index 1b2b2fa14b..e7c1534d3c 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.cpp @@ -26,10 +26,13 @@ #include "RiaTimeHistoryCurveMerger.h" #include "RimEclipseResultCase.h" +#include "RimEnsembleCurveSet.h" +#include "RimEnsembleCurveSetCollection.h" #include "RimProject.h" #include "RimSummaryAddress.h" #include "RimSummaryCalculationCollection.h" #include "RimSummaryCase.h" +#include "RimSummaryCaseCollection.h" #include "RimSummaryCrossPlot.h" #include "RimSummaryCurveAutoName.h" #include "RimSummaryCurveCollection.h" @@ -635,6 +638,34 @@ void RimSummaryCurve::applyCurveAutoNameSettings(const RimSummaryCurveAutoName& m_curveNameConfig->applySettings(autoNameSettings); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RimSummaryCurve::curveExportDescription() const +{ + auto address = m_yValuesCurveVariable->address(); + + RimEnsembleCurveSetCollection* coll; + firstAncestorOrThisOfType(coll); + + auto curveSet = coll ? coll->findRimCurveSetFromQwtCurve(m_qwtPlotCurve) : nullptr; + auto group = curveSet ? curveSet->summaryCaseCollection() : nullptr; + + if (group && group->isEnsemble()) + { + return QString("%1.%2.%3") + .arg(QString::fromStdString(address.uiText())) + .arg(m_yValuesSummaryCase->caseName()) + .arg(group->name()); + } + else + { + return QString("%1.%2") + .arg(QString::fromStdString(address.uiText())) + .arg(m_yValuesSummaryCase->caseName()); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.h index 4517e8f889..aa0b2bcc81 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurve.h @@ -74,6 +74,8 @@ public: void updateQwtPlotAxis(); void applyCurveAutoNameSettings(const RimSummaryCurveAutoName& autoNameSettings); + virtual QString curveExportDescription() const override; + protected: // RimPlotCurve overrides virtual QString createCurveAutoName() override; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index 8cd02081d3..9c02401945 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -1642,7 +1642,7 @@ void populateTimeHistoryCurvesData(std::vector curves, if (curveCaseName == curvesData->caseNames[i]) casePosInList = i; } - CurveData curveData = { curve->curveName(), RifEclipseSummaryAddress(), curve->yValues() }; + CurveData curveData = { curve->curveExportDescription(), RifEclipseSummaryAddress(), curve->yValues() }; if (casePosInList == cvf::UNDEFINED_SIZE_T) { @@ -1674,7 +1674,7 @@ void populateAsciiDataCurvesData(std::vector curves, CurvesD size_t casePosInList = cvf::UNDEFINED_SIZE_T; - CurveData curveData = { curve->curveName(), RifEclipseSummaryAddress(), curve->yValues() }; + CurveData curveData = { curve->curveExportDescription(), RifEclipseSummaryAddress(), curve->yValues() }; if (casePosInList == cvf::UNDEFINED_SIZE_T) { @@ -1711,7 +1711,7 @@ void populateSummaryCurvesData(std::vector curves, CurvesData* if (curveCaseName == curvesData->caseNames[i]) casePosInList = i; } - CurveData curveData = { curve->curveName(), curve->summaryAddressY(), curve->valuesY() }; + CurveData curveData = { curve->curveExportDescription(), curve->summaryAddressY(), curve->valuesY() }; if (casePosInList == cvf::UNDEFINED_SIZE_T) { @@ -1839,7 +1839,7 @@ void appendToExportData(QString& out, const std::vector& curvesData) { for (size_t j = 0; j < data.allCurveData[i].size(); j++) { - out += "\t" + data.allCurveData[i][j].name + " (" + data.caseNames[i] + ")"; + out += "\t" + data.allCurveData[i][j].name; } } out += "\n";