Files
IoTManager/src/Widgets.cpp

94 lines
2.5 KiB
C++
Raw Normal View History

2020-06-18 23:43:06 +02:00
#include "Global.h"
2020-06-17 23:30:48 +03:00
2020-06-25 05:09:11 +03:00
static const char* MODULE = "Widget";
2020-06-25 00:15:10 +03:00
const String getWidgetFile(const String& name);
2020-06-19 22:14:50 +02:00
2020-06-25 05:09:11 +03:00
bool loadWidget(const String& filename, String& buf) {
buf = readFile(filename, 2048);
bool res = !(buf == "Failed" || buf == "Large");
if (!res) {
pm.error("on load" + filename);
}
return res;
2020-06-25 00:15:10 +03:00
}
2020-06-19 22:14:50 +02:00
2020-06-25 00:15:10 +03:00
void createWidget(String widget, String page, String pageNumber, String filename, String topic) {
2020-06-25 05:09:11 +03:00
String buf = "{}";
2020-06-25 00:15:10 +03:00
if (!loadWidget(filename, buf)) {
2020-06-25 05:09:11 +03:00
pm.error("failed " + widget);
2020-06-25 00:15:10 +03:00
return;
}
widget.replace("#", " ");
page.replace("#", " ");
2020-06-19 22:14:50 +02:00
2020-06-25 00:15:10 +03:00
jsonWriteStr(buf, "page", page);
jsonWriteStr(buf, "order", pageNumber);
jsonWriteStr(buf, "descr", widget);
jsonWriteStr(buf, "topic", prex + "/" + topic);
2020-06-19 22:14:50 +02:00
2020-06-21 03:43:15 +03:00
#ifdef LAYOUT_IN_RAM
2020-06-25 00:15:10 +03:00
all_widgets += widget + "\r\n";
2020-06-17 23:30:48 +03:00
#else
2020-06-25 00:15:10 +03:00
addFile("layout.txt", buf);
2020-06-17 23:30:48 +03:00
#endif
}
2020-06-25 00:15:10 +03:00
void createWidgetParam(String widget, String page, String pageNumber, String filename, String topic, String name1, String param1, String name2, String param2, String name3, String param3) {
2020-06-25 05:09:11 +03:00
String buf = "";
2020-06-25 00:15:10 +03:00
if (!loadWidget(filename, buf)) {
return;
}
2020-06-17 23:30:48 +03:00
2020-06-25 00:15:10 +03:00
widget.replace("#", " ");
page.replace("#", " ");
2020-06-17 23:30:48 +03:00
2020-06-25 00:15:10 +03:00
jsonWriteStr(buf, "page", page);
jsonWriteStr(buf, "order", pageNumber);
jsonWriteStr(buf, "descr", widget);
jsonWriteStr(buf, "topic", prex + "/" + topic);
2020-06-17 23:30:48 +03:00
2020-06-25 00:15:10 +03:00
if (name1) jsonWriteStr(buf, name1, param1);
if (name2) jsonWriteStr(buf, name2, param2);
if (name3) jsonWriteStr(buf, name3, param3);
2020-06-17 23:30:48 +03:00
2020-06-21 03:43:15 +03:00
#ifdef LAYOUT_IN_RAM
2020-06-25 00:15:10 +03:00
all_widgets += widget + "\r\n";
2020-06-17 23:30:48 +03:00
#else
2020-06-25 00:15:10 +03:00
addFile("layout.txt", buf);
2020-06-17 23:30:48 +03:00
#endif
}
2020-06-25 00:15:10 +03:00
void createChart(String widget, String page, String pageNumber, String filename, String topic, String maxCount) {
2020-06-25 05:09:11 +03:00
String buf = "";
2020-06-25 00:15:10 +03:00
if (!loadWidget(filename, buf)) {
return;
}
2020-06-17 23:30:48 +03:00
2020-06-25 00:15:10 +03:00
widget.replace("#", " ");
page.replace("#", " ");
2020-06-17 23:30:48 +03:00
2020-06-25 00:15:10 +03:00
jsonWriteStr(buf, "page", page);
jsonWriteStr(buf, "order", pageNumber);
//jsonWriteStr(widget, "descr", widget_name);
jsonWriteStr(buf, "series", widget);
jsonWriteStr(buf, "maxCount", maxCount);
jsonWriteStr(buf, "topic", prex + "/" + topic);
2020-06-17 23:30:48 +03:00
2020-06-21 03:43:15 +03:00
#ifdef LAYOUT_IN_RAM
2020-06-25 00:15:10 +03:00
all_widgets += widget + "\r\n";
2020-06-17 23:30:48 +03:00
#else
2020-06-25 00:15:10 +03:00
addFile("layout.txt", buf);
2020-06-17 23:30:48 +03:00
#endif
}
2020-06-25 00:15:10 +03:00
void createWidgetByType(String widget, String page, String pageNumber, String type, String topic) {
2020-06-25 05:09:11 +03:00
pm.info("create" + type);
2020-06-25 00:15:10 +03:00
createWidget(widget, page, pageNumber, getWidgetFile(type), topic);
}
2020-06-19 22:14:50 +02:00
2020-06-25 00:15:10 +03:00
const String getWidgetFile(const String& name) {
2020-06-25 05:09:11 +03:00
pm.info("get " + name);
return "/widgets/" + name + ".json";
2020-06-25 00:15:10 +03:00
}