Skip to content

Commit 4a1293f

Browse files
authored
Matrix to matrix arrays (#143)
1 parent 95693ac commit 4a1293f

File tree

5 files changed

+92
-2
lines changed

5 files changed

+92
-2
lines changed

gui/davis_gui.cpp

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,11 +251,20 @@ void DavisGUI::applySettings(const QJsonObject& settings) {
251251

252252
void DavisGUI::readJsonToPlot(const QString& pathToFile) {
253253
QJsonObject user_stamp_keys;
254+
QJsonArray matrix_to_matrix_stamps;
254255

255256
if (jsn::getJsonObjectFromFile("user_keys_list.json", user_stamp_keys) == false) {
256257
jsn::getJsonObjectFromFile(":/user_keys_list.json", user_stamp_keys);
257258
}
258259

260+
if(user_stamp_keys.keys().contains("matrix_to_matrix")){
261+
matrix_to_matrix_stamps = user_stamp_keys.value("matrix_to_matrix").toArray();
262+
}else{
263+
QJsonObject user_stamp_keys;
264+
jsn::getJsonObjectFromFile(":/user_keys_list.json", user_stamp_keys);
265+
matrix_to_matrix_stamps = user_stamp_keys.value("matrix_to_matrix").toArray();
266+
}
267+
259268
QJsonValue jv;
260269
QJsonArray result;
261270
if (jsn::getJsonValueFromFile(pathToFile, jv) == false) {
@@ -266,9 +275,57 @@ void DavisGUI::readJsonToPlot(const QString& pathToFile) {
266275
//qDebug()<<"result all objects size:"<<result.size();
267276

268277
for (int i = 0; i < result.size(); ++i) {
269-
auto json_object_result = jsn::isJsonObjectContainsUserKeys(result[i].toObject(),
278+
279+
//Проверяем является ли объект MATRIX TO MATRIX типом
280+
//qDebug()<<"MATRIX TO MATRIX: "<<matrix_to_matrix_stamps;
281+
for(int j=0; j<matrix_to_matrix_stamps.size(); ++j){
282+
auto obj = result[i].toObject();
283+
QStringList check_keys;
284+
285+
check_keys<<matrix_to_matrix_stamps[j].toObject().value("attribute_key").toString();
286+
check_keys<<matrix_to_matrix_stamps[j].toObject().value("x_values").toString();
287+
check_keys<<matrix_to_matrix_stamps[j].toObject().value("y_values").toString();
288+
289+
bool is_matrix_to_matrix_result = jsn::isObjectMatrixToMatrixType(
290+
check_keys,
291+
obj
292+
);
293+
//qDebug()<<matrix_to_matrix_stamps[j].toObject().keys();
294+
if(is_matrix_to_matrix_result){
295+
if(check_keys.size()!=3){
296+
qDebug()<<"********************** MATRIX TO MATRIX KEYS EXCEPTION ***************************";
297+
continue;
298+
};
299+
qDebug()<<"MATRIX_TO_MATRIX_PROCESS.......";
300+
// 0 - atr metadata
301+
// 1 - x array of arrays values
302+
// 2 - y array of arrays values
303+
auto attr_arr = obj.value(check_keys[0]).toArray();
304+
auto x_arr = obj.value(check_keys[1]).toArray();
305+
auto y_arr = obj.value(check_keys[2]).toArray();
306+
if(x_arr.size()!=y_arr.size()){
307+
qDebug()<<"********************** MATRIX TO MATRIX ARRAY ARRAY SIZES EXCEPTION ***************************";
308+
continue;
309+
};
310+
for(int k=0;k<x_arr.size();++k){
311+
auto attr = attr_arr[k].toObject();
312+
auto x_vals = jsn::getVectorDoubleFromJsonArray(x_arr[k].toArray()).toStdVector();
313+
auto y_vals = jsn::getVectorDoubleFromJsonArray(y_arr[k].toArray()).toStdVector();
314+
dv::Config conf;
315+
conf.chart.yLabel = attr.value("type").toString().toStdString();
316+
conf.chart.title = attr.value("instrument").toString().toStdString();
317+
318+
dv::show(x_vals,y_vals,QDateTime::currentDateTime().toString("yyyy_MM_dd_hh_mm_ss_zz").toStdString(),conf);
319+
}
320+
return;// выход если это был MATRIX_TO_MATRIX_TYPE
321+
}
322+
}
323+
324+
auto json_object_result = jsn::isJsonObjectContainsUserKeys(result[i].toObject(),
270325
service_json_keys,
271326
user_stamp_keys);
327+
328+
272329
if (json_object_result.first) {
273330
QJsonObject result_obj = json_object_result.second;
274331
QJsonArray x_values = result_obj["x_values"].toArray();
@@ -299,6 +356,13 @@ void DavisGUI::readJsonToPlot(const QString& pathToFile) {
299356

300357
}
301358

359+
360+
bool DavisGUI::mayBeShowMatrixToMatrix(QJsonArray& stamps,
361+
QJsonObject& obj)
362+
{
363+
return false;
364+
}
365+
302366
Skins DavisGUI::checkSkin() {
303367
Skins skin;
304368
QDate currentDate = QDate::currentDate();

gui/davis_gui.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ class DavisGUI : public QMainWindow {
5959
QJsonObject loadSettings(const QString& fileName);
6060
void applySettings(const QJsonObject& settings);
6161
void readJsonToPlot(const QString& pathToFile);
62+
bool mayBeShowMatrixToMatrix(QJsonArray &stamps,
63+
QJsonObject& obj);
6264
Skins checkSkin();
6365

6466

gui/json_utils.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,19 @@ void extractAllObjects(const QJsonValue& value,
226226
}
227227
}
228228

229+
bool isObjectMatrixToMatrixType(const QStringList& keys,
230+
QJsonObject& object)
231+
{
232+
QStringList object_keys = object.keys();
233+
qDebug()<<"Проверочные Ключи: "<<keys;
234+
qDebug()<<"Ключи объекта"<<object_keys;
235+
for(int i=0;i<keys.size();++i){
236+
if(object_keys.contains(keys[i]))continue;
237+
return false;
238+
}
239+
return true;
240+
}
241+
229242

230243

231244
} // end jsn namespace

gui/json_utils.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ QVector<QStringList> getStringListFromJsonArray(const QJsonArray& array);
5050

5151
void extractAllObjects(const QJsonValue& value, QJsonArray& result);
5252

53+
bool isObjectMatrixToMatrixType(const QStringList& keys, QJsonObject& object);
54+
5355

5456
} // end namespace jsn
5557

gui/user_keys_list.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
{
22
"x_values": ["x","x_values","waves","nanometers"],
33
"y_values": ["y","y_values","ksy","speyas"],
4-
"matrix_values": ["matrix_key"]
4+
"matrix_values": ["matrix_key"],
5+
6+
"matrix_to_matrix":[
7+
{
8+
"attribute_key":"attributes",
9+
"x_values":"waves",
10+
"y_values":"values"
11+
}
12+
]
13+
514
}
615

716

0 commit comments

Comments
 (0)