Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions common_utils/common_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,23 @@ string makeUniqueDavisHtmlName() {
return string(dvs::kOutFolderName) + dvs::kAppName + std::to_string(random_number) + ".html";
}

void transponeMatrix(std::vector<std::vector<double> >& matrix) {

if (matrix.empty())
return;

size_t rows = matrix.size();
size_t cols = matrix[0].size();
vector<vector<double>> transposed(cols, vector<double>(rows));

for (size_t i = 0; i < rows; ++i) {
for (size_t j = 0; j < cols; ++j) {
transposed[j][i] = matrix[i][j];
}
}
matrix = std::move(transposed);
}


//#STOP_GRAB_TO_DVS_NAMESPACE
}; // namespace dvs
3 changes: 3 additions & 0 deletions common_utils/common_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,9 @@ vector<G> vecFromTemplate(const C& container) {
bool is_string_convertable_to_digit(const string& sample);


void transponeMatrix(std::vector<std::vector<double>>& matrix);


//#STOP_GRAB_TO_DVS_NAMESPACE
}; // namespace dvs

Expand Down
110 changes: 88 additions & 22 deletions davis_one/davis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,27 +358,23 @@ const char kNoFileFoundedPage[] = R"(<!DOCTYPE html>
)";


extern const char kWarningIcon[] = R"davis_delimeter(<svg xmlns="http://www.w3.org/2000/svg" width="50%" height="50%" viewBox="0 0 156.262 144.407"><path d="M-109.166 7.227a2 2 0 0 0-.406.046c-3.195.03-6.176 1.695-7.785 4.483l-31.25 54.127-31.25 54.127h.002c-3.42 5.922 1.017 13.609 7.855 13.61h125.002c6.839-.001 11.277-7.688 7.857-13.61l-31.25-54.127-31.252-54.127c-1.465-2.539-4.079-4.164-6.978-4.45a2 2 0 0 0-.445-.077h-.004a2.006 2.006 0 0 0-.094-.002z" color="#000" style="solid-color:#000" transform="translate(186.615 2.437) scale(.99073)"/><path fill="#fff" d="M-109.165 9.227a7.081 7.081 0 0 0-6.46 3.529l-31.25 54.127-31.25 54.127c-2.674 4.631.777 10.609 6.126 10.61h125.002c5.348-.001 8.8-5.979 6.125-10.61l-31.25-54.127-31.252-54.127a7.079 7.079 0 0 0-5.79-3.53h-.001z" color="#000" style="solid-color:#000" transform="translate(186.615 2.437) scale(.99073)"/><path d="M-109.26 11.225a5.073 5.073 0 0 0-4.632 2.53l-31.25 54.128-31.25 54.127c-1.953 3.381.488 7.609 4.393 7.61h125.002c3.905-.001 6.345-4.229 4.392-7.61l-31.25-54.127-31.252-54.127a5.073 5.073 0 0 0-4.152-2.531z" color="#000" style="solid-color:#000" transform="translate(186.615 2.437) scale(.99073)"/><path fill="#fc0" d="M140.053 125.83H16.209L47.17 72.204l30.961-53.626 30.961 53.626z"/><g transform="translate(.295 2.437) scale(.99073)"><circle cx="78.564" cy="111.117" r="8.817"/><path d="M78.564 42.955a8.817 8.817 0 0 0-8.818 8.816l3.156 37.461a5.662 5.662 0 0 0 11.325 0l3.154-37.46a8.817 8.817 0 0 0-8.817-8.817z"/></g></svg>)davis_delimeter";
const char kWarningIcon[] = R"davis_delimeter(<svg xmlns="http://www.w3.org/2000/svg" width="50%" height="50%" viewBox="0 0 156.262 144.407"><path d="M-109.166 7.227a2 2 0 0 0-.406.046c-3.195.03-6.176 1.695-7.785 4.483l-31.25 54.127-31.25 54.127h.002c-3.42 5.922 1.017 13.609 7.855 13.61h125.002c6.839-.001 11.277-7.688 7.857-13.61l-31.25-54.127-31.252-54.127c-1.465-2.539-4.079-4.164-6.978-4.45a2 2 0 0 0-.445-.077h-.004a2.006 2.006 0 0 0-.094-.002z" color="#000" style="solid-color:#000" transform="translate(186.615 2.437) scale(.99073)"/><path fill="#fff" d="M-109.165 9.227a7.081 7.081 0 0 0-6.46 3.529l-31.25 54.127-31.25 54.127c-2.674 4.631.777 10.609 6.126 10.61h125.002c5.348-.001 8.8-5.979 6.125-10.61l-31.25-54.127-31.252-54.127a7.079 7.079 0 0 0-5.79-3.53h-.001z" color="#000" style="solid-color:#000" transform="translate(186.615 2.437) scale(.99073)"/><path d="M-109.26 11.225a5.073 5.073 0 0 0-4.632 2.53l-31.25 54.128-31.25 54.127c-1.953 3.381.488 7.609 4.393 7.61h125.002c3.905-.001 6.345-4.229 4.392-7.61l-31.25-54.127-31.252-54.127a5.073 5.073 0 0 0-4.152-2.531z" color="#000" style="solid-color:#000" transform="translate(186.615 2.437) scale(.99073)"/><path fill="#fc0" d="M140.053 125.83H16.209L47.17 72.204l30.961-53.626 30.961 53.626z"/><g transform="translate(.295 2.437) scale(.99073)"><circle cx="78.564" cy="111.117" r="8.817"/><path d="M78.564 42.955a8.817 8.817 0 0 0-8.818 8.816l3.156 37.461a5.662 5.662 0 0 0 11.325 0l3.154-37.46a8.817 8.817 0 0 0-8.817-8.817z"/></g></svg>)davis_delimeter";



