|
|
|
|
@@ -19,24 +19,28 @@
|
|
|
|
|
#include "RimSummaryCurveFilter.h"
|
|
|
|
|
|
|
|
|
|
#include "RiaApplication.h"
|
|
|
|
|
|
|
|
|
|
#include "RifReaderEclipseSummary.h"
|
|
|
|
|
|
|
|
|
|
#include "RigSummaryCaseData.h"
|
|
|
|
|
|
|
|
|
|
#include "RimDefines.h"
|
|
|
|
|
#include "RimEclipseResultCase.h"
|
|
|
|
|
#include "RimProject.h"
|
|
|
|
|
#include "RimSummaryCase.h"
|
|
|
|
|
#include "RimSummaryCurve.h"
|
|
|
|
|
#include "RimSummaryPlot.h"
|
|
|
|
|
#include "RimSummaryPlotCollection.h"
|
|
|
|
|
|
|
|
|
|
#include "RiuLineSegmentQwtPlotCurve.h"
|
|
|
|
|
#include "RiuSummaryQwtPlot.h"
|
|
|
|
|
|
|
|
|
|
#include "WellLogCommands/RicWellLogPlotCurveFeatureImpl.h"
|
|
|
|
|
|
|
|
|
|
#include "cafPdmUiComboBoxEditor.h"
|
|
|
|
|
#include "cafPdmUiListEditor.h"
|
|
|
|
|
#include "cafPdmUiTreeOrdering.h"
|
|
|
|
|
#include "RiuLineSegmentQwtPlotCurve.h"
|
|
|
|
|
#include "qwt_date.h"
|
|
|
|
|
#include "RimSummaryCase.h"
|
|
|
|
|
#include "RigSummaryCaseData.h"
|
|
|
|
|
#include "RimSummaryCurve.h"
|
|
|
|
|
#include "cafPdmUiPushButtonEditor.h"
|
|
|
|
|
#include "WellLogCommands/RicWellLogPlotCurveFeatureImpl.h"
|
|
|
|
|
#include "cafPdmUiTreeOrdering.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QTextStream& operator << (QTextStream& str, const std::vector<RifEclipseSummaryAddress>& sobj)
|
|
|
|
|
@@ -97,7 +101,6 @@ RimSummaryCurveFilter::RimSummaryCurveFilter()
|
|
|
|
|
m_applyButtonField = false;
|
|
|
|
|
m_applyButtonField.uiCapability()->setUiEditorTypeName(caf::PdmUiPushButtonEditor::uiEditorTypeName());
|
|
|
|
|
m_applyButtonField.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
@@ -109,6 +112,30 @@ RimSummaryCurveFilter::~RimSummaryCurveFilter()
|
|
|
|
|
m_curves.deleteAllChildObjects();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
///
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
void RimSummaryCurveFilter::createCurves(const QString& stringFilter)
|
|
|
|
|
{
|
|
|
|
|
RimProject* proj = RiaApplication::instance()->project();
|
|
|
|
|
std::vector<RimSummaryCase*> cases;
|
|
|
|
|
|
|
|
|
|
proj->allSummaryCases(cases);
|
|
|
|
|
|
|
|
|
|
if (cases.size() > 0)
|
|
|
|
|
{
|
|
|
|
|
std::vector<RimSummaryCase*> selectedCases;
|
|
|
|
|
selectedCases.push_back(cases[0]);
|
|
|
|
|
|
|
|
|
|
m_summaryFilter->setCompleteVarStringFilter(stringFilter);
|
|
|
|
|
|
|
|
|
|
std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> > newCurveDefinitions;
|
|
|
|
|
|
|
|
|
|
createSetOfCasesAndResultAdresses(selectedCases, *m_summaryFilter, &newCurveDefinitions);
|
|
|
|
|
|
|
|
|
|
createCurvesFromCurveDefinitions(newCurveDefinitions);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
///
|
|
|
|
|
@@ -165,10 +192,8 @@ QList<caf::PdmOptionItemInfo> RimSummaryCurveFilter::calculateValueOptions(const
|
|
|
|
|
if(useOptionsOnly) *useOptionsOnly = true;
|
|
|
|
|
|
|
|
|
|
return optionList;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
///
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
@@ -185,10 +210,8 @@ void RimSummaryCurveFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrd
|
|
|
|
|
curveVarSelectionGroup->add(&m_uiFilterResultMultiSelection);
|
|
|
|
|
uiOrdering.add(&m_applyButtonField);
|
|
|
|
|
uiOrdering.setForgetRemainingFields(true);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
///
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
@@ -210,7 +233,6 @@ void RimSummaryCurveFilter::fieldChangedByUi(const caf::PdmFieldHandle* changedF
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
///
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
@@ -234,7 +256,6 @@ void RimSummaryCurveFilter::detachQwtCurves()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
///
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
@@ -329,45 +350,7 @@ void RimSummaryCurveFilter::syncCurvesFromUiSelection()
|
|
|
|
|
m_curves.deleteAllChildObjects();
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Create all new curves that is missing
|
|
|
|
|
int colorIndex = 2;
|
|
|
|
|
int lineStyleIdx = -1;
|
|
|
|
|
|
|
|
|
|
RimSummaryCase* prevCase = nullptr;
|
|
|
|
|
RimPlotCurve::LineStyleEnum lineStyle = RimPlotCurve::STYLE_SOLID;
|
|
|
|
|
|
|
|
|
|
for (auto& caseAddrPair: newCurveDefinitions)
|
|
|
|
|
{
|
|
|
|
|
RimSummaryCase* currentCase = caseAddrPair.first;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RimSummaryCurve* curve = new RimSummaryCurve();
|
|
|
|
|
curve->setParentQwtPlot(m_parentQwtPlot);
|
|
|
|
|
curve->setSummaryCase(currentCase);
|
|
|
|
|
curve->setSummaryAddress(caseAddrPair.second);
|
|
|
|
|
|
|
|
|
|
if(currentCase != prevCase)
|
|
|
|
|
{
|
|
|
|
|
prevCase = currentCase;
|
|
|
|
|
colorIndex = 2;
|
|
|
|
|
lineStyleIdx ++;
|
|
|
|
|
lineStyle = caf::AppEnum<RimPlotCurve::LineStyleEnum>::fromIndex(lineStyleIdx%caf::AppEnum<RimPlotCurve::LineStyleEnum>::size());
|
|
|
|
|
if(lineStyle == RimPlotCurve::STYLE_NONE)
|
|
|
|
|
{
|
|
|
|
|
lineStyle = RimPlotCurve::STYLE_SOLID;
|
|
|
|
|
lineStyleIdx++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cvf::Color3f curveColor = curveColorFromTable(colorIndex);
|
|
|
|
|
colorIndex++;
|
|
|
|
|
|
|
|
|
|
curve->setColor(curveColor);
|
|
|
|
|
curve->setLineStyle(lineStyle);
|
|
|
|
|
|
|
|
|
|
m_curves.push_back(curve);
|
|
|
|
|
}
|
|
|
|
|
createCurvesFromCurveDefinitions(newCurveDefinitions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
@@ -438,3 +421,71 @@ std::set<std::string> RimSummaryCurveFilter::unitNames()
|
|
|
|
|
}
|
|
|
|
|
return unitNames;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
///
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
void RimSummaryCurveFilter::createSetOfCasesAndResultAdresses(
|
|
|
|
|
const std::vector<RimSummaryCase*>& cases,
|
|
|
|
|
const RimSummaryFilter& filter,
|
|
|
|
|
std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> >* curveDefinitions) const
|
|
|
|
|
{
|
|
|
|
|
for (RimSummaryCase* currentCase : cases)
|
|
|
|
|
{
|
|
|
|
|
if (!currentCase || !currentCase->caseData() || !currentCase->caseData()->summaryReader()) continue;
|
|
|
|
|
|
|
|
|
|
RifReaderEclipseSummary* reader = currentCase->caseData()->summaryReader();
|
|
|
|
|
|
|
|
|
|
const std::vector<RifEclipseSummaryAddress> allAddresses = reader->allResultAddresses();
|
|
|
|
|
int addressCount = static_cast<int>(allAddresses.size());
|
|
|
|
|
for (int i = 0; i < addressCount; i++)
|
|
|
|
|
{
|
|
|
|
|
if (!filter.isIncludedByFilter(allAddresses[i])) continue;
|
|
|
|
|
|
|
|
|
|
curveDefinitions->insert(std::make_pair(currentCase, allAddresses[i]));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
///
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|
void RimSummaryCurveFilter::createCurvesFromCurveDefinitions(const std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> >& curveDefinitions)
|
|
|
|
|
{
|
|
|
|
|
int colorIndex = 2;
|
|
|
|
|
int lineStyleIdx = -1;
|
|
|
|
|
|
|
|
|
|
RimSummaryCase* prevCase = nullptr;
|
|
|
|
|
RimPlotCurve::LineStyleEnum lineStyle = RimPlotCurve::STYLE_SOLID;
|
|
|
|
|
|
|
|
|
|
for (auto& caseAddrPair : curveDefinitions)
|
|
|
|
|
{
|
|
|
|
|
RimSummaryCase* currentCase = caseAddrPair.first;
|
|
|
|
|
|
|
|
|
|
RimSummaryCurve* curve = new RimSummaryCurve();
|
|
|
|
|
curve->setParentQwtPlot(m_parentQwtPlot);
|
|
|
|
|
curve->setSummaryCase(currentCase);
|
|
|
|
|
curve->setSummaryAddress(caseAddrPair.second);
|
|
|
|
|
|
|
|
|
|
if (currentCase != prevCase)
|
|
|
|
|
{
|
|
|
|
|
prevCase = currentCase;
|
|
|
|
|
colorIndex = 2;
|
|
|
|
|
lineStyleIdx++;
|
|
|
|
|
lineStyle = caf::AppEnum<RimPlotCurve::LineStyleEnum>::fromIndex(lineStyleIdx%caf::AppEnum<RimPlotCurve::LineStyleEnum>::size());
|
|
|
|
|
if (lineStyle == RimPlotCurve::STYLE_NONE)
|
|
|
|
|
{
|
|
|
|
|
lineStyle = RimPlotCurve::STYLE_SOLID;
|
|
|
|
|
lineStyleIdx++;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cvf::Color3f curveColor = curveColorFromTable(colorIndex);
|
|
|
|
|
colorIndex++;
|
|
|
|
|
|
|
|
|
|
curve->setColor(curveColor);
|
|
|
|
|
curve->setLineStyle(lineStyle);
|
|
|
|
|
|
|
|
|
|
m_curves.push_back(curve);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|