This commit is contained in:
Jacob Støren
2020-02-28 14:51:21 +01:00
parent a1cbfa5175
commit 186332e707
7 changed files with 197 additions and 53 deletions

View File

@@ -21,6 +21,7 @@
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RiaColorTables.h" #include "RiaColorTables.h"
#include "RiuGroupedBarChartBuilder.h" #include "RiuGroupedBarChartBuilder.h"
#include "RiuPlotMainWindowTools.h"
#include "RiuSummaryQwtPlot.h" #include "RiuSummaryQwtPlot.h"
#include "RiuSummaryVectorSelectionDialog.h" #include "RiuSummaryVectorSelectionDialog.h"
@@ -28,10 +29,12 @@
#include "RimAnalysisPlotDataEntry.h" #include "RimAnalysisPlotDataEntry.h"
#include "RimDerivedSummaryCase.h" #include "RimDerivedSummaryCase.h"
#include "RimPlotAxisProperties.h"
#include "RimPlotAxisPropertiesInterface.h" #include "RimPlotAxisPropertiesInterface.h"
#include "RimProject.h" #include "RimProject.h"
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h" #include "RimSummaryCaseCollection.h"
#include "RimSummaryPlotAxisFormatter.h"
#include "qwt_column_symbol.h" #include "qwt_column_symbol.h"
#include "qwt_legend.h" #include "qwt_legend.h"
@@ -183,6 +186,12 @@ RimAnalysisPlot::RimAnalysisPlot()
CAF_PDM_InitField( &m_useSummaryItemInBarText, "UseSummaryItemInBarText", false, "Summary Item", "", "", "" ); CAF_PDM_InitField( &m_useSummaryItemInBarText, "UseSummaryItemInBarText", false, "Summary Item", "", "", "" );
CAF_PDM_InitField( &m_useTimeStepInBarText, "UseTimeStepInBarText", false, "Time Step", "", "", "" ); CAF_PDM_InitField( &m_useTimeStepInBarText, "UseTimeStepInBarText", false, "Time Step", "", "", "" );
CAF_PDM_InitField( &m_useQuantityInBarText, "UseQuantityInBarText", false, "Quantity", "", "", "" ); 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(); 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 std::set<RimPlotAxisPropertiesInterface*> RimAnalysisPlot::allPlotAxes() const
{ {
return {}; return {m_valueAxisProperties};
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -32,6 +32,7 @@ class RiuGroupedBarChartBuilder;
class RimAnalysisPlotDataEntry; class RimAnalysisPlotDataEntry;
class RimCurveDefinitionAnalyser; class RimCurveDefinitionAnalyser;
class RimPlotAxisPropertiesInterface; class RimPlotAxisPropertiesInterface;
class RimPlotAxisProperties;
//================================================================================================== //==================================================================================================
/// ///
@@ -107,8 +108,8 @@ private:
void reattachAllCurves() override {} void reattachAllCurves() override {}
void doRemoveFromCollection() override {} void doRemoveFromCollection() override {}
void updateAxes() override {} void updateAxes() override;
void onAxisSelected( int axis, bool toggle ) override {} void onAxisSelected( int axis, bool toggle ) override;
void updateZoomInQwt() override {} void updateZoomInQwt() override {}
void updateZoomFromQwt() override {} void updateZoomFromQwt() override {}
void setAutoScaleXEnabled( bool enabled ) override {} void setAutoScaleXEnabled( bool enabled ) override {}
@@ -168,4 +169,6 @@ private:
caf::PdmField<bool> m_useSummaryItemInBarText; caf::PdmField<bool> m_useSummaryItemInBarText;
caf::PdmField<bool> m_useTimeStepInBarText; caf::PdmField<bool> m_useTimeStepInBarText;
caf::PdmField<bool> m_useQuantityInBarText; caf::PdmField<bool> m_useQuantityInBarText;
caf::PdmChildField<RimPlotAxisProperties*> m_valueAxisProperties;
}; };

View File

