summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/src/widgetgenerator.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/server/src/widgetgenerator.cc b/server/src/widgetgenerator.cc
index 26dcf37..334d4a8 100644
--- a/server/src/widgetgenerator.cc
+++ b/server/src/widgetgenerator.cc
@@ -28,6 +28,36 @@
#include "configuration.h"
+static std::string automap(std::string name)
+{
+ std::string group;
+ std::string groupcheck = "if(";
+
+ for(size_t i = 0; i < name.length(); i++) {
+ group += name[i];
+ if(name[i] == '.') groupcheck += " and " + group;
+ else groupcheck += name[i];
+ }
+ groupcheck += " and " + name + ".value and " + name + ".timestamp";
+ groupcheck += ")\n";
+
+ std::string automapstring =
+ "-- Returning 0, 0 invalidates the result\n"
+ "value = 0\n"
+ "timestamp = 0\n"
+ "\n"
+ + groupcheck +
+ "then\n"
+ " value = " + name + ".value\n"
+ " timestamp = " + name + ".timestamp\n"
+ "end\n"
+ "return value, timestamp\n";
+
+ printf("Automap:\n%s\n", automapstring.c_str());
+
+ return automapstring;
+}
+
static std::string send_macro_widget(Macro &macro,
Widget &widget,
std::string tabs,
@@ -55,6 +85,11 @@ static std::string send_macro_widget(Macro &macro,
li++;
}
+ // Check to see if we should automap
+ if(luamap == "") {
+ luamap = automap(widget.attributes["map"]);
+ }
+
// printf("LUAMAP: %s\n", luamap.c_str()); fflush(stdout);
if(luamap != "") {