diff --git a/src/web/WebDataService.cpp b/src/web/WebDataService.cpp index beb487376..04a322e2b 100644 --- a/src/web/WebDataService.cpp +++ b/src/web/WebDataService.cpp @@ -488,24 +488,25 @@ void WebDataService::dashboard_data(AsyncWebServerRequest * request) { EMSESP::webSchedulerService.read([&](const WebScheduler & webScheduler) { for (const ScheduleItem & scheduleItem : webScheduler.scheduleItems) { - // only add if we have a name and it's not of type SCHEDULE_IMMEDIATE - we don't need a u (UOM) for this - if (scheduleItem.name[0] != '\0' && scheduleItem.flags != SCHEDULEFLAG_SCHEDULE_IMMEDIATE) { - JsonObject node = nodes.add(); - node["id"] = (EMSdevice::DeviceTypeUniqueID::SCHEDULER_UID * 100) + count++; + JsonObject node = nodes.add(); + node["id"] = (EMSdevice::DeviceTypeUniqueID::SCHEDULER_UID * 100) + count++; - JsonObject dv = node["dv"].to(); - dv["id"] = std::string("00") + scheduleItem.name; - dv["c"] = scheduleItem.name; - char s[12]; - dv["v"] = Helpers::render_boolean(s, scheduleItem.active, true); - JsonArray l = dv["l"].to(); - l.add(Helpers::render_boolean(s, false, true)); - l.add(Helpers::render_boolean(s, true, true)); - } + JsonObject dv = node["dv"].to(); + dv["id"] = std::string("00") + scheduleItem.name; + dv["c"] = scheduleItem.name; + char s[12]; + dv["v"] = Helpers::render_boolean(s, scheduleItem.active, true); + JsonArray l = dv["l"].to(); + l.add(Helpers::render_boolean(s, false, true)); + l.add(Helpers::render_boolean(s, true, true)); } }); } + Serial.println("All dashboard_data: "); + serializeJson(root, Serial); + Serial.println(); + #if defined(EMSESP_TEST) && defined(EMSESP_STANDALONE) Serial.println(); Serial.print("All dashboard_data: "); diff --git a/src/web/WebSchedulerService.cpp b/src/web/WebSchedulerService.cpp index 7705de4b0..81b7a4781 100644 --- a/src/web/WebSchedulerService.cpp +++ b/src/web/WebSchedulerService.cpp @@ -82,7 +82,7 @@ StateUpdateResult WebScheduler::update(JsonObject root, WebScheduler & webSchedu EMSESP::webSchedulerService.ha_reset(); // build up the list of schedule items - auto scheduleItems = root["schedule"].as(); + auto scheduleItems = root["schedule"].as(); for (const JsonObject schedule : scheduleItems) { // create each schedule item, overwriting any previous settings // ignore the id (as this is only used in the web for table rendering) @@ -333,10 +333,12 @@ void WebSchedulerService::publish(const bool force) { } // count number of entries, default: only named items -uint8_t WebSchedulerService::count_entities(bool cmd_only) { +// if exclude_immediate is true, include those that are of type SCHEDULEFLAG_SCHEDULE_IMMEDIATE +uint8_t WebSchedulerService::count_entities(bool exclude_immediate) { uint8_t count = 0; for (const ScheduleItem & scheduleItem : *scheduleItems_) { - if (scheduleItem.name[0] != '\0' || !cmd_only) { + // count all except SCHEDULE_IMMEDIATE if exclude_immediate is true, else count all + if (!exclude_immediate || scheduleItem.flags != SCHEDULEFLAG_SCHEDULE_IMMEDIATE) { count++; } } diff --git a/src/web/WebSchedulerService.h b/src/web/WebSchedulerService.h index af48d5a82..2fe3a3dc4 100644 --- a/src/web/WebSchedulerService.h +++ b/src/web/WebSchedulerService.h @@ -54,7 +54,7 @@ namespace emsesp { class ScheduleItem { public: boolean active; - uint8_t flags; // bit flags, see SCHEDULEFLAG_* defines + uint8_t flags; // bit flags, see SCHEDULEFLAG_* defines uint16_t elapsed_min; // total mins from 00:00 stringPSRAM time; // HH:MM stringPSRAM cmd; @@ -85,7 +85,7 @@ class WebSchedulerService : public StatefulService { void ha_reset() { ha_configdone_ = false; } - uint8_t count_entities(bool cmd_only = false); + uint8_t count_entities(bool exclude_immediate = false); bool onChange(const char * cmd); bool executeSchedule(const char * name);