mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2018 CSV import. More date formats. Bugfix in import dialog
This commit is contained in:
@@ -162,7 +162,7 @@ std::vector<RimAsciiDataCurve*> RicPasteAsciiDataToSummaryPlotFeature::parseCurv
|
|||||||
{
|
{
|
||||||
std::vector<RimAsciiDataCurve*> curves;
|
std::vector<RimAsciiDataCurve*> curves;
|
||||||
const AsciiDataParseOptions& parseOptions = settings.parseOptions();
|
const AsciiDataParseOptions& parseOptions = settings.parseOptions();
|
||||||
RifColumnBasedAsciiParser parser = RifColumnBasedAsciiParser(data, parseOptions.dateTimeFormat(), parseOptions.locale, parseOptions.cellSeparator);
|
RifColumnBasedAsciiParser parser = RifColumnBasedAsciiParser(data, parseOptions.dateTimeFormat, parseOptions.locale, parseOptions.cellSeparator);
|
||||||
|
|
||||||
if (parser.headers().empty())
|
if (parser.headers().empty())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,17 +37,26 @@ namespace caf {
|
|||||||
void RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormatEnum::setUp()
|
void RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormatEnum::setUp()
|
||||||
{
|
{
|
||||||
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_DDMMYYYY_DOT_SEPARATED, "dd.MM.yyyy", "Day.Month.Year (dd.MM.yyyy)");
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_DDMMYYYY_DOT_SEPARATED, "dd.MM.yyyy", "Day.Month.Year (dd.MM.yyyy)");
|
||||||
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_DDMMYYYY_DASH_SEPARATED, "dd-MM-yyyy", "Day-Month-Year (dd-MM-yyyy)");
|
||||||
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_DDMMYYYY_SLASH_SEPARATED, "dd/MM/yyyy", "Day/Month/Year (dd/MM/yyyy)");
|
||||||
|
|
||||||
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_YYYYMMDD_DOT_SEPARATED, "yyyy.MM.dd", "Year.Month.Day (yyyy.MM.dd)");
|
||||||
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_YYYYMMDD_DASH_SEPARATED, "yyyy-MM-dd", "Year-Month-Day (yyyy-MM-dd)");
|
||||||
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_YYYYMMDD_SLASH_SEPARATED, "yyyy/MM/dd", "Year/Month/Day (yyyy/MM/dd)");
|
||||||
|
|
||||||
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_MMDDYYYY_SLASH_SEPARATED, "MM/dd/yyyy", "Month/Day/Year (MM/dd/yyyy)");
|
||||||
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_MMDDYY_SLASH_SEPARATED, "MM/dd/yy", "Month/Day/Year (MM/dd/yy)");
|
||||||
|
|
||||||
setDefault(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_DDMMYYYY_DOT_SEPARATED);
|
setDefault(RicPasteAsciiDataToSummaryPlotFeatureUi::DATE_DDMMYYYY_DOT_SEPARATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
void RicPasteAsciiDataToSummaryPlotFeatureUi::TimeFormatEnum::setUp()
|
void RicPasteAsciiDataToSummaryPlotFeatureUi::TimeFormatEnum::setUp()
|
||||||
{
|
{
|
||||||
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_NONE, "NONE", "None");
|
|
||||||
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_HHMM, "hh:mm", "Hour:Minute (hh:mm)");
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_HHMM, "hh:mm", "Hour:Minute (hh:mm)");
|
||||||
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_HHMMSS, "hh:mm:ss", "Hour:Minute:Second (hh:mm:ss)");
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_HHMMSS, "hh:mm:ss", "Hour:Minute:Second (hh:mm:ss)");
|
||||||
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_HHMMSSZZZ, "hh:mm:ss.zzz", "Hour:Minute:Second.Millisecond (hh:mm:ss.zzz)");
|
addItem(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_HHMMSSZZZ, "hh:mm:ss.zzz", "Hour:Minute:Second.Millisecond (hh:mm:ss.zzz)");
|
||||||
setDefault(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_NONE);
|
setDefault(RicPasteAsciiDataToSummaryPlotFeatureUi::TIME_HHMM);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
@@ -75,12 +84,6 @@ RicPasteAsciiDataToSummaryPlotFeatureUi::CellSeparator mapCellSeparator(const QS
|
|||||||
return RicPasteAsciiDataToSummaryPlotFeatureUi::CELL_TAB;
|
return RicPasteAsciiDataToSummaryPlotFeatureUi::CELL_TAB;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -95,8 +98,8 @@ RicPasteAsciiDataToSummaryPlotFeatureUi::RicPasteAsciiDataToSummaryPlotFeatureUi
|
|||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_dateFormat, "DateFormat", "Date Format", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_dateFormat, "DateFormat", "Date Format", "", "", "");
|
||||||
CAF_PDM_InitFieldNoDefault(&m_timeFormat, "TimeFormat", "Time Format", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_timeFormat, "TimeFormat", "Time Format", "", "", "");
|
||||||
CAF_PDM_InitField(&m_useCustomDateFormat, "UseCustomDateFormat", false, "Use Custom Date Format", "", "", "");
|
CAF_PDM_InitField(&m_useCustomDateFormat, "UseCustomDateFormat", false, "Use Custom Date Time Format", "", "", "");
|
||||||
CAF_PDM_InitField(&m_customDateFormat, "CustomDateFormat", QString(), "Custom Date Format", "", "", "");
|
CAF_PDM_InitField(&m_customDateTimeFormat,"CustomDateTimeFormat", QString(), "Custom Date Time Format", "", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitField(&m_curveLineStyle, "LineStyle", caf::AppEnum<RimPlotCurve::LineStyleEnum>(RimPlotCurve::STYLE_NONE), "Line Style", "", "", "");
|
CAF_PDM_InitField(&m_curveLineStyle, "LineStyle", caf::AppEnum<RimPlotCurve::LineStyleEnum>(RimPlotCurve::STYLE_NONE), "Line Style", "", "", "");
|
||||||
CAF_PDM_InitField(&m_curveSymbol, "Symbol", caf::AppEnum<RimPlotCurve::PointSymbolEnum>(RimPlotCurve::SYMBOL_ELLIPSE), "Symbol", "", "", "");
|
CAF_PDM_InitField(&m_curveSymbol, "Symbol", caf::AppEnum<RimPlotCurve::PointSymbolEnum>(RimPlotCurve::SYMBOL_ELLIPSE), "Symbol", "", "", "");
|
||||||
@@ -110,6 +113,8 @@ RicPasteAsciiDataToSummaryPlotFeatureUi::RicPasteAsciiDataToSummaryPlotFeatureUi
|
|||||||
m_previewText.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
m_previewText.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||||
m_previewText.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
m_previewText.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||||
m_previewText.uiCapability()->setUiReadOnly(true);
|
m_previewText.uiCapability()->setUiReadOnly(true);
|
||||||
|
|
||||||
|
m_uiMode = UI_MODE_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -118,10 +123,9 @@ RicPasteAsciiDataToSummaryPlotFeatureUi::RicPasteAsciiDataToSummaryPlotFeatureUi
|
|||||||
void RicPasteAsciiDataToSummaryPlotFeatureUi::setUiModeImport(const QString& fileName)
|
void RicPasteAsciiDataToSummaryPlotFeatureUi::setUiModeImport(const QString& fileName)
|
||||||
{
|
{
|
||||||
m_uiMode = UI_MODE_IMPORT;
|
m_uiMode = UI_MODE_IMPORT;
|
||||||
m_fileName = fileName;
|
|
||||||
|
|
||||||
RifCsvUserDataFileParser parser(fileName);
|
m_parser = std::unique_ptr<RifCsvUserDataParser>(new RifCsvUserDataFileParser(fileName));
|
||||||
m_previewText = parser.previewText();
|
initialize(m_parser.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -130,10 +134,9 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::setUiModeImport(const QString& fil
|
|||||||
void RicPasteAsciiDataToSummaryPlotFeatureUi::setUiModePasteText(const QString& text)
|
void RicPasteAsciiDataToSummaryPlotFeatureUi::setUiModePasteText(const QString& text)
|
||||||
{
|
{
|
||||||
m_uiMode = UI_MODE_PASTE;
|
m_uiMode = UI_MODE_PASTE;
|
||||||
m_pastedText = text;
|
|
||||||
|
|
||||||
RifCsvUserDataPastedTextParser parser(text);
|
m_parser = std::unique_ptr<RifCsvUserDataParser>(new RifCsvUserDataPastedTextParser(text));
|
||||||
m_previewText = parser.previewText();
|
initialize(m_parser.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -147,62 +150,53 @@ const AsciiDataParseOptions RicPasteAsciiDataToSummaryPlotFeatureUi::parseOption
|
|||||||
parseOptions.curvePrefix = m_curvePrefix();
|
parseOptions.curvePrefix = m_curvePrefix();
|
||||||
|
|
||||||
{
|
{
|
||||||
QString separator;
|
|
||||||
QLocale locale;
|
|
||||||
switch (m_decimalSeparator())
|
switch (m_decimalSeparator())
|
||||||
{
|
{
|
||||||
case DECIMAL_COMMA:
|
case DECIMAL_COMMA:
|
||||||
separator = ",";
|
parseOptions.decimalSeparator = ",";
|
||||||
locale = QLocale::Norwegian;
|
parseOptions.locale = QLocale::Norwegian;
|
||||||
break;
|
break;
|
||||||
case DECIMAL_DOT:
|
case DECIMAL_DOT:
|
||||||
default:
|
default:
|
||||||
separator = ".";
|
parseOptions.decimalSeparator = ".";
|
||||||
locale = QLocale::c();
|
parseOptions.locale = QLocale::c();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseOptions.decimalSeparator = separator;
|
|
||||||
parseOptions.locale = locale;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
QString dateFormat;
|
|
||||||
|
|
||||||
if (m_useCustomDateFormat())
|
if (m_useCustomDateFormat())
|
||||||
{
|
{
|
||||||
dateFormat = m_customDateFormat;
|
parseOptions.useCustomDateTimeFormat = true;
|
||||||
|
parseOptions.dateFormat = "";
|
||||||
|
parseOptions.timeFormat = "";
|
||||||
|
parseOptions.dateTimeFormat = m_customDateTimeFormat();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dateFormat = m_dateFormat().text();
|
parseOptions.useCustomDateTimeFormat = false;
|
||||||
|
parseOptions.dateFormat = m_dateFormat().text();
|
||||||
|
parseOptions.timeFormat = m_timeFormat().text();
|
||||||
|
parseOptions.dateTimeFormat = parseOptions.dateFormat + " " + parseOptions.timeFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseOptions.dateFormat = dateFormat;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
parseOptions.timeSeriesColumnName = m_timeSeriesColumnName();
|
parseOptions.timeSeriesColumnName = m_timeSeriesColumnName();
|
||||||
|
|
||||||
parseOptions.timeFormat = m_timeFormat() != TIME_NONE ? m_timeFormat().text() : QString("");
|
|
||||||
|
|
||||||
{
|
{
|
||||||
QString separator;
|
|
||||||
|
|
||||||
switch (m_cellSeparator())
|
switch (m_cellSeparator())
|
||||||
{
|
{
|
||||||
case CELL_COMMA:
|
case CELL_COMMA:
|
||||||
separator = ",";
|
parseOptions.cellSeparator = ",";
|
||||||
break;
|
break;
|
||||||
case CELL_SEMICOLON:
|
case CELL_SEMICOLON:
|
||||||
separator = ";";
|
parseOptions.cellSeparator = ";";
|
||||||
break;
|
break;
|
||||||
case CELL_TAB:
|
case CELL_TAB:
|
||||||
default:
|
default:
|
||||||
separator = "\t";
|
parseOptions.cellSeparator = "\t";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseOptions.cellSeparator = separator;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
parseOptions.curveLineStyle = m_curveLineStyle();
|
parseOptions.curveLineStyle = m_curveLineStyle();
|
||||||
@@ -225,6 +219,8 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::createNewPlot()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicPasteAsciiDataToSummaryPlotFeatureUi::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
void RicPasteAsciiDataToSummaryPlotFeatureUi::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||||
{
|
{
|
||||||
|
CVF_ASSERT(m_uiMode != UI_MODE_NONE);
|
||||||
|
|
||||||
if(m_uiMode == UI_MODE_PASTE)
|
if(m_uiMode == UI_MODE_PASTE)
|
||||||
{
|
{
|
||||||
caf::PdmUiGroup* namingGroup = uiOrdering.addNewGroup("Naming");
|
caf::PdmUiGroup* namingGroup = uiOrdering.addNewGroup("Naming");
|
||||||
@@ -247,7 +243,7 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::defineUiOrdering(QString uiConfigN
|
|||||||
dateGroup->add(&m_useCustomDateFormat);
|
dateGroup->add(&m_useCustomDateFormat);
|
||||||
if (m_useCustomDateFormat())
|
if (m_useCustomDateFormat())
|
||||||
{
|
{
|
||||||
dateGroup->add(&m_customDateFormat);
|
dateGroup->add(&m_customDateTimeFormat);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -272,7 +268,7 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::defineUiOrdering(QString uiConfigN
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
caf::PdmUiGroup* previewGroup = uiOrdering.addNewGroup("Preview");
|
caf::PdmUiGroup* previewGroup = uiOrdering.addNewGroup("Preview - First 30 lines, Pretty Print");
|
||||||
|
|
||||||
previewGroup->add(&m_previewText);
|
previewGroup->add(&m_previewText);
|
||||||
}
|
}
|
||||||
@@ -286,43 +282,20 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::defineUiOrdering(QString uiConfigN
|
|||||||
QList<caf::PdmOptionItemInfo> RicPasteAsciiDataToSummaryPlotFeatureUi::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
|
QList<caf::PdmOptionItemInfo> RicPasteAsciiDataToSummaryPlotFeatureUi::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
|
||||||
bool* useOptionsOnly)
|
bool* useOptionsOnly)
|
||||||
{
|
{
|
||||||
|
CVF_ASSERT(m_uiMode != UI_MODE_NONE);
|
||||||
|
|
||||||
QList<caf::PdmOptionItemInfo> options;
|
QList<caf::PdmOptionItemInfo> options;
|
||||||
|
|
||||||
if (fieldNeedingOptions == &m_timeSeriesColumnName)
|
if (fieldNeedingOptions == &m_timeSeriesColumnName)
|
||||||
{
|
{
|
||||||
QString cellSep;
|
|
||||||
RifCsvUserDataParser* parser;
|
|
||||||
|
|
||||||
if (m_uiMode == UI_MODE_IMPORT)
|
|
||||||
{
|
|
||||||
parser = new RifCsvUserDataFileParser(m_fileName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
parser = new RifCsvUserDataPastedTextParser(m_pastedText);
|
|
||||||
}
|
|
||||||
|
|
||||||
cellSep = parser->tryDetermineCellSeparator();
|
|
||||||
if (!cellSep.isEmpty())
|
|
||||||
{
|
|
||||||
m_cellSeparator = mapCellSeparator(cellSep);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<QString> columnNames;
|
std::vector<QString> columnNames;
|
||||||
if (parser->parseColumnNames(parseOptions().cellSeparator, &columnNames))
|
|
||||||
{
|
m_parser->parseColumnNames(parseOptions().cellSeparator, &columnNames);
|
||||||
|
|
||||||
for (const QString& columnName : columnNames)
|
for (const QString& columnName : columnNames)
|
||||||
{
|
{
|
||||||
options.push_back(caf::PdmOptionItemInfo(columnName, columnName));
|
options.push_back(caf::PdmOptionItemInfo(columnName, columnName));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (columnNames.size() > 0)
|
|
||||||
{
|
|
||||||
m_timeSeriesColumnName = columnNames.front();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delete parser;
|
|
||||||
}
|
}
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
@@ -341,3 +314,24 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::defineEditorAttribute(const caf::P
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RicPasteAsciiDataToSummaryPlotFeatureUi::initialize(RifCsvUserDataParser* parser)
|
||||||
|
{
|
||||||
|
QString cellSep = parser->tryDetermineCellSeparator();
|
||||||
|
if (!cellSep.isEmpty())
|
||||||
|
{
|
||||||
|
m_cellSeparator = mapCellSeparator(cellSep);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<QString> columnNames;
|
||||||
|
parser->parseColumnNames(parseOptions().cellSeparator, &columnNames);
|
||||||
|
if (columnNames.size() > 0)
|
||||||
|
{
|
||||||
|
m_timeSeriesColumnName = columnNames[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
m_previewText = parser->previewText();
|
||||||
|
}
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "RimPlotCurve.h"
|
#include "RimPlotCurve.h"
|
||||||
|
|
||||||
|
#include "RifCsvUserDataParser.h"
|
||||||
|
|
||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
#include "cafPdmField.h"
|
#include "cafPdmField.h"
|
||||||
#include "cafAppEnum.h"
|
#include "cafAppEnum.h"
|
||||||
@@ -27,26 +29,32 @@
|
|||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QLocale>
|
#include <QLocale>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
class AsciiDataParseOptions
|
class AsciiDataParseOptions
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
AsciiDataParseOptions() : useCustomDateTimeFormat(false) { }
|
||||||
|
|
||||||
QString plotTitle;
|
QString plotTitle;
|
||||||
QString curvePrefix;
|
QString curvePrefix;
|
||||||
QString decimalSeparator;
|
QString decimalSeparator;
|
||||||
QLocale locale;
|
QLocale locale;
|
||||||
|
|
||||||
|
bool useCustomDateTimeFormat;
|
||||||
QString dateFormat;
|
QString dateFormat;
|
||||||
QString timeFormat;
|
QString timeFormat;
|
||||||
|
QString dateTimeFormat;
|
||||||
QString cellSeparator;
|
QString cellSeparator;
|
||||||
QString timeSeriesColumnName;
|
QString timeSeriesColumnName;
|
||||||
|
|
||||||
RimPlotCurve::LineStyleEnum curveLineStyle;
|
RimPlotCurve::LineStyleEnum curveLineStyle;
|
||||||
RimPlotCurve::PointSymbolEnum curveSymbol;
|
RimPlotCurve::PointSymbolEnum curveSymbol;
|
||||||
float curveSymbolSkipDistance;
|
float curveSymbolSkipDistance;
|
||||||
|
|
||||||
QString dateTimeFormat() const { return dateFormat + " " + timeFormat; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -60,6 +68,7 @@ class RicPasteAsciiDataToSummaryPlotFeatureUi : public caf::PdmObject
|
|||||||
public:
|
public:
|
||||||
enum UiMode
|
enum UiMode
|
||||||
{
|
{
|
||||||
|
UI_MODE_NONE,
|
||||||
UI_MODE_IMPORT,
|
UI_MODE_IMPORT,
|
||||||
UI_MODE_PASTE
|
UI_MODE_PASTE
|
||||||
};
|
};
|
||||||
@@ -75,13 +84,19 @@ public:
|
|||||||
enum DateFormat
|
enum DateFormat
|
||||||
{
|
{
|
||||||
DATE_DDMMYYYY_DOT_SEPARATED,
|
DATE_DDMMYYYY_DOT_SEPARATED,
|
||||||
|
DATE_DDMMYYYY_DASH_SEPARATED,
|
||||||
|
DATE_DDMMYYYY_SLASH_SEPARATED,
|
||||||
|
DATE_YYYYMMDD_DOT_SEPARATED,
|
||||||
|
DATE_YYYYMMDD_DASH_SEPARATED,
|
||||||
|
DATE_YYYYMMDD_SLASH_SEPARATED,
|
||||||
|
DATE_MMDDYYYY_SLASH_SEPARATED,
|
||||||
|
DATE_MMDDYY_SLASH_SEPARATED
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef caf::AppEnum<DateFormat> DateFormatEnum;
|
typedef caf::AppEnum<DateFormat> DateFormatEnum;
|
||||||
|
|
||||||
enum TimeFormat
|
enum TimeFormat
|
||||||
{
|
{
|
||||||
TIME_NONE,
|
|
||||||
TIME_HHMM,
|
TIME_HHMM,
|
||||||
TIME_HHMMSS,
|
TIME_HHMMSS,
|
||||||
TIME_HHMMSSZZZ,
|
TIME_HHMMSSZZZ,
|
||||||
@@ -112,6 +127,9 @@ protected:
|
|||||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
|
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
|
||||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
|
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void initialize(RifCsvUserDataParser* parser);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UiMode m_uiMode;
|
UiMode m_uiMode;
|
||||||
|
|
||||||
@@ -121,7 +139,7 @@ private:
|
|||||||
caf::PdmField<DateFormatEnum> m_dateFormat;
|
caf::PdmField<DateFormatEnum> m_dateFormat;
|
||||||
caf::PdmField<TimeFormatEnum> m_timeFormat;
|
caf::PdmField<TimeFormatEnum> m_timeFormat;
|
||||||
caf::PdmField<bool> m_useCustomDateFormat;
|
caf::PdmField<bool> m_useCustomDateFormat;
|
||||||
caf::PdmField<QString> m_customDateFormat;
|
caf::PdmField<QString> m_customDateTimeFormat;
|
||||||
caf::PdmField<CellSeparatorEnum> m_cellSeparator;
|
caf::PdmField<CellSeparatorEnum> m_cellSeparator;
|
||||||
caf::PdmField<QString> m_timeSeriesColumnName;
|
caf::PdmField<QString> m_timeSeriesColumnName;
|
||||||
|
|
||||||
@@ -132,7 +150,5 @@ private:
|
|||||||
bool m_createNewPlot;
|
bool m_createNewPlot;
|
||||||
caf::PdmField<QString> m_previewText;
|
caf::PdmField<QString> m_previewText;
|
||||||
|
|
||||||
// Data source
|
std::unique_ptr<RifCsvUserDataParser> m_parser;
|
||||||
QString m_fileName;
|
|
||||||
QString m_pastedText;
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,6 +26,8 @@
|
|||||||
#include "RiaStdStringTools.h"
|
#include "RiaStdStringTools.h"
|
||||||
#include "RiaQDateTimeTools.h"
|
#include "RiaQDateTimeTools.h"
|
||||||
|
|
||||||
|
#include "../Commands/SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeatureUi.h"
|
||||||
|
|
||||||
#include "cvfAssert.h"
|
#include "cvfAssert.h"
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
@@ -241,11 +243,15 @@ bool RifCsvUserDataParser::parseData(const AsciiDataParseOptions& parseOptions)
|
|||||||
}
|
}
|
||||||
else if (col.dataType == ColumnInfo::DATETIME)
|
else if (col.dataType == ColumnInfo::DATETIME)
|
||||||
{
|
{
|
||||||
QDateTime dt = tryParseDateTime(colData.toStdString(), parseOptions.dateTimeFormat());
|
QDateTime dt;
|
||||||
if (!dt.isValid())
|
dt = tryParseDateTime(colData.toStdString(), parseOptions.dateTimeFormat);
|
||||||
|
|
||||||
|
if (!dt.isValid() && !parseOptions.useCustomDateTimeFormat)
|
||||||
{
|
{
|
||||||
|
// Try to match date format only
|
||||||
dt = tryParseDateTime(colData.toStdString(), parseOptions.dateFormat);
|
dt = tryParseDateTime(colData.toStdString(), parseOptions.dateFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dt.isValid()) throw 0;
|
if (!dt.isValid()) throw 0;
|
||||||
col.dateTimeValues.push_back(dt);
|
col.dateTimeValues.push_back(dt);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,8 +21,6 @@
|
|||||||
#include "RifEclipseSummaryAddress.h"
|
#include "RifEclipseSummaryAddress.h"
|
||||||
#include "RifEclipseUserDataParserTools.h"
|
#include "RifEclipseUserDataParserTools.h"
|
||||||
|
|
||||||
#include "../Commands/SummaryPlotCommands/RicPasteAsciiDataToSummaryPlotFeatureUi.h"
|
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
@@ -33,6 +31,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
class ColumnInfo;
|
class ColumnInfo;
|
||||||
|
class AsciiDataParseOptions;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -168,7 +168,6 @@ RimObservedData* RimObservedDataCollection::createAndAddCvsObservedDataFromFile(
|
|||||||
|
|
||||||
RicPasteAsciiDataToSummaryPlotFeatureUi parseOptionsUi;
|
RicPasteAsciiDataToSummaryPlotFeatureUi parseOptionsUi;
|
||||||
parseOptionsUi.setUiModeImport(fileName);
|
parseOptionsUi.setUiModeImport(fileName);
|
||||||
caf::PdmSettings::readFieldsFromApplicationStore(&parseOptionsUi);
|
|
||||||
|
|
||||||
caf::PdmUiPropertyViewDialog propertyDialog(NULL, &parseOptionsUi, "CSV Import Options", "");
|
caf::PdmUiPropertyViewDialog propertyDialog(NULL, &parseOptionsUi, "CSV Import Options", "");
|
||||||
if (propertyDialog.exec() != QDialog::Accepted)
|
if (propertyDialog.exec() != QDialog::Accepted)
|
||||||
|
|||||||
Reference in New Issue
Block a user