patch: Move context bar to common module

This commit is contained in:
Erik Kundt
2024-01-15 17:51:17 +01:00
parent 856cd8b37b
commit 7a53efcc47
5 changed files with 69 additions and 131 deletions
+65 -1
View File
@@ -1,5 +1,6 @@
use radicle::cob::patch::{Patch, PatchId};
use tui::ui::widget::context::{ContextBar, Progress};
use tuirealm::command::{Cmd, CmdResult};
use tuirealm::tui::layout::Rect;
use tuirealm::{AttrValue, Attribute, Frame, MockComponent, Props, State};
@@ -8,7 +9,7 @@ use radicle_tui as tui;
use tui::context::Context;
use tui::ui::cob::PatchItem;
use tui::ui::theme::Theme;
use tui::ui::theme::{Theme, style};
use tui::ui::widget::{Widget, WidgetComponent};
use tui::ui::widget::label::{self};
@@ -91,3 +92,66 @@ impl WidgetComponent for PatchBrowser {
self.table.perform(cmd)
}
}
pub fn browse_context(context: &Context, _theme: &Theme, progress: Progress) -> Widget<ContextBar> {
use radicle::cob::patch::State;
let mut draft = 0;
let mut open = 0;
let mut archived = 0;
let mut merged = 0;
let patches = context.patches().as_ref().unwrap();
for (_, patch) in patches {
match patch.state() {
State::Draft => draft += 1,
State::Open { conflicts: _ } => open += 1,
State::Archived => archived += 1,
State::Merged {
commit: _,
revision: _,
} => merged += 1,
}
}
let context = label::default("");
let divider = label::default(" | ");
let draft_n = label::default(&format!("{draft}")).style(style::gray_dim());
let draft = label::default(" Draft");
let open_n = label::default(&format!("{open}")).style(style::green());
let open = label::default(" Open");
let archived_n = label::default(&format!("{archived}")).style(style::yellow());
let archived = label::default(" Archived");
let merged_n = label::default(&format!("{merged}")).style(style::cyan());
let merged = label::default(" Merged ");
let progress =
label::default(&format!(" {} ", progress.to_string())).style(style::magenta_reversed());
let spacer = label::default("");
let context_bar = ContextBar::new(
label::group(&[context]),
label::group(&[spacer.clone()]),
label::group(&[spacer]),
label::group(&[
draft_n,
draft,
divider.clone(),
open_n,
open,
divider.clone(),
archived_n,
archived,
divider,
merged_n,
merged,
]),
label::group(&[progress]),
);
Widget::new(context_bar).height(1)
}
+2 -1
View File
@@ -14,6 +14,7 @@ use tui::ui::{layout, subscription};
use tui::ViewPage;
use super::{ui, Application, Cid, ListCid, Message};
use super::super::common;
///
/// Home
@@ -64,7 +65,7 @@ impl ListView {
}
_ => Progress::None,
};
let context = ui::browse_context(context, theme, progress);
let context = common::ui::browse_context(context, theme, progress);
app.remount(Cid::List(ListCid::Context), context.to_boxed(), vec![])?;
-64
View File
@@ -7,7 +7,6 @@ use tui::ui::theme::{style, Theme};
use tui::ui::widget::Widget;
use tui::ui::widget::container::Tabs;
use tui::ui::widget::context::{ContextBar, Progress};
use tui::ui::widget::label::{self};
use super::super::common;
@@ -26,66 +25,3 @@ pub fn patches(
) -> Widget<common::ui::PatchBrowser> {
Widget::new(common::ui::PatchBrowser::new(context, theme, selected))
}
pub fn browse_context(context: &Context, _theme: &Theme, progress: Progress) -> Widget<ContextBar> {
use radicle::cob::patch::State;
let mut draft = 0;
let mut open = 0;
let mut archived = 0;
let mut merged = 0;
let patches = context.patches().as_ref().unwrap();
for (_, patch) in patches {
match patch.state() {
State::Draft => draft += 1,
State::Open { conflicts: _ } => open += 1,
State::Archived => archived += 1,
State::Merged {
commit: _,
revision: _,
} => merged += 1,
}
}
let context = label::default("");
let divider = label::default(" | ");
let draft_n = label::default(&format!("{draft}")).style(style::gray_dim());
let draft = label::default(" Draft");
let open_n = label::default(&format!("{open}")).style(style::green());
let open = label::default(" Open");
let archived_n = label::default(&format!("{archived}")).style(style::yellow());
let archived = label::default(" Archived");
let merged_n = label::default(&format!("{merged}")).style(style::cyan());
let merged = label::default(" Merged ");
let progress =
label::default(&format!(" {} ", progress.to_string())).style(style::magenta_reversed());
let spacer = label::default("");
let context_bar = ContextBar::new(
label::group(&[context]),
label::group(&[spacer.clone()]),
label::group(&[spacer]),
label::group(&[
draft_n,
draft,
divider.clone(),
open_n,
open,
divider.clone(),
archived_n,
archived,
divider,
merged_n,
merged,
]),
label::group(&[progress]),
);
Widget::new(context_bar).height(1)
}
+2 -1
View File
@@ -13,6 +13,7 @@ use tui::ui::widget::Widget;
use tui::ui::{layout, subscription};
use tui::ViewPage;
use super::super::common;
use super::{ui, Application, Cid, ListCid, Message};
///
@@ -63,7 +64,7 @@ impl ListView {
}
_ => Progress::None,
};
let context = ui::browse_context(context, theme, progress);
let context = common::ui::browse_context(context, theme, progress);
app.remount(Cid::List(ListCid::Context), context.to_boxed(), vec![])?;
-64
View File
@@ -7,7 +7,6 @@ use tui::ui::theme::{style, Theme};
use tui::ui::widget::Widget;
use tui::ui::widget::container::Tabs;
use tui::ui::widget::context::{ContextBar, Progress};
use tui::ui::widget::label::{self};
use super::super::common;
@@ -26,66 +25,3 @@ pub fn patches(
) -> Widget<common::ui::PatchBrowser> {
Widget::new(common::ui::PatchBrowser::new(context, theme, selected))
}
pub fn browse_context(context: &Context, _theme: &Theme, progress: Progress) -> Widget<ContextBar> {
use radicle::cob::patch::State;
let mut draft = 0;
let mut open = 0;
let mut archived = 0;
let mut merged = 0;
let patches = context.patches().as_ref().unwrap();
for (_, patch) in patches {
match patch.state() {
State::Draft => draft += 1,
State::Open { conflicts: _ } => open += 1,
State::Archived => archived += 1,
State::Merged {
commit: _,
revision: _,
} => merged += 1,
}
}
let context = label::default("");
let divider = label::default(" | ");
let draft_n = label::default(&format!("{draft}")).style(style::gray_dim());
let draft = label::default(" Draft");
let open_n = label::default(&format!("{open}")).style(style::green());
let open = label::default(" Open");
let archived_n = label::default(&format!("{archived}")).style(style::yellow());
let archived = label::default(" Archived");
let merged_n = label::default(&format!("{merged}")).style(style::cyan());
let merged = label::default(" Merged ");
let progress =
label::default(&format!(" {} ", progress.to_string())).style(style::magenta_reversed());
let spacer = label::default("");
let context_bar = ContextBar::new(
label::group(&[context]),
label::group(&[spacer.clone()]),
label::group(&[spacer]),
label::group(&[
draft_n,
draft,
divider.clone(),
open_n,
open,
divider.clone(),
archived_n,
archived,
divider,
merged_n,
merged,
]),
label::group(&[progress]),
);
Widget::new(context_bar).height(1)
}