mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
[sysid] Load DataLog files directly for analysis (#6103)
Co-authored-by: Oblarg <emichaelbrnett@gmail.com>
This commit is contained in:
@@ -24,21 +24,20 @@
|
||||
#include <wpigui_openurl.h>
|
||||
|
||||
#include "sysid/view/Analyzer.h"
|
||||
#include "sysid/view/JSONConverter.h"
|
||||
#include "sysid/view/Logger.h"
|
||||
#include "sysid/view/DataSelector.h"
|
||||
#include "sysid/view/LogLoader.h"
|
||||
#include "sysid/view/UILayout.h"
|
||||
|
||||
namespace gui = wpi::gui;
|
||||
|
||||
static std::unique_ptr<glass::WindowManager> gWindowManager;
|
||||
|
||||
glass::Window* gLoggerWindow;
|
||||
glass::Window* gLogLoaderWindow;
|
||||
glass::Window* gDataSelectorWindow;
|
||||
glass::Window* gAnalyzerWindow;
|
||||
glass::Window* gProgramLogWindow;
|
||||
static glass::MainMenuBar gMainMenu;
|
||||
|
||||
std::unique_ptr<sysid::JSONConverter> gJSONConverter;
|
||||
|
||||
glass::LogData gLog;
|
||||
wpi::Logger gLogger;
|
||||
|
||||
@@ -103,11 +102,23 @@ void Application(std::string_view saveDir) {
|
||||
gWindowManager = std::make_unique<glass::WindowManager>(storage);
|
||||
gWindowManager->GlobalInit();
|
||||
|
||||
gLoggerWindow = gWindowManager->AddWindow(
|
||||
"Logger", std::make_unique<sysid::Logger>(storage, gLogger));
|
||||
auto logLoader = std::make_unique<sysid::LogLoader>(storage, gLogger);
|
||||
auto dataSelector = std::make_unique<sysid::DataSelector>(storage, gLogger);
|
||||
auto analyzer = std::make_unique<sysid::Analyzer>(storage, gLogger);
|
||||
|
||||
gAnalyzerWindow = gWindowManager->AddWindow(
|
||||
"Analyzer", std::make_unique<sysid::Analyzer>(storage, gLogger));
|
||||
logLoader->unload.connect([ds = dataSelector.get()] { ds->Reset(); });
|
||||
dataSelector->testdata = [_analyzer = analyzer.get()](auto data) {
|
||||
_analyzer->m_data = data;
|
||||
_analyzer->AnalyzeData();
|
||||
};
|
||||
|
||||
gLogLoaderWindow =
|
||||
gWindowManager->AddWindow("Log Loader", std::move(logLoader));
|
||||
|
||||
gDataSelectorWindow =
|
||||
gWindowManager->AddWindow("Data Selector", std::move(dataSelector));
|
||||
|
||||
gAnalyzerWindow = gWindowManager->AddWindow("Analyzer", std::move(analyzer));
|
||||
|
||||
gProgramLogWindow = gWindowManager->AddWindow(
|
||||
"Program Log", std::make_unique<glass::LogView>(&gLog));
|
||||
@@ -115,10 +126,16 @@ void Application(std::string_view saveDir) {
|
||||
// Set default positions and sizes for windows.
|
||||
|
||||
// Logger window position/size
|
||||
gLoggerWindow->SetDefaultPos(sysid::kLoggerWindowPos.x,
|
||||
sysid::kLoggerWindowPos.y);
|
||||
gLoggerWindow->SetDefaultSize(sysid::kLoggerWindowSize.x,
|
||||
sysid::kLoggerWindowSize.y);
|
||||
gLogLoaderWindow->SetDefaultPos(sysid::kLogLoaderWindowPos.x,
|
||||
sysid::kLogLoaderWindowPos.y);
|
||||
gLogLoaderWindow->SetDefaultSize(sysid::kLogLoaderWindowSize.x,
|
||||
sysid::kLogLoaderWindowSize.y);
|
||||
|
||||
// Data selector window position/size
|
||||
gDataSelectorWindow->SetDefaultPos(sysid::kDataSelectorWindowPos.x,
|
||||
sysid::kDataSelectorWindowPos.y);
|
||||
gDataSelectorWindow->SetDefaultSize(sysid::kDataSelectorWindowSize.x,
|
||||
sysid::kDataSelectorWindowSize.y);
|
||||
|
||||
// Analyzer window position/size
|
||||
gAnalyzerWindow->SetDefaultPos(sysid::kAnalyzerWindowPos.x,
|
||||
@@ -133,8 +150,6 @@ void Application(std::string_view saveDir) {
|
||||
sysid::kProgramLogWindowSize.y);
|
||||
gProgramLogWindow->DisableRenamePopup();
|
||||
|
||||
gJSONConverter = std::make_unique<sysid::JSONConverter>(gLogger);
|
||||
|
||||
// Configure save file.
|
||||
gui::ConfigurePlatformSaveFile("sysid.ini");
|
||||
|
||||
@@ -157,15 +172,6 @@ void Application(std::string_view saveDir) {
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
bool toCSV = false;
|
||||
if (ImGui::BeginMenu("JSON Converters")) {
|
||||
if (ImGui::MenuItem("JSON to CSV Converter")) {
|
||||
toCSV = true;
|
||||
}
|
||||
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
if (ImGui::BeginMenu("Docs")) {
|
||||
if (ImGui::MenuItem("Online documentation")) {
|
||||
wpi::gui::OpenURL(
|
||||
@@ -178,19 +184,6 @@ void Application(std::string_view saveDir) {
|
||||
|
||||
ImGui::EndMainMenuBar();
|
||||
|
||||
if (toCSV) {
|
||||
ImGui::OpenPopup("SysId JSON to CSV Converter");
|
||||
toCSV = false;
|
||||
}
|
||||
|
||||
if (ImGui::BeginPopupModal("SysId JSON to CSV Converter")) {
|
||||
gJSONConverter->DisplayCSVConvert();
|
||||
if (ImGui::Button("Close")) {
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
|
||||
if (about) {
|
||||
ImGui::OpenPopup("About");
|
||||
about = false;
|
||||
|
||||
Reference in New Issue
Block a user