#include "events_html.h" #include #include "../../datalayer/datalayer.h" #include "../../devboard/utils/logging.h" #include "../../devboard/utils/millis64.h" const char EVENTS_HTML_START[] = R"=====(
Event Type
Severity
Last Event
Count
Data
Message
)====="; const char EVENTS_HTML_END[] = R"=====(
)====="; static std::vector order_events; String events_processor(const String& var) { if (var == "X") { String content = ""; content.reserve(5000); // Page format content.concat(FPSTR(EVENTS_HTML_START)); const EVENTS_STRUCT_TYPE* event_pointer; //clear the vector order_events.clear(); // Collect all events for (int i = 0; i < EVENT_NOF_EVENTS; i++) { event_pointer = get_event_pointer((EVENTS_ENUM_TYPE)i); if (event_pointer->occurences > 0) { order_events.push_back({static_cast(i), event_pointer}); } } // Sort events by timestamp std::sort(order_events.begin(), order_events.end(), compareEventsByTimestampDesc); uint64_t current_timestamp = millis64(); // Generate HTML and debug output for (const auto& event : order_events) { EVENTS_ENUM_TYPE event_handle = event.event_handle; event_pointer = event.event_pointer; content.concat("
"); content.concat("
" + String(get_event_enum_string(event_handle)) + "
"); content.concat("
" + String(get_event_level_string(event_handle)) + "
"); // Frontend expects to see time difference (in ms) from now to event content.concat("
" + String(current_timestamp - event_pointer->timestamp) + "
"); content.concat("
" + String(event_pointer->occurences) + "
"); content.concat("
" + String(event_pointer->data) + "
"); content.concat("
" + get_event_message_string(event_handle) + "
"); content.concat("
"); // End of event row } //clear the vector order_events.clear(); content.concat(FPSTR(EVENTS_HTML_END)); return content; } return String(); } /* Script for displaying event log before it gets minified */