#4117 Improve time step names for Grid Cross plot categorisation

This commit is contained in:
Gaute Lindkvist 2019-02-27 11:38:35 +01:00
parent 1b9a0fe5a7
commit 1e994ac8b8
17 changed files with 80 additions and 82 deletions

View File

@ -338,3 +338,58 @@ QString RiaQDateTimeTools::toStringUsingApplicationLocale(const QDateTime& dt, c
return defaultApplicationLocale.toString(dt, format);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaQDateTimeTools::createTimeFormatStringFromDates(const std::vector<QDateTime>& dates)
{
bool hasHoursAndMinutesInTimesteps = false;
bool hasSecondsInTimesteps = false;
bool hasMillisecondsInTimesteps = false;
for (size_t i = 0; i < dates.size(); i++)
{
if (dates[i].time().msec() != 0.0)
{
hasMillisecondsInTimesteps = true;
hasSecondsInTimesteps = true;
hasHoursAndMinutesInTimesteps = true;
break;
}
else if (dates[i].time().second() != 0.0)
{
hasHoursAndMinutesInTimesteps = true;
hasSecondsInTimesteps = true;
}
else if (dates[i].time().hour() != 0.0 || dates[i].time().minute() != 0.0)
{
hasHoursAndMinutesInTimesteps = true;
}
}
QString formatString = dateFormatString();
if (hasHoursAndMinutesInTimesteps)
{
formatString += " - hh:mm";
if (hasSecondsInTimesteps)
{
formatString += ":ss";
if (hasMillisecondsInTimesteps)
{
formatString += ".zzz";
}
}
}
return formatString;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaQDateTimeTools::dateFormatString()
{
return "dd.MMM yyyy";
}

View File

@ -101,6 +101,9 @@ public:
// settings on local machine. Required for stable regression testing.
static QString toStringUsingApplicationLocale(const QDateTime& dt, const QString& format);
static QString createTimeFormatStringFromDates(const std::vector<QDateTime>& dates);
static QString dateFormatString();
private:
static quint64 secondsInDay();
static quint64 secondsInYear();

View File

@ -24,13 +24,13 @@
#include "RiaApplication.h"
#include "RiaFilePathTools.h"
#include "RiaLogging.h"
#include "RiaQDateTimeTools.h"
#include "RifReaderEclipseSummary.h"
#include "RifEclipseSummaryTools.h"
#include "RimEclipseView.h"
#include "Rim3dOverlayInfoConfig.h"
#include "RimTools.h"
#include "RiuPlotMainWindow.h"
#include "RiuTools.h"
@ -484,9 +484,9 @@ void RicSummaryCaseRestartDialog::appendFileInfoToGridLayout(QGridLayout* gridLa
CVF_ASSERT(gridLayout);
QDateTime startDate = QDateTime::fromTime_t(fileInfo.startDate);
QString startDateString = startDate.toString(RimTools::dateFormatString());
QString startDateString = startDate.toString(RiaQDateTimeTools::dateFormatString());
QDateTime endDate = QDateTime::fromTime_t(fileInfo.endDate);
QString endDateString = endDate.toString(RimTools::dateFormatString());
QString endDateString = endDate.toString(RiaQDateTimeTools::dateFormatString());
int rowCount = gridLayout->rowCount();
QLabel* fileNameLabel = new QLabel();

View File

@ -32,7 +32,6 @@
#include "RimEclipseResultCase.h"
#include "RimOilField.h"
#include "RimProject.h"
#include "RimTools.h"
#include "RimWellLogExtractionCurve.h"
#include "RimWellLogFile.h"
#include "RimWellLogFileChannel.h"
@ -937,7 +936,7 @@ void RimWellPlotTools::calculateValueOptionsForTimeSteps(
{
allTimeSteps.push_back(timeStepPair.first);
}
dateFormatString = RimTools::createTimeFormatStringFromDates(allTimeSteps);
dateFormatString = RiaQDateTimeTools::createTimeFormatStringFromDates(allTimeSteps);
}
for (const std::pair<QDateTime, std::set<RifDataSourceForRftPlt>>& timeStepPair : timestepsToShowWithSources)

View File

@ -43,7 +43,6 @@
#include "RimOilField.h"
#include "RimProject.h"
#include "RimSummaryCurveAppearanceCalculator.h"
#include "RimTools.h"
#include "RimWellFlowRateCurve.h"
#include "RimWellLogExtractionCurve.h"
#include "RimWellLogFile.h"
@ -510,7 +509,7 @@ void RimWellPltPlot::syncCurvesFromUiSelection()
{
allTimeSteps.push_back(curveDefToAdd.timeStep());
}
dateFormatString = RimTools::createTimeFormatStringFromDates(allTimeSteps);
dateFormatString = RiaQDateTimeTools::createTimeFormatStringFromDates(allTimeSteps);
}
// Add curves

View File

@ -293,12 +293,12 @@ void RimGridCrossPlotCurveSet::defineUiOrdering(QString uiConfigName, caf::PdmUi
{
uiOrdering.add(&m_timeStep);
uiOrdering.add(&m_categorization);
uiOrdering.add(&m_categoryBinCount);
if (m_categorization() == RESULT_CATEGORIZATION)
{
caf::PdmUiGroup* categoryGroup = uiOrdering.addNewGroup("Categorization Property");
m_categoryProperty->uiOrdering(uiConfigName, *categoryGroup);
categoryGroup->add(&m_categoryBinCount);
}
caf::PdmUiGroup* xAxisGroup = uiOrdering.addNewGroup("X-Axis Property");

View File

@ -57,7 +57,6 @@
#include "RimGeoMechView.h"
#include "RimReservoirCellResultsStorage.h"
#include "RimSimWellInViewCollection.h"
#include "RimTools.h"
#include "RiuViewer.h"
@ -1092,7 +1091,7 @@ QString Rim3dOverlayInfoConfig::timeStepText(RimEclipseView* eclipseView)
QString dateTimeString;
if (currTimeStepIndex >= 0 && currTimeStepIndex < (int)timeSteps.size())
{
QString dateFormat = RimTools::createTimeFormatStringFromDates(timeSteps);
QString dateFormat = RiaQDateTimeTools::createTimeFormatStringFromDates(timeSteps);
QString dateString = RiaQDateTimeTools::toStringUsingApplicationLocale(timeSteps[currTimeStepIndex], dateFormat);

View File

@ -124,7 +124,7 @@ QString Rim3dWellLogRftCurve::createAutoName() const
}
if (!m_timeStep().isNull())
{
name.push_back(m_timeStep().toString(RimTools::dateFormatString()));
name.push_back(m_timeStep().toString(RiaQDateTimeTools::dateFormatString()));
}
return name.join(", ");

View File

@ -55,7 +55,6 @@
#include "RimReloadCaseTools.h"
#include "RimReservoirCellResultsStorage.h"
#include "RimStimPlanColors.h"
#include "RimTools.h"
#include "RimWellLogPlotCollection.h"
#include "RimWellPath.h"
#include "RimWellPathCollection.h"
@ -588,7 +587,7 @@ void RimEclipseCase::createTimeStepFormatString()
{
std::vector<QDateTime> timeStepDates = this->timeStepDates();
m_timeStepFormatString = RimTools::createTimeFormatStringFromDates(timeStepDates);
m_timeStepFormatString = RiaQDateTimeTools::createTimeFormatStringFromDates(timeStepDates);
}
//--------------------------------------------------------------------------------------------------

View File

@ -21,6 +21,7 @@
#include "RimEclipseResultDefinition.h"
#include "RiaLogging.h"
#include "RiaQDateTimeTools.h"
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
@ -46,7 +47,6 @@
#include "RimPlotCurve.h"
#include "RimProject.h"
#include "RimReservoirCellResultsStorage.h"
#include "RimTools.h"
#include "RimViewLinker.h"
#include "RimWellLogExtractionCurve.h"
@ -679,7 +679,7 @@ QList<caf::PdmOptionItemInfo> RimEclipseResultDefinition::calculateValueOptions(
std::vector<QDateTime> stepDates = baseCase->timeStepDates();
for (size_t stepIdx = 0; stepIdx < stepDates.size(); ++stepIdx)
{
QString displayString = stepDates[stepIdx].toString(RimTools::dateFormatString());
QString displayString = stepDates[stepIdx].toString(RiaQDateTimeTools::dateFormatString());
displayString += QString(" (#%1)").arg(stepIdx);
options.push_back(caf::PdmOptionItemInfo(displayString, static_cast<int>(stepIdx)));
@ -859,7 +859,7 @@ QString RimEclipseResultDefinition::diffResultUiName() const
{
stepDates = gridCellResults->timeStepDates();
diffResult += QString("<b>Base Time Step</b>: %1")
.arg(stepDates[m_timeLapseBaseTimestep()].toString(RimTools::dateFormatString()));
.arg(stepDates[m_timeLapseBaseTimestep()].toString(RiaQDateTimeTools::dateFormatString()));
}
}
if (isCaseDiffResult())

View File

@ -28,7 +28,6 @@
#include "RimGeoMechCase.h"
#include "RimReloadCaseTools.h"
#include "RimReservoirCellResultsStorage.h"
#include "RimTools.h"
#include "cafPdmUiLineEditor.h"
#include "cafPdmUiListEditor.h"
@ -103,7 +102,7 @@ void RimTimeStepFilter::clearFilteredTimeSteps()
//--------------------------------------------------------------------------------------------------
void RimTimeStepFilter::setTimeStepsFromFile(const std::vector<QDateTime>& timeSteps)
{
m_dateFormat = RimTools::createTimeFormatStringFromDates(timeSteps);
m_dateFormat = RiaQDateTimeTools::createTimeFormatStringFromDates(timeSteps);
std::vector<QString> timeStepStrings;
for (const QDateTime& date : timeSteps)
@ -136,7 +135,7 @@ void RimTimeStepFilter::setTimeStepsFromFile(const std::vector<std::pair<QString
validDates.push_back(stringDatePair.second);
}
}
m_dateFormat = RimTools::createTimeFormatStringFromDates(validDates);
m_dateFormat = RiaQDateTimeTools::createTimeFormatStringFromDates(validDates);
std::vector<QString> timeStepStrings;
for (auto stringDatePair : timeSteps)

View File

@ -304,60 +304,6 @@ void RimTools::caseOptionItems(QList<caf::PdmOptionItemInfo>* options)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimTools::createTimeFormatStringFromDates(const std::vector<QDateTime>& dates)
{
bool hasHoursAndMinutesInTimesteps = false;
bool hasSecondsInTimesteps = false;
bool hasMillisecondsInTimesteps = false;
for (size_t i = 0; i < dates.size(); i++)
{
if (dates[i].time().msec() != 0.0)
{
hasMillisecondsInTimesteps = true;
hasSecondsInTimesteps = true;
hasHoursAndMinutesInTimesteps = true;
break;
}
else if (dates[i].time().second() != 0.0)
{
hasHoursAndMinutesInTimesteps = true;
hasSecondsInTimesteps = true;
}
else if (dates[i].time().hour() != 0.0 || dates[i].time().minute() != 0.0)
{
hasHoursAndMinutesInTimesteps = true;
}
}
QString formatString = dateFormatString();
if (hasHoursAndMinutesInTimesteps)
{
formatString += " - hh:mm";
if (hasSecondsInTimesteps)
{
formatString += ":ss";
if (hasMillisecondsInTimesteps)
{
formatString += ".zzz";
}
}
}
return formatString;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimTools::dateFormatString()
{
return "dd.MMM yyyy";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -54,9 +54,5 @@ public:
static void wellPathWithFormations(std::vector<RimWellPath*>* wellPaths);
static void caseOptionItems(QList<caf::PdmOptionItemInfo>* options);
static QString createTimeFormatStringFromDates(const std::vector<QDateTime>& dates);
static QString dateFormatString();
static RimWellPathCollection* wellPathCollection();
};

View File

@ -334,7 +334,7 @@ void RimWellLogFile::defineEditorAttribute(const caf::PdmFieldHandle* field, QSt
caf::PdmUiDateEditorAttribute* attrib = dynamic_cast<caf::PdmUiDateEditorAttribute*> (attribute);
if (attrib != nullptr)
{
attrib->dateFormat = RimTools::dateFormatString();
attrib->dateFormat = RiaQDateTimeTools::dateFormatString();
}
}

View File

@ -268,7 +268,7 @@ QString RimWellLogRftCurve::createCurveAutoName()
}
if ( !m_timeStep().isNull())
{
name.push_back(m_timeStep().toString(RimTools::dateFormatString()));
name.push_back(m_timeStep().toString(RiaQDateTimeTools::dateFormatString()));
}
return name.join(", ");

View File

@ -991,7 +991,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
timeSteps.push_back(first);
timeSteps.push_back(last);
QString formatString = RimTools::createTimeFormatStringFromDates(timeSteps);
QString formatString = RiaQDateTimeTools::createTimeFormatStringFromDates(timeSteps);
description += QString("Time step range for X : '%1' - '%2'")
.arg(first.toString(formatString))
@ -1006,7 +1006,7 @@ void RimSummaryCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
timeSteps.push_back(first);
timeSteps.push_back(last);
QString formatString = RimTools::createTimeFormatStringFromDates(timeSteps);
QString formatString = RiaQDateTimeTools::createTimeFormatStringFromDates(timeSteps);
description += "\n";
description += QString("Time step range for Y : '%1' - '%2'")

View File

@ -17,6 +17,8 @@
/////////////////////////////////////////////////////////////////////////////////
#include "RigEclipseCrossPlotDataExtractor.h"
#include "RiaQDateTimeTools.h"
#include "RigActiveCellInfo.h"
#include "RigActiveCellsResultAccessor.h"
#include "RigCaseCellResultsData.h"
@ -132,6 +134,7 @@ RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCa
}
std::vector<QDateTime> timeStepDates = resultData->timeStepDates();
QString timeFormatString = RiaQDateTimeTools::createTimeFormatStringFromDates(timeStepDates);
for (const auto& sampleCategory : categorySamplesMap)
{
@ -140,7 +143,7 @@ RigEclipseCrossPlotResult RigEclipseCrossPlotDataExtractor::extract(RigEclipseCa
{
if (sampleCategory.first < timeStepDates.size())
{
categoryName = timeStepDates[sampleCategory.first].toString(Qt::ISODate);
categoryName = RiaQDateTimeTools::toStringUsingApplicationLocale(timeStepDates[sampleCategory.first], timeFormatString);
}
}
else if (categorizationType == FORMATION_CATEGORIZATION && activeFormationNames)