#4117 Grid Cross Plot Reliability and UI improvements

This commit is contained in:
Gaute Lindkvist
2019-02-27 12:45:02 +01:00
parent 1e994ac8b8
commit e1dbbbaf51
4 changed files with 67 additions and 14 deletions

View File

@@ -65,6 +65,8 @@ public:
caf::PdmFieldHandle* userDescriptionField() override;
void detachAllCurves();
void performAutoNameUpdate() override;
public:
// Rim2dPlotInterface overrides
void updateAxisScaling() override;
@@ -85,7 +87,6 @@ protected:
QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly) override;
void performAutoNameUpdate() override;
void updatePlot();
QString xAxisParameterString() const;
QString yAxisParameterString() const;

View File

@@ -172,17 +172,60 @@ QString RimGridCrossPlotCurveSet::createAutoName() const
if (m_nameConfig->addTimestep())
{
if (m_timeStep() == -1)
if (m_xAxisProperty->hasDynamicResult() || m_yAxisProperty->hasDynamicResult())
{
nameTags += "All Time Steps";
}
else
{
QStringList timeStepNames = m_case->timeStepStrings();
nameTags += timeStepNames[m_timeStep()];
if (m_timeStep() == -1)
{
nameTags += "All Time Steps";
}
else
{
QStringList timeStepNames = m_case->timeStepStrings();
nameTags += timeStepNames[m_timeStep()];
}
}
}
if (m_nameConfig->addCategorization)
{
if (m_categorization() == FORMATION_CATEGORIZATION)
{
nameTags += QString("Categorized by formations");
}
else if (m_categorization() == RESULT_CATEGORIZATION && m_categoryProperty->hasResult())
{
nameTags += QString("Categorized by %1").arg(m_categoryProperty->resultVariableUiShortName());
}
}
return nameTags.join(", ");
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimGridCrossPlotCurveSet::createShortAutoName() const
{
if (m_case() == nullptr)
{
return "Undefined";
}
QStringList nameTags;
if (!m_nameConfig->customName().isEmpty())
{
nameTags += m_nameConfig->customName();
}
if (m_nameConfig->addCaseName())
{
nameTags += m_case->caseUserDescription();
}
if (m_nameConfig->addAxisVariables())
{
nameTags += QString("%1 x %2").arg(xAxisName(), yAxisName());
}
return nameTags.join(", ");
}
@@ -258,15 +301,16 @@ void RimGridCrossPlotCurveSet::onLoadDataAndUpdate(bool updateParentPlot)
for (const auto& sampleCategory : result.categorySamplesMap)
{
RimGridCrossPlotCurve* curve = new RimGridCrossPlotCurve();
QString categoryName = result.categoryNameMap[sampleCategory.first];
if (categoryName.isEmpty())
{
curve->setCustomName(createAutoName());
curve->setCustomName(createShortAutoName());
}
else
{
curve->setCustomName(QString("%1 : %2").arg(createAutoName()).arg(categoryName));
curve->setCustomName(QString("%1 : %2").arg(createShortAutoName()).arg(categoryName));
}
curve->determineColorAndSymbol(indexInPlot(), sampleCategory.first, (int)result.categorySamplesMap.size(), m_categorization() == FORMATION_CATEGORIZATION);
curve->setSamples(sampleCategory.second.first, sampleCategory.second.second);
@@ -293,12 +337,12 @@ void RimGridCrossPlotCurveSet::defineUiOrdering(QString uiConfigName, caf::PdmUi
{
uiOrdering.add(&m_timeStep);
uiOrdering.add(&m_categorization);
uiOrdering.add(&m_categoryBinCount);
if (m_categorization() == RESULT_CATEGORIZATION)
{
caf::PdmUiGroup* categoryGroup = uiOrdering.addNewGroup("Categorization Property");
m_categoryProperty->uiOrdering(uiConfigName, *categoryGroup);
categoryGroup->add(&m_categoryBinCount);
}
caf::PdmUiGroup* xAxisGroup = uiOrdering.addNewGroup("X-Axis Property");
@@ -401,6 +445,9 @@ void RimGridCrossPlotCurveSet::triggerReplotAndTreeRebuild()
void RimGridCrossPlotCurveSet::performAutoNameUpdate()
{
this->setName(createAutoName());
RimGridCrossPlot* parent;
this->firstAncestorOrThisOfTypeAsserted(parent);
parent->performAutoNameUpdate();
}
//--------------------------------------------------------------------------------------------------

View File

@@ -77,6 +77,7 @@ public:
int indexInPlot() const;
QString createAutoName() const override;
QString createShortAutoName() const;
void detachAllCurves();
std::vector< RimGridCrossPlotCurve*> curves() const;

View File

@@ -74,8 +74,12 @@ RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCa
if (resultTimeStep == -1)
{
size_t nStepsInData = std::max(xValuesForAllSteps.size(), yValuesForAllSteps.size());
CVF_ASSERT(xValuesForAllSteps.size() == 1u || xValuesForAllSteps.size() == nStepsInData);
CVF_ASSERT(yValuesForAllSteps.size() == 1u || yValuesForAllSteps.size() == nStepsInData);
bool xValid = xValuesForAllSteps.size() == 1u || xValuesForAllSteps.size() == nStepsInData;
bool yValid = yValuesForAllSteps.size() == 1u || yValuesForAllSteps.size() == nStepsInData;
if (!(xValid && yValid))
return result;
for (size_t i = 0; i < nStepsInData; ++i)
{
timeStepsToInclude.insert((int)i);
@@ -141,7 +145,7 @@ RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCa
QString categoryName;
if (categorizationType == TIME_CATEGORIZATION && categorySamplesMap.size() > 1u)
{
if (sampleCategory.first < timeStepDates.size())
if (sampleCategory.first < static_cast<int>(timeStepDates.size()))
{
categoryName = RiaQDateTimeTools::toStringUsingApplicationLocale(timeStepDates[sampleCategory.first], timeFormatString);
}