reactive_graph_table_model/system/
plugin.rs

1use 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}