mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2658 Ensemble curves. Warning when too many ensemble curves
This commit is contained in:
@@ -21,6 +21,15 @@
|
||||
#include "RifSummaryReaderInterface.h"
|
||||
#include "RimSummaryCase.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiaSummaryCurveDefinition::RiaSummaryCurveDefinition()
|
||||
{
|
||||
m_curveDefinition = std::make_pair(nullptr, RifEclipseSummaryAddress());
|
||||
m_ensemble = nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -64,6 +73,14 @@ bool RiaSummaryCurveDefinition::isEnsembleCurve() const
|
||||
return m_ensemble != nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RiaSummaryCurveDefinition::isValid() const
|
||||
{
|
||||
return m_curveDefinition.first != nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -34,6 +34,7 @@ class RimSummaryCaseCollection;
|
||||
class RiaSummaryCurveDefinition
|
||||
{
|
||||
public:
|
||||
RiaSummaryCurveDefinition();
|
||||
explicit RiaSummaryCurveDefinition(RimSummaryCase* summaryCase,
|
||||
const RifEclipseSummaryAddress& summaryAddress,
|
||||
RimSummaryCaseCollection* emsemble = nullptr);
|
||||
@@ -43,6 +44,8 @@ public:
|
||||
RimSummaryCaseCollection* ensemble() const;
|
||||
bool isEnsembleCurve() const;
|
||||
|
||||
bool isValid() const;
|
||||
|
||||
bool operator < (const RiaSummaryCurveDefinition& other) const;
|
||||
|
||||
// TODO: Consider moving to a separate tools class
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
#include "cafPdmUiPushButtonEditor.h"
|
||||
|
||||
#include <QInputDialog>
|
||||
#include <QMessageBox>
|
||||
|
||||
#include <algorithm>
|
||||
#include <sstream>
|
||||
@@ -65,6 +66,11 @@ CAF_PDM_SOURCE_INIT(RicSummaryCurveCreator, "RicSummaryCurveCreator");
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const QString RicSummaryCurveCreator::CONFIGURATION_NAME = "CurveCreatorCfg";
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Internal functions
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int ensembleCurveCount(const std::set<RiaSummaryCurveDefinition>& allCurveDefs);
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -367,10 +373,14 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(const std::set<RiaSummaryCurveDefinition>& allCurveDefsToDisplay,
|
||||
const std::set<RiaSummaryCurveDefinition>& curveDefsToAdd,
|
||||
const std::set<RimSummaryCurve*>& curvesToDelete)
|
||||
void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(
|
||||
const std::set<RiaSummaryCurveDefinition>& allCurveDefsToDisplay,
|
||||
const std::set<RiaSummaryCurveDefinition>& curveDefsToAdd,
|
||||
const std::set<RimSummaryCurve*>& curvesToDelete)
|
||||
{
|
||||
const size_t ENSEMBLE_CURVE_COUNT_THRESHOLD = 200;
|
||||
static bool warningDisplayed = false;
|
||||
|
||||
RimSummaryCase* prevCase = nullptr;
|
||||
std::set<RiaSummaryCurveDefinition> summaryCurveDefsToDisplay;
|
||||
|
||||
@@ -380,7 +390,8 @@ void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(const std::
|
||||
if (!def.isEnsembleCurve()) summaryCurveDefsToDisplay.insert(def);
|
||||
}
|
||||
|
||||
RimSummaryCurveAppearanceCalculator curveLookCalc(summaryCurveDefsToDisplay, getAllSummaryCaseNames(), getAllSummaryWellNames());
|
||||
RimSummaryCurveAppearanceCalculator curveLookCalc(
|
||||
summaryCurveDefsToDisplay, getAllSummaryCaseNames(), getAllSummaryWellNames());
|
||||
initCurveAppearanceCalculator(curveLookCalc);
|
||||
|
||||
// Delete curves
|
||||
@@ -389,6 +400,8 @@ void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(const std::
|
||||
m_previewPlot->deleteCurve(curve);
|
||||
}
|
||||
|
||||
size_t ensembleCurveCnt = ensembleCurveCount(allCurveDefsToDisplay);
|
||||
|
||||
// Add new curves
|
||||
for (const auto& curveDef : curveDefsToAdd)
|
||||
{
|
||||
@@ -420,6 +433,22 @@ void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(const std::
|
||||
// Set single curve set color
|
||||
size_t colorIndex = m_previewPlot->ensembleCurveSetCollection()->curveSetCount();
|
||||
curveSet->setColor(RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f(colorIndex));
|
||||
|
||||
if (m_previewPlot->ensembleCurveSetCollection()->curveSets().size() > 1 && ensembleCurveCnt > ENSEMBLE_CURVE_COUNT_THRESHOLD)
|
||||
{
|
||||
// Toggle off new curve set and display warning
|
||||
curveSet->showCurves(false);
|
||||
|
||||
if (!warningDisplayed)
|
||||
{
|
||||
QMessageBox mbox;
|
||||
mbox.setIcon(QMessageBox::Icon::Warning);
|
||||
mbox.setInformativeText(
|
||||
"The new curve set is hidden. Too many visible curve sets may lead to poor performance");
|
||||
mbox.exec();
|
||||
warningDisplayed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
curveSet->addCurve(curve);
|
||||
}
|
||||
@@ -911,3 +940,12 @@ void RicSummaryCurveCreator::setInitialCurveVisibility(const RimSummaryPlot* tar
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int ensembleCurveCount(const std::set<RiaSummaryCurveDefinition>& allCurveDefs)
|
||||
{
|
||||
return std::count_if(
|
||||
allCurveDefs.begin(), allCurveDefs.end(), [](const RiaSummaryCurveDefinition& def) { return def.isEnsembleCurve(); });
|
||||
}
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
|
||||
#define OBSERVED_DATA_AVALUE_POSTFIX "_OBSDATA"
|
||||
|
||||
class RimSummaryCase;
|
||||
@@ -107,7 +106,7 @@ private:
|
||||
void proxyEnablePlotAutoTitle(const bool& enable);
|
||||
bool proxyPlotAutoTitle() const;
|
||||
void setInitialCurveVisibility(const RimSummaryPlot* targetPlot);
|
||||
|
||||
|
||||
private:
|
||||
caf::PdmPtrField<RimSummaryPlot*> m_targetPlot;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user