From 15ad056be4e03ab83acfea1009aa390ff43514d5 Mon Sep 17 00:00:00 2001 From: Federico Guerinoni Date: Tue, 11 Jul 2023 12:32:37 +0200 Subject: [PATCH 1/2] feat(console): Add way to inspect details of task from resource view Now it is possible while navigate in `async_ops_table` to go directly to details of the task that you are pointing on the list. This closes #448 --- tokio-console/src/view/mod.rs | 25 +++++++++++++++++++++++++ tokio-console/src/view/resource.rs | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/tokio-console/src/view/mod.rs b/tokio-console/src/view/mod.rs index 72221ac73..bcfbf7151 100644 --- a/tokio-console/src/view/mod.rs +++ b/tokio-console/src/view/mod.rs @@ -167,6 +167,31 @@ impl View { self.state = ResourcesList; update_kind = UpdateKind::Other; } + key!(Enter) => { + if let Some(op) = view.async_ops_table.selected_item().upgrade() { + if let Some(task_id) = op.borrow().task_id() { + let task: u64 = task_id.to_string().parse().unwrap(); + let item = self + .tasks_list + .sorted_items + .iter() + .filter_map(|i| i.upgrade()) + .find(|t| { + let task_id: u64 = + t.borrow().id().to_string().parse().unwrap(); + task_id == task + }); + + if let Some(t) = item { + update_kind = UpdateKind::SelectTask(t.borrow().span_id()); + self.state = TaskInstance(self::task::TaskView::new( + t, + state.task_details_ref(), + )); + } + } + } + } _ => { // otherwise pass on to view view.update_input(event); diff --git a/tokio-console/src/view/resource.rs b/tokio-console/src/view/resource.rs index 25f3c45e0..a55989657 100644 --- a/tokio-console/src/view/resource.rs +++ b/tokio-console/src/view/resource.rs @@ -21,7 +21,7 @@ use std::{cell::RefCell, rc::Rc}; pub(crate) struct ResourceView { resource: Rc>, - async_ops_table: TableListState, + pub async_ops_table: TableListState, initial_render: bool, } From b3c846555850db0fe2f9434471edfc351d73a93d Mon Sep 17 00:00:00 2001 From: Federico Guerinoni Date: Thu, 13 Jul 2023 21:02:59 +0200 Subject: [PATCH 2/2] fixup! feat(console): Add way to inspect details of task from resource view --- tokio-console/src/view/mod.rs | 15 +++++---------- tokio-console/src/view/resource.rs | 2 +- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/tokio-console/src/view/mod.rs b/tokio-console/src/view/mod.rs index bcfbf7151..1a9703000 100644 --- a/tokio-console/src/view/mod.rs +++ b/tokio-console/src/view/mod.rs @@ -170,22 +170,17 @@ impl View { key!(Enter) => { if let Some(op) = view.async_ops_table.selected_item().upgrade() { if let Some(task_id) = op.borrow().task_id() { - let task: u64 = task_id.to_string().parse().unwrap(); - let item = self + let task = self .tasks_list .sorted_items .iter() .filter_map(|i| i.upgrade()) - .find(|t| { - let task_id: u64 = - t.borrow().id().to_string().parse().unwrap(); - task_id == task - }); + .find(|t| task_id == t.borrow().id()); - if let Some(t) = item { - update_kind = UpdateKind::SelectTask(t.borrow().span_id()); + if let Some(task) = task { + update_kind = UpdateKind::SelectTask(task.borrow().span_id()); self.state = TaskInstance(self::task::TaskView::new( - t, + task, state.task_details_ref(), )); } diff --git a/tokio-console/src/view/resource.rs b/tokio-console/src/view/resource.rs index a55989657..8c85203ac 100644 --- a/tokio-console/src/view/resource.rs +++ b/tokio-console/src/view/resource.rs @@ -21,7 +21,7 @@ use std::{cell::RefCell, rc::Rc}; pub(crate) struct ResourceView { resource: Rc>, - pub async_ops_table: TableListState, + pub(crate) async_ops_table: TableListState, initial_render: bool, }