mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 06:32:19 +03:00
66 lines
2.0 KiB
C++
66 lines
2.0 KiB
C++
#include "CreateWidget.h"
|
|
|
|
void createWidget(String& parameters) {
|
|
String id = jsonReadStr(parameters, "id");
|
|
String widget = jsonReadStr(parameters, "widget");
|
|
String order = jsonReadStr(parameters, "order");
|
|
String page = jsonReadStr(parameters, "page");
|
|
String descr = jsonReadStr(parameters, "descr");
|
|
|
|
SerialPrint(F("i"), F("Widget"), "Start create widget: " + widget);
|
|
|
|
if (widget != "na") {
|
|
String buf = "{}";
|
|
if (!loadWidget(widget, buf)) {
|
|
return;
|
|
}
|
|
// if (_cnt != "") {
|
|
// if (widget.indexOf("chart") != -1) jsonWriteStr(buf, "maxCount", _cnt);
|
|
// }
|
|
|
|
#ifdef GATE_MODE
|
|
jsonWriteStr(buf, "info", " ");
|
|
#endif
|
|
|
|
jsonWriteStr(buf, "page", page);
|
|
jsonWriteStr(buf, "order", order);
|
|
jsonWriteStr(buf, "descr", descr);
|
|
jsonWriteStr(buf, "topic", prex + "/" + id);
|
|
|
|
SerialPrint(F("i"), F("Widget"), buf);
|
|
|
|
#ifdef LAYOUT_IN_RAM
|
|
all_widgets += widget + "\r\n";
|
|
#else
|
|
addFileLn("layout.json", buf);
|
|
#endif
|
|
}
|
|
}
|
|
|
|
bool loadWidget(const String& widget, String& buf) {
|
|
File file = seekFile("/widgets.json");
|
|
file.find("[");
|
|
bool ret = false;
|
|
while (file.available()) {
|
|
String jsonArrayElement = file.readStringUntil('}') + "}";
|
|
if (jsonArrayElement.startsWith(",")) {
|
|
jsonArrayElement = jsonArrayElement.substring(1, jsonArrayElement.length()); //это нужно оптимизировать в последствии
|
|
}
|
|
String name;
|
|
if (!jsonRead(jsonArrayElement, F("name"), name)) { //если нет такого ключа в представленном json или он не валидный
|
|
SerialPrint(F("E"), F("Config"), "json error " + name);
|
|
continue;
|
|
} else {
|
|
if (name == widget) {
|
|
buf = jsonArrayElement;
|
|
ret = true;
|
|
}
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
const String getWidgetFile(const String& name) {
|
|
return "/widgets/" + name + ".json";
|
|
}
|