mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
map: added View
This commit is contained in:
83
bin/map/src/view.rs
Normal file
83
bin/map/src/view.rs
Normal file
@@ -0,0 +1,83 @@
|
||||
use crate::model::NodeInfo;
|
||||
use tui::widgets::ListState;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct View {
|
||||
pub id_list: IdListView,
|
||||
pub info_list: InfoListView,
|
||||
}
|
||||
|
||||
impl View {
|
||||
pub fn new(id_list: IdListView, info_list: InfoListView) -> View {
|
||||
View { id_list, info_list }
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct IdListView {
|
||||
pub state: ListState,
|
||||
pub node_id: Vec<String>,
|
||||
}
|
||||
|
||||
impl IdListView {
|
||||
pub fn new(node_id: Vec<String>) -> IdListView {
|
||||
IdListView { state: ListState::default(), node_id }
|
||||
}
|
||||
pub fn next(&mut self) {
|
||||
let i = match self.state.selected() {
|
||||
Some(i) => {
|
||||
if i >= self.node_id.len() - 1 {
|
||||
0
|
||||
} else {
|
||||
i + 1
|
||||
}
|
||||
}
|
||||
None => 0,
|
||||
};
|
||||
self.state.select(Some(i));
|
||||
}
|
||||
|
||||
pub fn previous(&mut self) {
|
||||
let i = match self.state.selected() {
|
||||
Some(i) => {
|
||||
if i == 0 {
|
||||
self.node_id.len() - 1
|
||||
} else {
|
||||
i - 1
|
||||
}
|
||||
}
|
||||
None => 0,
|
||||
};
|
||||
self.state.select(Some(i));
|
||||
}
|
||||
|
||||
pub fn unselect(&mut self) {
|
||||
self.state.select(None);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct InfoListView {
|
||||
pub index: usize,
|
||||
pub infos: Vec<NodeInfo>,
|
||||
}
|
||||
|
||||
impl InfoListView {
|
||||
pub fn new(infos: Vec<NodeInfo>) -> InfoListView {
|
||||
let index = 0;
|
||||
|
||||
InfoListView { index, infos }
|
||||
}
|
||||
|
||||
pub async fn next(&mut self) {
|
||||
self.index = (self.index + 1) % self.infos.len();
|
||||
}
|
||||
|
||||
pub async fn previous(&mut self) {
|
||||
if self.index > 0 {
|
||||
self.index -= 1;
|
||||
} else {
|
||||
self.index = self.infos.len() - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user