feat(dashboard): Download logs on the System Log page, with a preview

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-27 10:05:10 -05:00
parent 2e72b3f575
commit 37c73c1676
2 changed files with 126 additions and 1 deletions

View File

@@ -496,7 +496,15 @@ void RegisterDashboardRoutes() {
servers.push_back({ {"name", server}, {"time", files.front().time}, {"files", files.size()} });
types.insert(server.substr(0, server.find('_')));
}
nlohmann::json data{ {"servers", servers}, {"server_types", types}, {"selected_server", selected}, {"files", nlohmann::json::array()} };
// World zones with log files, for Download logs
std::set<uint32_t> zoneIds;
for (const auto& [server, files] : logs) {
if (!server.starts_with("WorldServer_")) continue;
if (const auto zone = GeneralUtils::TryParse<uint32_t>(server.substr(12, server.find('_', 12) - 12))) zoneIds.insert(*zone);
}
nlohmann::json zones = nlohmann::json::array();
for (const auto zone : zoneIds) zones.push_back({ {"id", zone}, {"name", GetZoneNamesJson().value(std::to_string(zone), "")} });
nlohmann::json data{ {"servers", servers}, {"server_types", types}, {"selected_server", selected}, {"files", nlohmann::json::array()}, {"bundle_zones", zones} };
if (!selected.empty()) {
const auto& files = logs.at(selected);
const auto wanted = QueryValue(context.queryString, "file");