mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Merge pull request #4897 from OPM/summary-data-show-short-text-labels
#4876 Resampeled Plot Data: Show time short text labels when possible
This commit is contained in:
commit
f114a37b3c
@ -315,6 +315,15 @@ RiaPreferences::RiaPreferences( void )
|
|||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_defaultPlotTemplate, "defaultPlotTemplate", "Default Plot Template", "", "", "" );
|
CAF_PDM_InitFieldNoDefault( &m_defaultPlotTemplate, "defaultPlotTemplate", "Default Plot Template", "", "", "" );
|
||||||
// m_plotTemplateFolders.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
|
// m_plotTemplateFolders.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
|
||||||
|
|
||||||
|
CAF_PDM_InitField( &m_showSummaryTimeAsLongString,
|
||||||
|
"showSummaryTimeAsLongString",
|
||||||
|
false,
|
||||||
|
"Show resample time text as long time text (2010-11-21 23:15:00)",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"" );
|
||||||
|
m_showSummaryTimeAsLongString.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -355,11 +364,12 @@ void RiaPreferences::defineEditorAttribute( const caf::PdmFieldHandle* field,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( field == &octaveShowHeaderInfoWhenExecutingScripts || field == &autocomputeDepthRelatedProperties ||
|
if ( field == &octaveShowHeaderInfoWhenExecutingScripts || field == &autocomputeDepthRelatedProperties ||
|
||||||
field == &loadAndShowSoil || field == &useShaders || field == &showHud || field == &m_appendClassNameToUiText ||
|
field == &loadAndShowSoil || field == &useShaders || field == &showHud ||
|
||||||
field == &m_appendFieldKeywordToToolTipText || field == &m_showTestToolbar ||
|
field == &m_appendClassNameToUiText || field == &m_appendFieldKeywordToToolTipText ||
|
||||||
field == &m_includeFractureDebugInfoFile || field == &showLasCurveWithoutTvdWarning ||
|
field == &m_showTestToolbar || field == &m_includeFractureDebugInfoFile ||
|
||||||
field == &holoLensDisableCertificateVerification || field == &m_showProjectChangedDialog ||
|
field == &showLasCurveWithoutTvdWarning || field == &holoLensDisableCertificateVerification ||
|
||||||
field == &m_searchPlotTemplateFoldersRecursively || field == &showLegendBackground )
|
field == &m_showProjectChangedDialog || field == &m_searchPlotTemplateFoldersRecursively ||
|
||||||
|
field == &showLegendBackground || field == &m_showSummaryTimeAsLongString )
|
||||||
{
|
{
|
||||||
caf::PdmUiCheckBoxEditorAttribute* myAttr = dynamic_cast<caf::PdmUiCheckBoxEditorAttribute*>( attribute );
|
caf::PdmUiCheckBoxEditorAttribute* myAttr = dynamic_cast<caf::PdmUiCheckBoxEditorAttribute*>( attribute );
|
||||||
if ( myAttr )
|
if ( myAttr )
|
||||||
@ -447,6 +457,7 @@ void RiaPreferences::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
|
|||||||
uiOrdering.add( &defaultSummaryHistoryCurveStyle );
|
uiOrdering.add( &defaultSummaryHistoryCurveStyle );
|
||||||
uiOrdering.add( &m_dateFormat );
|
uiOrdering.add( &m_dateFormat );
|
||||||
uiOrdering.add( &m_timeFormat );
|
uiOrdering.add( &m_timeFormat );
|
||||||
|
uiOrdering.add( &m_showSummaryTimeAsLongString );
|
||||||
|
|
||||||
caf::PdmUiGroup* group = uiOrdering.addNewGroup( "Plot Templates" );
|
caf::PdmUiGroup* group = uiOrdering.addNewGroup( "Plot Templates" );
|
||||||
group->add( &m_plotTemplateFolders );
|
group->add( &m_plotTemplateFolders );
|
||||||
@ -762,6 +773,14 @@ void RiaPreferences::setDefaultPlotTemplatePath( const QString& templatePath )
|
|||||||
m_defaultPlotTemplate = templatePath;
|
m_defaultPlotTemplate = templatePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool RiaPreferences::showSummaryTimeAsLongString() const
|
||||||
|
{
|
||||||
|
return m_showSummaryTimeAsLongString;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -84,6 +84,7 @@ public:
|
|||||||
void appendPlotTemplateFolders( const QString& folder );
|
void appendPlotTemplateFolders( const QString& folder );
|
||||||
QString defaultPlotTemplateAbsolutePath() const;
|
QString defaultPlotTemplateAbsolutePath() const;
|
||||||
void setDefaultPlotTemplatePath( const QString& templatePath );
|
void setDefaultPlotTemplatePath( const QString& templatePath );
|
||||||
|
bool showSummaryTimeAsLongString() const;
|
||||||
|
|
||||||
std::map<RiaDefines::FontSettingType, RiaFontCache::FontSize> defaultFontSizes() const;
|
std::map<RiaDefines::FontSettingType, RiaFontCache::FontSize> defaultFontSizes() const;
|
||||||
|
|
||||||
@ -168,6 +169,7 @@ private:
|
|||||||
caf::PdmField<QString> m_holoLensExportFolder;
|
caf::PdmField<QString> m_holoLensExportFolder;
|
||||||
caf::PdmField<QString> m_dateFormat;
|
caf::PdmField<QString> m_dateFormat;
|
||||||
caf::PdmField<QString> m_timeFormat;
|
caf::PdmField<QString> m_timeFormat;
|
||||||
|
caf::PdmField<bool> m_showSummaryTimeAsLongString;
|
||||||
|
|
||||||
caf::PdmField<QString> m_plotTemplateFolders;
|
caf::PdmField<QString> m_plotTemplateFolders;
|
||||||
caf::PdmField<bool> m_searchPlotTemplateFoldersRecursively;
|
caf::PdmField<bool> m_searchPlotTemplateFoldersRecursively;
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "RiaFeatureCommandContext.h"
|
#include "RiaFeatureCommandContext.h"
|
||||||
#include "RiaGuiApplication.h"
|
#include "RiaGuiApplication.h"
|
||||||
|
#include "RiaPreferences.h"
|
||||||
|
|
||||||
#include "RimGridCrossPlot.h"
|
#include "RimGridCrossPlot.h"
|
||||||
#include "RimGridCrossPlotCurve.h"
|
#include "RimGridCrossPlotCurve.h"
|
||||||
@ -84,11 +85,13 @@ public:
|
|||||||
|
|
||||||
if ( m_summaryPlot->containsResamplableCurves() )
|
if ( m_summaryPlot->containsResamplableCurves() )
|
||||||
{
|
{
|
||||||
return m_summaryPlot->asciiDataForPlotExport( timePeriod );
|
RiaPreferences* prefs = RiaApplication::instance()->preferences();
|
||||||
|
|
||||||
|
return m_summaryPlot->asciiDataForPlotExport( timePeriod, prefs->showSummaryTimeAsLongString() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return m_summaryPlot->asciiDataForPlotExport();
|
return m_summaryPlot->asciiDataForPlotExport( DateTimePeriod::NONE, true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
#include "RiaLogging.h"
|
#include "RiaLogging.h"
|
||||||
|
#include "RiaPreferences.h"
|
||||||
|
|
||||||
#include "RicResampleDialog.h"
|
#include "RicResampleDialog.h"
|
||||||
|
|
||||||
@ -60,6 +61,8 @@ void RicAsciiExportSummaryPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
caf::SelectionManager::instance()->objectsByType( &selectedSummaryPlots );
|
caf::SelectionManager::instance()->objectsByType( &selectedSummaryPlots );
|
||||||
QString defaultDir = defaultExportDir();
|
QString defaultDir = defaultExportDir();
|
||||||
|
|
||||||
|
RiaPreferences* prefs = RiaApplication::instance()->preferences();
|
||||||
|
|
||||||
// Ask user about resampling
|
// Ask user about resampling
|
||||||
auto result = RicResampleDialog::openDialog();
|
auto result = RicResampleDialog::openDialog();
|
||||||
if ( !result.ok ) return;
|
if ( !result.ok ) return;
|
||||||
@ -73,7 +76,10 @@ void RicAsciiExportSummaryPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
caf::ProgressInfo pi( selectedSummaryPlots.size(), QString( "Exporting plot data to ASCII" ) );
|
caf::ProgressInfo pi( selectedSummaryPlots.size(), QString( "Exporting plot data to ASCII" ) );
|
||||||
size_t progress = 0;
|
size_t progress = 0;
|
||||||
|
|
||||||
RicAsciiExportSummaryPlotFeature::exportAsciiForSummaryPlot( fileName, summaryPlot, result.period );
|
RicAsciiExportSummaryPlotFeature::exportAsciiForSummaryPlot( fileName,
|
||||||
|
summaryPlot,
|
||||||
|
result.period,
|
||||||
|
prefs->showSummaryTimeAsLongString() );
|
||||||
|
|
||||||
progress++;
|
progress++;
|
||||||
pi.setProgress( progress );
|
pi.setProgress( progress );
|
||||||
@ -98,7 +104,10 @@ void RicAsciiExportSummaryPlotFeature::onActionTriggered( bool isChecked )
|
|||||||
for ( RimSummaryPlot* summaryPlot : selectedSummaryPlots )
|
for ( RimSummaryPlot* summaryPlot : selectedSummaryPlots )
|
||||||
{
|
{
|
||||||
QString fileName = saveDir + "/" + caf::Utils::makeValidFileBasename( summaryPlot->description() ) + ".ascii";
|
QString fileName = saveDir + "/" + caf::Utils::makeValidFileBasename( summaryPlot->description() ) + ".ascii";
|
||||||
RicAsciiExportSummaryPlotFeature::exportAsciiForSummaryPlot( fileName, summaryPlot, result.period );
|
RicAsciiExportSummaryPlotFeature::exportAsciiForSummaryPlot( fileName,
|
||||||
|
summaryPlot,
|
||||||
|
result.period,
|
||||||
|
prefs->showSummaryTimeAsLongString() );
|
||||||
progress++;
|
progress++;
|
||||||
pi.setProgress( progress );
|
pi.setProgress( progress );
|
||||||
}
|
}
|
||||||
@ -163,10 +172,11 @@ bool RicAsciiExportSummaryPlotFeature::exportTextToFile( const QString& fileName
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RicAsciiExportSummaryPlotFeature::exportAsciiForSummaryPlot( const QString& fileName,
|
bool RicAsciiExportSummaryPlotFeature::exportAsciiForSummaryPlot( const QString& fileName,
|
||||||
const RimSummaryPlot* summaryPlot,
|
const RimSummaryPlot* summaryPlot,
|
||||||
DateTimePeriod resamplingPeriod )
|
DateTimePeriod resamplingPeriod,
|
||||||
|
bool showTimeAsLongString )
|
||||||
{
|
{
|
||||||
QString text = summaryPlot->description();
|
QString text = summaryPlot->description();
|
||||||
text.append( summaryPlot->asciiDataForPlotExport( resamplingPeriod ) );
|
text.append( summaryPlot->asciiDataForPlotExport( resamplingPeriod, showTimeAsLongString ) );
|
||||||
text.append( "\n\n" );
|
text.append( "\n\n" );
|
||||||
|
|
||||||
return exportTextToFile( fileName, text );
|
return exportTextToFile( fileName, text );
|
||||||
|
@ -44,5 +44,6 @@ protected:
|
|||||||
private:
|
private:
|
||||||
static bool exportAsciiForSummaryPlot( const QString& fileName,
|
static bool exportAsciiForSummaryPlot( const QString& fileName,
|
||||||
const RimSummaryPlot* selectedSummaryPlots,
|
const RimSummaryPlot* selectedSummaryPlots,
|
||||||
DateTimePeriod resamplingPeriod );
|
DateTimePeriod resamplingPeriod,
|
||||||
|
bool showTimeAsLongString );
|
||||||
};
|
};
|
||||||
|
@ -132,7 +132,7 @@ void prepareCaseCurvesForExport( DateTimePeriod period,
|
|||||||
void appendToExportDataForCase( QString& out,
|
void appendToExportDataForCase( QString& out,
|
||||||
const std::vector<time_t>& timeSteps,
|
const std::vector<time_t>& timeSteps,
|
||||||
const std::vector<CurveData>& curveData );
|
const std::vector<CurveData>& curveData );
|
||||||
void appendToExportData( QString& out, const std::vector<CurvesData>& curvesData );
|
void appendToExportData( QString& out, const std::vector<CurvesData>& curvesData, bool showTimeAsLongString );
|
||||||
CurvesData concatCurvesData( const std::vector<CurvesData>& curvesData );
|
CurvesData concatCurvesData( const std::vector<CurvesData>& curvesData );
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -306,7 +306,7 @@ QWidget* RimSummaryPlot::viewWidget()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
QString RimSummaryPlot::asciiDataForPlotExport( DateTimePeriod resamplingPeriod ) const
|
QString RimSummaryPlot::asciiDataForPlotExport( DateTimePeriod resamplingPeriod, bool showTimeAsLongString ) const
|
||||||
{
|
{
|
||||||
QString out;
|
QString out;
|
||||||
RiaTimeHistoryCurveResampler resampler;
|
RiaTimeHistoryCurveResampler resampler;
|
||||||
@ -325,7 +325,7 @@ QString RimSummaryPlot::asciiDataForPlotExport( DateTimePeriod resamplingPeriod
|
|||||||
populateTimeHistoryCurvesData( m_gridTimeHistoryCurves.childObjects(), &timeHistoryCurvesData );
|
populateTimeHistoryCurvesData( m_gridTimeHistoryCurves.childObjects(), &timeHistoryCurvesData );
|
||||||
|
|
||||||
// Export observed data
|
// Export observed data
|
||||||
appendToExportData( out, {summaryCurvesObsData} );
|
appendToExportData( out, {summaryCurvesObsData}, showTimeAsLongString );
|
||||||
|
|
||||||
std::vector<CurvesData> exportData( 2 );
|
std::vector<CurvesData> exportData( 2 );
|
||||||
|
|
||||||
@ -339,7 +339,7 @@ QString RimSummaryPlot::asciiDataForPlotExport( DateTimePeriod resamplingPeriod
|
|||||||
prepareCaseCurvesForExport( resamplingPeriod, ResampleAlgorithm::PERIOD_END, timeHistoryCurvesData, &exportData[1] );
|
prepareCaseCurvesForExport( resamplingPeriod, ResampleAlgorithm::PERIOD_END, timeHistoryCurvesData, &exportData[1] );
|
||||||
|
|
||||||
// Export resampled summary and time history data
|
// Export resampled summary and time history data
|
||||||
appendToExportData( out, exportData );
|
appendToExportData( out, exportData, showTimeAsLongString );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pasted observed data
|
// Pasted observed data
|
||||||
@ -347,7 +347,7 @@ QString RimSummaryPlot::asciiDataForPlotExport( DateTimePeriod resamplingPeriod
|
|||||||
CurvesData asciiCurvesData;
|
CurvesData asciiCurvesData;
|
||||||
populateAsciiDataCurvesData( m_asciiDataCurves.childObjects(), &asciiCurvesData );
|
populateAsciiDataCurvesData( m_asciiDataCurves.childObjects(), &asciiCurvesData );
|
||||||
|
|
||||||
appendToExportData( out, {asciiCurvesData} );
|
appendToExportData( out, {asciiCurvesData}, showTimeAsLongString );
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
@ -2281,7 +2281,7 @@ void appendToExportDataForCase( QString& out, const std::vector<time_t>& timeSte
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void appendToExportData( QString& out, const std::vector<CurvesData>& curvesData )
|
void appendToExportData( QString& out, const std::vector<CurvesData>& curvesData, bool showTimeAsLongString )
|
||||||
{
|
{
|
||||||
CurvesData data = concatCurvesData( curvesData );
|
CurvesData data = concatCurvesData( curvesData );
|
||||||
|
|
||||||
@ -2320,8 +2320,63 @@ void appendToExportData( QString& out, const std::vector<CurvesData>& curvesData
|
|||||||
|
|
||||||
for ( auto timeStep : allTimeSteps )
|
for ( auto timeStep : allTimeSteps )
|
||||||
{
|
{
|
||||||
QString tt = QDateTime::fromTime_t( timeStep ).toUTC().toString( "yyyy-MM-dd hh:mm:ss " );
|
QDateTime timseStepUtc = QDateTime::fromTime_t( timeStep ).toUTC();
|
||||||
out += QDateTime::fromTime_t( timeStep ).toUTC().toString( "yyyy-MM-dd hh:mm:ss " );
|
QString timeText;
|
||||||
|
|
||||||
|
if ( showTimeAsLongString )
|
||||||
|
{
|
||||||
|
timeText = timseStepUtc.toString( "yyyy-MM-dd hh:mm:ss " );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Subtract one day to make sure the period is reported using the previous period as label
|
||||||
|
QDateTime oneDayEarlier = timseStepUtc.addDays( -1 );
|
||||||
|
|
||||||
|
QChar zeroChar( 48 );
|
||||||
|
|
||||||
|
switch ( data.resamplePeriod )
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
// Fall through to NONE
|
||||||
|
case DateTimePeriod::NONE:
|
||||||
|
timeText = timseStepUtc.toString( "yyyy-MM-dd hh:mm:ss " );
|
||||||
|
break;
|
||||||
|
case DateTimePeriod::DAY:
|
||||||
|
timeText = oneDayEarlier.toString( "yyyy-MM-dd " );
|
||||||
|
break;
|
||||||
|
case DateTimePeriod::WEEK:
|
||||||
|
{
|
||||||
|
timeText = oneDayEarlier.toString( "yyyy" );
|
||||||
|
int weekNumber = oneDayEarlier.date().weekNumber();
|
||||||
|
timeText += QString( "-W%1" ).arg( weekNumber, 2, 10, zeroChar );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DateTimePeriod::MONTH:
|
||||||
|
timeText = oneDayEarlier.toString( "yyyy-MM" );
|
||||||
|
break;
|
||||||
|
case DateTimePeriod::QUARTER:
|
||||||
|
{
|
||||||
|
int quarterNumber = oneDayEarlier.date().month() / 3;
|
||||||
|
timeText = oneDayEarlier.toString( "yyyy" );
|
||||||
|
timeText += QString( "-Q%1" ).arg( quarterNumber );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DateTimePeriod::HALFYEAR:
|
||||||
|
{
|
||||||
|
int halfYearNumber = oneDayEarlier.date().month() / 6;
|
||||||
|
timeText = oneDayEarlier.toString( "yyyy" );
|
||||||
|
timeText += QString( "-H%1" ).arg( halfYearNumber );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DateTimePeriod::YEAR:
|
||||||
|
timeText = oneDayEarlier.toString( "yyyy" );
|
||||||
|
break;
|
||||||
|
case DateTimePeriod::DECADE:
|
||||||
|
timeText = oneDayEarlier.toString( "yyyy" );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
out += timeText;
|
||||||
|
|
||||||
for ( size_t i = 0; i < data.caseNames.size(); i++ ) // cases
|
for ( size_t i = 0; i < data.caseNames.size(); i++ ) // cases
|
||||||
{
|
{
|
||||||
|
@ -115,7 +115,7 @@ public:
|
|||||||
|
|
||||||
QWidget* viewWidget() override;
|
QWidget* viewWidget() override;
|
||||||
|
|
||||||
QString asciiDataForPlotExport( DateTimePeriod resamplingPeriod = DateTimePeriod::NONE ) const;
|
QString asciiDataForPlotExport( DateTimePeriod resamplingPeriod, bool showTimeAsLongString ) const;
|
||||||
|
|
||||||
std::vector<RimSummaryCurve*> summaryAndEnsembleCurves() const;
|
std::vector<RimSummaryCurve*> summaryAndEnsembleCurves() const;
|
||||||
std::set<RiaSummaryCurveDefinition> summaryAndEnsembleCurveDefinitions() const;
|
std::set<RiaSummaryCurveDefinition> summaryAndEnsembleCurveDefinitions() const;
|
||||||
|
Loading…
Reference in New Issue
Block a user