CSV import dialog. Highlight selected time series column

This commit is contained in:
Bjørn Erik Jensen
2017-11-28 10:42:05 +01:00
parent 4b14a4fdda
commit 0dbcc43d9c
3 changed files with 31 additions and 16 deletions

View File

@@ -335,9 +335,9 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::defineEditorAttribute(const caf::P
//--------------------------------------------------------------------------------------------------
void RicPasteAsciiDataToSummaryPlotFeatureUi::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if (changedField == &m_cellSeparator)
if (changedField == &m_cellSeparator || changedField == &m_timeSeriesColumnName)
{
m_previewText = m_parser->previewText(PREVIEW_TEXT_LINE_COUNT, mapCellSeparator(m_cellSeparator()));
m_previewText = m_parser->previewText(PREVIEW_TEXT_LINE_COUNT, parseOptions());
}
}
@@ -360,11 +360,11 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::initialize(RifCsvUserDataParser* p
}
}
parser->parseColumnInfo(parseOptions().cellSeparator);
parser->parseColumnInfo(parseOptions());
if (parser->tableData().columnInfos().size() > 0)
{
m_timeSeriesColumnName = QString::fromStdString(parser->tableData().columnInfos()[0].columnName());
}
m_previewText = parser->previewText(PREVIEW_TEXT_LINE_COUNT, cellSep);
m_previewText = parser->previewText(PREVIEW_TEXT_LINE_COUNT, parseOptions());
}

View File

@@ -97,11 +97,11 @@ const ColumnInfo* RifCsvUserDataParser::dateTimeColumn() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifCsvUserDataParser::parseColumnInfo(const QString& cellSeparator)
bool RifCsvUserDataParser::parseColumnInfo(const AsciiDataParseOptions& parseOptions)
{
QTextStream* dataStream = openDataStream();
std::vector<ColumnInfo> columnInfoList;
bool result = parseColumnInfo(dataStream, cellSeparator, &columnInfoList);
bool result = parseColumnInfo(dataStream, parseOptions, &columnInfoList);
if (result)
{
@@ -114,7 +114,7 @@ bool RifCsvUserDataParser::parseColumnInfo(const QString& cellSeparator)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RifCsvUserDataParser::previewText(int lineCount, const QString& cellSeparator)
QString RifCsvUserDataParser::previewText(int lineCount, const AsciiDataParseOptions& parseOptions)
{
QTextStream *stream = openDataStream();
@@ -124,6 +124,7 @@ QString RifCsvUserDataParser::previewText(int lineCount, const QString& cellSepa
QTextStream outStream(&preview);
int iLine = 0;
bool header = true;
int timeColumnIndex = -1;
outStream << "<Table>";
outStream << "<Style> th, td {padding-right: 15px;} </Style>";
@@ -134,11 +135,25 @@ QString RifCsvUserDataParser::previewText(int lineCount, const QString& cellSepa
if (line.isEmpty()) continue;
outStream << "<tr>";
for (const QString& cellData : splitLineAndTrim(line, cellSeparator))
int iCol = 0;
for (const QString& cellData : splitLineAndTrim(line, parseOptions.cellSeparator))
{
outStream << (header ? "<th>" : "<td>");
if (cellData == parseOptions.timeSeriesColumnName && header)
{
timeColumnIndex = iCol;
}
outStream << (header ? "<th" : "<td");
if (iCol == timeColumnIndex)
{
outStream << " style=\"background-color: #FFFFD0;\"";
}
outStream << ">";
outStream << cellData;
outStream << (header ? "</th>" : "</td>");
iCol++;
}
outStream << "</tr>";
@@ -149,13 +164,13 @@ QString RifCsvUserDataParser::previewText(int lineCount, const QString& cellSepa
outStream << "</Table>";
closeDataStream();
return columnifyText(preview, cellSeparator);
return columnifyText(preview, parseOptions.cellSeparator);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifCsvUserDataParser::parseColumnInfo(QTextStream* dataStream, const QString& cellSeparator, std::vector<ColumnInfo>* columnInfoList)
bool RifCsvUserDataParser::parseColumnInfo(QTextStream* dataStream, const AsciiDataParseOptions& parseOptions, std::vector<ColumnInfo>* columnInfoList)
{
bool headerFound = false;
@@ -167,7 +182,7 @@ bool RifCsvUserDataParser::parseColumnInfo(QTextStream* dataStream, const QStrin
QString line = dataStream->readLine();
if (line.trimmed().isEmpty()) continue;
QStringList lineColumns = splitLineAndTrim(line, cellSeparator);
QStringList lineColumns = splitLineAndTrim(line, parseOptions.cellSeparator);
int colCount = lineColumns.size();
@@ -198,7 +213,7 @@ bool RifCsvUserDataParser::parseData(const AsciiDataParseOptions& parseOptions)
QTextStream* dataStream = openDataStream();
// Parse header
if (!parseColumnInfo(dataStream, parseOptions.cellSeparator, &columnInfoList))
if (!parseColumnInfo(dataStream, parseOptions, &columnInfoList))
{
m_errorText->append("CSV import: Failed to parse header columns");
return false;

View File

@@ -49,8 +49,8 @@ public:
const ColumnInfo* columnInfo(size_t columnIndex) const;
const ColumnInfo* dateTimeColumn() const;
bool parseColumnInfo(const QString& cellSeparator);
QString previewText(int lineCount, const QString& cellSeparator);
bool parseColumnInfo(const AsciiDataParseOptions& parseOptions);
QString previewText(int lineCount, const AsciiDataParseOptions& parseOptions);
QString tryDetermineCellSeparator();
QString tryDetermineDecimalSeparator(const QString& cellSeparator);
@@ -63,7 +63,7 @@ protected:
private:
bool parseColumnInfo(QTextStream* dataStream,
const QString& cellSeparator,
const AsciiDataParseOptions& parseOptions,
std::vector<ColumnInfo>* columnInfoList);
bool parseData(const AsciiDataParseOptions& parseOptions);
QString columnifyText(const QString& text, const QString& cellSeparator);