Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ clap_complete = { version = "*", default-features = false }
cursive = { version = "*", default-features = false, features = ["crossterm-backend"] }
cursive-syntect = { version = "*", default-features = true }
unicode-width = "0.1"
cursive_table_view = { git = "https://github.com/azat-rust/cursive_table_view", branch = "next", default-features = false }
cursive-flexi-logger-view = { git = "https://github.com/azat-rust/cursive-flexi-logger-view", branch = "next", default-features = false }
syntect = { version = "*", default-features = false, features = ["default-syntaxes", "default-themes"] }
clickhouse-rs = { git = "https://github.com/azat-rust/clickhouse-rs", branch = "next", default-features = false, features = ["tokio_io"] }
Expand Down
129 changes: 0 additions & 129 deletions src/view/ext_table_view.rs

This file was deleted.

5 changes: 2 additions & 3 deletions src/view/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
mod ext_table_view;
mod log_view;
mod navigation;
mod provider;
Expand All @@ -9,6 +8,7 @@ mod registry;
pub mod search_history;
mod sql_query_view;
mod summary_view;
pub mod table_view;
mod text_log_view;
mod utils;

Expand All @@ -22,8 +22,7 @@ pub use sql_query_view::Row as QueryResultRow;
pub use sql_query_view::SQLQueryView;
pub use summary_view::SummaryView;

pub use ext_table_view::ExtTableView;
pub use ext_table_view::TableViewItem;
pub use table_view::TableViewItem;

pub use log_view::LogEntry;
pub use log_view::LogView;
Expand Down
65 changes: 32 additions & 33 deletions src/view/queries_view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ use crate::{
clickhouse::TraceType, options::ViewOptions,
},
utils::{edit_query, get_query},
view::{ExtTableView, QueryView, SQLQueryView, TableViewItem, TextLogView},
view::table_view::TableView,
view::{QueryView, SQLQueryView, TableViewItem, TextLogView},
wrap_impl_no_move,
};