extern const char kHtmlDateTimeModel[] = R"davis_delimeter(
const char kHtmlDateTimeModel[] = R"davis_delimeter(
<head>
<script src="%1" charset="utf-8"></script>
</head>
<body><div style = "display: flex;
align-items:center;height:100%; width:100%;background:#dddfd4;
justify-content: center;"><div style="%6:99%; %7:99%; aspect-ratio: %4/%5;"
justify-content: center;"><div style="%5:99%; %6:99%; aspect-ratio: %3/%4;"
id="gd"></div></div>

<script>

var data = [
{
x: [%2],
y: [%3],
type: 'scatter'
}
%2
];

var config = {
Expand All @@ -395,7 +391,7 @@ Plotly.newPlot('gd', data);



extern const char kHtmlMultiChartBlock[] = R"davis_delimeter(
const char kHtmlMultiChartBlock[] = R"davis_delimeter(
var trace%1 = {
x: [%2],
y: [%3],
Expand All @@ -407,7 +403,7 @@ var trace%1 = {



extern const char kHtmlMultiChartModel[] = R"davis_delimeter(
const char kHtmlMultiChartModel[] = R"davis_delimeter(
<head>
<script src="%1" charset="utf-8"></script>
</head>
Expand Down Expand Up @@ -463,7 +459,7 @@ Plotly.newPlot('gd', data, layout, config);



extern const char kHtmlCloudOfPoints[] = R"davis_delimeter(
const char kHtmlCloudOfPoints[] = R"davis_delimeter(

<head>
<script src="%1" charset="utf-8"></script>
Expand Down Expand Up @@ -501,7 +497,11 @@ Plotly.newPlot('gd', data,layout,config);

)davis_delimeter";


const char kHtmlSimpleDataBlock[]= R"davis_delimeter({
x: [%1],
y: [%2],
type: 'scatter'
})davis_delimeter";


// *INDENT-ON*
Expand Down Expand Up @@ -843,6 +843,23 @@ string makeUniqueDavisHtmlName() {
return string(dvs::kOutFolderName) + dvs::kAppName + std::to_string(random_number) + ".html";
}

