mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Summary Plot: Add support for multiple plot axis.
This commit is contained in:
committed by
Magne Sjaastad
parent
a3ad9d2c1e
commit
e92e2e8764
@@ -96,9 +96,9 @@ void RimAsciiDataCurve::setYAxis( RiaDefines::PlotAxis plotAxis )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiaDefines::PlotAxis RimAsciiDataCurve::yAxis() const
|
||||
RiuPlotAxis RimAsciiDataCurve::yAxis() const
|
||||
{
|
||||
return m_plotAxis();
|
||||
return RiuPlotAxis( m_plotAxis() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -52,9 +52,9 @@ public:
|
||||
std::vector<double> yValues() const;
|
||||
const std::vector<time_t>& timeSteps() const;
|
||||
|
||||
void setYAxis( RiaDefines::PlotAxis plotAxis );
|
||||
RiaDefines::PlotAxis yAxis() const;
|
||||
void updateQwtPlotAxis();
|
||||
void setYAxis( RiaDefines::PlotAxis plotAxis );
|
||||
RiuPlotAxis yAxis() const;
|
||||
void updateQwtPlotAxis();
|
||||
|
||||
void setTimeSteps( const std::vector<QDateTime>& timeSteps );
|
||||
void setValues( const std::vector<double>& values );
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "RimEnsembleStatisticsCase.h"
|
||||
#include "RimObjectiveFunction.h"
|
||||
#include "RimObjectiveFunctionTools.h"
|
||||
#include "RimPlotAxisPropertiesInterface.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimRegularLegendConfig.h"
|
||||
#include "RimSummaryAddress.h"
|
||||
@@ -160,7 +161,10 @@ RimEnsembleCurveSet::RimEnsembleCurveSet()
|
||||
m_selectedTimeSteps.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() );
|
||||
m_selectedTimeSteps.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_plotAxis, "PlotAxis", "Axis" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_plotAxis_OBSOLETE, "PlotAxis", "Axis" );
|
||||
m_plotAxis_OBSOLETE.xmlCapability()->setIOWritable( false );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_plotAxisProperties, "Axis", "Axis" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_legendConfig, "LegendConfig", "" );
|
||||
m_legendConfig = new RimRegularLegendConfig();
|
||||
@@ -619,7 +623,7 @@ void RimEnsembleCurveSet::fieldChangedByUi( const caf::PdmFieldHandle* changedFi
|
||||
|
||||
if ( changedField == &m_showCurves )
|
||||
{
|
||||
if ( !m_showCurves() )
|
||||
if ( !m_showCurves() && m_plotCurveForLegendText )
|
||||
{
|
||||
// Need to detach the legend since the plot type might change from Qwt to QtCharts.
|
||||
// The plot curve for legend text needs to be recreated when curves are shown next time.
|
||||
@@ -740,11 +744,11 @@ void RimEnsembleCurveSet::fieldChangedByUi( const caf::PdmFieldHandle* changedFi
|
||||
updateCurveColors();
|
||||
updateTimeAnnotations();
|
||||
}
|
||||
else if ( changedField == &m_plotAxis )
|
||||
else if ( changedField == &m_plotAxisProperties )
|
||||
{
|
||||
for ( RimSummaryCurve* curve : curves() )
|
||||
{
|
||||
curve->setLeftOrRightAxisY( m_plotAxis() );
|
||||
curve->setLeftOrRightAxisY( axisY() );
|
||||
}
|
||||
|
||||
updatePlotAxis();
|
||||
@@ -865,7 +869,7 @@ void RimEnsembleCurveSet::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde
|
||||
curveDataGroup->add( &m_yValuesSummaryAddressUiField );
|
||||
curveDataGroup->add( &m_yPushButtonSelectSummaryAddress, { false, 1, 0 } );
|
||||
curveDataGroup->add( &m_resampling );
|
||||
curveDataGroup->add( &m_plotAxis );
|
||||
curveDataGroup->add( &m_plotAxisProperties );
|
||||
}
|
||||
|
||||
appendColorGroup( uiOrdering );
|
||||
@@ -1208,6 +1212,16 @@ QList<caf::PdmOptionItemInfo> RimEnsembleCurveSet::calculateValueOptions( const
|
||||
options.push_back( caf::PdmOptionItemInfo( name, objFunc ) );
|
||||
}
|
||||
}
|
||||
else if ( fieldNeedingOptions == &m_plotAxisProperties )
|
||||
{
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfTypeAsserted( plot );
|
||||
|
||||
for ( auto axis : plot->plotAxes() )
|
||||
{
|
||||
options.push_back( caf::PdmOptionItemInfo( axis->name(), axis ) );
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
@@ -1682,11 +1696,11 @@ void RimEnsembleCurveSet::updateEnsembleCurves( const std::vector<RimSummaryCase
|
||||
RimSummaryCurve* curve = new RimSummaryCurve();
|
||||
curve->setSummaryCaseY( sumCase );
|
||||
curve->setSummaryAddressYAndApplyInterpolation( addr->address() );
|
||||
curve->setLeftOrRightAxisY( m_plotAxis() );
|
||||
curve->setResampling( m_resampling() );
|
||||
|
||||
addCurve( curve );
|
||||
|
||||
curve->setLeftOrRightAxisY( axisY() );
|
||||
curve->updateCurveVisibility();
|
||||
|
||||
newSummaryCurves.push_back( curve );
|
||||
@@ -1793,7 +1807,7 @@ void RimEnsembleCurveSet::updateStatisticsCurves( const std::vector<RimSummaryCa
|
||||
curve->setLineStyle( RiuQwtPlotCurveDefines::LineStyleEnum::STYLE_SOLID );
|
||||
curve->setSummaryCaseY( m_ensembleStatCase.get() );
|
||||
curve->setSummaryAddressYAndApplyInterpolation( address );
|
||||
curve->setLeftOrRightAxisY( m_plotAxis() );
|
||||
curve->setLeftOrRightAxisY( axisY() );
|
||||
|
||||
curve->updateCurveVisibility();
|
||||
curve->loadDataAndUpdate( false );
|
||||
@@ -2065,3 +2079,27 @@ int statisticsCurveSymbolSize( RiuPlotCurveSymbol::PointSymbolEnum symbol )
|
||||
if ( symbol == RiuPlotCurveSymbol::SYMBOL_DOWN_TRIANGLE ) return 7;
|
||||
return 6;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiuPlotAxis RimEnsembleCurveSet::axisY() const
|
||||
{
|
||||
if ( m_plotAxisProperties )
|
||||
return m_plotAxisProperties->plotAxisType();
|
||||
else
|
||||
return RiuPlotAxis::defaultLeft();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveSet::initAfterRead()
|
||||
{
|
||||
if ( m_plotAxisProperties.value() == nullptr )
|
||||
{
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfTypeAsserted( plot );
|
||||
m_plotAxisProperties = plot->axisPropertiesForPlotAxis( RiuPlotAxis( m_plotAxis_OBSOLETE() ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,8 @@
|
||||
|
||||
#include "RigEnsembleParameter.h"
|
||||
|
||||
#include "RiuPlotAxis.h"
|
||||
|
||||
#include "cafAppEnum.h"
|
||||
#include "cafPdmChildArrayField.h"
|
||||
#include "cafPdmChildField.h"
|
||||
@@ -63,6 +65,7 @@ class RiaSummaryCurveDefinition;
|
||||
class RiuSummaryVectorSelectionDialog;
|
||||
class RiuPlotWidget;
|
||||
class RiuPlotCurve;
|
||||
class RimPlotAxisPropertiesInterface;
|
||||
|
||||
class QwtPlot;
|
||||
class QwtPlotCurve;
|
||||
@@ -164,6 +167,9 @@ public:
|
||||
|
||||
std::vector<cvf::Color3f> generateColorsForCases( const std::vector<RimSummaryCase*>& summaryCases ) const;
|
||||
|
||||
protected:
|
||||
void initAfterRead() override;
|
||||
|
||||
private:
|
||||
void updateEnsembleCurves( const std::vector<RimSummaryCase*>& sumCases );
|
||||
void updateStatisticsCurves( const std::vector<RimSummaryCase*>& sumCases );
|
||||
@@ -186,7 +192,8 @@ private:
|
||||
|
||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||
|
||||
void updatePlotAxis();
|
||||
void updatePlotAxis();
|
||||
RiuPlotAxis axisY() const;
|
||||
|
||||
QString createAutoName() const;
|
||||
|
||||
@@ -228,7 +235,8 @@ private:
|
||||
caf::PdmField<TimeStepFilterEnum> m_timeStepFilter;
|
||||
caf::PdmField<std::vector<QDateTime>> m_selectedTimeSteps;
|
||||
|
||||
caf::PdmField<caf::AppEnum<RiaDefines::PlotAxis>> m_plotAxis;
|
||||
caf::PdmField<caf::AppEnum<RiaDefines::PlotAxis>> m_plotAxis_OBSOLETE;
|
||||
caf::PdmPtrField<RimPlotAxisPropertiesInterface*> m_plotAxisProperties;
|
||||
|
||||
caf::PdmChildField<RimRegularLegendConfig*> m_legendConfig;
|
||||
caf::PdmChildField<RimEnsembleCurveFilterCollection*> m_curveFilters;
|
||||
|
||||
@@ -27,10 +27,9 @@ CAF_PDM_SOURCE_INIT( RimSummaryCrossPlot, "SummaryCrossPlot" );
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCrossPlot::RimSummaryCrossPlot()
|
||||
: RimSummaryPlot( true )
|
||||
{
|
||||
CAF_PDM_InitObject( "Summary Cross Plot", ":/SummaryXPlotLight16x16.png" );
|
||||
|
||||
setAsCrossPlot();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "RiaCurveMerger.h"
|
||||
#include "RiaGuiApplication.h"
|
||||
#include "RiaLogging.h"
|
||||
#include "RiaPlotDefines.h"
|
||||
#include "RiaPreferencesSummary.h"
|
||||
#include "RiaResultNames.h"
|
||||
#include "RiaSummaryCurveDefinition.h"
|
||||
@@ -31,6 +32,7 @@
|
||||
#include "RimEnsembleCurveSet.h"
|
||||
#include "RimEnsembleCurveSetCollection.h"
|
||||
#include "RimMultipleSummaryPlotNameHelper.h"
|
||||
#include "RimPlotAxisProperties.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryAddress.h"
|
||||
#include "RimSummaryCalculationCollection.h"
|
||||
@@ -45,6 +47,7 @@
|
||||
#include "RimSummaryTimeAxisProperties.h"
|
||||
#include "RimTools.h"
|
||||
|
||||
#include "RiuPlotAxis.h"
|
||||
#include "RiuPlotMainWindow.h"
|
||||
#include "RiuQwtPlotCurve.h"
|
||||
#include "RiuSummaryVectorSelectionDialog.h"
|
||||
@@ -111,7 +114,10 @@ RimSummaryCurve::RimSummaryCurve()
|
||||
CAF_PDM_InitFieldNoDefault( &m_isEnsembleCurve, "IsEnsembleCurve", "Ensemble Curve" );
|
||||
m_isEnsembleCurve.v() = caf::Tristate::State::PartiallyTrue;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_plotAxis, "PlotAxis", "Axis" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_plotAxis_OBSOLETE, "PlotAxis", "Axis" );
|
||||
m_plotAxis_OBSOLETE.xmlCapability()->setIOWritable( false );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_plotAxisProperties, "Axis", "Axis" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_curveNameConfig, "SummaryCurveNameConfig", "SummaryCurveNameConfig" );
|
||||
m_curveNameConfig.uiCapability()->setUiTreeHidden( true );
|
||||
@@ -424,17 +430,24 @@ RimSummaryCase* RimSummaryCurve::summaryCaseX() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCurve::setLeftOrRightAxisY( RiaDefines::PlotAxis plotAxis )
|
||||
void RimSummaryCurve::setLeftOrRightAxisY( RiuPlotAxis plotAxis )
|
||||
{
|
||||
m_plotAxis = plotAxis;
|
||||
m_plotAxis_OBSOLETE = plotAxis.axis();
|
||||
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfTypeAsserted( plot );
|
||||
m_plotAxisProperties = plot->axisPropertiesForPlotAxis( plotAxis );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiaDefines::PlotAxis RimSummaryCurve::axisY() const
|
||||
RiuPlotAxis RimSummaryCurve::axisY() const
|
||||
{
|
||||
return m_plotAxis();
|
||||
if ( m_plotAxisProperties )
|
||||
return m_plotAxisProperties->plotAxisType();
|
||||
else
|
||||
return RiuPlotAxis::defaultLeft();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -489,6 +502,17 @@ QList<caf::PdmOptionItemInfo> RimSummaryCurve::calculateValueOptions( const caf:
|
||||
{
|
||||
appendOptionItemsForSummaryAddresses( &options, m_xValuesSummaryCase() );
|
||||
}
|
||||
else if ( fieldNeedingOptions == &m_plotAxisProperties )
|
||||
{
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfTypeAsserted( plot );
|
||||
|
||||
for ( auto axis : plot->plotAxes() )
|
||||
{
|
||||
options.push_back( caf::PdmOptionItemInfo( axis->name(), axis ) );
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
@@ -746,6 +770,13 @@ void RimSummaryCurve::initAfterRead()
|
||||
{
|
||||
RimStackablePlotCurve::initAfterRead();
|
||||
|
||||
if ( m_plotAxisProperties.value() == nullptr )
|
||||
{
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfType( plot );
|
||||
if ( plot ) m_plotAxisProperties = plot->axisPropertiesForPlotAxis( RiuPlotAxis( m_plotAxis_OBSOLETE() ) );
|
||||
}
|
||||
|
||||
if ( m_isEnsembleCurve().isPartiallyTrue() )
|
||||
{
|
||||
m_isEnsembleCurve.v() = ( summaryCaseY() && summaryCaseY()->ensemble() ) ? caf::Tristate::State::True
|
||||
@@ -785,7 +816,7 @@ void RimSummaryCurve::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering
|
||||
curveDataGroup->add( &m_yValuesSummaryAddressUiField, { true, 2, 1 } );
|
||||
curveDataGroup->add( &m_yPushButtonSelectSummaryAddress, { false, 1, 0 } );
|
||||
curveDataGroup->add( &m_resampling, { true, 3, 1 } );
|
||||
curveDataGroup->add( &m_plotAxis, { true, 3, 1 } );
|
||||
curveDataGroup->add( &m_plotAxisProperties, { true, 3, 1 } );
|
||||
|
||||
if ( isCrossPlotCurve() )
|
||||
m_showErrorBars = false;
|
||||
@@ -1047,7 +1078,7 @@ void RimSummaryCurve::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
|
||||
// Update the summary curve collection to make sure the curve names are updated in curve creator UI
|
||||
visibilityChanged.send( m_showCurve() );
|
||||
}
|
||||
else if ( changedField == &m_plotAxis )
|
||||
else if ( changedField == &m_plotAxisProperties )
|
||||
{
|
||||
updateAxisInPlot( axisY() );
|
||||
plot->updateAxes();
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
|
||||
class RifSummaryReaderInterface;
|
||||
class RimSummaryCase;
|
||||
class RiuQwtPlotCurve;
|
||||
class RimSummaryCurveAutoName;
|
||||
class RimSummaryAddress;
|
||||
class RiaSummaryCurveDefinition;
|
||||
class RimPlotAxisPropertiesInterface;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@@ -67,8 +67,8 @@ public:
|
||||
|
||||
RifEclipseSummaryAddress errorSummaryAddressY() const;
|
||||
std::vector<double> errorValuesY() const;
|
||||
void setLeftOrRightAxisY( RiaDefines::PlotAxis plotAxis );
|
||||
RiaDefines::PlotAxis axisY() const;
|
||||
void setLeftOrRightAxisY( RiuPlotAxis plotAxis );
|
||||
RiuPlotAxis axisY() const;
|
||||
const std::vector<time_t>& timeStepsY() const;
|
||||
double yValueAtTimeT( time_t time ) const;
|
||||
void setOverrideCurveDataY( const std::vector<time_t>& xValues, const std::vector<double>& yValues );
|
||||
@@ -145,6 +145,7 @@ private:
|
||||
caf::PdmField<caf::Tristate> m_isEnsembleCurve;
|
||||
|
||||
caf::PdmChildField<RimSummaryCurveAutoName*> m_curveNameConfig;
|
||||
caf::PdmField<caf::AppEnum<RiaDefines::PlotAxis>> m_plotAxis;
|
||||
caf::PdmField<caf::AppEnum<RiaDefines::PlotAxis>> m_plotAxis_OBSOLETE;
|
||||
caf::PdmPtrField<RimPlotAxisPropertiesInterface*> m_plotAxisProperties;
|
||||
caf::PdmField<bool> m_isTopZWithinCategory;
|
||||
};
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include "RimSummaryPlotNameHelper.h"
|
||||
#include "RimSummaryTimeAxisProperties.h"
|
||||
|
||||
#include "RiuPlotAxis.h"
|
||||
#include "RiuPlotMainWindowTools.h"
|
||||
#include "RiuSummaryQwtPlot.h"
|
||||
#include "RiuTreeViewEventFilter.h"
|
||||
@@ -202,8 +203,9 @@ CurvesData concatCurvesData( const std::vector<CurvesData>& curvesData );
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryPlot::RimSummaryPlot()
|
||||
RimSummaryPlot::RimSummaryPlot( bool isCrossPlot )
|
||||
: RimPlot()
|
||||
, m_isCrossPlot( isCrossPlot )
|
||||
{
|
||||
CAF_PDM_InitScriptableObject( "Summary Plot", ":/SummaryPlotLight16x16.png", "", "A Summary Plot" );
|
||||
|
||||
@@ -228,35 +230,34 @@ RimSummaryPlot::RimSummaryPlot()
|
||||
CAF_PDM_InitFieldNoDefault( &m_asciiDataCurves, "AsciiDataCurves", "" );
|
||||
m_asciiDataCurves.uiCapability()->setUiTreeHidden( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_leftYAxisProperties, "LeftYAxisProperties", "Left Y Axis" );
|
||||
m_leftYAxisProperties.uiCapability()->setUiTreeHidden( true );
|
||||
m_leftYAxisProperties = new RimPlotAxisProperties;
|
||||
m_leftYAxisProperties->setNameAndAxis( "Left Y-Axis", RiaDefines::PlotAxis::PLOT_AXIS_LEFT );
|
||||
CAF_PDM_InitFieldNoDefault( &m_axisProperties, "AxisProperties", "Axes", ":/Axes16x16.png" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_rightYAxisProperties, "RightYAxisProperties", "Right Y Axis" );
|
||||
m_rightYAxisProperties.uiCapability()->setUiTreeHidden( true );
|
||||
m_rightYAxisProperties = new RimPlotAxisProperties;
|
||||
m_rightYAxisProperties->setNameAndAxis( "Right Y-Axis", RiaDefines::PlotAxis::PLOT_AXIS_RIGHT );
|
||||
RimPlotAxisProperties* leftYAxisProperties = new RimPlotAxisProperties;
|
||||
leftYAxisProperties->setNameAndAxis( "Left", RiaDefines::PlotAxis::PLOT_AXIS_LEFT, 0 );
|
||||
m_axisProperties.push_back( leftYAxisProperties );
|
||||
connectAxisSignals( leftYAxisProperties );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_bottomAxisProperties, "BottomAxisProperties", "Bottom X Axis" );
|
||||
m_bottomAxisProperties.uiCapability()->setUiTreeHidden( true );
|
||||
m_bottomAxisProperties = new RimPlotAxisProperties;
|
||||
m_bottomAxisProperties->setNameAndAxis( "Bottom X-Axis", RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM );
|
||||
RimPlotAxisProperties* rightYAxisProperties = new RimPlotAxisProperties;
|
||||
rightYAxisProperties->setNameAndAxis( "Right", RiaDefines::PlotAxis::PLOT_AXIS_RIGHT, 0 );
|
||||
m_axisProperties.push_back( rightYAxisProperties );
|
||||
connectAxisSignals( rightYAxisProperties );
|
||||
|
||||
connectAxisSignals( m_leftYAxisProperties() );
|
||||
connectAxisSignals( m_rightYAxisProperties() );
|
||||
connectAxisSignals( m_bottomAxisProperties() );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_timeAxisProperties, "TimeAxisProperties", "Time Axis" );
|
||||
m_timeAxisProperties.uiCapability()->setUiTreeHidden( true );
|
||||
m_timeAxisProperties = new RimSummaryTimeAxisProperties;
|
||||
if ( m_isCrossPlot )
|
||||
{
|
||||
RimPlotAxisProperties* bottomAxisProperties = new RimPlotAxisProperties;
|
||||
bottomAxisProperties->setNameAndAxis( "Bottom", RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, 0 );
|
||||
m_axisProperties.push_back( bottomAxisProperties );
|
||||
}
|
||||
else
|
||||
{
|
||||
RimSummaryTimeAxisProperties* timeAxisProperties = new RimSummaryTimeAxisProperties;
|
||||
m_axisProperties.push_back( timeAxisProperties );
|
||||
}
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_textCurveSetEditor, "SummaryPlotFilterTextCurveSetEditor", "Text Filter Curve Creator" );
|
||||
m_textCurveSetEditor.uiCapability()->setUiTreeHidden( true );
|
||||
m_textCurveSetEditor = new RimSummaryPlotFilterTextCurveSetEditor;
|
||||
|
||||
m_isCrossPlot = false;
|
||||
|
||||
m_nameHelperAllCurves.reset( new RimSummaryPlotNameHelper );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_sourceStepping, "SourceStepping", "" );
|
||||
@@ -268,6 +269,27 @@ RimSummaryPlot::RimSummaryPlot()
|
||||
m_sourceStepping.xmlCapability()->disableIO();
|
||||
|
||||
setPlotInfoLabel( "Filters Active" );
|
||||
|
||||
// Obsolete axis fields
|
||||
CAF_PDM_InitFieldNoDefault( &m_leftYAxisProperties_OBSOLETE, "LeftYAxisProperties", "Left Y Axis" );
|
||||
m_leftYAxisProperties_OBSOLETE.uiCapability()->setUiTreeHidden( true );
|
||||
m_leftYAxisProperties_OBSOLETE.xmlCapability()->setIOWritable( false );
|
||||
m_leftYAxisProperties_OBSOLETE = new RimPlotAxisProperties;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_rightYAxisProperties_OBSOLETE, "RightYAxisProperties", "Right Y Axis" );
|
||||
m_rightYAxisProperties_OBSOLETE.uiCapability()->setUiTreeHidden( true );
|
||||
m_rightYAxisProperties_OBSOLETE.xmlCapability()->setIOWritable( false );
|
||||
m_rightYAxisProperties_OBSOLETE = new RimPlotAxisProperties;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_bottomAxisProperties_OBSOLETE, "BottomAxisProperties", "Bottom X Axis" );
|
||||
m_bottomAxisProperties_OBSOLETE.uiCapability()->setUiTreeHidden( true );
|
||||
m_bottomAxisProperties_OBSOLETE.xmlCapability()->setIOWritable( false );
|
||||
m_bottomAxisProperties_OBSOLETE = new RimPlotAxisProperties;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_timeAxisProperties_OBSOLETE, "TimeAxisProperties", "Time Axis" );
|
||||
m_timeAxisProperties_OBSOLETE.uiCapability()->setUiTreeHidden( true );
|
||||
m_timeAxisProperties_OBSOLETE.xmlCapability()->setIOWritable( false );
|
||||
m_timeAxisProperties_OBSOLETE = new RimSummaryTimeAxisProperties;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -288,25 +310,27 @@ RimSummaryPlot::~RimSummaryPlot()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::updateAxes()
|
||||
{
|
||||
updateYAxis( RiaDefines::PlotAxis::PLOT_AXIS_LEFT );
|
||||
updateYAxis( RiaDefines::PlotAxis::PLOT_AXIS_RIGHT );
|
||||
updateAxis( RiaDefines::PlotAxis::PLOT_AXIS_LEFT );
|
||||
updateAxis( RiaDefines::PlotAxis::PLOT_AXIS_RIGHT );
|
||||
|
||||
if ( m_timeAxisProperties() && plotWidget() )
|
||||
if ( timeAxisProperties() && plotWidget() )
|
||||
{
|
||||
m_summaryPlot->updateAnnotationObjects( m_timeAxisProperties() );
|
||||
m_summaryPlot->updateAnnotationObjects( timeAxisProperties() );
|
||||
}
|
||||
if ( m_leftYAxisProperties() && plotWidget() )
|
||||
|
||||
RimPlotAxisPropertiesInterface* leftYAxisProperties = axisPropertiesForPlotAxis( RiuPlotAxis::defaultLeft() );
|
||||
if ( leftYAxisProperties && plotWidget() )
|
||||
{
|
||||
m_summaryPlot->updateAnnotationObjects( m_leftYAxisProperties() );
|
||||
m_summaryPlot->updateAnnotationObjects( leftYAxisProperties );
|
||||
}
|
||||
|
||||
if ( m_isCrossPlot )
|
||||
{
|
||||
updateBottomXAxis();
|
||||
updateAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM );
|
||||
}
|
||||
else
|
||||
{
|
||||
updateTimeAxis();
|
||||
updateTimeAxis( timeAxisProperties() );
|
||||
}
|
||||
|
||||
plotWidget()->scheduleReplot();
|
||||
@@ -317,9 +341,9 @@ void RimSummaryPlot::updateAxes()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimSummaryPlot::isLogarithmicScaleEnabled( RiaDefines::PlotAxis plotAxis ) const
|
||||
bool RimSummaryPlot::isLogarithmicScaleEnabled( RiuPlotAxis plotAxis ) const
|
||||
{
|
||||
return yAxisPropertiesLeftOrRight( plotAxis )->isLogarithmicScaleEnabled();
|
||||
return axisPropertiesForPlotAxis( plotAxis )->isLogarithmicScaleEnabled();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -327,7 +351,14 @@ bool RimSummaryPlot::isLogarithmicScaleEnabled( RiaDefines::PlotAxis plotAxis )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryTimeAxisProperties* RimSummaryPlot::timeAxisProperties()
|
||||
{
|
||||
return m_timeAxisProperties();
|
||||
// Find the first time axis (which is correct since there is only one).
|
||||
for ( auto ap : m_axisProperties )
|
||||
{
|
||||
RimSummaryTimeAxisProperties* timeAxis = dynamic_cast<RimSummaryTimeAxisProperties*>( ap.p() );
|
||||
if ( timeAxis ) return timeAxis;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -484,21 +515,21 @@ void RimSummaryPlot::onAxisSelected( int axis, bool toggle )
|
||||
caf::PdmObject* itemToSelect = nullptr;
|
||||
if ( axis == QwtPlot::yLeft )
|
||||
{
|
||||
itemToSelect = m_leftYAxisProperties;
|
||||
itemToSelect = m_leftYAxisProperties_OBSOLETE;
|
||||
}
|
||||
else if ( axis == QwtPlot::yRight )
|
||||
{
|
||||
itemToSelect = m_rightYAxisProperties;
|
||||
itemToSelect = m_rightYAxisProperties_OBSOLETE;
|
||||
}
|
||||
else if ( axis == QwtPlot::xBottom )
|
||||
{
|
||||
if ( m_isCrossPlot )
|
||||
{
|
||||
itemToSelect = m_bottomAxisProperties;
|
||||
itemToSelect = m_bottomAxisProperties_OBSOLETE;
|
||||
}
|
||||
else
|
||||
{
|
||||
itemToSelect = m_timeAxisProperties;
|
||||
itemToSelect = m_timeAxisProperties_OBSOLETE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -653,7 +684,7 @@ RimSummaryCurveCollection* RimSummaryPlot::summaryCurveCollection() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimSummaryCurve*> RimSummaryPlot::visibleStackedSummaryCurvesForAxis( RiaDefines::PlotAxis plotAxis )
|
||||
std::vector<RimSummaryCurve*> RimSummaryPlot::visibleStackedSummaryCurvesForAxis( RiuPlotAxis plotAxis )
|
||||
{
|
||||
auto visibleCurves = visibleSummaryCurvesForAxis( plotAxis );
|
||||
|
||||
@@ -727,17 +758,11 @@ QString RimSummaryPlot::generatedPlotTitleFromAllCurves() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::copyAxisPropertiesFromOther( const RimSummaryPlot& sourceSummaryPlot )
|
||||
{
|
||||
for ( auto ap : sourceSummaryPlot.plotAxes() )
|
||||
{
|
||||
QString data =
|
||||
sourceSummaryPlot.yAxisPropertiesLeftOrRight( RiaDefines::PlotAxis::PLOT_AXIS_LEFT )->writeObjectToXmlString();
|
||||
yAxisPropertiesLeftOrRight( RiaDefines::PlotAxis::PLOT_AXIS_LEFT )
|
||||
->readObjectFromXmlString( data, caf::PdmDefaultObjectFactory::instance() );
|
||||
}
|
||||
QString data = ap->writeObjectToXmlString();
|
||||
|
||||
{
|
||||
QString data =
|
||||
sourceSummaryPlot.yAxisPropertiesLeftOrRight( RiaDefines::PlotAxis::PLOT_AXIS_RIGHT )->writeObjectToXmlString();
|
||||
yAxisPropertiesLeftOrRight( RiaDefines::PlotAxis::PLOT_AXIS_RIGHT )
|
||||
axisPropertiesForPlotAxis( ap->plotAxisType() )
|
||||
->readObjectFromXmlString( data, caf::PdmDefaultObjectFactory::instance() );
|
||||
}
|
||||
}
|
||||
@@ -898,131 +923,105 @@ bool RimSummaryPlot::isNormalizationEnabled()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::updateYAxis( RiaDefines::PlotAxis plotAxis )
|
||||
void RimSummaryPlot::updateAxis( RiaDefines::PlotAxis plotAxis )
|
||||
{
|
||||
if ( !plotWidget() ) return;
|
||||
|
||||
RimPlotAxisProperties* yAxisProperties = yAxisPropertiesLeftOrRight( plotAxis );
|
||||
if ( yAxisProperties->isActive() && hasVisibleCurvesForAxis( plotAxis ) )
|
||||
for ( RimPlotAxisPropertiesInterface* yAxisProperties : m_axisProperties )
|
||||
{
|
||||
plotWidget()->enableAxis( plotAxis, true );
|
||||
|
||||
std::set<QString> timeHistoryQuantities;
|
||||
|
||||
for ( auto c : visibleTimeHistoryCurvesForAxis( plotAxis ) )
|
||||
RiuPlotAxis riuPlotAxis = yAxisProperties->plotAxisType();
|
||||
if ( riuPlotAxis.axis() == plotAxis )
|
||||
{
|
||||
timeHistoryQuantities.insert( c->quantityName() );
|
||||
}
|
||||
RimPlotAxisProperties* axisProperties = dynamic_cast<RimPlotAxisProperties*>( yAxisProperties );
|
||||
if ( yAxisProperties->isActive() && hasVisibleCurvesForAxis( riuPlotAxis ) && axisProperties )
|
||||
{
|
||||
plotWidget()->enableAxis( riuPlotAxis, true );
|
||||
|
||||
RimSummaryPlotAxisFormatter calc( yAxisProperties,
|
||||
visibleSummaryCurvesForAxis( plotAxis ),
|
||||
{},
|
||||
visibleAsciiDataCurvesForAxis( plotAxis ),
|
||||
timeHistoryQuantities );
|
||||
calc.applyAxisPropertiesToPlot( plotWidget() );
|
||||
}
|
||||
else
|
||||
{
|
||||
plotWidget()->enableAxis( plotAxis, false );
|
||||
std::set<QString> timeHistoryQuantities;
|
||||
|
||||
for ( auto c : visibleTimeHistoryCurvesForAxis( riuPlotAxis ) )
|
||||
{
|
||||
timeHistoryQuantities.insert( c->quantityName() );
|
||||
}
|
||||
|
||||
RimSummaryPlotAxisFormatter calc( axisProperties,
|
||||
visibleSummaryCurvesForAxis( riuPlotAxis ),
|
||||
{},
|
||||
visibleAsciiDataCurvesForAxis( riuPlotAxis ),
|
||||
timeHistoryQuantities );
|
||||
calc.applyAxisPropertiesToPlot( plotWidget() );
|
||||
}
|
||||
else
|
||||
{
|
||||
plotWidget()->enableAxis( riuPlotAxis, false );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::updateZoomForAxis( RiaDefines::PlotAxis plotAxis )
|
||||
void RimSummaryPlot::updateZoomForAxis( RiuPlotAxis plotAxis )
|
||||
{
|
||||
if ( plotAxis == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
RimPlotAxisPropertiesInterface* yAxisProps = axisPropertiesForPlotAxis( plotAxis );
|
||||
if ( yAxisProps->isAutoZoom() )
|
||||
{
|
||||
if ( m_isCrossPlot )
|
||||
if ( yAxisProps->isLogarithmicScaleEnabled() )
|
||||
{
|
||||
if ( m_bottomAxisProperties->isAutoZoom() )
|
||||
plotWidget()->setAxisScaleType( yAxisProps->plotAxisType(), RiuQwtPlotWidget::AxisScaleType::LOGARITHMIC );
|
||||
|
||||
std::vector<const RimPlotCurve*> plotCurves;
|
||||
|
||||
for ( RimSummaryCurve* c : visibleSummaryCurvesForAxis( plotAxis ) )
|
||||
{
|
||||
plotWidget()->setAxisAutoScale( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, true );
|
||||
plotCurves.push_back( c );
|
||||
}
|
||||
else
|
||||
|
||||
for ( RimGridTimeHistoryCurve* c : visibleTimeHistoryCurvesForAxis( plotAxis ) )
|
||||
{
|
||||
plotWidget()->setAxisScale( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM,
|
||||
m_bottomAxisProperties->visibleRangeMin(),
|
||||
m_bottomAxisProperties->visibleRangeMax() );
|
||||
plotCurves.push_back( c );
|
||||
}
|
||||
|
||||
for ( RimAsciiDataCurve* c : visibleAsciiDataCurvesForAxis( plotAxis ) )
|
||||
{
|
||||
plotCurves.push_back( c );
|
||||
}
|
||||
|
||||
double min, max;
|
||||
RimPlotAxisLogRangeCalculator calc( RiaDefines::PlotAxis::PLOT_AXIS_LEFT, plotCurves );
|
||||
calc.computeAxisRange( &min, &max );
|
||||
|
||||
if ( yAxisProps->isAxisInverted() )
|
||||
{
|
||||
std::swap( min, max );
|
||||
}
|
||||
|
||||
plotWidget()->setAxisScale( yAxisProps->plotAxisType(), min, max );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( m_timeAxisProperties->isAutoZoom() )
|
||||
{
|
||||
plotWidget()->setAxisAutoScale( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, true );
|
||||
}
|
||||
else
|
||||
{
|
||||
plotWidget()->setAxisScale( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM,
|
||||
m_timeAxisProperties->visibleRangeMin(),
|
||||
m_timeAxisProperties->visibleRangeMax() );
|
||||
}
|
||||
plotWidget()->setAxisAutoScale( yAxisProps->plotAxisType(), true );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RimPlotAxisProperties* yAxisProps = yAxisPropertiesLeftOrRight( plotAxis );
|
||||
|
||||
if ( yAxisProps->isAutoZoom() )
|
||||
{
|
||||
if ( yAxisProps->isLogarithmicScaleEnabled )
|
||||
{
|
||||
plotWidget()->setAxisScaleType( yAxisProps->plotAxisType(), RiuQwtPlotWidget::AxisScaleType::LOGARITHMIC );
|
||||
|
||||
std::vector<const RimPlotCurve*> plotCurves;
|
||||
|
||||
for ( RimSummaryCurve* c : visibleSummaryCurvesForAxis( plotAxis ) )
|
||||
{
|
||||
plotCurves.push_back( c );
|
||||
}
|
||||
|
||||
for ( RimGridTimeHistoryCurve* c : visibleTimeHistoryCurvesForAxis( plotAxis ) )
|
||||
{
|
||||
plotCurves.push_back( c );
|
||||
}
|
||||
|
||||
for ( RimAsciiDataCurve* c : visibleAsciiDataCurvesForAxis( plotAxis ) )
|
||||
{
|
||||
plotCurves.push_back( c );
|
||||
}
|
||||
|
||||
double min, max;
|
||||
RimPlotAxisLogRangeCalculator calc( RiaDefines::PlotAxis::PLOT_AXIS_LEFT, plotCurves );
|
||||
calc.computeAxisRange( &min, &max );
|
||||
|
||||
if ( yAxisProps->isAxisInverted() )
|
||||
{
|
||||
std::swap( min, max );
|
||||
}
|
||||
|
||||
plotWidget()->setAxisScale( yAxisProps->plotAxisType(), min, max );
|
||||
}
|
||||
else
|
||||
{
|
||||
plotWidget()->setAxisAutoScale( yAxisProps->plotAxisType(), true );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
plotWidget()->setAxisScale( yAxisProps->plotAxisType(),
|
||||
yAxisProps->visibleRangeMin(),
|
||||
yAxisProps->visibleRangeMax() );
|
||||
}
|
||||
|
||||
plotWidget()->setAxisInverted( yAxisProps->plotAxisType(), yAxisProps->isAxisInverted() );
|
||||
plotWidget()->setAxisScale( yAxisProps->plotAxisType(),
|
||||
yAxisProps->visibleRangeMin(),
|
||||
yAxisProps->visibleRangeMax() );
|
||||
}
|
||||
|
||||
plotWidget()->setAxisInverted( yAxisProps->plotAxisType(), yAxisProps->isAxisInverted() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimSummaryCurve*> RimSummaryPlot::visibleSummaryCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const
|
||||
std::vector<RimSummaryCurve*> RimSummaryPlot::visibleSummaryCurvesForAxis( RiuPlotAxis plotAxis ) const
|
||||
{
|
||||
std::vector<RimSummaryCurve*> curves;
|
||||
|
||||
if ( plotAxis == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
if ( plotAxis.axis() == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
{
|
||||
if ( m_summaryCurveCollection && m_summaryCurveCollection->isCurvesVisible() )
|
||||
{
|
||||
@@ -1069,7 +1068,7 @@ std::vector<RimSummaryCurve*> RimSummaryPlot::visibleSummaryCurvesForAxis( RiaDe
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimSummaryPlot::hasVisibleCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const
|
||||
bool RimSummaryPlot::hasVisibleCurvesForAxis( RiuPlotAxis plotAxis ) const
|
||||
{
|
||||
if ( visibleSummaryCurvesForAxis( plotAxis ).size() > 0 )
|
||||
{
|
||||
@@ -1092,28 +1091,22 @@ bool RimSummaryPlot::hasVisibleCurvesForAxis( RiaDefines::PlotAxis plotAxis ) co
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimPlotAxisProperties* RimSummaryPlot::yAxisPropertiesLeftOrRight( RiaDefines::PlotAxis leftOrRightPlotAxis ) const
|
||||
RimPlotAxisPropertiesInterface* RimSummaryPlot::axisPropertiesForPlotAxis( RiuPlotAxis plotAxis ) const
|
||||
{
|
||||
RimPlotAxisProperties* yAxisProps = nullptr;
|
||||
|
||||
if ( leftOrRightPlotAxis == RiaDefines::PlotAxis::PLOT_AXIS_LEFT )
|
||||
for ( RimPlotAxisPropertiesInterface* axisProperties : m_axisProperties )
|
||||
{
|
||||
yAxisProps = m_leftYAxisProperties();
|
||||
}
|
||||
else
|
||||
{
|
||||
yAxisProps = m_rightYAxisProperties();
|
||||
if ( axisProperties->plotAxisType() == plotAxis ) return axisProperties;
|
||||
}
|
||||
|
||||
CVF_ASSERT( yAxisProps );
|
||||
CVF_ASSERT( false && "No axis properties found for axis" );
|
||||
|
||||
return yAxisProps;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimGridTimeHistoryCurve*> RimSummaryPlot::visibleTimeHistoryCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const
|
||||
std::vector<RimGridTimeHistoryCurve*> RimSummaryPlot::visibleTimeHistoryCurvesForAxis( RiuPlotAxis plotAxis ) const
|
||||
{
|
||||
std::vector<RimGridTimeHistoryCurve*> curves;
|
||||
|
||||
@@ -1121,7 +1114,7 @@ std::vector<RimGridTimeHistoryCurve*> RimSummaryPlot::visibleTimeHistoryCurvesFo
|
||||
{
|
||||
if ( c->isCurveVisible() )
|
||||
{
|
||||
if ( c->yAxis() == plotAxis || plotAxis == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
if ( c->yAxis() == plotAxis || plotAxis.axis() == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
{
|
||||
curves.push_back( c );
|
||||
}
|
||||
@@ -1134,7 +1127,7 @@ std::vector<RimGridTimeHistoryCurve*> RimSummaryPlot::visibleTimeHistoryCurvesFo
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimAsciiDataCurve*> RimSummaryPlot::visibleAsciiDataCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const
|
||||
std::vector<RimAsciiDataCurve*> RimSummaryPlot::visibleAsciiDataCurvesForAxis( RiuPlotAxis plotAxis ) const
|
||||
{
|
||||
std::vector<RimAsciiDataCurve*> curves;
|
||||
|
||||
@@ -1142,7 +1135,7 @@ std::vector<RimAsciiDataCurve*> RimSummaryPlot::visibleAsciiDataCurvesForAxis( R
|
||||
{
|
||||
if ( c->isCurveVisible() )
|
||||
{
|
||||
if ( c->yAxis() == plotAxis || plotAxis == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
if ( c->yAxis() == plotAxis || plotAxis.axis() == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
{
|
||||
curves.push_back( c );
|
||||
}
|
||||
@@ -1155,24 +1148,24 @@ std::vector<RimAsciiDataCurve*> RimSummaryPlot::visibleAsciiDataCurvesForAxis( R
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::updateTimeAxis()
|
||||
void RimSummaryPlot::updateTimeAxis( RimSummaryTimeAxisProperties* timeAxisProperties )
|
||||
{
|
||||
if ( !plotWidget() ) return;
|
||||
|
||||
if ( !m_timeAxisProperties->isActive() )
|
||||
if ( !timeAxisProperties->isActive() )
|
||||
{
|
||||
plotWidget()->enableAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, false );
|
||||
plotWidget()->enableAxis( RiuPlotAxis::defaultBottom(), false );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ( m_timeAxisProperties->timeMode() == RimSummaryTimeAxisProperties::DATE )
|
||||
if ( timeAxisProperties->timeMode() == RimSummaryTimeAxisProperties::DATE )
|
||||
{
|
||||
RiaQDateTimeTools::DateFormatComponents dateComponents = m_timeAxisProperties->dateComponents();
|
||||
RiaQDateTimeTools::TimeFormatComponents timeComponents = m_timeAxisProperties->timeComponents();
|
||||
RiaQDateTimeTools::DateFormatComponents dateComponents = timeAxisProperties->dateComponents();
|
||||
RiaQDateTimeTools::TimeFormatComponents timeComponents = timeAxisProperties->timeComponents();
|
||||
|
||||
QString dateFormat = m_timeAxisProperties->dateFormat();
|
||||
QString timeFormat = m_timeAxisProperties->timeFormat();
|
||||
QString dateFormat = timeAxisProperties->dateFormat();
|
||||
QString timeFormat = timeAxisProperties->timeFormat();
|
||||
|
||||
m_summaryPlot->useDateBasedTimeAxis( dateFormat, timeFormat, dateComponents, timeComponents );
|
||||
}
|
||||
@@ -1181,26 +1174,25 @@ void RimSummaryPlot::updateTimeAxis()
|
||||
m_summaryPlot->useTimeBasedTimeAxis();
|
||||
}
|
||||
|
||||
plotWidget()->enableAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, true );
|
||||
plotWidget()->enableAxis( RiuPlotAxis::defaultBottom(), true );
|
||||
|
||||
{
|
||||
Qt::AlignmentFlag alignment = Qt::AlignCenter;
|
||||
if ( m_timeAxisProperties->titlePosition() == RimPlotAxisPropertiesInterface::AXIS_TITLE_END )
|
||||
if ( timeAxisProperties->titlePosition() == RimPlotAxisPropertiesInterface::AXIS_TITLE_END )
|
||||
{
|
||||
alignment = Qt::AlignRight;
|
||||
}
|
||||
|
||||
plotWidget()->setAxisFontsAndAlignment( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM,
|
||||
m_timeAxisProperties->titleFontSize(),
|
||||
m_timeAxisProperties->valuesFontSize(),
|
||||
plotWidget()->setAxisFontsAndAlignment( RiuPlotAxis::defaultBottom(),
|
||||
timeAxisProperties->titleFontSize(),
|
||||
timeAxisProperties->valuesFontSize(),
|
||||
true,
|
||||
alignment );
|
||||
plotWidget()->setAxisTitleText( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, m_timeAxisProperties->title() );
|
||||
plotWidget()->setAxisTitleEnabled( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, m_timeAxisProperties->showTitle );
|
||||
plotWidget()->setAxisTitleText( RiuPlotAxis::defaultBottom(), timeAxisProperties->title() );
|
||||
plotWidget()->setAxisTitleEnabled( RiuPlotAxis::defaultBottom(), timeAxisProperties->showTitle );
|
||||
|
||||
{
|
||||
RimSummaryTimeAxisProperties::LegendTickmarkCount tickmarkCountEnum =
|
||||
m_timeAxisProperties->majorTickmarkCount();
|
||||
RimSummaryTimeAxisProperties::LegendTickmarkCount tickmarkCountEnum = timeAxisProperties->majorTickmarkCount();
|
||||
|
||||
int maxTickmarkCount = 8;
|
||||
|
||||
@@ -1222,39 +1214,11 @@ void RimSummaryPlot::updateTimeAxis()
|
||||
break;
|
||||
}
|
||||
|
||||
plotWidget()->setAxisMaxMajor( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, maxTickmarkCount );
|
||||
plotWidget()->setAxisMaxMajor( RiuPlotAxis::defaultBottom(), maxTickmarkCount );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::updateBottomXAxis()
|
||||
{
|
||||
if ( !plotWidget() ) return;
|
||||
|
||||
RimPlotAxisProperties* bottomAxisProperties = m_bottomAxisProperties();
|
||||
|
||||
if ( bottomAxisProperties->isActive() )
|
||||
{
|
||||
plotWidget()->enableAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, true );
|
||||
|
||||
std::set<QString> timeHistoryQuantities;
|
||||
|
||||
RimSummaryPlotAxisFormatter calc( bottomAxisProperties,
|
||||
visibleSummaryCurvesForAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM ),
|
||||
{},
|
||||
visibleAsciiDataCurvesForAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM ),
|
||||
timeHistoryQuantities );
|
||||
calc.applyAxisPropertiesToPlot( plotWidget() );
|
||||
}
|
||||
else
|
||||
{
|
||||
plotWidget()->enableAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM, false );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1300,9 +1264,7 @@ void RimSummaryPlot::addTimeRangeAnnotation( time_t startTime, time_t endTime )
|
||||
void RimSummaryPlot::removeAllTimeAnnotations()
|
||||
{
|
||||
RimSummaryTimeAxisProperties* axisProps = timeAxisProperties();
|
||||
{
|
||||
axisProps->removeAllAnnotations();
|
||||
}
|
||||
axisProps->removeAllAnnotations();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1318,33 +1280,24 @@ void RimSummaryPlot::zoomAll()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::addCurveAndUpdate( RimSummaryCurve* curve )
|
||||
void RimSummaryPlot::addCurveAndUpdate( RimSummaryCurve* curve, bool autoAssignPlotAxis )
|
||||
{
|
||||
if ( curve )
|
||||
{
|
||||
m_summaryCurveCollection->addCurve( curve );
|
||||
connectCurveSignals( curve );
|
||||
if ( plotWidget() )
|
||||
{
|
||||
curve->setParentPlotAndReplot( plotWidget() );
|
||||
this->updateAxes();
|
||||
}
|
||||
connectCurveToPlot( curve, true, autoAssignPlotAxis );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::addCurveNoUpdate( RimSummaryCurve* curve )
|
||||
void RimSummaryPlot::addCurveNoUpdate( RimSummaryCurve* curve, bool autoAssignPlotAxis )
|
||||
{
|
||||
if ( curve )
|
||||
{
|
||||
m_summaryCurveCollection->addCurve( curve );
|
||||
connectCurveSignals( curve );
|
||||
if ( plotWidget() )
|
||||
{
|
||||
curve->setParentPlotNoReplot( plotWidget() );
|
||||
}
|
||||
connectCurveToPlot( curve, false, autoAssignPlotAxis );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1356,8 +1309,26 @@ void RimSummaryPlot::insertCurve( RimSummaryCurve* curve, size_t insertAtPositio
|
||||
if ( curve )
|
||||
{
|
||||
m_summaryCurveCollection->insertCurve( curve, insertAtPosition );
|
||||
connectCurveSignals( curve );
|
||||
if ( plotWidget() )
|
||||
connectCurveToPlot( curve, false, true );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::connectCurveToPlot( RimSummaryCurve* curve, bool update, bool autoAssignPlotAxis )
|
||||
{
|
||||
if ( autoAssignPlotAxis ) assignPlotAxis( curve );
|
||||
|
||||
connectCurveSignals( curve );
|
||||
if ( plotWidget() )
|
||||
{
|
||||
if ( update )
|
||||
{
|
||||
curve->setParentPlotAndReplot( plotWidget() );
|
||||
this->updateAxes();
|
||||
}
|
||||
else
|
||||
{
|
||||
curve->setParentPlotNoReplot( plotWidget() );
|
||||
}
|
||||
@@ -1576,8 +1547,12 @@ void RimSummaryPlot::childFieldChangedByUi( const caf::PdmFieldHandle* changedCh
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::updateStackedCurveData()
|
||||
{
|
||||
updateStackedCurveDataForAxis( RiaDefines::PlotAxis::PLOT_AXIS_LEFT );
|
||||
updateStackedCurveDataForAxis( RiaDefines::PlotAxis::PLOT_AXIS_RIGHT );
|
||||
for ( RimPlotAxisPropertiesInterface* axisProperties : m_axisProperties )
|
||||
{
|
||||
if ( axisProperties->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_LEFT ||
|
||||
axisProperties->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_RIGHT )
|
||||
updateStackedCurveDataForAxis( axisProperties->plotAxisType() );
|
||||
}
|
||||
|
||||
if ( plotWidget() )
|
||||
{
|
||||
@@ -1589,7 +1564,7 @@ void RimSummaryPlot::updateStackedCurveData()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::updateStackedCurveDataForAxis( RiaDefines::PlotAxis plotAxis )
|
||||
void RimSummaryPlot::updateStackedCurveDataForAxis( RiuPlotAxis plotAxis )
|
||||
{
|
||||
std::map<RiaDefines::PhaseType, size_t> curvePhaseCount;
|
||||
|
||||
@@ -1645,6 +1620,7 @@ void RimSummaryPlot::updateStackedCurveDataForAxis( RiaDefines::PlotAxis plotAxi
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1676,18 +1652,7 @@ void RimSummaryPlot::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin
|
||||
}
|
||||
else
|
||||
{
|
||||
caf::PdmUiTreeOrdering* axisFolder = uiTreeOrdering.add( "Axes", ":/Axes16x16.png" );
|
||||
|
||||
if ( m_isCrossPlot )
|
||||
{
|
||||
axisFolder->add( &m_bottomAxisProperties );
|
||||
}
|
||||
else
|
||||
{
|
||||
axisFolder->add( &m_timeAxisProperties );
|
||||
}
|
||||
axisFolder->add( &m_leftYAxisProperties );
|
||||
axisFolder->add( &m_rightYAxisProperties );
|
||||
uiTreeOrdering.add( &m_axisProperties );
|
||||
|
||||
uiTreeOrdering.add( &m_summaryCurveCollection );
|
||||
if ( !m_isCrossPlot )
|
||||
@@ -1746,9 +1711,10 @@ void RimSummaryPlot::updateZoomInParentPlot()
|
||||
{
|
||||
if ( plotWidget() )
|
||||
{
|
||||
updateZoomForAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM );
|
||||
updateZoomForAxis( RiaDefines::PlotAxis::PLOT_AXIS_LEFT );
|
||||
updateZoomForAxis( RiaDefines::PlotAxis::PLOT_AXIS_RIGHT );
|
||||
for ( auto axisProperty : m_axisProperties )
|
||||
{
|
||||
updateZoomForAxis( axisProperty->plotAxisType() );
|
||||
}
|
||||
|
||||
plotWidget()->updateAxes();
|
||||
updateZoomFromParentPlot();
|
||||
@@ -1763,38 +1729,13 @@ void RimSummaryPlot::updateZoomFromParentPlot()
|
||||
{
|
||||
if ( !plotWidget() ) return;
|
||||
|
||||
auto [leftAxisMin, leftAxisMax] = plotWidget()->axisRange( RiaDefines::PlotAxis::PLOT_AXIS_LEFT );
|
||||
auto [rightAxisMin, rightAxisMax] = plotWidget()->axisRange( RiaDefines::PlotAxis::PLOT_AXIS_RIGHT );
|
||||
auto [timeAxisMin, timeAxisMax] = plotWidget()->axisRange( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM );
|
||||
|
||||
m_leftYAxisProperties->visibleRangeMax = leftAxisMax;
|
||||
m_leftYAxisProperties->visibleRangeMin = leftAxisMin;
|
||||
m_leftYAxisProperties->updateConnectedEditors();
|
||||
|
||||
m_rightYAxisProperties->visibleRangeMax = rightAxisMax;
|
||||
m_rightYAxisProperties->visibleRangeMin = rightAxisMin;
|
||||
m_rightYAxisProperties->updateConnectedEditors();
|
||||
|
||||
if ( m_isCrossPlot )
|
||||
for ( RimPlotAxisPropertiesInterface* axisProperties : m_axisProperties )
|
||||
{
|
||||
m_bottomAxisProperties->visibleRangeMax = timeAxisMax;
|
||||
m_bottomAxisProperties->visibleRangeMin = timeAxisMin;
|
||||
m_bottomAxisProperties->updateConnectedEditors();
|
||||
auto [axisMin, axisMax] = plotWidget()->axisRange( axisProperties->plotAxisType() );
|
||||
axisProperties->setVisibleRangeMax( axisMax );
|
||||
axisProperties->setVisibleRangeMin( axisMin );
|
||||
axisProperties->updateConnectedEditors();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_timeAxisProperties->setVisibleRangeMin( timeAxisMin );
|
||||
m_timeAxisProperties->setVisibleRangeMax( timeAxisMax );
|
||||
m_timeAxisProperties->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::set<RimPlotAxisPropertiesInterface*> RimSummaryPlot::allPlotAxes() const
|
||||
{
|
||||
return { m_timeAxisProperties, m_bottomAxisProperties, m_leftYAxisProperties, m_rightYAxisProperties };
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1950,14 +1891,6 @@ bool RimSummaryPlot::autoPlotTitle() const
|
||||
return m_useAutoPlotTitle;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::setAsCrossPlot()
|
||||
{
|
||||
m_isCrossPlot = true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -2120,6 +2053,31 @@ void RimSummaryPlot::initAfterRead()
|
||||
{
|
||||
RimViewWindow::initAfterRead();
|
||||
|
||||
if ( RimProject::current()->isProjectFileVersionEqualOrOlderThan( "2021.10.2" ) )
|
||||
{
|
||||
auto copyAxis = [this]( RiuPlotAxis axis, auto axisProperties ) {
|
||||
QString data = axisProperties->writeObjectToXmlString();
|
||||
axisPropertiesForPlotAxis( axis )->readObjectFromXmlString( data, caf::PdmDefaultObjectFactory::instance() );
|
||||
};
|
||||
|
||||
copyAxis( RiuPlotAxis::defaultLeft(), m_leftYAxisProperties_OBSOLETE.v() );
|
||||
copyAxis( RiuPlotAxis::defaultRight(), m_rightYAxisProperties_OBSOLETE.v() );
|
||||
|
||||
if ( m_isCrossPlot )
|
||||
copyAxis( RiuPlotAxis::defaultBottom(), m_bottomAxisProperties_OBSOLETE.v() );
|
||||
else
|
||||
copyAxis( RiuPlotAxis::defaultBottom(), m_timeAxisProperties_OBSOLETE.v() );
|
||||
}
|
||||
|
||||
for ( auto axisProperties : m_axisProperties )
|
||||
{
|
||||
auto plotAxisProperties = dynamic_cast<RimPlotAxisProperties*>( axisProperties.p() );
|
||||
if ( plotAxisProperties )
|
||||
{
|
||||
connectAxisSignals( plotAxisProperties );
|
||||
}
|
||||
}
|
||||
|
||||
for ( auto curve : summaryCurves() )
|
||||
{
|
||||
connectCurveSignals( curve );
|
||||
@@ -2381,13 +2339,13 @@ std::vector<caf::PdmFieldHandle*> RimSummaryPlot::fieldsToShowInToolbar()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::setAutoScaleXEnabled( bool enabled )
|
||||
{
|
||||
if ( m_isCrossPlot )
|
||||
for ( auto ap : m_axisProperties )
|
||||
{
|
||||
m_bottomAxisProperties->setAutoZoom( enabled );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_timeAxisProperties->setAutoZoom( enabled );
|
||||
if ( ap->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_TOP ||
|
||||
ap->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
{
|
||||
ap->setAutoZoom( enabled );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2396,8 +2354,14 @@ void RimSummaryPlot::setAutoScaleXEnabled( bool enabled )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::setAutoScaleYEnabled( bool enabled )
|
||||
{
|
||||
m_leftYAxisProperties->setAutoZoom( enabled );
|
||||
m_rightYAxisProperties->setAutoZoom( enabled );
|
||||
for ( auto ap : m_axisProperties )
|
||||
{
|
||||
if ( ap->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_LEFT ||
|
||||
ap->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_RIGHT )
|
||||
{
|
||||
ap->setAutoZoom( enabled );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -2767,3 +2731,38 @@ CurvesData concatCurvesData( const std::vector<CurvesData>& curvesData )
|
||||
}
|
||||
return resultCurvesData;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimPlotAxisPropertiesInterface*> RimSummaryPlot::plotAxes() const
|
||||
{
|
||||
std::vector<RimPlotAxisPropertiesInterface*> axisProps;
|
||||
for ( auto ap : m_axisProperties )
|
||||
{
|
||||
axisProps.push_back( ap );
|
||||
}
|
||||
|
||||
return axisProps;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::assignPlotAxis( RimSummaryCurve* curve )
|
||||
{
|
||||
RiaDefines::PlotAxis plotAxis = RiaDefines::PlotAxis::PLOT_AXIS_LEFT;
|
||||
|
||||
RiuPlotAxis newPlotAxis = RiuPlotAxis::defaultLeft();
|
||||
if ( plotWidget() && plotWidget()->isMultiAxisSupported() )
|
||||
{
|
||||
newPlotAxis = plotWidget()->createNextPlotAxis( plotAxis );
|
||||
|
||||
RimPlotAxisProperties* newAxisProperties = new RimPlotAxisProperties;
|
||||
newAxisProperties->setNameAndAxis( "New Axis", newPlotAxis.axis(), newPlotAxis.index() );
|
||||
m_axisProperties.push_back( newAxisProperties );
|
||||
connectAxisSignals( newAxisProperties );
|
||||
}
|
||||
|
||||
curve->setLeftOrRightAxisY( newPlotAxis );
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ class RimSummaryPlot : public RimPlot, public RimSummaryDataSourceStepping
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
RimSummaryPlot();
|
||||
RimSummaryPlot( bool isCrossPlot = false );
|
||||
~RimSummaryPlot() override;
|
||||
|
||||
void setDescription( const QString& description );
|
||||
@@ -83,8 +83,8 @@ public:
|
||||
void enableAutoPlotTitle( bool enable );
|
||||
bool autoPlotTitle() const;
|
||||
|
||||
void addCurveAndUpdate( RimSummaryCurve* curve );
|
||||
void addCurveNoUpdate( RimSummaryCurve* curve );
|
||||
void addCurveAndUpdate( RimSummaryCurve* curve, bool autoAssignPlotAxis = true );
|
||||
void addCurveNoUpdate( RimSummaryCurve* curve, bool autoAssignPlotAxis = true );
|
||||
|
||||
void insertCurve( RimSummaryCurve* curve, size_t insertAtPosition );
|
||||
|
||||
@@ -117,7 +117,7 @@ public:
|
||||
|
||||
void updateAxes() override;
|
||||
|
||||
bool isLogarithmicScaleEnabled( RiaDefines::PlotAxis plotAxis ) const;
|
||||
bool isLogarithmicScaleEnabled( RiuPlotAxis plotAxis ) const;
|
||||
|
||||
RimSummaryTimeAxisProperties* timeAxisProperties();
|
||||
time_t firstTimeStepOfFirstCurve();
|
||||
@@ -185,6 +185,10 @@ public:
|
||||
std::vector<RimEnsembleCurveSet*> curveSets() const override;
|
||||
std::vector<RimSummaryCurve*> allCurves( RimSummaryDataSourceStepping::Axis axis ) const override;
|
||||
|
||||
std::vector<RimPlotAxisPropertiesInterface*> plotAxes() const;
|
||||
|
||||
RimPlotAxisPropertiesInterface* axisPropertiesForPlotAxis( RiuPlotAxis plotAxis ) const;
|
||||
|
||||
public:
|
||||
// RimViewWindow overrides
|
||||
void deleteViewWidget() override;
|
||||
@@ -205,13 +209,15 @@ private:
|
||||
|
||||
void onCurveCollectionChanged( const SignalEmitter* emitter );
|
||||
|
||||
void connectCurveToPlot( RimSummaryCurve* curve, bool update, bool autoAssignPlotAxis );
|
||||
|
||||
protected:
|
||||
// Overridden PDM methods
|
||||
caf::PdmFieldHandle* userDescriptionField() override;
|
||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||
void childFieldChangedByUi( const caf::PdmFieldHandle* changedChildField ) override;
|
||||
void updateStackedCurveData();
|
||||
void updateStackedCurveDataForAxis( RiaDefines::PlotAxis plotAxis );
|
||||
void updateStackedCurveDataForAxis( RiuPlotAxis plotAxis );
|
||||
|
||||
void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override;
|
||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||
@@ -220,27 +226,21 @@ protected:
|
||||
|
||||
QImage snapshotWindowContent() override;
|
||||
|
||||
void setAsCrossPlot();
|
||||
|
||||
private slots:
|
||||
void onPlotZoomed();
|
||||
|
||||
private:
|
||||
std::vector<RimSummaryCurve*> visibleSummaryCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const;
|
||||
std::vector<RimGridTimeHistoryCurve*> visibleTimeHistoryCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const;
|
||||
std::vector<RimAsciiDataCurve*> visibleAsciiDataCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const;
|
||||
bool hasVisibleCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const;
|
||||
std::vector<RimSummaryCurve*> visibleStackedSummaryCurvesForAxis( RiaDefines::PlotAxis plotAxis );
|
||||
std::vector<RimSummaryCurve*> visibleSummaryCurvesForAxis( RiuPlotAxis plotAxis ) const;
|
||||
std::vector<RimGridTimeHistoryCurve*> visibleTimeHistoryCurvesForAxis( RiuPlotAxis plotAxis ) const;
|
||||
std::vector<RimAsciiDataCurve*> visibleAsciiDataCurvesForAxis( RiuPlotAxis plotAxis ) const;
|
||||
bool hasVisibleCurvesForAxis( RiuPlotAxis plotAxis ) const;
|
||||
std::vector<RimSummaryCurve*> visibleStackedSummaryCurvesForAxis( RiuPlotAxis plotAxis );
|
||||
|
||||
RimPlotAxisProperties* yAxisPropertiesLeftOrRight( RiaDefines::PlotAxis leftOrRightPlotAxis ) const;
|
||||
void updateYAxis( RiaDefines::PlotAxis plotAxis );
|
||||
void updateAxis( RiaDefines::PlotAxis plotAxis );
|
||||
|
||||
void updateZoomForAxis( RiaDefines::PlotAxis plotAxis );
|
||||
void updateZoomForAxis( RiuPlotAxis plotAxis );
|
||||
|
||||
void updateTimeAxis();
|
||||
void updateBottomXAxis();
|
||||
|
||||
std::set<RimPlotAxisPropertiesInterface*> allPlotAxes() const;
|
||||
void updateTimeAxis( RimSummaryTimeAxisProperties* timeAxisProperties );
|
||||
|
||||
void cleanupBeforeClose();
|
||||
|
||||
@@ -256,6 +256,7 @@ private:
|
||||
void connectAxisSignals( RimPlotAxisProperties* axis );
|
||||
void axisSettingsChanged( const caf::SignalEmitter* emitter );
|
||||
void axisLogarithmicChanged( const caf::SignalEmitter* emitter, bool isLogarithmic );
|
||||
void assignPlotAxis( RimSummaryCurve* curve );
|
||||
|
||||
private:
|
||||
#ifdef USE_QTCHARTS
|
||||
@@ -272,11 +273,13 @@ private:
|
||||
|
||||
caf::PdmChildArrayField<RimAsciiDataCurve*> m_asciiDataCurves;
|
||||
|
||||
caf::PdmChildField<RimPlotAxisProperties*> m_leftYAxisProperties;
|
||||
caf::PdmChildField<RimPlotAxisProperties*> m_rightYAxisProperties;
|
||||
caf::PdmChildField<RimPlotAxisProperties*> m_leftYAxisProperties_OBSOLETE;
|
||||
caf::PdmChildField<RimPlotAxisProperties*> m_rightYAxisProperties_OBSOLETE;
|
||||
|
||||
caf::PdmChildField<RimPlotAxisProperties*> m_bottomAxisProperties;
|
||||
caf::PdmChildField<RimSummaryTimeAxisProperties*> m_timeAxisProperties;
|
||||
caf::PdmChildField<RimPlotAxisProperties*> m_bottomAxisProperties_OBSOLETE;
|
||||
caf::PdmChildField<RimSummaryTimeAxisProperties*> m_timeAxisProperties_OBSOLETE;
|
||||
|
||||
caf::PdmChildArrayField<RimPlotAxisPropertiesInterface*> m_axisProperties;
|
||||
|
||||
caf::PdmChildField<RimSummaryPlotFilterTextCurveSetEditor*> m_textCurveSetEditor;
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@ void RimSummaryPlotAxisFormatter::applyAxisPropertiesToPlot( RiuPlotWidget* plot
|
||||
{
|
||||
if ( !plotWidget ) return;
|
||||
|
||||
RiaDefines::PlotAxis axis = m_axisProperties->plotAxisType();
|
||||
RiuPlotAxis axis = m_axisProperties->plotAxisType();
|
||||
{
|
||||
QString axisTitle = m_axisProperties->customTitle;
|
||||
if ( m_axisProperties->useAutoTitle() ) axisTitle = autoAxisTitle();
|
||||
@@ -140,7 +140,7 @@ void RimSummaryPlotAxisFormatter::applyAxisPropertiesToPlot( RiuPlotWidget* plot
|
||||
auto qwtPlotWidget = dynamic_cast<RiuQwtPlotWidget*>( plotWidget );
|
||||
if ( qwtPlotWidget )
|
||||
{
|
||||
QwtPlot::Axis qwtAxisId = RiuQwtPlotTools::toQwtPlotAxis( axis );
|
||||
QwtPlot::Axis qwtAxisId = RiuQwtPlotTools::toQwtPlotAxis( axis.axis() );
|
||||
|
||||
if ( m_axisProperties->numberFormat == RimPlotAxisProperties::NUMBER_FORMAT_AUTO &&
|
||||
m_axisProperties->scaleFactor() == 1.0 )
|
||||
@@ -178,7 +178,7 @@ void RimSummaryPlotAxisFormatter::applyAxisPropertiesToPlot( RiuPlotWidget* plot
|
||||
#endif
|
||||
|
||||
{
|
||||
if ( m_axisProperties->isLogarithmicScaleEnabled )
|
||||
if ( m_axisProperties->isLogarithmicScaleEnabled() )
|
||||
{
|
||||
bool isLogScale = plotWidget->axisScaleType( axis ) == RiuQwtPlotWidget::AxisScaleType::LOGARITHMIC;
|
||||
if ( !isLogScale )
|
||||
@@ -254,7 +254,7 @@ QString RimSummaryPlotAxisFormatter::autoAxisTitle() const
|
||||
RifEclipseSummaryAddress sumAddress;
|
||||
std::string unitText;
|
||||
|
||||
if ( m_axisProperties->plotAxisType() == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
if ( m_axisProperties->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
{
|
||||
sumAddress = rimCurve->summaryAddressX();
|
||||
unitText = rimCurve->unitNameX();
|
||||
|
||||
@@ -132,9 +132,9 @@ RimPlotAxisPropertiesInterface::AxisTitlePositionType RimSummaryTimeAxisProperti
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiaDefines::PlotAxis RimSummaryTimeAxisProperties::plotAxisType() const
|
||||
RiuPlotAxis RimSummaryTimeAxisProperties::plotAxisType() const
|
||||
{
|
||||
return RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM;
|
||||
return RiuPlotAxis::defaultBottom();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -698,3 +698,11 @@ void RimSummaryTimeAxisProperties::defineEditorAttribute( const caf::PdmFieldHan
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const QString& RimSummaryTimeAxisProperties::name() const
|
||||
{
|
||||
return title();
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
///
|
||||
///
|
||||
//==================================================================================================
|
||||
class RimSummaryTimeAxisProperties : public caf::PdmObject, public RimPlotAxisPropertiesInterface
|
||||
class RimSummaryTimeAxisProperties : public RimPlotAxisPropertiesInterface
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
caf::PdmField<QString> title;
|
||||
caf::PdmField<bool> showTitle;
|
||||
|
||||
RiaDefines::PlotAxis plotAxisType() const override;
|
||||
RiuPlotAxis plotAxisType() const override;
|
||||
AxisTitlePositionType titlePosition() const override;
|
||||
int titleFontSize() const override;
|
||||
int valuesFontSize() const override;
|
||||
@@ -88,16 +88,16 @@ public:
|
||||
const QString& dateFormat() const;
|
||||
const QString& timeFormat() const;
|
||||
|
||||
double visibleRangeMin() const;
|
||||
double visibleRangeMax() const;
|
||||
double visibleRangeMin() const override;
|
||||
double visibleRangeMax() const override;
|
||||
|
||||
void setVisibleRangeMin( double value );
|
||||
void setVisibleRangeMax( double value );
|
||||
void setVisibleRangeMin( double value ) override;
|
||||
void setVisibleRangeMax( double value ) override;
|
||||
|
||||
bool isAutoZoom() const;
|
||||
void setAutoZoom( bool enableAutoZoom );
|
||||
bool isAutoZoom() const override;
|
||||
void setAutoZoom( bool enableAutoZoom ) override;
|
||||
|
||||
bool isActive() const;
|
||||
bool isActive() const override;
|
||||
|
||||
QDateTime visibleDateTimeMin() const;
|
||||
QDateTime visibleDateTimeMax() const;
|
||||
@@ -108,6 +108,8 @@ public:
|
||||
LegendTickmarkCount majorTickmarkCount() const;
|
||||
void setMajorTickmarkCount( LegendTickmarkCount count );
|
||||
|
||||
const QString& name() const override;
|
||||
|
||||
protected:
|
||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions,
|
||||
|
||||
Reference in New Issue
Block a user