diff --git a/array_core/multi_plot.cpp b/array_core/multi_plot.cpp index 31a9ae1..4919db8 100644 --- a/array_core/multi_plot.cpp +++ b/array_core/multi_plot.cpp @@ -73,7 +73,7 @@ void holdOff(const Config& configuration) { string multichartPage = dvs::kHtmlMultiChartModel; string filled_multichartPage = ""; dvs::make_string(multichartPage, args, filled_multichartPage); - string htmlFullName = dvs::makeUniqueDavisHtmlName(); + string htmlFullName = dvs::makeUniqueDavisHtmlRelativePath(); dvs::saveStringToFile(htmlFullName, filled_multichartPage); dvs::openFileBySystem(htmlFullName); dvs::allChartBlocks.clear(); diff --git a/common_utils/common_utils.cpp b/common_utils/common_utils.cpp index f29d1e1..8bceee2 100644 --- a/common_utils/common_utils.cpp +++ b/common_utils/common_utils.cpp @@ -348,8 +348,7 @@ string vectorToString(const vector& vec) { string makeUniqueDavisHtmlName() { sleepMicroSec(1); - string davis_dir; - davis_dir = "./davis_htmls/"; + auto now = std::chrono::system_clock::now(); auto milliseconds = std::chrono::duration_cast(now.time_since_epoch()) % 1000; auto in_time_t = std::chrono::system_clock::to_time_t(now); @@ -357,11 +356,16 @@ string makeUniqueDavisHtmlName() { ss << std::put_time(std::localtime(&in_time_t), "%Y-%m-%d_%H_%M_%S"); ss << '_' << std::setfill('0') << std::setw(3) - << milliseconds.count() << ".html"; - davis_dir.append(ss.str()); - return davis_dir; + << milliseconds.count(); + return ss.str(); +} + +std::string makeUniqueDavisHtmlRelativePath() { + string name = makeUniqueDavisHtmlName(); + return std::string("./").append(kOutFolderName).append(name).append(".html"); } + void transponeMatrix(std::vector >& matrix) { if (matrix.empty()) @@ -463,5 +467,7 @@ vector doubleAndReverse(const vector& input, return result; } + + //#STOP_GRAB_TO_DVS_NAMESPACE }; // namespace dvs diff --git a/common_utils/common_utils.h b/common_utils/common_utils.h index e878ac2..3a0a905 100644 --- a/common_utils/common_utils.h +++ b/common_utils/common_utils.h @@ -70,8 +70,12 @@ string nullIfNotFinite(double val); //! convert vec to string, separated by "," string vectorToString(const vector& vec); +//! only name string makeUniqueDavisHtmlName(); +//! folder + name + .html +string makeUniqueDavisHtmlRelativePath(); + //! sometimes std::to_string reurn str with ',' as separator what is wrong template string toStringDotSeparator(T data) { diff --git a/davis_one/davis.cpp b/davis_one/davis.cpp index f67fc81..744188c 100644 --- a/davis_one/davis.cpp +++ b/davis_one/davis.cpp @@ -1110,8 +1110,7 @@ string vectorToString(const vector& vec) { string makeUniqueDavisHtmlName() { sleepMicroSec(1); - string davis_dir; - davis_dir = "./davis_htmls/"; + auto now = std::chrono::system_clock::now(); auto milliseconds = std::chrono::duration_cast(now.time_since_epoch()) % 1000; auto in_time_t = std::chrono::system_clock::to_time_t(now); @@ -1119,11 +1118,16 @@ string makeUniqueDavisHtmlName() { ss << std::put_time(std::localtime(&in_time_t), "%Y-%m-%d_%H_%M_%S"); ss << '_' << std::setfill('0') << std::setw(3) - << milliseconds.count() << ".html"; - davis_dir.append(ss.str()); - return davis_dir; + << milliseconds.count(); + return ss.str(); +} + +std::string makeUniqueDavisHtmlRelativePath() { + string name = makeUniqueDavisHtmlName(); + return std::string("./").append(kOutFolderName).append(name).append(".html"); } + void transponeMatrix(std::vector >& matrix) { if (matrix.empty()) @@ -1226,6 +1230,8 @@ vector doubleAndReverse(const vector& input, } + + } // namespace dvs end namespace dvs { @@ -1711,7 +1717,7 @@ void showCloudOfPointsChart(const vector& xValues, args[ARG_CLOUD_OF_POINTS_ASPECT_WIDTH_OR_HEIGHT] = paramWH; args[ARG_CLOUD_OF_POINTS_DAVIS_LOGO] = kHtmlDavisLogoHyperlinkBlock; make_string(kHtmlCloudOfPoints, args, out); - auto unique_file_name = dvs::makeUniqueDavisHtmlName(); + auto unique_file_name = dvs::makeUniqueDavisHtmlRelativePath(); saveStringToFile(unique_file_name, out); openFileBySystem(unique_file_name); } @@ -1744,7 +1750,7 @@ void showCloudOfPointsChartStr(const std::string& xValues, args[ARG_CLOUD_OF_POINTS_ASPECT_WIDTH_OR_HEIGHT] = paramWH; args[ARG_CLOUD_OF_POINTS_DAVIS_LOGO] = kHtmlDavisLogoHyperlinkBlock; make_string(kHtmlCloudOfPoints, args, out); - auto unique_file_name = dvs::makeUniqueDavisHtmlName(); + auto unique_file_name = dvs::makeUniqueDavisHtmlRelativePath(); saveStringToFile(unique_file_name, out); openFileBySystem(unique_file_name); } @@ -1780,11 +1786,6 @@ void showDateTimeMultichart(const std::string& date_time_values, polygon_date_time.append(reversed_date_time_data); auto polygon_deviation_values = doubleAndReverse(deviation_values, average_values); - - - - - vectorargs_block {ARGS_SIMPLE_DATA_BLOCK_SIZE, ""}; std::string simpleData_yValues = vectorToString(deviation_values); args_block[ARG_SIMPLE_DATA_X] = polygon_date_time; @@ -1833,7 +1834,7 @@ void showDateTimeMultichart(const std::string& date_time_values, args[ARG_DATE_TIME_ASPECT_WIDTH_OR_HEIGHT_FOR_AUTOSCALE] = paramWHsecond; args[ARG_DATE_TIME_DAVIS_LOGO] = kHtmlDavisLogoHyperlinkBlock; make_string(kHtmlDateTimeModel, args, out); - auto unique_file_name = dvs::makeUniqueDavisHtmlName(); + auto unique_file_name = dvs::makeUniqueDavisHtmlRelativePath(); saveStringToFile(unique_file_name, out); openFileBySystem(unique_file_name); } @@ -1908,7 +1909,7 @@ void holdOff(const Config& configuration) { string multichartPage = dvs::kHtmlMultiChartModel; string filled_multichartPage = ""; dvs::make_string(multichartPage, args, filled_multichartPage); - string htmlFullName = dvs::makeUniqueDavisHtmlName(); + string htmlFullName = dvs::makeUniqueDavisHtmlRelativePath(); dvs::saveStringToFile(htmlFullName, filled_multichartPage); dvs::openFileBySystem(htmlFullName); dvs::allChartBlocks.clear(); diff --git a/davis_one/davis.h b/davis_one/davis.h index 5626dfe..ee36e64 100644 --- a/davis_one/davis.h +++ b/davis_one/davis.h @@ -322,8 +322,12 @@ string nullIfNotFinite(double val); //! convert vec to string, separated by "," string vectorToString(const vector& vec); +//! only name string makeUniqueDavisHtmlName(); +//! folder + name + .html +string makeUniqueDavisHtmlRelativePath(); + //! sometimes std::to_string reurn str with ',' as separator what is wrong template string toStringDotSeparator(T data) { diff --git a/gui/davis_gui.cpp b/gui/davis_gui.cpp index ca48565..01ecdd9 100644 --- a/gui/davis_gui.cpp +++ b/gui/davis_gui.cpp @@ -1,8 +1,8 @@ #include "davis_gui.h" #include "./ui_davis_gui.h" - #include "../davis_one/davis.h" + #include #include #include @@ -267,6 +267,8 @@ void DavisGUI::applySettings(const QJsonObject& settings) { } void DavisGUI::readJsonToPlot(const QString& pathToFile) { + QFileInfo fileInfo(pathToFile); + QString jsonName = fileInfo.fileName(); QJsonObject user_stamp_keys; QJsonArray matrix_to_matrix_stamps; @@ -332,7 +334,7 @@ void DavisGUI::readJsonToPlot(const QString& pathToFile) { conf.chart.yLabel = attr.value("type").toString().toStdString(); conf.chart.title = attr.value("instrument").toString().toStdString(); conf.chart.isFitPlotToWindow = action_fitPlotToAllWindow->isChecked(); - dv::show(x_vals, y_vals, QDateTime::currentDateTime().toString("yyyy_MM_dd_hh_mm_ss_zz").toStdString(), conf); + dv::show(x_vals, y_vals, dvs::makeUniqueDavisHtmlName(), conf); } return;// выход если это был MATRIX_TO_MATRIX_TYPE } @@ -359,14 +361,14 @@ void DavisGUI::readJsonToPlot(const QString& pathToFile) { conf.heatmap.isFitPlotToWindow = conf.chart.isFitPlotToWindow; conf.surf.isFitPlotToWindow = conf.chart.isFitPlotToWindow; if (x_vector.empty() == false && y_vector.empty() == false) { - dv::show(x_vector.toStdVector(), y_vector.toStdVector(), "JSON TEST", conf); + dv::show(x_vector.toStdVector(), y_vector.toStdVector(), dvs::makeUniqueDavisHtmlName(), conf); } else if (x_vector.empty() == true && y_vector.empty() == false) { - dv::show(y_vector.toStdVector(), "JSON TEST", conf); + dv::show(y_vector.toStdVector(), dvs::makeUniqueDavisHtmlName(), conf); } else if (x_vector.empty() == false && y_vector.empty() == true) { - dv::show(x_vector.toStdVector(), "JSON TEST", conf); + dv::show(x_vector.toStdVector(), dvs::makeUniqueDavisHtmlName(), conf); } if (matrix_vector.empty() == false) { - dv::show(matrix_vector, "JSON_MATRIX_VECTOR", conf); + dv::show(matrix_vector, dvs::makeUniqueDavisHtmlName(), conf); } } else { qDebug() << "Check JSON!"; @@ -641,7 +643,8 @@ void DavisGUI::pasteFromClipboard() { watcher->setFuture(future); } -void DavisGUI::readPlotText(QStringList& str_lines, QString title) { +void DavisGUI::readPlotText(QStringList& str_lines, QString titleTopOfPlotly) { + qDebug() << "dvs::makeUniqueDavisHtmlName() << " << QString::fromStdString(dvs::makeUniqueDavisHtmlName()); std::vectorlines; std::vector> data; char separator; @@ -704,21 +707,21 @@ void DavisGUI::readPlotText(QStringList& str_lines, QString title) { if (data.size() == 2 || data[0].size() == 2) { //chartXY dv::Config config; - config.chart.title = title.toStdString(); + config.chart.title = titleTopOfPlotly.toStdString(); config.chart.isFitPlotToWindow = action_fitPlotToAllWindow->isChecked(); - dv::show(data, title.toStdString(), config); + dv::show(data, dvs::makeUniqueDavisHtmlName(), config); } else if (data.size() > 1 && data[0].size() > 1) { if (action_heatmap->isChecked()) { dv::Config config; - config.heatmap.title = title.toStdString(); + config.heatmap.title = titleTopOfPlotly.toStdString(); config.heatmap.isFitPlotToWindow = action_fitPlotToAllWindow->isChecked(); - dv::show(data, title.toStdString(), config); + dv::show(data, dvs::makeUniqueDavisHtmlName(), config); } else if (action_surface->isChecked()) { dv::Config config; - config.surf.title = title.toStdString(); + config.surf.title = titleTopOfPlotly.toStdString(); config.surf.isFitPlotToWindow = action_fitPlotToAllWindow->isChecked(); config.typeVisual = dv::VISUALTYPE_SURFACE; - dv::show(data, title.toStdString(), config); + dv::show(data, dvs::makeUniqueDavisHtmlName(), config); } } else { std::vector showVector; @@ -733,9 +736,9 @@ void DavisGUI::readPlotText(QStringList& str_lines, QString title) { } dv::Config config; config.typeVisual = dv::VISUALTYPE_CHART; - config.chart.title = title.toStdString(); + config.chart.title = titleTopOfPlotly.toStdString(); config.chart.isFitPlotToWindow = action_fitPlotToAllWindow->isChecked(); - dv::show(showVector, title.toStdString(), config); + dv::show(showVector, dvs::makeUniqueDavisHtmlName(), config); } } @@ -908,6 +911,7 @@ void DavisGUI::visualizeFiles(const QStringList& file_list) { std::vector values; std::vector force; std::vector> multicharts; + qDebug() << "we are here"; lines = getLinesFromFile(file_list[i]); getDateTimeData(lines, dates, values, force, multicharts); @@ -917,7 +921,7 @@ void DavisGUI::visualizeFiles(const QStringList& file_list) { } } if (dates_list.isEmpty() == false) { - dvs::showDateTimeMultichart(dates_list[0].toStdString(), all_values, true); + dvs::showDateTimeMultichart(dates_list[0].toStdString(), all_values, action_fitPlotToAllWindow->isChecked()); return; } @@ -932,7 +936,7 @@ void DavisGUI::visualizeFiles(const QStringList& file_list) { data.push_back(outY); }; } - dvs::showDateTimeMultichart(dvs::vectorToString(x_values), data, true); + dvs::showDateTimeMultichart(dvs::vectorToString(x_values), data, action_fitPlotToAllWindow->isChecked()); return; } QString filePath = file_list.first(); diff --git a/gui/davis_gui.h b/gui/davis_gui.h index 6eeae62..79bd744 100644 --- a/gui/davis_gui.h +++ b/gui/davis_gui.h @@ -11,6 +11,7 @@ #include "about_window.h" #include "animated_button.h" + QT_BEGIN_NAMESPACE namespace Ui { class DavisGUI; } QT_END_NAMESPACE @@ -47,7 +48,7 @@ class DavisGUI : public QMainWindow { void setGeometryForMinStyle_defaultSkin(); void setGeometryForMaxStyle_newYearSkin(); void setGeometryForMinStyle_newYearSkin(); - void readPlotText(QStringList& str_lines, QString title = ""); + void readPlotText(QStringList& str_lines, QString titleTopOfPlotly = ""); void selectAndShowFiles(); bool checkDateTimeVariant(const QStringList& lines); bool isFileContainsSingleChart(const QString& pathToFile, @@ -70,7 +71,6 @@ class DavisGUI : public QMainWindow { QStringList getLinesFromFile(const QString& pathToFile); - private slots: void showAboutWindow(); void pasteFromClipboard(); diff --git a/plotly_maker/plotly_maker.cpp b/plotly_maker/plotly_maker.cpp index 166132e..b480530 100644 --- a/plotly_maker/plotly_maker.cpp +++ b/plotly_maker/plotly_maker.cpp @@ -499,7 +499,7 @@ void showCloudOfPointsChart(const vector& xValues, args[ARG_CLOUD_OF_POINTS_ASPECT_WIDTH_OR_HEIGHT] = paramWH; args[ARG_CLOUD_OF_POINTS_DAVIS_LOGO] = kHtmlDavisLogoHyperlinkBlock; make_string(kHtmlCloudOfPoints, args, out); - auto unique_file_name = dvs::makeUniqueDavisHtmlName(); + auto unique_file_name = dvs::makeUniqueDavisHtmlRelativePath(); saveStringToFile(unique_file_name, out); openFileBySystem(unique_file_name); } @@ -532,7 +532,7 @@ void showCloudOfPointsChartStr(const std::string& xValues, args[ARG_CLOUD_OF_POINTS_ASPECT_WIDTH_OR_HEIGHT] = paramWH; args[ARG_CLOUD_OF_POINTS_DAVIS_LOGO] = kHtmlDavisLogoHyperlinkBlock; make_string(kHtmlCloudOfPoints, args, out); - auto unique_file_name = dvs::makeUniqueDavisHtmlName(); + auto unique_file_name = dvs::makeUniqueDavisHtmlRelativePath(); saveStringToFile(unique_file_name, out); openFileBySystem(unique_file_name); } @@ -568,11 +568,6 @@ void showDateTimeMultichart(const std::string& date_time_values, polygon_date_time.append(reversed_date_time_data); auto polygon_deviation_values = doubleAndReverse(deviation_values, average_values); - - - - - vectorargs_block {ARGS_SIMPLE_DATA_BLOCK_SIZE, ""}; std::string simpleData_yValues = vectorToString(deviation_values); args_block[ARG_SIMPLE_DATA_X] = polygon_date_time; @@ -621,7 +616,7 @@ void showDateTimeMultichart(const std::string& date_time_values, args[ARG_DATE_TIME_ASPECT_WIDTH_OR_HEIGHT_FOR_AUTOSCALE] = paramWHsecond; args[ARG_DATE_TIME_DAVIS_LOGO] = kHtmlDavisLogoHyperlinkBlock; make_string(kHtmlDateTimeModel, args, out); - auto unique_file_name = dvs::makeUniqueDavisHtmlName(); + auto unique_file_name = dvs::makeUniqueDavisHtmlRelativePath(); saveStringToFile(unique_file_name, out); openFileBySystem(unique_file_name); }