Expand Down Expand Up @@ -178,7 +179,7 @@ impl TableViewItem<QueriesColumn> for Query {

pub struct QueriesView {
context: ContextArc,
table: ExtTableView<Query, QueriesColumn>,
table: TableView<Query, QueriesColumn>,
items: HashMap<String, Query>,
// For show only specific query
query_id: Option<String>,
Expand All @@ -205,7 +206,7 @@ pub enum Type {
}

impl QueriesView {
inner_getters!(self.table: ExtTableView<Query, QueriesColumn>);
inner_getters!(self.table: TableView<Query, QueriesColumn>);

pub fn update(&mut self, processes: Columns) -> Result<()> {
let prev_items = take(&mut self.items);
Expand Down Expand Up @@ -265,22 +266,21 @@ impl QueriesView {
}
}

let inner_table = self.table.get_inner_mut().get_inner_mut();

if !self.selected_query_ids.is_empty() {
if !self.has_selection_column {
inner_table.insert_column(0, QueriesColumn::Selection, "v", |c| c.width(1));
self.table
.insert_column(0, QueriesColumn::Selection, "v", |c| c.width(1));
self.has_selection_column = true;
}
for item in &mut items {
item.selection = self.selected_query_ids.contains(&item.query_id);
}
} else if self.has_selection_column {
inner_table.remove_column(0);
self.table.remove_column(0);
self.has_selection_column = false;
}

inner_table.set_items_stable(items);
self.table.set_items_stable(items);
}

fn show_flamegraph(&mut self, tui: bool, trace_type: Option<TraceType>) -> Result<()> {
Expand Down Expand Up @@ -308,9 +308,9 @@ impl QueriesView {
}

fn get_selected_query(&self) -> Result<Query> {
let inner_table = self.table.get_inner().get_inner();
let item_index = inner_table.item().ok_or(Error::msg("No query selected"))?;
let item = inner_table
let item_index = self.table.item().ok_or(Error::msg("No query selected"))?;
let item = self
.table
.borrow_item(item_index)
.ok_or(Error::msg("No such row anymore"))?;
return Ok(item.clone());
Expand Down Expand Up @@ -449,7 +449,7 @@ impl QueriesView {
.cb_sink
.send(Box::new(move |siv: &mut cursive::Cursive| {
siv.add_layer(views::Dialog::around(
QueryView::new(selected_query, "process").min_size((70, 35)),
QueryView::new(selected_query, "process").min_size((120, 35)),
));
}))
.unwrap();
Expand Down Expand Up @@ -861,21 +861,20 @@ impl QueriesView {
}
};

let mut table = ExtTableView::<Query, QueriesColumn>::default();
let inner_table = table.get_inner_mut().get_inner_mut();
inner_table.add_column(QueriesColumn::QueryId, "query_id", |c| c.width(12));
inner_table.add_column(QueriesColumn::Cpu, "cpu", |c| c.width(8));
inner_table.add_column(QueriesColumn::IOWait, "io_wait", |c| c.width(11));
inner_table.add_column(QueriesColumn::CPUWait, "cpu_wait", |c| c.width(12));
inner_table.add_column(QueriesColumn::User, "user", |c| c.width(8));
inner_table.add_column(QueriesColumn::Threads, "thr", |c| c.width(6));
inner_table.add_column(QueriesColumn::Memory, "mem", |c| c.width(6));
inner_table.add_column(QueriesColumn::DiskIO, "disk", |c| c.width(7));
inner_table.add_column(QueriesColumn::IO, "io", |c| c.width(7));
inner_table.add_column(QueriesColumn::NetIO, "net", |c| c.width(6));
inner_table.add_column(QueriesColumn::Elapsed, "elapsed", |c| c.width(11));
inner_table.add_column(QueriesColumn::Query, "query", |c| c);
inner_table.set_on_submit(|siv, _row, _index| {
let mut table = TableView::<Query, QueriesColumn>::new();
table.add_column(QueriesColumn::QueryId, "query_id", |c| c.width_min_max(8, 16));
table.add_column(QueriesColumn::Cpu, "cpu", |c| c.width_min_max(3, 8));
table.add_column(QueriesColumn::IOWait, "io_wait", |c| c.width_min_max(7, 11));
table.add_column(QueriesColumn::CPUWait, "cpu_wait", |c| c.width_min_max(8, 12));
table.add_column(QueriesColumn::User, "user", |c| c.width_min_max(4, 12));
table.add_column(QueriesColumn::Threads, "thr", |c| c.width_min_max(3, 6));
table.add_column(QueriesColumn::Memory, "mem", |c| c.width_min_max(3, 8));
table.add_column(QueriesColumn::DiskIO, "disk", |c| c.width_min_max(4, 8));
table.add_column(QueriesColumn::IO, "io", |c| c.width_min_max(2, 8));
table.add_column(QueriesColumn::NetIO, "net", |c| c.width_min_max(3, 8));
table.add_column(QueriesColumn::Elapsed, "elapsed", |c| c.width_min_max(7, 11));
table.add_column(QueriesColumn::Query, "query", |c| c.width_min(20));
table.set_on_submit(|siv, _row, _index| {
let context = siv.user_data::<ContextArc>().unwrap().clone();
let query_actions = context
.lock()
Expand Down Expand Up @@ -904,19 +903,19 @@ impl QueriesView {
});

if matches!(processes_type, Type::LastQueryLog) {
inner_table.add_column(QueriesColumn::QueryEnd, "end", |c| c.width(25));
inner_table.sort_by(QueriesColumn::QueryEnd, Ordering::Greater);
table.add_column(QueriesColumn::QueryEnd, "end", |c| c.width_min_max(19, 25));
table.sort_by(QueriesColumn::QueryEnd, Ordering::Greater);
} else {
inner_table.sort_by(QueriesColumn::Elapsed, Ordering::Greater);
table.sort_by(QueriesColumn::Elapsed, Ordering::Greater);
}

let view_options = context.lock().unwrap().options.view.clone();

if !view_options.no_subqueries {
inner_table.insert_column(0, QueriesColumn::SubQueries, "Q#", |c| c.width(5));
table.insert_column(0, QueriesColumn::SubQueries, "Q#", |c| c.width_min_max(2, 5));
}
if context.lock().unwrap().options.clickhouse.cluster.is_some() {
inner_table.insert_column(0, QueriesColumn::HostName, "host", |c| c.width(8));
table.insert_column(0, QueriesColumn::HostName, "host", |c| c.width_min_max(4, 16));
}

let bg_runner_cv = context.lock().unwrap().background_runner_cv.clone();
Expand Down Expand Up @@ -1033,5 +1032,5 @@ impl Drop for QueriesView {

// TODO: remove this extra wrapping
impl ViewWrapper for QueriesView {
wrap_impl_no_move!(self.table: ExtTableView<Query, QueriesColumn>);
wrap_impl_no_move!(self.table: TableView<Query, QueriesColumn>);
}
29 changes: 15 additions & 14 deletions src/view/query_view.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use crate::interpreter::Query;
use crate::view::{ExtTableView, TableViewItem};
use crate::view::TableViewItem;
use crate::view::table_view::TableView;
use cursive::traits::Nameable;
use cursive::views::{NamedView, OnEventView};
use cursive::{Cursive, view::ViewWrapper, wrap_impl};
Expand Down Expand Up @@ -105,7 +106,7 @@ impl TableViewItem<QueryDetailsColumn> for QueryProcessDetails {
}

pub struct QueryView {
table: ExtTableView<QueryProcessDetails, QueryDetailsColumn>,
table: TableView<QueryProcessDetails, QueryDetailsColumn>,
all_items: Vec<QueryProcessDetails>,
filter: Arc<Mutex<String>>,
}
Expand All @@ -125,18 +126,18 @@ impl QueryView {
.collect()
};

let inner_table = self.table.get_inner_mut().get_inner_mut();
inner_table.set_items_stable(filtered_items);
self.table.set_items_stable(filtered_items);
}

pub fn new(query: Query, view_name: &'static str) -> NamedView<OnEventView<Self>> {
let mut table = ExtTableView::<QueryProcessDetails, QueryDetailsColumn>::default();
let inner_table = table.get_inner_mut().get_inner_mut();
inner_table.add_column(QueryDetailsColumn::Name, "Name", |c| c.width(30));
inner_table.add_column(QueryDetailsColumn::Current, "Current", |c| {
return c.width(12);
let mut table = TableView::<QueryProcessDetails, QueryDetailsColumn>::new();
table.add_column(QueryDetailsColumn::Name, "Name", |c| c.width_min(20));
table.add_column(QueryDetailsColumn::Current, "Current", |c| {
return c.width_min_max(7, 12);
});
table.add_column(QueryDetailsColumn::Rate, "Per second rate", |c| {
c.width_min_max(16, 20)
});
inner_table.add_column(QueryDetailsColumn::Rate, "Per second rate", |c| c.width(18));

let mut items = Vec::new();
for pe in query.profile_events {
Expand All @@ -146,10 +147,10 @@ impl QueryView {
rate: pe.1 as f64 / query.elapsed,
});
}
inner_table.set_items(items.clone());
table.set_items(items.clone());

inner_table.sort_by(QueryDetailsColumn::Current, Ordering::Greater);
inner_table.set_selected_row(0);
table.sort_by(QueryDetailsColumn::Current, Ordering::Greater);
table.set_selected_row(0);

let filter = Arc::new(Mutex::new(String::new()));

Expand Down Expand Up @@ -178,5 +179,5 @@ impl QueryView {
}

impl ViewWrapper for QueryView {
wrap_impl!(self.table: ExtTableView<QueryProcessDetails, QueryDetailsColumn>);
wrap_impl!(self.table: TableView<QueryProcessDetails, QueryDetailsColumn>);
}
Loading