2022-12-14 06:39:22 +00:00
|
|
|
#include "analysisjson.h"
|
|
|
|
#include <QFile>
|
|
|
|
#include <QJsonObject>
|
|
|
|
#include <QJsonArray>
|
|
|
|
#include <QDir>
|
|
|
|
#include <QFileInfo>
|
2022-12-15 07:00:12 +00:00
|
|
|
#include <QDebug>
|
2022-12-14 06:39:22 +00:00
|
|
|
|
|
|
|
AnalysisJson::AnalysisJson(QString path)
|
|
|
|
{
|
|
|
|
if(QFile::exists(path)){
|
|
|
|
QFile file(path);
|
|
|
|
if(file.open(QIODevice::OpenModeFlag::ReadOnly))
|
|
|
|
{
|
|
|
|
m_json = QJsonDocument::fromJson(file.readAll());
|
|
|
|
file.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
std::vector<AnalysisJson::json_node> AnalysisJson::GetNode()
|
|
|
|
{
|
|
|
|
std::vector<AnalysisJson::json_node> nodes;
|
|
|
|
if(!m_json.isObject())
|
|
|
|
return nodes;
|
|
|
|
auto obj = m_json.object();
|
2022-12-15 07:00:12 +00:00
|
|
|
|
|
|
|
auto keys = obj.keys().toVector();
|
|
|
|
std::sort(keys.begin(),keys.end(),[](QString x,QString y){
|
|
|
|
return x.toInt()<y.toInt();
|
|
|
|
});
|
|
|
|
|
|
|
|
for(auto key : keys)
|
2022-12-14 06:39:22 +00:00
|
|
|
{
|
|
|
|
if(key != "global")
|
|
|
|
nodes.push_back(json_node{obj[key].toObject()["title"].toString(),
|
|
|
|
obj[key].toObject()["name"].toString(),
|
|
|
|
obj[key].toObject()["man"].toBool(),
|
2022-12-14 12:28:25 +00:00
|
|
|
obj[key].toObject()["err-level"].toInt(),
|
2023-01-04 12:48:53 +00:00
|
|
|
obj[key].toObject()["desc"].toString(),
|
2023-01-09 08:45:22 +00:00
|
|
|
obj[key].toObject()["station"].toString(),
|
2023-03-06 07:26:24 +00:00
|
|
|
obj[key].toObject()["resolution"].toInt(),
|
|
|
|
obj[key].toObject()["correct-value"].toInt()});
|
2022-12-14 06:39:22 +00:00
|
|
|
}
|
|
|
|
return nodes;
|
|
|
|
}
|
|
|
|
|
|
|
|
AnalysisJson::json_global AnalysisJson::GetGlobal()
|
|
|
|
{
|
|
|
|
if(!m_json.isObject())
|
|
|
|
return json_global();
|
|
|
|
auto obj = m_json.object()["global"].toObject();
|
|
|
|
return json_global{obj["vid-org"].toInt(),
|
|
|
|
obj["pid-org"].toInt(),
|
|
|
|
obj["vid-to"].toInt(),
|
2022-12-30 08:49:55 +00:00
|
|
|
obj["pid-to"].toInt(),
|
|
|
|
obj["speed-mode"].toInt(),
|
2023-03-20 09:38:47 +00:00
|
|
|
obj["sleep-time"].toInt(),
|
|
|
|
obj["device-model"].toString()};
|
2022-12-14 06:39:22 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bool AnalysisJson::savejson(QString path, std::vector<AnalysisJson::json_node> json)
|
|
|
|
{
|
|
|
|
|
|
|
|
QFileInfo info(path);
|
|
|
|
if(!info.isFile())
|
|
|
|
return false;
|
|
|
|
if(!info.dir().exists())
|
|
|
|
QDir().mkdir(info.dir().path());
|
|
|
|
QJsonDocument doc;
|
|
|
|
QJsonObject obj;
|
|
|
|
int index =1;
|
|
|
|
for(auto json_ : json)
|
|
|
|
{
|
|
|
|
QJsonObject tmp_obj;
|
|
|
|
tmp_obj["title"] = json_.title;
|
|
|
|
tmp_obj["name"] = json_.name;
|
|
|
|
tmp_obj["man"] = json_.is_man;
|
|
|
|
tmp_obj["err_level"] = json_.err_level;
|
2022-12-14 12:28:25 +00:00
|
|
|
tmp_obj["desc"] = json_.desc;
|
2022-12-14 06:39:22 +00:00
|
|
|
obj[QString::number(index++)] = tmp_obj;
|
|
|
|
}
|
|
|
|
doc.setObject(obj);
|
|
|
|
QFile file(path);
|
|
|
|
if(file.open(QIODevice::OpenModeFlag::WriteOnly))
|
|
|
|
{
|
|
|
|
file.write(doc.toJson());
|
|
|
|
file.close();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool AnalysisJson::savejson(QString path, QJsonDocument doc)
|
|
|
|
{
|
|
|
|
QFileInfo info(path);
|
|
|
|
if(!info.isFile())
|
|
|
|
return false;
|
|
|
|
if(!info.dir().exists())
|
|
|
|
QDir().mkdir(info.dir().path());
|
|
|
|
QFile file(path);
|
|
|
|
if(file.open(QIODevice::OpenModeFlag::WriteOnly))
|
|
|
|
{
|
|
|
|
file.write(doc.toJson());
|
|
|
|
file.close();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|