[ai] dir streaming, still problems
This commit is contained in:
@@ -578,6 +578,44 @@ String DirectoryNode::getDirectoryStructureHTML() const {
|
||||
return html;
|
||||
}
|
||||
|
||||
void DirectoryNode::streamDirectoryHTML(Print &out) const {
|
||||
if (name == "/") {
|
||||
out.println(F("<ul>"));
|
||||
delay(0); // yield to WiFi/other tasks
|
||||
}
|
||||
|
||||
if (name != "/") {
|
||||
out.print(F("<li data-id=\""));
|
||||
out.print(id);
|
||||
out.print(F("\"><b>"));
|
||||
out.print(name);
|
||||
out.println(F("</b></li>"));
|
||||
delay(0); // yield periodically while streaming
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < mp3Files.size(); i++) {
|
||||
out.print(F("<li data-id=\""));
|
||||
out.print(ids[i]);
|
||||
out.print(F("\">"));
|
||||
out.print(mp3Files[i]);
|
||||
out.println(F("</li>"));
|
||||
if ((i & 0x0F) == 0) { // yield every ~16 items
|
||||
delay(0);
|
||||
}
|
||||
}
|
||||
|
||||
for (DirectoryNode* child : subdirectories) {
|
||||
delay(0); // yield before descending
|
||||
child->streamDirectoryHTML(out);
|
||||
delay(0); // and after returning
|
||||
}
|
||||
|
||||
if (name == "/") {
|
||||
out.println(F("</ul>"));
|
||||
delay(0);
|
||||
}
|
||||
}
|
||||
|
||||
// NEW: Calculate exact required size first
|
||||
size_t DirectoryNode::calculateHTMLSize() const {
|
||||
size_t size = 0;
|
||||
|
||||
Reference in New Issue
Block a user