mirror of
https://seed.radicle.dev/rad:z39mP9rQAaGmERfUMPULfPUi473tY.git
synced 2026-11-03 18:30:41 +08:00
patch: Move context bar to common module
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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![])?;
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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![])?;
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user