mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4158 Implement info box for grid cross plots and improve plot overlay legends
This commit is contained in:
@@ -48,6 +48,7 @@ RimGridCrossPlot::RimGridCrossPlot()
|
||||
{
|
||||
CAF_PDM_InitObject("Grid Cross Plot", ":/SummaryXPlotLight16x16.png", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_showInfoBox, "ShowInfoBox", true, "Show Info Box", "", "", "");
|
||||
CAF_PDM_InitField(&m_showLegend, "ShowLegend", true, "Show Legend", "", "", "");
|
||||
CAF_PDM_InitField(&m_legendFontSize, "LegendFontSize", 10, "Legend Font Size", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_nameConfig, "NameConfig", "Name Config", "", "", "");
|
||||
@@ -94,13 +95,18 @@ RimGridCrossPlotCurveSet* RimGridCrossPlot::createCurveSet()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int RimGridCrossPlot::indexOfCurveSet(const RimGridCrossPlotCurveSet* curveSet) const
|
||||
int RimGridCrossPlot::indexOfCurveSet(const RimGridCrossPlotCurveSet* curveSetToCheck) const
|
||||
{
|
||||
for (size_t i = 0; i < m_crossPlotCurveSets.size(); ++i)
|
||||
int index = 0;
|
||||
for (auto curveSet : m_crossPlotCurveSets())
|
||||
{
|
||||
if (curveSet == m_crossPlotCurveSets[i])
|
||||
if (curveSet == curveSetToCheck)
|
||||
{
|
||||
return static_cast<int>(i);
|
||||
return index;
|
||||
}
|
||||
if (curveSet->isChecked() && curveSet->visibleCurveCount() > 0u)
|
||||
{
|
||||
index++;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
@@ -247,6 +253,14 @@ QString RimGridCrossPlot::createAutoName() const
|
||||
return autoName.join(" ");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimGridCrossPlot::showInfoBox() const
|
||||
{
|
||||
return m_showInfoBox();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -399,6 +413,7 @@ void RimGridCrossPlot::onLoadDataAndUpdate()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimGridCrossPlot::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||
{
|
||||
uiOrdering.add(&m_showInfoBox);
|
||||
uiOrdering.add(&m_showLegend);
|
||||
|
||||
if (m_showLegend())
|
||||
|
||||
@@ -66,6 +66,7 @@ public:
|
||||
void reattachCurvesToQwtAndReplot();
|
||||
QString createAutoName() const override;
|
||||
|
||||
bool showInfoBox() const;
|
||||
caf::PdmFieldHandle* userDescriptionField() override;
|
||||
void detachAllCurves();
|
||||
void performAutoNameUpdate() override;
|
||||
@@ -112,6 +113,7 @@ protected:
|
||||
RimGridCrossPlotNameConfig* nameConfig();
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_showInfoBox;
|
||||
caf::PdmField<bool> m_showLegend;
|
||||
caf::PdmField<int> m_legendFontSize;
|
||||
caf::PdmChildField<RimGridCrossPlotNameConfig*> m_nameConfig;
|
||||
|
||||
@@ -92,6 +92,14 @@ int RimGridCrossPlotCurve::groupIndex() const
|
||||
return m_groupIndex;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
size_t RimGridCrossPlotCurve::sampleCount() const
|
||||
{
|
||||
return m_qwtPlotCurve->dataSize();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -43,9 +43,9 @@ public:
|
||||
void setGroupingInformation(int curveSetIndex, int groupIndex);
|
||||
void setSamples(const std::vector<double>& xValues, const std::vector<double>& yValues);
|
||||
|
||||
void setCurveAutoAppearance();
|
||||
int groupIndex() const;
|
||||
|
||||
void setCurveAutoAppearance();
|
||||
int groupIndex() const;
|
||||
size_t sampleCount() const;
|
||||
protected:
|
||||
|
||||
void determineSymbol();
|
||||
|
||||
@@ -198,6 +198,36 @@ QString RimGridCrossPlotCurveSet::yAxisName() const
|
||||
return m_yAxisProperty->resultVariableUiShortName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimGridCrossPlotCurveSet::infoText() const
|
||||
{
|
||||
if (!m_case()) return "";
|
||||
|
||||
if (visibleCurveCount() == 0u) return "";
|
||||
|
||||
QStringList textLines;
|
||||
textLines += QString("<b>Case:</b> %1").arg(m_case()->caseUserDescription());
|
||||
textLines += QString("<b>Parameters:</b>: %1 x %2")
|
||||
.arg(m_xAxisProperty->resultVariableUiShortName())
|
||||
.arg(m_yAxisProperty->resultVariableUiShortName());
|
||||
if (m_timeStep != -1)
|
||||
{
|
||||
textLines += QString("<b>Time step:</b> %1").arg(timeStepString());
|
||||
}
|
||||
if (m_grouping != NO_GROUPING)
|
||||
{
|
||||
textLines += QString("<b>Grouped By:</b> %1").arg(groupParameter());
|
||||
}
|
||||
if (m_cellFilterView())
|
||||
{
|
||||
textLines += QString("<b>Filter view:</b> %1").arg(m_cellFilterView->name());
|
||||
}
|
||||
textLines += QString("<b>Sample Count:</b> %1").arg(sampleCount());
|
||||
return textLines.join("<br/>\n");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -606,6 +636,32 @@ void RimGridCrossPlotCurveSet::destroyCurves()
|
||||
m_crossPlotCurves.deleteAllChildObjects();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
size_t RimGridCrossPlotCurveSet::visibleCurveCount() const
|
||||
{
|
||||
size_t visibleCurves = 0;
|
||||
for (auto curve : m_crossPlotCurves)
|
||||
{
|
||||
if (curve->isCurveVisible()) visibleCurves++;
|
||||
}
|
||||
return visibleCurves;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
size_t RimGridCrossPlotCurveSet::sampleCount() const
|
||||
{
|
||||
size_t sampleCount = 0;
|
||||
for (auto curve : m_crossPlotCurves)
|
||||
{
|
||||
if (curve->isCurveVisible()) sampleCount += curve->sampleCount();
|
||||
}
|
||||
return sampleCount;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -97,6 +97,7 @@ public:
|
||||
void setParentQwtPlotNoReplot(QwtPlot* parent);
|
||||
QString xAxisName() const;
|
||||
QString yAxisName() const;
|
||||
QString infoText() const;
|
||||
|
||||
int indexInPlot() const;
|
||||
QString createAutoName() const override;
|
||||
@@ -131,6 +132,8 @@ public:
|
||||
void setCustomColor(const cvf::Color3f color);
|
||||
void destroyCurves();
|
||||
|
||||
size_t visibleCurveCount() const;
|
||||
size_t sampleCount() const;
|
||||
protected:
|
||||
void initAfterRead() override;
|
||||
void onLoadDataAndUpdate(bool updateParentPlot);
|
||||
@@ -175,5 +178,5 @@ private:
|
||||
caf::PdmField<bool> m_useCustomColor;
|
||||
caf::PdmField<cvf::Color3f> m_customColor;
|
||||
caf::PdmChildField<RimPlotCellFilterCollection*> m_plotCellFilterCollection;;
|
||||
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user