feat(gui): Add Log Management panel with manual whitelisting
This commit is contained in:
73
gui_2.py
73
gui_2.py
@@ -181,6 +181,7 @@ class App:
|
|||||||
"Discussion Hub": True,
|
"Discussion Hub": True,
|
||||||
"Operations Hub": True,
|
"Operations Hub": True,
|
||||||
"Theme": True,
|
"Theme": True,
|
||||||
|
"Log Management": False,
|
||||||
"Diagnostics": False,
|
"Diagnostics": False,
|
||||||
}
|
}
|
||||||
saved = self.config.get("gui", {}).get("show_windows", {})
|
saved = self.config.get("gui", {}).get("show_windows", {})
|
||||||
@@ -1407,6 +1408,9 @@ class App:
|
|||||||
imgui.end_tab_bar()
|
imgui.end_tab_bar()
|
||||||
imgui.end()
|
imgui.end()
|
||||||
|
|
||||||
|
if self.show_windows.get("Log Management", False):
|
||||||
|
self._render_log_management()
|
||||||
|
|
||||||
if self.show_windows["Diagnostics"]:
|
if self.show_windows["Diagnostics"]:
|
||||||
exp, self.show_windows["Diagnostics"] = imgui.begin("Diagnostics", self.show_windows["Diagnostics"])
|
exp, self.show_windows["Diagnostics"] = imgui.begin("Diagnostics", self.show_windows["Diagnostics"])
|
||||||
if exp:
|
if exp:
|
||||||
@@ -1712,6 +1716,75 @@ class App:
|
|||||||
if ch:
|
if ch:
|
||||||
self.ui_agent_tools[t_name] = val
|
self.ui_agent_tools[t_name] = val
|
||||||
|
|
||||||
|
def _render_log_management(self):
|
||||||
|
exp, self.show_windows["Log Management"] = imgui.begin("Log Management", self.show_windows["Log Management"])
|
||||||
|
if not exp:
|
||||||
|
imgui.end()
|
||||||
|
return
|
||||||
|
|
||||||
|
registry = LogRegistry("logs/log_registry.toml")
|
||||||
|
sessions = registry.data
|
||||||
|
|
||||||
|
if imgui.begin_table("sessions_table", 7, imgui.TableFlags_.borders | imgui.TableFlags_.row_bg | imgui.TableFlags_.resizable):
|
||||||
|
imgui.table_setup_column("Session ID")
|
||||||
|
imgui.table_setup_column("Start Time")
|
||||||
|
imgui.table_setup_column("Star")
|
||||||
|
imgui.table_setup_column("Reason")
|
||||||
|
imgui.table_setup_column("Size (KB)")
|
||||||
|
imgui.table_setup_column("Msgs")
|
||||||
|
imgui.table_setup_column("Actions")
|
||||||
|
imgui.table_headers_row()
|
||||||
|
|
||||||
|
for session_id, s_data in sessions.items():
|
||||||
|
imgui.table_next_row()
|
||||||
|
imgui.table_next_column()
|
||||||
|
imgui.text(session_id)
|
||||||
|
|
||||||
|
imgui.table_next_column()
|
||||||
|
imgui.text(s_data.get("start_time", ""))
|
||||||
|
|
||||||
|
imgui.table_next_column()
|
||||||
|
whitelisted = s_data.get("whitelisted", False)
|
||||||
|
if whitelisted:
|
||||||
|
imgui.text_colored(vec4(255, 215, 0), "YES")
|
||||||
|
else:
|
||||||
|
imgui.text("NO")
|
||||||
|
|
||||||
|
metadata = s_data.get("metadata") or {}
|
||||||
|
|
||||||
|
imgui.table_next_column()
|
||||||
|
imgui.text(metadata.get("reason", ""))
|
||||||
|
|
||||||
|
imgui.table_next_column()
|
||||||
|
imgui.text(str(metadata.get("size_kb", "")))
|
||||||
|
|
||||||
|
imgui.table_next_column()
|
||||||
|
imgui.text(str(metadata.get("message_count", "")))
|
||||||
|
|
||||||
|
imgui.table_next_column()
|
||||||
|
if whitelisted:
|
||||||
|
if imgui.button(f"Unstar##{session_id}"):
|
||||||
|
registry.update_session_metadata(
|
||||||
|
session_id,
|
||||||
|
message_count=metadata.get("message_count"),
|
||||||
|
errors=metadata.get("errors"),
|
||||||
|
size_kb=metadata.get("size_kb"),
|
||||||
|
whitelisted=False,
|
||||||
|
reason=metadata.get("reason")
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
if imgui.button(f"Star##{session_id}"):
|
||||||
|
registry.update_session_metadata(
|
||||||
|
session_id,
|
||||||
|
message_count=metadata.get("message_count"),
|
||||||
|
errors=metadata.get("errors"),
|
||||||
|
size_kb=metadata.get("size_kb"),
|
||||||
|
whitelisted=True,
|
||||||
|
reason="Manually whitelisted"
|
||||||
|
)
|
||||||
|
imgui.end_table()
|
||||||
|
imgui.end()
|
||||||
|
|
||||||
def _render_files_panel(self):
|
def _render_files_panel(self):
|
||||||
imgui.text("Base Dir")
|
imgui.text("Base Dir")
|
||||||
ch, self.ui_files_base_dir = imgui.input_text("##f_base", self.ui_files_base_dir)
|
ch, self.ui_files_base_dir = imgui.input_text("##f_base", self.ui_files_base_dir)
|
||||||
|
|||||||
Reference in New Issue
Block a user