reactive_graph_table_model/system/
plugin.rs1use tabled::Table;
2use tabled::Tabled;
3use tabled::settings::Modify;
4use tabled::settings::Style;
5use tabled::settings::Width;
6use tabled::settings::object::Rows;
7use tabled::settings::peaker::Priority;
8
9use crate::container::DefaultTableContainer;
10use crate::container::TableInlineFormat;
11use crate::container::TableInlineFormatSetter;
12use crate::container::TableOptions;
13
14#[derive(Clone, Debug, Tabled)]
15pub struct Plugin {
16 pub name: String,
17 pub short_name: String,
18 pub state: String,
19 pub version: String,
20 pub plugin_api_version: String,
21 pub rustc_version: String,
22
23 #[tabled(skip)]
24 inline_format: TableInlineFormat,
25}
26
27#[allow(unused)]
28#[derive(Clone, Debug, Tabled)]
29pub(crate) struct PluginDependencies {
30 #[tabled(display("display_plugins"))]
31 pub dependencies: Vec<Plugin>,
32}
33
34#[allow(unused)]
35#[derive(Clone, Debug, Tabled)]
36pub(crate) struct PluginDependents {
37 #[tabled(display("display_plugins"))]
38 pub dependents: Vec<Plugin>,
39}
40
41#[allow(unused)]
42pub(crate) fn display_plugins(plugins: &Vec<Plugin>) -> String {
43 Table::new(plugins).to_string()
44}
45
46impl TableInlineFormatSetter for Plugin {
47 fn set_table_inline_format(&mut self, table_inline_format: TableInlineFormat) {
48 self.inline_format = table_inline_format;
49 }
50}
51
52impl From<reactive_graph_plugin_model::Plugin> for Plugin {
53 fn from(plugin: reactive_graph_plugin_model::Plugin) -> Self {
54 Plugin {
55 name: plugin.name,
56 short_name: plugin.short_name,
57 state: plugin.state,
58 version: plugin.version,
59 plugin_api_version: plugin.plugin_api_version,
60 rustc_version: plugin.rustc_version,
61 inline_format: Default::default(),
62 }
63 }
64}
65
66pub type PluginsTableContainer = DefaultTableContainer<reactive_graph_plugin_model::Plugin, Plugin, PluginsTableOptions>;
67
68pub struct PluginsTableOptions;
69
70impl TableOptions for PluginsTableOptions {
71 fn options(table: &mut Table) -> &mut Table {
72 table.with(Style::extended()).with(
73 Modify::new(Rows::new(1..))
74 .with(Width::increase(10))
75 .with(Width::truncate(40).suffix("...").priority(Priority::max(false))),
76 )
77 }
78}