diff --git a/davis_one/davis.cpp b/davis_one/davis.cpp
index 62b1b83..f67fc81 100644
--- a/davis_one/davis.cpp
+++ b/davis_one/davis.cpp
@@ -43,6 +43,7 @@ namespace dvs {
const char kHtmlModel[] =
R"(
+ DAVIS
%13
diff --git a/gui/davis_gui.cpp b/gui/davis_gui.cpp
index 783c145..ca48565 100644
--- a/gui/davis_gui.cpp
+++ b/gui/davis_gui.cpp
@@ -392,6 +392,83 @@ Skins DavisGUI::checkSkin() {
return skin;
}
+bool DavisGUI::getDateTimeData(const QStringList& lines,
+ QString& dates,
+ std::vector& values,
+ std::vector& force,
+ std::vector>& multicharts) {
+ QJsonArray jarr;
+ if (jsn::getJsonArrayFromFile("date_time_formats.json", jarr) == false) {
+ jsn::getJsonArrayFromFile(":/date_time_formats.json", jarr);
+ }
+
+ for (int i = 0; i < lines.size(); ++i) {
+ QString test = lines[i];
+ test.replace("'", "");
+ for (int j = 0; j < jarr.size(); ++j) {
+ int template_time_stamp_size = jarr[j].toString().size();
+ QString template_time_stamp = jarr[j].toString();
+ if (test.size() < template_time_stamp_size + 1) {
+ continue;
+ }
+ QString separator = QString(test[template_time_stamp_size]);
+ QString substr = test.mid(0, template_time_stamp_size);
+ QDateTime dt = QDateTime::fromString(substr, template_time_stamp);
+ if (dt.isValid()) {
+ dates.append("'");
+ dates.append(dt.toString("yyyy-MM-dd hh:mm:ss"));
+ dates.append("'");
+ if (i < lines.size() - 1) {
+ dates.append(",");
+ }
+ auto values_list = test.split(separator);
+ //Clear empty values
+ for (int ch = 0; ch < values_list.size(); ++ch) {
+ if (values_list[ch].isEmpty()) {
+ values_list.removeAt(ch);
+ }
+ }
+ if (values_list.size() < 2) {
+ continue;
+ }
+ if (values_list.size() > 3) {
+ std::vector temp(values_list.size() - 1);
+ for (int j = 1; j < values_list.size(); ++j) {
+ temp[j - 1] = values_list[j].toDouble();
+ }
+ multicharts.push_back(temp);
+ }
+ double value = values_list[1].toDouble();
+ values.emplace_back(value);
+ if (values_list.size() == 3) {
+ double value = values_list[2].toDouble();
+ force.emplace_back(value);
+ }
+ }
+ }
+ }
+ return true;
+}
+
+QStringList DavisGUI::getLinesFromFile(const QString& pathToFile) {
+ QFile file(pathToFile);
+ QTextStream ts(&file);
+ ts.setCodec("UTF-8");
+ if (file.open(QIODevice::ReadWrite) == false) {
+ return QStringList();
+ };
+ QString line;
+ QStringList str_lines;
+ while (ts.readLineInto(&line)) {
+ str_lines.append(line);
+ }
+ if (str_lines.empty()) {
+ return QStringList();
+ }
+ file.close();
+ return str_lines;
+}
+
void DavisGUI::setMaxStyleWindow(int animDuration) {
m_isMinStyleWindow = false;
hideElementsDuringResize();
@@ -664,70 +741,12 @@ void DavisGUI::readPlotText(QStringList& str_lines, QString title) {
bool DavisGUI::checkDateTimeVariant(const QStringList& lines) {
- QJsonArray jarr;
- if (jsn::getJsonArrayFromFile("date_time_formats.json", jarr) == false) {
- jsn::getJsonArrayFromFile(":/date_time_formats.json", jarr);
- }
- qDebug() << jarr;
+
QString dates;
std::vector values;
std::vector force;
std::vector> multicharts;
-
- for (int i = 0; i < lines.size(); ++i) {
- QString test = lines[i];
- test.replace("'", "");
- for (int j = 0; j < jarr.size(); ++j) {
- int template_time_stamp_size = jarr[j].toString().size();
- QString template_time_stamp = jarr[j].toString();
- if (test.size() < template_time_stamp_size + 1) {
- continue;
- }
- QString separator = QString(test[template_time_stamp_size]);
- QString substr = test.mid(0, template_time_stamp_size);
- QDateTime dt = QDateTime::fromString(substr, template_time_stamp);
- if (dt.isValid()) {
- //2013-10-04 22:23:00
- //qDebug() << dt.toString("yyyy-MM-dd hh:mm:ss");
- dates.append("'");
- dates.append(dt.toString("yyyy-MM-dd hh:mm:ss"));
- dates.append("'");
- if (i < lines.size() - 1) {
- dates.append(",");
- }
-
- auto values_list = test.split(separator);
- //Clear empty values
- for (int ch = 0; ch < values_list.size(); ++ch) {
- if (values_list[ch].isEmpty()) {
- values_list.removeAt(ch);
- }
- }
-
-
- if (values_list.size() < 2) {
- continue;
- }
- if (values_list.size() > 3) {
- std::vector temp(values_list.size() - 1);
- for (int j = 1; j < values_list.size(); ++j) {
- temp[j - 1] = values_list[j].toDouble();
- }
- multicharts.push_back(temp);
- }
-
- double value = values_list[1].toDouble();
- //qDebug() << value;
- values.emplace_back(value);
- if (values_list.size() == 3) {
- double value = values_list[2].toDouble();
- //qDebug() << value;
- force.emplace_back(value);
- }
-
- }
- }
- }
+ getDateTimeData(lines, dates, values, force, multicharts);
if (multicharts.empty() == false) {
dvs::transponeMatrix(multicharts);
@@ -737,7 +756,6 @@ bool DavisGUI::checkDateTimeVariant(const QStringList& lines) {
if (values.size() == 0)
return false;
- qDebug() << "check sizes: " << lines.size() << values.size();
if (force.empty() == false) {
dvs::showCloudOfPointsChartStr(dates.toStdString(), values, force, action_fitPlotToAllWindow->isChecked());
@@ -746,7 +764,6 @@ bool DavisGUI::checkDateTimeVariant(const QStringList& lines) {
dvs::showDateTimeChart(dates.toStdString(), values, action_fitPlotToAllWindow->isChecked());
return true;
-
}
void DavisGUI::selectAndShowFiles() {
@@ -765,21 +782,9 @@ void DavisGUI::selectAndShowFiles() {
bool DavisGUI::isFileContainsSingleChart(const QString& pathToFile,
std::vector& outX,
std::vector& outY) {
- QFile file(pathToFile);
- QTextStream ts(&file);
- ts.setCodec("UTF-8");
- if (file.open(QIODevice::ReadWrite) == false) {
- return false;
- };
- QString line;
- QStringList str_lines;
- while (ts.readLineInto(&line)) {
- str_lines.append(line);
- }
- if (str_lines.empty()) {
- return false;
- }
- file.close();
+
+ QStringList str_lines = getLinesFromFile(pathToFile);
+
std::vector> data;
char separator;
@@ -832,8 +837,6 @@ bool DavisGUI::isFileContainsSingleChart(const QString& pathToFile,
}
}
- //qDebug() << outX;
- //qDebug() << outY;
return true;
}
@@ -895,24 +898,41 @@ void DavisGUI::visualizeFiles(const QStringList& file_list) {
if (file_list.isEmpty()) {
return;
}
- QString all_chart_blocks;
- const QString trace_name = "trace%1";
- QString all_traces_names;
+
if (file_list.size() > 1) {
- QStringList onlySingleChartList;
- qDebug() << "file list size: " << file_list.size();
+ QVector dates_list;
+ std::vector> all_values;
+ for (int i = 0; i < file_list.size(); ++i) {
+ QStringList lines;
+ QString dates;
+ std::vector values;
+ std::vector force;
+ std::vector> multicharts;
+ lines = getLinesFromFile(file_list[i]);
+
+ getDateTimeData(lines, dates, values, force, multicharts);
+ if (dates.isEmpty() == false) {
+ dates_list.append(dates);
+ all_values.emplace_back(values);
+ }
+ }
+ if (dates_list.isEmpty() == false) {
+ dvs::showDateTimeMultichart(dates_list[0].toStdString(), all_values, true);
+ return;
+ }
+
+
std::vector> data;
std::vector x_values;
for (int i = 0; i < file_list.size(); ++i) {
std::vector outX, outY;
- if(isFileContainsSingleChart(file_list[i], outX, outY)){
- //dv::show(outX,outY);
- if(i==0)x_values = outX;
- data.push_back(outY);
+ if (isFileContainsSingleChart(file_list[i], outX, outY)) {
+ if (i == 0)
+ x_values = outX;
+ data.push_back(outY);
};
-
}
- dvs::showDateTimeMultichart(dvs::vectorToString(x_values),data,true);
+ dvs::showDateTimeMultichart(dvs::vectorToString(x_values), data, true);
return;
}
QString filePath = file_list.first();
diff --git a/gui/davis_gui.h b/gui/davis_gui.h
index ed5a0b0..6eeae62 100644
--- a/gui/davis_gui.h
+++ b/gui/davis_gui.h
@@ -51,8 +51,8 @@ class DavisGUI : public QMainWindow {
void selectAndShowFiles();
bool checkDateTimeVariant(const QStringList& lines);
bool isFileContainsSingleChart(const QString& pathToFile,
- std::vector &outX,
- std::vector &outY);
+ std::vector& outX,
+ std::vector& outY);
void visualizeFiles(const QStringList& file_list);
void hideElementsDuringResize();
void saveSettings(const QString& fileName);
@@ -62,6 +62,13 @@ class DavisGUI : public QMainWindow {
void matrixAnalyzer(std::vector>& matrix,
const bool isRow);
Skins checkSkin();
+ bool getDateTimeData(const QStringList& lines,
+ QString& dates,
+ std::vector& values,
+ std::vector& force,
+ std::vector>& multicharts);
+
+ QStringList getLinesFromFile(const QString& pathToFile);
private slots:
diff --git a/plotly_maker/html_parts.cpp b/plotly_maker/html_parts.cpp
index de4cf8f..cbfccec 100644
--- a/plotly_maker/html_parts.cpp
+++ b/plotly_maker/html_parts.cpp
@@ -6,6 +6,7 @@ namespace dvs {
const char kHtmlModel[] =
R"(
+ DAVIS
%13