#4017 Automatic parsing of date-time format in CSV Observed Time History Data

This commit is contained in:
Magne Sjaastad 2019-04-29 13:35:09 +02:00
parent 77a12f13c1
commit 987cb92f43
4 changed files with 69 additions and 3 deletions

View File

@ -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;
}

View File

@ -143,6 +143,7 @@ protected:
private:
void initialize(RifCsvUserDataParser* parser);
void updatePreviewTextAndDateFormat();
private:
UiMode m_uiMode;

View File

@ -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;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -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();