mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
This commit is contained in:
parent
a1cbfa5175
commit
186332e707
@ -21,6 +21,7 @@
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaColorTables.h"
|
||||
#include "RiuGroupedBarChartBuilder.h"
|
||||
#include "RiuPlotMainWindowTools.h"
|
||||
#include "RiuSummaryQwtPlot.h"
|
||||
#include "RiuSummaryVectorSelectionDialog.h"
|
||||
|
||||
@ -28,10 +29,12 @@
|
||||
|
||||
#include "RimAnalysisPlotDataEntry.h"
|
||||
#include "RimDerivedSummaryCase.h"
|
||||
#include "RimPlotAxisProperties.h"
|
||||
#include "RimPlotAxisPropertiesInterface.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryPlotAxisFormatter.h"
|
||||
|
||||
#include "qwt_column_symbol.h"
|
||||
#include "qwt_legend.h"
|
||||
@ -183,6 +186,12 @@ RimAnalysisPlot::RimAnalysisPlot()
|
||||
CAF_PDM_InitField( &m_useSummaryItemInBarText, "UseSummaryItemInBarText", false, "Summary Item", "", "", "" );
|
||||
CAF_PDM_InitField( &m_useTimeStepInBarText, "UseTimeStepInBarText", false, "Time Step", "", "", "" );
|
||||
CAF_PDM_InitField( &m_useQuantityInBarText, "UseQuantityInBarText", false, "Quantity", "", "", "" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_valueAxisProperties, "ValueAxisProperties", "ValueAxisProperties", "", "", "" );
|
||||
m_valueAxisProperties.uiCapability()->setUiTreeHidden( true );
|
||||
m_valueAxisProperties = new RimPlotAxisProperties;
|
||||
m_valueAxisProperties->setNameAndAxis( "Value-Axis", QwtPlot::yLeft );
|
||||
m_valueAxisProperties->enableRangeSettings( false );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -577,6 +586,82 @@ void RimAnalysisPlot::detachAllCurves()
|
||||
if ( m_plotWidget ) m_plotWidget->detachItems();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimAnalysisPlot::updateAxes()
|
||||
{
|
||||
if ( !m_plotWidget ) return;
|
||||
|
||||
QwtPlot::Axis qwtAxis = QwtPlot::yLeft;
|
||||
if ( m_barOrientation == BARS_HORIZONTAL )
|
||||
{
|
||||
qwtAxis = QwtPlot::xBottom;
|
||||
m_plotWidget->setAxisTitleEnabled( QwtPlot::yLeft, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_plotWidget->setAxisTitleEnabled( QwtPlot::xBottom, false );
|
||||
}
|
||||
|
||||
RimPlotAxisProperties* valAxisProperties = m_valueAxisProperties();
|
||||
if ( valAxisProperties->isActive() )
|
||||
{
|
||||
m_plotWidget->enableAxis( qwtAxis, true );
|
||||
m_valueAxisProperties->setNameAndAxis( "Value-Axis", qwtAxis );
|
||||
|
||||
std::set<QString> timeHistoryQuantities;
|
||||
|
||||
RimSummaryPlotAxisFormatter calc( valAxisProperties, {}, curveDefinitions(), {}, {} );
|
||||
calc.applyAxisPropertiesToPlot( m_plotWidget );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_plotWidget->enableAxis( qwtAxis, false );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimAnalysisPlot::onAxisSelected( int axis, bool toggle )
|
||||
{
|
||||
RiuPlotMainWindowTools::showPlotMainWindow();
|
||||
|
||||
caf::PdmObject* itemToSelect = nullptr;
|
||||
if ( axis == QwtPlot::yLeft )
|
||||
{
|
||||
if ( m_barOrientation == BARS_VERTICAL )
|
||||
{
|
||||
itemToSelect = m_valueAxisProperties;
|
||||
}
|
||||
else
|
||||
{
|
||||
itemToSelect = this;
|
||||
}
|
||||
}
|
||||
else if ( axis == QwtPlot::xBottom )
|
||||
{
|
||||
if ( m_barOrientation == BARS_HORIZONTAL )
|
||||
{
|
||||
itemToSelect = m_valueAxisProperties;
|
||||
}
|
||||
else
|
||||
{
|
||||
itemToSelect = this;
|
||||
}
|
||||
}
|
||||
|
||||
if ( toggle )
|
||||
{
|
||||
RiuPlotMainWindowTools::toggleItemInSelection( itemToSelect );
|
||||
}
|
||||
else
|
||||
{
|
||||
RiuPlotMainWindowTools::selectAsCurrentItem( itemToSelect );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -879,7 +964,7 @@ std::vector<RiaSummaryCurveDefinition> RimAnalysisPlot::curveDefinitions()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::set<RimPlotAxisPropertiesInterface*> RimAnalysisPlot::allPlotAxes() const
|
||||
{
|
||||
return {};
|
||||
return {m_valueAxisProperties};
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -32,6 +32,7 @@ class RiuGroupedBarChartBuilder;
|
||||
class RimAnalysisPlotDataEntry;
|
||||
class RimCurveDefinitionAnalyser;
|
||||
class RimPlotAxisPropertiesInterface;
|
||||
class RimPlotAxisProperties;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@ -107,8 +108,8 @@ private:
|
||||
|
||||
void reattachAllCurves() override {}
|
||||
void doRemoveFromCollection() override {}
|
||||
void updateAxes() override {}
|
||||
void onAxisSelected( int axis, bool toggle ) override {}
|
||||
void updateAxes() override;
|
||||
void onAxisSelected( int axis, bool toggle ) override;
|
||||
void updateZoomInQwt() override {}
|
||||
void updateZoomFromQwt() override {}
|
||||
void setAutoScaleXEnabled( bool enabled ) override {}
|
||||
@ -168,4 +169,6 @@ private:
|
||||
caf::PdmField<bool> m_useSummaryItemInBarText;
|
||||
caf::PdmField<bool> m_useTimeStepInBarText;
|
||||
caf::PdmField<bool> m_useQuantityInBarText;
|
||||
|
||||
caf::PdmChildField<RimPlotAxisProperties*> m_valueAxisProperties;
|
||||
};
|
||||
|
@ -57,6 +57,7 @@ CAF_PDM_SOURCE_INIT(RimPlotAxisProperties, "SummaryYAxisProperties");
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimPlotAxisProperties::RimPlotAxisProperties()
|
||||
: m_enableTitleTextSettings(true)
|
||||
, m_isRangeSettingsEnabled(true)
|
||||
{
|
||||
CAF_PDM_InitObject("Axis Properties", ":/LeftAxis16x16.png", "", "");
|
||||
|
||||
@ -110,6 +111,14 @@ void RimPlotAxisProperties::setEnableTitleTextSettings( bool enable )
|
||||
m_enableTitleTextSettings = enable;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimPlotAxisProperties::enableRangeSettings( bool enable )
|
||||
{
|
||||
m_isRangeSettingsEnabled = enable;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -193,8 +202,11 @@ void RimPlotAxisProperties::defineUiOrdering( QString uiConfigName, caf::PdmUiOr
|
||||
}
|
||||
|
||||
caf::PdmUiGroup& scaleGroup = *( uiOrdering.addNewGroup( "Axis Values" ) );
|
||||
scaleGroup.add( &isLogarithmicScaleEnabled );
|
||||
scaleGroup.add( &m_isAxisInverted );
|
||||
if ( m_isRangeSettingsEnabled )
|
||||
{
|
||||
scaleGroup.add( &isLogarithmicScaleEnabled );
|
||||
scaleGroup.add( &m_isAxisInverted );
|
||||
}
|
||||
scaleGroup.add( &numberFormat );
|
||||
|
||||
if ( numberFormat() != NUMBER_FORMAT_AUTO )
|
||||
@ -202,8 +214,11 @@ void RimPlotAxisProperties::defineUiOrdering( QString uiConfigName, caf::PdmUiOr
|
||||
scaleGroup.add( &numberOfDecimals );
|
||||
}
|
||||
scaleGroup.add( &scaleFactor );
|
||||
scaleGroup.add( &visibleRangeMin );
|
||||
scaleGroup.add( &visibleRangeMax );
|
||||
if ( m_isRangeSettingsEnabled )
|
||||
{
|
||||
scaleGroup.add( &visibleRangeMin );
|
||||
scaleGroup.add( &visibleRangeMax );
|
||||
}
|
||||
scaleGroup.add( &m_valuesFontSize );
|
||||
|
||||
uiOrdering.skipRemainingFields( true );
|
||||
|
@ -53,6 +53,7 @@ public:
|
||||
RimPlotAxisProperties();
|
||||
|
||||
void setEnableTitleTextSettings( bool enable );
|
||||
void enableRangeSettings( bool enable );
|
||||
void setNameAndAxis( const QString& name, QwtPlot::Axis axis );
|
||||
AxisTitlePositionType titlePosition() const override;
|
||||
int titleFontSize() const override;
|
||||
@ -117,6 +118,7 @@ private:
|
||||
QwtPlot::Axis m_axis;
|
||||
|
||||
bool m_enableTitleTextSettings;
|
||||
bool m_isRangeSettingsEnabled;
|
||||
|
||||
caf::PdmField<int> m_titleFontSize;
|
||||
caf::PdmField<caf::AppEnum<AxisTitlePositionType>> m_titlePositionEnum;
|
||||
|
@ -827,6 +827,7 @@ void RimSummaryPlot::updateYAxis( RiaDefines::PlotAxis plotAxis )
|
||||
|
||||
RimSummaryPlotAxisFormatter calc( yAxisProperties,
|
||||
visibleSummaryCurvesForAxis( plotAxis ),
|
||||
{},
|
||||
visibleAsciiDataCurvesForAxis( plotAxis ),
|
||||
timeHistoryQuantities );
|
||||
calc.applyAxisPropertiesToPlot( m_plotWidget );
|
||||
@ -1154,6 +1155,7 @@ void RimSummaryPlot::updateBottomXAxis()
|
||||
|
||||
RimSummaryPlotAxisFormatter calc( bottomAxisProperties,
|
||||
visibleSummaryCurvesForAxis( RiaDefines::PLOT_AXIS_BOTTOM ),
|
||||
{},
|
||||
visibleAsciiDataCurvesForAxis( RiaDefines::PLOT_AXIS_BOTTOM ),
|
||||
timeHistoryQuantities );
|
||||
calc.applyAxisPropertiesToPlot( m_plotWidget );
|
||||
|
@ -20,8 +20,12 @@
|
||||
|
||||
#include "RiaDefines.h"
|
||||
|
||||
#include "RifSummaryReaderInterface.h"
|
||||
|
||||
#include "RimAsciiDataCurve.h"
|
||||
#include "RimPlotAxisProperties.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
|
||||
#include "RiuSummaryQuantityNameInfoProvider.h"
|
||||
@ -90,12 +94,14 @@ private:
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryPlotAxisFormatter::RimSummaryPlotAxisFormatter( RimPlotAxisProperties* axisProperties,
|
||||
const std::vector<RimSummaryCurve*>& summaryCurves,
|
||||
const std::vector<RimAsciiDataCurve*>& asciiCurves,
|
||||
RimSummaryPlotAxisFormatter::RimSummaryPlotAxisFormatter( RimPlotAxisProperties* axisProperties,
|
||||
const std::vector<RimSummaryCurve*>& summaryCurves,
|
||||
const std::vector<RiaSummaryCurveDefinition>& curveDefinitions,
|
||||
const std::vector<RimAsciiDataCurve*>& asciiCurves,
|
||||
const std::set<QString>& timeHistoryCurveQuantities )
|
||||
: m_axisProperties( axisProperties )
|
||||
, m_summaryCurves( summaryCurves )
|
||||
, m_curveDefinitions( curveDefinitions )
|
||||
, m_asciiDataCurves( asciiCurves )
|
||||
, m_timeHistoryCurveQuantities( timeHistoryCurveQuantities )
|
||||
{
|
||||
@ -104,7 +110,7 @@ RimSummaryPlotAxisFormatter::RimSummaryPlotAxisFormatter( RimPlotAxisProperties*
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlotAxisFormatter::applyAxisPropertiesToPlot( RiuSummaryQwtPlot* qwtPlot )
|
||||
void RimSummaryPlotAxisFormatter::applyAxisPropertiesToPlot( RiuQwtPlotWidget* qwtPlot )
|
||||
{
|
||||
if ( !qwtPlot ) return;
|
||||
|
||||
@ -176,6 +182,46 @@ QString RimSummaryPlotAxisFormatter::autoAxisTitle() const
|
||||
{
|
||||
std::map<std::string, std::set<std::string>> unitToQuantityNameMap;
|
||||
|
||||
// clang-format off
|
||||
auto addToUnitToQuantityMap =[&]( const std::string& unitText,
|
||||
const RifEclipseSummaryAddress& sumAddress )
|
||||
{
|
||||
std::string quantityNameForDisplay;
|
||||
const std::string& quantityName = sumAddress.quantityName();
|
||||
|
||||
if ( sumAddress.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED )
|
||||
{
|
||||
quantityNameForDisplay = shortCalculationName( quantityName );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_axisProperties->showDescription() )
|
||||
{
|
||||
quantityNameForDisplay =
|
||||
RiuSummaryQuantityNameInfoProvider::instance()->longNameFromQuantityName( quantityName );
|
||||
}
|
||||
|
||||
if ( m_axisProperties->showAcronym() )
|
||||
{
|
||||
if ( !quantityNameForDisplay.empty() )
|
||||
{
|
||||
quantityNameForDisplay += " (";
|
||||
quantityNameForDisplay += quantityName;
|
||||
quantityNameForDisplay += ")";
|
||||
}
|
||||
}
|
||||
|
||||
if ( quantityNameForDisplay.empty() )
|
||||
{
|
||||
quantityNameForDisplay = quantityName;
|
||||
}
|
||||
}
|
||||
|
||||
unitToQuantityNameMap[unitText].insert( quantityNameForDisplay );
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
|
||||
for ( RimSummaryCurve* rimCurve : m_summaryCurves )
|
||||
{
|
||||
RifEclipseSummaryAddress sumAddress;
|
||||
@ -200,40 +246,27 @@ QString RimSummaryPlotAxisFormatter::autoAxisTitle() const
|
||||
continue;
|
||||
}
|
||||
|
||||
std::string quantityNameForDisplay;
|
||||
addToUnitToQuantityMap( unitText, sumAddress );
|
||||
}
|
||||
|
||||
for ( const RiaSummaryCurveDefinition& curveDef : m_curveDefinitions )
|
||||
{
|
||||
RifEclipseSummaryAddress sumAddress = curveDef.summaryAddress();
|
||||
std::string unitText;
|
||||
if ( curveDef.summaryCase() && curveDef.summaryCase()->summaryReader() )
|
||||
{
|
||||
const std::string& quantityName = sumAddress.quantityName();
|
||||
|
||||
if ( sumAddress.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED )
|
||||
{
|
||||
quantityNameForDisplay = shortCalculationName( quantityName );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_axisProperties->showDescription() )
|
||||
{
|
||||
quantityNameForDisplay =
|
||||
RiuSummaryQuantityNameInfoProvider::instance()->longNameFromQuantityName( quantityName );
|
||||
}
|
||||
|
||||
if ( m_axisProperties->showAcronym() )
|
||||
{
|
||||
if ( !quantityNameForDisplay.empty() )
|
||||
{
|
||||
quantityNameForDisplay += " (";
|
||||
quantityNameForDisplay += quantityName;
|
||||
quantityNameForDisplay += ")";
|
||||
}
|
||||
}
|
||||
|
||||
if ( quantityNameForDisplay.empty() )
|
||||
{
|
||||
quantityNameForDisplay = quantityName;
|
||||
}
|
||||
}
|
||||
|
||||
unitToQuantityNameMap[unitText].insert( quantityNameForDisplay );
|
||||
unitText = curveDef.summaryCase()->summaryReader()->unitName( sumAddress );
|
||||
}
|
||||
else if ( curveDef.ensemble() )
|
||||
{
|
||||
std::vector<RimSummaryCase*> sumCases = curveDef.ensemble()->allSummaryCases();
|
||||
if ( sumCases.size() && sumCases[0] && sumCases[0]->summaryReader() )
|
||||
{
|
||||
unitText = sumCases[0]->summaryReader()->unitName( sumAddress );
|
||||
}
|
||||
}
|
||||
|
||||
addToUnitToQuantityMap( unitText, sumAddress );
|
||||
}
|
||||
|
||||
QString assembledYAxisText;
|
||||
|
@ -24,23 +24,26 @@
|
||||
|
||||
#include <qwt_plot.h>
|
||||
|
||||
#include "RiaSummaryCurveDefinition.h"
|
||||
|
||||
class RimAsciiDataCurve;
|
||||
class RimSummaryCurve;
|
||||
class RimPlotAxisProperties;
|
||||
|
||||
class RiuSummaryQwtPlot;
|
||||
class RiuQwtPlotWidget;
|
||||
|
||||
class QwtPlotCurve;
|
||||
|
||||
class RimSummaryPlotAxisFormatter
|
||||
{
|
||||
public:
|
||||
RimSummaryPlotAxisFormatter( RimPlotAxisProperties* axisProperties,
|
||||
const std::vector<RimSummaryCurve*>& summaryCurves,
|
||||
const std::vector<RimAsciiDataCurve*>& asciiCurves,
|
||||
const std::set<QString>& timeHistoryCurveQuantities );
|
||||
RimSummaryPlotAxisFormatter( RimPlotAxisProperties* axisProperties,
|
||||
const std::vector<RimSummaryCurve*>& summaryCurves,
|
||||
const std::vector<RiaSummaryCurveDefinition>& curveDefinitions,
|
||||
const std::vector<RimAsciiDataCurve*>& asciiCurves,
|
||||
const std::set<QString>& timeHistoryCurveQuantities );
|
||||
|
||||
void applyAxisPropertiesToPlot( RiuSummaryQwtPlot* qwtPlot );
|
||||
void applyAxisPropertiesToPlot( RiuQwtPlotWidget* qwtPlot );
|
||||
|
||||
private:
|
||||
QString autoAxisTitle() const;
|
||||
@ -48,8 +51,9 @@ private:
|
||||
static std::string shortCalculationName( const std::string& calculationName );
|
||||
|
||||
private:
|
||||
RimPlotAxisProperties* m_axisProperties;
|
||||
const std::vector<RimSummaryCurve*> m_summaryCurves;
|
||||
const std::vector<RimAsciiDataCurve*> m_asciiDataCurves;
|
||||
const std::set<QString> m_timeHistoryCurveQuantities;
|
||||
RimPlotAxisProperties* m_axisProperties;
|
||||
const std::vector<RimSummaryCurve*> m_summaryCurves;
|
||||
const std::vector<RiaSummaryCurveDefinition> m_curveDefinitions;
|
||||
const std::vector<RimAsciiDataCurve*> m_asciiDataCurves;
|
||||
const std::set<QString> m_timeHistoryCurveQuantities;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user