@@ -57,6 +57,7 @@ CAF_PDM_SOURCE_INIT(RimPlotAxisProperties, "SummaryYAxisProperties");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimPlotAxisProperties::RimPlotAxisProperties() RimPlotAxisProperties::RimPlotAxisProperties()
: m_enableTitleTextSettings(true) : m_enableTitleTextSettings(true)
, m_isRangeSettingsEnabled(true)
{ {
CAF_PDM_InitObject("Axis Properties", ":/LeftAxis16x16.png", "", ""); CAF_PDM_InitObject("Axis Properties", ":/LeftAxis16x16.png", "", "");
@@ -110,6 +111,14 @@ void RimPlotAxisProperties::setEnableTitleTextSettings( bool enable )
m_enableTitleTextSettings = 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" ) ); caf::PdmUiGroup& scaleGroup = *( uiOrdering.addNewGroup( "Axis Values" ) );
scaleGroup.add( &isLogarithmicScaleEnabled ); if ( m_isRangeSettingsEnabled )
scaleGroup.add( &m_isAxisInverted ); {
scaleGroup.add( &isLogarithmicScaleEnabled );
scaleGroup.add( &m_isAxisInverted );
}
scaleGroup.add( &numberFormat ); scaleGroup.add( &numberFormat );
if ( numberFormat() != NUMBER_FORMAT_AUTO ) if ( numberFormat() != NUMBER_FORMAT_AUTO )
@@ -202,8 +214,11 @@ void RimPlotAxisProperties::defineUiOrdering( QString uiConfigName, caf::PdmUiOr
scaleGroup.add( &numberOfDecimals ); scaleGroup.add( &numberOfDecimals );
} }
scaleGroup.add( &scaleFactor ); scaleGroup.add( &scaleFactor );
scaleGroup.add( &visibleRangeMin ); if ( m_isRangeSettingsEnabled )
scaleGroup.add( &visibleRangeMax ); {
scaleGroup.add( &visibleRangeMin );
scaleGroup.add( &visibleRangeMax );
}
scaleGroup.add( &m_valuesFontSize ); scaleGroup.add( &m_valuesFontSize );
uiOrdering.skipRemainingFields( true ); uiOrdering.skipRemainingFields( true );

View File

@@ -53,6 +53,7 @@ public:
RimPlotAxisProperties(); RimPlotAxisProperties();
void setEnableTitleTextSettings( bool enable ); void setEnableTitleTextSettings( bool enable );
void enableRangeSettings( bool enable );
void setNameAndAxis( const QString& name, QwtPlot::Axis axis ); void setNameAndAxis( const QString& name, QwtPlot::Axis axis );
AxisTitlePositionType titlePosition() const override; AxisTitlePositionType titlePosition() const override;
int titleFontSize() const override; int titleFontSize() const override;
@@ -117,6 +118,7 @@ private:
QwtPlot::Axis m_axis; QwtPlot::Axis m_axis;
bool m_enableTitleTextSettings; bool m_enableTitleTextSettings;
bool m_isRangeSettingsEnabled;
caf::PdmField<int> m_titleFontSize; caf::PdmField<int> m_titleFontSize;
caf::PdmField<caf::AppEnum<AxisTitlePositionType>> m_titlePositionEnum; caf::PdmField<caf::AppEnum<AxisTitlePositionType>> m_titlePositionEnum;

View File

@@ -827,6 +827,7 @@ void RimSummaryPlot::updateYAxis( RiaDefines::PlotAxis plotAxis )
RimSummaryPlotAxisFormatter calc( yAxisProperties, RimSummaryPlotAxisFormatter calc( yAxisProperties,
visibleSummaryCurvesForAxis( plotAxis ), visibleSummaryCurvesForAxis( plotAxis ),
{},
visibleAsciiDataCurvesForAxis( plotAxis ), visibleAsciiDataCurvesForAxis( plotAxis ),
timeHistoryQuantities ); timeHistoryQuantities );
calc.applyAxisPropertiesToPlot( m_plotWidget ); calc.applyAxisPropertiesToPlot( m_plotWidget );
@@ -1154,6 +1155,7 @@ void RimSummaryPlot::updateBottomXAxis()
RimSummaryPlotAxisFormatter calc( bottomAxisProperties, RimSummaryPlotAxisFormatter calc( bottomAxisProperties,
visibleSummaryCurvesForAxis( RiaDefines::PLOT_AXIS_BOTTOM ), visibleSummaryCurvesForAxis( RiaDefines::PLOT_AXIS_BOTTOM ),
{},
visibleAsciiDataCurvesForAxis( RiaDefines::PLOT_AXIS_BOTTOM ), visibleAsciiDataCurvesForAxis( RiaDefines::PLOT_AXIS_BOTTOM ),
timeHistoryQuantities ); timeHistoryQuantities );
calc.applyAxisPropertiesToPlot( m_plotWidget ); calc.applyAxisPropertiesToPlot( m_plotWidget );

View File

@@ -20,8 +20,12 @@
#include "RiaDefines.h" #include "RiaDefines.h"
#include "RifSummaryReaderInterface.h"
#include "RimAsciiDataCurve.h" #include "RimAsciiDataCurve.h"
#include "RimPlotAxisProperties.h" #include "RimPlotAxisProperties.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
#include "RiuSummaryQuantityNameInfoProvider.h" #include "RiuSummaryQuantityNameInfoProvider.h"
@@ -90,12 +94,14 @@ private:
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimSummaryPlotAxisFormatter::RimSummaryPlotAxisFormatter( RimPlotAxisProperties* axisProperties, RimSummaryPlotAxisFormatter::RimSummaryPlotAxisFormatter( RimPlotAxisProperties* axisProperties,
const std::vector<RimSummaryCurve*>& summaryCurves, const std::vector<RimSummaryCurve*>& summaryCurves,
const std::vector<RimAsciiDataCurve*>& asciiCurves, const std::vector<RiaSummaryCurveDefinition>& curveDefinitions,
const std::vector<RimAsciiDataCurve*>& asciiCurves,
const std::set<QString>& timeHistoryCurveQuantities ) const std::set<QString>& timeHistoryCurveQuantities )
: m_axisProperties( axisProperties ) : m_axisProperties( axisProperties )
, m_summaryCurves( summaryCurves ) , m_summaryCurves( summaryCurves )
, m_curveDefinitions( curveDefinitions )
, m_asciiDataCurves( asciiCurves ) , m_asciiDataCurves( asciiCurves )
, m_timeHistoryCurveQuantities( timeHistoryCurveQuantities ) , m_timeHistoryCurveQuantities( timeHistoryCurveQuantities )
{ {
@@ -104,7 +110,7 @@ RimSummaryPlotAxisFormatter::RimSummaryPlotAxisFormatter( RimPlotAxisProperties*
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryPlotAxisFormatter::applyAxisPropertiesToPlot( RiuSummaryQwtPlot* qwtPlot ) void RimSummaryPlotAxisFormatter::applyAxisPropertiesToPlot( RiuQwtPlotWidget* qwtPlot )
{ {
if ( !qwtPlot ) return; if ( !qwtPlot ) return;
@@ -176,6 +182,46 @@ QString RimSummaryPlotAxisFormatter::autoAxisTitle() const
{ {
std::map<std::string, std::set<std::string>> unitToQuantityNameMap; 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 ) for ( RimSummaryCurve* rimCurve : m_summaryCurves )
{ {
RifEclipseSummaryAddress sumAddress; RifEclipseSummaryAddress sumAddress;
@@ -200,40 +246,27 @@ QString RimSummaryPlotAxisFormatter::autoAxisTitle() const
continue; 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(); unitText = curveDef.summaryCase()->summaryReader()->unitName( sumAddress );
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 );
} }
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; QString assembledYAxisText;

View File

@@ -24,23 +24,26 @@
#include <qwt_plot.h> #include <qwt_plot.h>
#include "RiaSummaryCurveDefinition.h"
class RimAsciiDataCurve; class RimAsciiDataCurve;
class RimSummaryCurve; class RimSummaryCurve;
class RimPlotAxisProperties; class RimPlotAxisProperties;
class RiuSummaryQwtPlot; class RiuQwtPlotWidget;
class QwtPlotCurve; class QwtPlotCurve;
class RimSummaryPlotAxisFormatter class RimSummaryPlotAxisFormatter
{ {
public: public:
RimSummaryPlotAxisFormatter( RimPlotAxisProperties* axisProperties, RimSummaryPlotAxisFormatter( RimPlotAxisProperties* axisProperties,
const std::vector<RimSummaryCurve*>& summaryCurves, const std::vector<RimSummaryCurve*>& summaryCurves,
const std::vector<RimAsciiDataCurve*>& asciiCurves, const std::vector<RiaSummaryCurveDefinition>& curveDefinitions,
const std::set<QString>& timeHistoryCurveQuantities ); const std::vector<RimAsciiDataCurve*>& asciiCurves,
const std::set<QString>& timeHistoryCurveQuantities );
void applyAxisPropertiesToPlot( RiuSummaryQwtPlot* qwtPlot ); void applyAxisPropertiesToPlot( RiuQwtPlotWidget* qwtPlot );
private: private:
QString autoAxisTitle() const; QString autoAxisTitle() const;
@@ -48,8 +51,9 @@ private:
static std::string shortCalculationName( const std::string& calculationName ); static std::string shortCalculationName( const std::string& calculationName );
private: private:
RimPlotAxisProperties* m_axisProperties; RimPlotAxisProperties* m_axisProperties;
const std::vector<RimSummaryCurve*> m_summaryCurves; const std::vector<RimSummaryCurve*> m_summaryCurves;
const std::vector<RimAsciiDataCurve*> m_asciiDataCurves; const std::vector<RiaSummaryCurveDefinition> m_curveDefinitions;
const std::set<QString> m_timeHistoryCurveQuantities; const std::vector<RimAsciiDataCurve*> m_asciiDataCurves;
const std::set<QString> m_timeHistoryCurveQuantities;
}; };