void transponeMatrix(std::vector<std::vector<double> >& matrix) {

if (matrix.empty())
return;

size_t rows = matrix.size();
size_t cols = matrix[0].size();
vector<vector<double>> transposed(cols, vector<double>(rows));

for (size_t i = 0; i < rows; ++i) {
for (size_t j = 0; j < cols; ++j) {
transposed[j][i] = matrix[i][j];
}
}
matrix = std::move(transposed);
}



} // namespace dvs end
Expand Down Expand Up @@ -1241,18 +1258,16 @@ void showDateTimeChart(const string& date_time_values,
#endif
vector<string>args {ARGS_DATE_TIME_PAGE_SIZE, ""};
args[ARG_JS_NAME] = kPlotlyJsName;
args[ARG_DATE_TIME_VALUES] = date_time_values;

std::string values;
for (size_t i = 0; i < yValues.size(); ++i) {
std::string value = std::to_string(yValues[i]);
values.append(value);
if (i != yValues.size() - 1) {
values.append(",");
}
}
vector<string>args_block {ARGS_SIMPLE_DATA_BLOCK_SIZE, ""};
std::string simpleData_yValues = vectorToString(yValues);
args_block[ARG_SIMPLE_DATA_X] = date_time_values;
args_block[ARG_SIMPLE_DATA_Y] = simpleData_yValues;
std::string data_values_block;
make_string(kHtmlSimpleDataBlock, args_block, data_values_block);

args[ARG_Y_DATE_TIME_VALUES] = values;

args[ARG_DATE_TIME_VALUES_BLOCK] = data_values_block;
args[ARG_DATE_TIME_ASPECT_RATIO_WIDTH] = "1";
args[ARG_DATE_TIME_ASPECT_RATIO_HEIGHT] = "1";
/*
Expand Down Expand Up @@ -1390,6 +1405,57 @@ void showCloudOfPointsChartStr(const std::string& xValues,
openFileBySystem(kCloudPagePath);
}

void showDateTimeMultichart(const std::string& date_time_values,
const vector<vector<double>>& yValues,
bool isAutoScale) {
string out;
string davis_dir;
#ifdef _WIN32
davis_dir = "\\davis_htmls";
#elif __linux__
davis_dir = "/davis_htmls";
#endif
vector<string>args {ARGS_DATE_TIME_PAGE_SIZE, ""};
args[ARG_JS_NAME] = kPlotlyJsName;


std::string all_data = "";
for (int i = 0; i < yValues.size(); ++i) {
vector<string>args_block {ARGS_SIMPLE_DATA_BLOCK_SIZE, ""};
std::string simpleData_yValues = vectorToString(yValues[i]);
args_block[ARG_SIMPLE_DATA_X] = date_time_values;
args_block[ARG_SIMPLE_DATA_Y] = simpleData_yValues;
std::string data_values_block;
make_string(kHtmlSimpleDataBlock, args_block, data_values_block);
all_data.append(data_values_block);
if (i != yValues.size() - 1) {
all_data.append(",");
}
}

args[ARG_DATE_TIME_VALUES_BLOCK] = all_data;
args[ARG_DATE_TIME_ASPECT_RATIO_WIDTH] = "1";
args[ARG_DATE_TIME_ASPECT_RATIO_HEIGHT] = "1";

string paramWH = "height";
string paramWHsecond;
if (isAutoScale) {
if (paramWH == "width") {
paramWHsecond = "height";
} else if (paramWH == "height") {
paramWHsecond = "width";
}
} else {
paramWHsecond = paramWH;
}

args[ARG_DATE_TIME_ASPECT_WIDTH_OR_HEIGHT] = paramWH;
args[ARG_DATE_TIME_ASPECT_WIDTH_OR_HEIGHT_FOR_AUTOSCALE] = paramWHsecond;
make_string(kHtmlDateTimeModel, args, out);
saveStringToFile(kReportPagePath, out);
openFileBySystem(kReportPagePath);
}


} // namespace dvs end

Expand Down
28 changes: 21 additions & 7 deletions davis_one/davis.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,13 +152,12 @@ enum ARGS_REPORT_PAGE_INDEX {
};

enum ARGS_DATE_TIME_PAGE_INDEX {
ARG_JS_NAME, //%1
ARG_DATE_TIME_VALUES, //%2
ARG_Y_DATE_TIME_VALUES, //%3
ARG_DATE_TIME_ASPECT_RATIO_WIDTH, //%4
ARG_DATE_TIME_ASPECT_RATIO_HEIGHT, //%5
ARG_DATE_TIME_ASPECT_WIDTH_OR_HEIGHT, //%6 "width" if ARG_ASPECT_RATIO_WIDTH > ARG_ASPECT_RATIO_HEIGHT and "height" if not
ARG_DATE_TIME_ASPECT_WIDTH_OR_HEIGHT_FOR_AUTOSCALE, //%7 if value of it is equal to ARG_ASPECT_WIDTH_OR_HEIGHT it's mean no autoscale.
ARG_JS_NAME, //%1
ARG_DATE_TIME_VALUES_BLOCK, //%2
ARG_DATE_TIME_ASPECT_RATIO_WIDTH, //%3
ARG_DATE_TIME_ASPECT_RATIO_HEIGHT, //%4
ARG_DATE_TIME_ASPECT_WIDTH_OR_HEIGHT, //%5 "width" if ARG_ASPECT_RATIO_WIDTH > ARG_ASPECT_RATIO_HEIGHT and "height" if not
ARG_DATE_TIME_ASPECT_WIDTH_OR_HEIGHT_FOR_AUTOSCALE, //%6 if value of it is equal to ARG_ASPECT_WIDTH_OR_HEIGHT it's mean no autoscale.

// ADD NEW ENUM BEFORE THIS COMMENT
ARGS_DATE_TIME_PAGE_SIZE
Expand Down Expand Up @@ -195,6 +194,12 @@ enum ARGS_CLOUD_OF_POINTS_PAGE {
ARGS_CLOUD_OF_POINTS_PAGE_SIZE
};

enum ARGS_SIMPLE_DATA_BLOCK {
ARG_SIMPLE_DATA_X,
ARG_SIMPLE_DATA_Y,
ARGS_SIMPLE_DATA_BLOCK_SIZE
};


extern const char kHtmlModel[];
extern const char kColorMapDefaultPart[];
Expand Down Expand Up @@ -223,6 +228,8 @@ extern const char kHtmlMultiChartBlock[];
extern const char kHtmlMultiChartModel[];
extern const char kHtmlCloudOfPoints[];

extern const char kHtmlSimpleDataBlock[];


} // namespace dvs end

Expand Down Expand Up @@ -372,6 +379,9 @@ vector<G> vecFromTemplate(const C& container) {
bool is_string_convertable_to_digit(const string& sample);


void transponeMatrix(std::vector<std::vector<double>>& matrix);



} // namespace dvs end

Expand Down Expand Up @@ -430,6 +440,10 @@ void showCloudOfPointsChartStr(const string& xValues,
const vector<double>& colorValues,
bool isAutoScale);

void showDateTimeMultichart(const string& date_time_values,
const vector<vector<double>>& yValues,
bool isAutoScale);


} // namespace dvs end

Expand Down
30 changes: 27 additions & 3 deletions gui/davis_gui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -660,6 +660,7 @@ bool DavisGUI::checkDateTimeVariant(const QStringList& lines) {
QString dates;
std::vector<double> values;
std::vector<double> force;
std::vector<std::vector<double>> multicharts;

for (int i = 0; i < lines.size(); ++i) {
QString test = lines[i];
Expand Down Expand Up @@ -691,9 +692,17 @@ bool DavisGUI::checkDateTimeVariant(const QStringList& lines) {
}


if (values_list.size() < 2 || values_list.size() > 3) {
if (values_list.size() < 2) {
continue;
}
if (values_list.size() > 3) {
std::vector<double> 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);
Expand All @@ -706,6 +715,13 @@ bool DavisGUI::checkDateTimeVariant(const QStringList& lines) {
}
}
}

if (multicharts.empty() == false) {
dvs::transponeMatrix(multicharts);
dvs::showDateTimeMultichart(dates.toStdString(), multicharts, action_fitPlotToAllWindow->isChecked());
return true;
}

if (values.size() == 0)
return false;
qDebug() << "check sizes: " << lines.size() << values.size();
Expand Down Expand Up @@ -918,8 +934,16 @@ void DavisGUI::visualizeFiles(const QStringList& file_list) {
paramWHsecond = paramWH;
}
QString multichartPage = dvs::kHtmlMultiChartModel;
multichartPage = multichartPage.arg(dvs::kPlotlyJsName, all_chart_blocks, all_traces_names, "", "X", "Y",
QString::number(aspectW), QString::number(aspectH), paramWH, paramWHsecond);
multichartPage = multichartPage.arg(dvs::kPlotlyJsName)
.arg(all_chart_blocks)
.arg(all_traces_names)
.arg("")
.arg("X")
.arg("Y")
.arg(QString::number(aspectW))
.arg(QString::number(aspectH))
.arg(paramWH)
.arg(paramWHsecond);
qDebug() << multichartPage;
dvs::saveStringToFile(dvs::kReportPagePath, multichartPage.toStdString());
dvs::openFileBySystem(dvs::kReportPagePath);
Expand Down
2 changes: 2 additions & 0 deletions gui/davis_gui.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ class DavisGUI : public QMainWindow {
void readJsonToPlot(const QString& pathToFile);
bool mayBeShowMatrixToMatrix(QJsonArray& stamps,
QJsonObject& obj);
void matrixAnalyzer(std::vector<std::vector<double>>& matrix,
const bool isRow);
Skins checkSkin();


Expand Down
Loading
Loading