SensESP 3.3.0
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
status_page_item.h
Go to the documentation of this file.
1#ifndef SENSESP_UI_UI_OUTPUT_H
2#define SENSESP_UI_UI_OUTPUT_H
3
4#include <ArduinoJson.h>
5#include <esp_log.h>
6#include <functional>
7#include <map>
8
9#include "Arduino.h"
13
14namespace sensesp {
15
16constexpr char kUIOutputDefaultGroup[] = "Default";
17constexpr int kUIOutputDefaultOrder = 1000;
18
20 public:
21 StatusPageItemBase(String name, String group, int order)
22 : name_(name), group_(group), order_(order) {}
23
24 String& get_name() { return name_; }
25
26 virtual JsonDocument as_json() = 0;
27
28 static const std::map<String, StatusPageItemBase*>* get_status_page_items() {
29 return &status_page_items_;
30 }
31
32 protected:
33 String name_;
36 static std::map<String, StatusPageItemBase*> status_page_items_;
37};
38
48template <typename T>
50 public:
51 StatusPageItem(String name, const T& value, String group, int order)
52 : StatusPageItemBase(name, group, order), ObservableValue<T>(value) {
53 if (status_page_items_.count(name) > 0) {
54 ESP_LOGW("StatusPageItem", "Duplicate status page item name: %s", name.c_str());
55 }
56 status_page_items_[name] = this;
57 }
58
59 protected:
60 virtual JsonDocument as_json() override{
61 JsonDocument obj;
62 obj["name"] = name_;
63 obj["value"] = this->get();
64 obj["group"] = group_;
65 obj["order"] = order_;
66 return obj;
67 }
68};
69
70} // namespace sensesp
71
72#endif
StatusPageItemBase(String name, String group, int order)
static std::map< String, StatusPageItemBase * > status_page_items_
static const std::map< String, StatusPageItemBase * > * get_status_page_items()
virtual JsonDocument as_json()=0
virtual JsonDocument as_json() override
StatusPageItem(String name, const T &value, String group, int order)
virtual const T & get() const
constexpr int kUIOutputDefaultOrder
constexpr char kUIOutputDefaultGroup[]