mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4017 Automatic parsing of date-time format in CSV Observed Time History Data
This commit is contained in:
parent
77a12f13c1
commit
987cb92f43
@ -466,7 +466,7 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::fieldChangedByUi(const caf::PdmFie
|
||||
{
|
||||
if (changedField == &m_cellSeparator || changedField == &m_timeSeriesColumnName)
|
||||
{
|
||||
m_previewText = m_parser->previewText(PREVIEW_TEXT_LINE_COUNT, parseOptions());
|
||||
updatePreviewTextAndDateFormat();
|
||||
}
|
||||
}
|
||||
|
||||
@ -495,5 +495,23 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::initialize(RifCsvUserDataParser* p
|
||||
m_timeSeriesColumnName = QString::fromStdString(parser->tableData().columnInfos()[0].columnName());
|
||||
}
|
||||
|
||||
m_previewText = parser->previewText(PREVIEW_TEXT_LINE_COUNT, parseOptions());
|
||||
updatePreviewTextAndDateFormat();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicPasteAsciiDataToSummaryPlotFeatureUi::updatePreviewTextAndDateFormat()
|
||||
{
|
||||
m_previewText = m_parser->previewText(PREVIEW_TEXT_LINE_COUNT, parseOptions());
|
||||
|
||||
QStringList timeStrings = m_parser->timeColumnPreviewData(PREVIEW_TEXT_LINE_COUNT, parseOptions());
|
||||
|
||||
DateFormat df = DATE_DDMMYYYY_DOT_SEPARATED;
|
||||
for (auto& s : timeStrings)
|
||||
{
|
||||
df = dateFormatFromString(s);
|
||||
}
|
||||
|
||||
m_dateFormat = df;
|
||||
}
|
||||
|
@ -143,6 +143,7 @@ protected:
|
||||
|
||||
private:
|
||||
void initialize(RifCsvUserDataParser* parser);
|
||||
void updatePreviewTextAndDateFormat();
|
||||
|
||||
private:
|
||||
UiMode m_uiMode;
|
||||
|
@ -218,6 +218,52 @@ QString RifCsvUserDataParser::previewText(int lineCount, const AsciiDataParseOpt
|
||||
return preview;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QStringList RifCsvUserDataParser::timeColumnPreviewData(int lineCount, const AsciiDataParseOptions& parseOptions)
|
||||
{
|
||||
QStringList timeStrings;
|
||||
|
||||
QTextStream* stream = openDataStream();
|
||||
|
||||
if (stream)
|
||||
{
|
||||
int timeColumnIndex = -1;
|
||||
int iLine = 0;
|
||||
|
||||
while (iLine < lineCount && !stream->atEnd())
|
||||
{
|
||||
QString line = stream->readLine();
|
||||
|
||||
if (line.isEmpty()) continue;
|
||||
|
||||
int iCol = 0;
|
||||
QStringList cols = RifFileParseTools::splitLineAndTrim(line, parseOptions.cellSeparator);
|
||||
for (const QString& cellData : cols)
|
||||
{
|
||||
if (cellData == parseOptions.timeSeriesColumnName && iLine == 0)
|
||||
{
|
||||
timeColumnIndex = iCol;
|
||||
}
|
||||
|
||||
if (iLine > 0 && timeColumnIndex != -1 && timeColumnIndex == iCol)
|
||||
{
|
||||
timeStrings.push_back(cellData);
|
||||
}
|
||||
|
||||
iCol++;
|
||||
}
|
||||
|
||||
iLine++;
|
||||
}
|
||||
}
|
||||
|
||||
closeDataStream();
|
||||
|
||||
return timeStrings;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -784,4 +830,4 @@ void RifCsvUserDataPastedTextParser::closeDataStream()
|
||||
delete m_textStream;
|
||||
m_textStream = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -54,6 +54,7 @@ public:
|
||||
|
||||
bool parseColumnInfo(const AsciiDataParseOptions& parseOptions);
|
||||
QString previewText(int lineCount, const AsciiDataParseOptions& parseOptions);
|
||||
QStringList timeColumnPreviewData(int lineCount, const AsciiDataParseOptions& parseOptions);
|
||||
|
||||
CsvLayout determineCsvLayout();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user