#970 Auto-Axis title now using vector name and unit.

This commit is contained in:
Jacob Støren 2016-11-21 11:30:34 +01:00
parent 3d1bad978f
commit fd572b5c87
8 changed files with 86 additions and 33 deletions

View File

@ -71,15 +71,15 @@ void RicSummaryCurveSwitchAxisFeature::onActionTriggered(bool isChecked)
for (RimSummaryCurve* summaryCurve : selectedSoloCurves)
{
RimDefines::PlotAxis plotAxis = summaryCurve->associatedPlotAxis();
RimDefines::PlotAxis plotAxis = summaryCurve->yAxis();
if ( plotAxis == RimDefines::PLOT_AXIS_LEFT )
{
summaryCurve->setPlotAxis(RimDefines::PLOT_AXIS_RIGHT);
summaryCurve->setYAxis(RimDefines::PLOT_AXIS_RIGHT);
}
else
{
summaryCurve->setPlotAxis(RimDefines::PLOT_AXIS_LEFT);
summaryCurve->setYAxis(RimDefines::PLOT_AXIS_LEFT);
}
summaryCurve->updateQwtPlotAxis();

View File

@ -259,7 +259,7 @@ std::vector<double> RimSummaryCurve::yPlotValues() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryCurve::setPlotAxis(RimDefines::PlotAxis plotAxis)
void RimSummaryCurve::setYAxis(RimDefines::PlotAxis plotAxis)
{
m_plotAxis = plotAxis;
}
@ -267,7 +267,7 @@ void RimSummaryCurve::setPlotAxis(RimDefines::PlotAxis plotAxis)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimDefines::PlotAxis RimSummaryCurve::associatedPlotAxis() const
RimDefines::PlotAxis RimSummaryCurve::yAxis() const
{
return m_plotAxis();
}
@ -384,7 +384,7 @@ void RimSummaryCurve::onLoadDataAndUpdate()
RimSummaryPlot* plot = nullptr;
firstAncestorOrThisOfType(plot);
bool isLogCurve = plot->isLogarithmicScaleEnabled(this->associatedPlotAxis());
bool isLogCurve = plot->isLogarithmicScaleEnabled(this->yAxis());
if(this->curveData(&dateTimes, &values))
{
@ -444,7 +444,7 @@ void RimSummaryCurve::updateQwtPlotAxis()
{
if (m_qwtPlotCurve)
{
if (this->associatedPlotAxis() == RimDefines::PLOT_AXIS_LEFT)
if (this->yAxis() == RimDefines::PLOT_AXIS_LEFT)
{
m_qwtPlotCurve->setYAxis(QwtPlot::yLeft);
}

View File

@ -88,8 +88,8 @@ public:
std::vector<double> yPlotValues() const;
void setPlotAxis(RimDefines::PlotAxis plotAxis);
RimDefines::PlotAxis associatedPlotAxis() const;
void setYAxis(RimDefines::PlotAxis plotAxis);
RimDefines::PlotAxis yAxis() const;
void updateQwtPlotAxis();
void applyCurveAutoNameSettings(const RimSummaryCurveAutoName& autoNameSettings);

View File

@ -255,7 +255,7 @@ void RimSummaryCurveFilter::fieldChangedByUi(const caf::PdmFieldHandle* changedF
{
curve->updateCurveVisibility();
}
if (m_parentQwtPlot) m_parentQwtPlot->replot();
updatePlotAxisForCurves();
}
else if (changedField == &m_plotAxis)
{
@ -431,7 +431,7 @@ void RimSummaryCurveFilter::updatePlotAxisForCurves()
{
for (RimSummaryCurve* curve : m_curves)
{
curve->setPlotAxis(m_plotAxis());
curve->setYAxis(m_plotAxis());
curve->updateQwtPlotAxis();
}
@ -466,6 +466,21 @@ std::set<std::string> RimSummaryCurveFilter::unitNames()
return unitNames;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCurve*> RimSummaryCurveFilter::curves()
{
std::vector<RimSummaryCurve*> myCurves;
for ( RimSummaryCurve* curve: m_curves)
{
myCurves.push_back(curve);
}
return myCurves;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -541,7 +556,7 @@ void RimSummaryCurveFilter::createCurvesFromCurveDefinitions(const std::set<std:
curve->setParentQwtPlot(m_parentQwtPlot);
curve->setSummaryCase(currentCase);
curve->setSummaryAddress(caseAddrPair.second);
curve->setPlotAxis(m_plotAxis());
curve->setYAxis(m_plotAxis());
curve->applyCurveAutoNameSettings(*m_curveNameConfig());
m_curves.push_back(curve);

View File

@ -68,6 +68,7 @@ public:
RimSummaryCurve* findRimCurveFromQwtCurve(const QwtPlotCurve* qwtCurve) const;
std::set<std::string> unitNames();
std::vector<RimSummaryCurve*> curves();
void updateCaseNameHasChanged();

View File

@ -191,24 +191,41 @@ void RimSummaryPlotYAxisFormater::applyYAxisPropertiesToPlot(RiuSummaryQwtPlot*
//--------------------------------------------------------------------------------------------------
QString RimSummaryPlotYAxisFormater::autoAxisTitle() const
{
std::set<std::string> unitNames;
std::map<std::string, std::set<std::string> > unitToQuantityNameMap;
for (RimSummaryCurve* rimCurve : m_singleCurves)
for ( RimSummaryCurve* rimCurve : m_singleCurves )
{
if (rimCurve->isCurveVisible()) unitNames.insert(rimCurve->unitName());
if ( rimCurve->isCurveVisible() && rimCurve->yAxis() == this->m_axisProperties->axis() )
{
unitToQuantityNameMap[rimCurve->unitName()].insert(rimCurve->summaryAddress().quantityName());
}
}
for (RimSummaryCurveFilter* curveFilter : m_curveFilters)
for ( RimSummaryCurveFilter* curveFilter : m_curveFilters )
{
std::set<std::string> filterUnitNames = curveFilter->unitNames();
unitNames.insert(filterUnitNames.begin(), filterUnitNames.end());
if ( curveFilter->isCurvesVisible() )
{
std::vector<RimSummaryCurve*> curveFilterCurves = curveFilter->curves();
for ( RimSummaryCurve* rimCurve : curveFilterCurves )
{
if ( rimCurve->isCurveVisible() && rimCurve->yAxis() == this->m_axisProperties->axis() )
{
unitToQuantityNameMap[rimCurve->unitName()].insert(rimCurve->summaryAddress().quantityName());
}
}
}
}
QString assembledYAxisText;
for (const std::string& unitName : unitNames)
for ( auto unitIt : unitToQuantityNameMap )
{
assembledYAxisText += "[" + QString::fromStdString(unitName) + "] ";
for (const auto &quantIt: unitIt.second)
{
assembledYAxisText += QString::fromStdString(quantIt) + " ";
}
assembledYAxisText += "[" + QString::fromStdString(unitIt.first) + "] ";
}
return assembledYAxisText;

View File

@ -197,22 +197,17 @@ void RimSummaryPlot::updateAxis(RimDefines::PlotAxis plotAxis)
}
else
{
std::vector<RimSummaryCurve*> curves = curvesForAxis(plotAxis);
std::vector<RimSummaryCurveFilter*> curveFiltersForAxis;
for (RimSummaryCurveFilter* cs : m_curveFilters)
if (hasVisibleCurvesForAxis(plotAxis))
{
if (cs->associatedPlotAxis() == plotAxis)
{
curveFiltersForAxis.push_back(cs);
}
}
std::vector<RimSummaryCurve*> curves;
curves.insert(curves.begin(), m_curves.begin(), m_curves.end());
std::vector<RimSummaryCurveFilter*> curveFilters;
curveFilters.insert(curveFilters.begin(), m_curveFilters.begin(), m_curveFilters.end());
if (curves.size() > 0)
{
m_qwtPlot->enableAxis(qwtAxis, true);
RimSummaryPlotYAxisFormater calc(yAxisProperties, curves, curveFiltersForAxis);
RimSummaryPlotYAxisFormater calc(yAxisProperties, curves, curveFilters);
calc.applyYAxisPropertiesToPlot(m_qwtPlot);
}
else
@ -234,7 +229,7 @@ std::vector<RimSummaryCurve*> RimSummaryPlot::curvesForAxis(RimDefines::PlotAxis
for (RimSummaryCurve* curve : childCurves)
{
if (curve->associatedPlotAxis() == plotAxis)
if (curve->yAxis() == plotAxis)
{
curves.push_back(curve);
}
@ -243,6 +238,30 @@ std::vector<RimSummaryCurve*> RimSummaryPlot::curvesForAxis(RimDefines::PlotAxis
return curves;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimSummaryPlot::hasVisibleCurvesForAxis(RimDefines::PlotAxis plotAxis) const
{
for (RimSummaryCurve* curve : m_curves)
{
if (curve->isCurveVisible() && curve->yAxis() == plotAxis) return true;
}
for (RimSummaryCurveFilter * curveFilter : m_curveFilters)
{
if (curveFilter->isCurvesVisible())
{
for ( RimSummaryCurve* curve : curveFilter->curves() )
{
if ( curve->isCurveVisible() && curve->yAxis() == plotAxis ) return true;
}
}
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -101,6 +101,7 @@ private:
void updateAxis(RimDefines::PlotAxis plotAxis);
std::vector<RimSummaryCurve*> curvesForAxis(RimDefines::PlotAxis plotAxis) const;
bool hasVisibleCurvesForAxis(RimDefines::PlotAxis plotAxis) const;
void updateTimeAxis();
void setZoomIntervalsInQwtPlot();