windjammer_ui/components/generated/
treeview.rs1#![allow(clippy::all)]
2#![allow(noop_method_call)]
3use std::fmt::Write;
4
5use super::traits::Renderable;
6
7#[derive(Debug, Clone, Default)]
8pub struct TreeItem {
9 pub label: String,
10 pub children: Vec<TreeItem>,
11 pub expanded: bool,
12}
13
14impl TreeItem {
15 #[inline]
16 pub fn new(label: String) -> TreeItem {
17 TreeItem {
18 label,
19 children: Vec::new(),
20 expanded: false,
21 }
22 }
23 #[inline]
24 pub fn child(mut self, item: TreeItem) -> TreeItem {
25 self.children.push(item);
26 self
27 }
28 #[inline]
29 pub fn expanded(mut self, expanded: bool) -> TreeItem {
30 self.expanded = expanded;
31 self
32 }
33 #[inline]
34 pub fn render(&self, depth: i32) -> String {
35 let indent_px = depth * 20;
36 let icon = {
37 if self.children.len() > (0 as usize) {
38 if self.expanded {
39 "▼".to_string()
40 } else {
41 "▶".to_string()
42 }
43 } else {
44 "•".to_string()
45 }
46 };
47 let mut html = {
48 let mut __s = String::with_capacity(64);
49 write!(
50 &mut __s,
51 "<div class='wj-tree-item' style='padding-left: {}px;'>
52 <span class='wj-tree-icon'>{}</span>
53 <span>{}</span>
54</div>
55",
56 indent_px, icon, self.label
57 )
58 .unwrap();
59 __s
60 };
61 if self.expanded {
62 let mut i = 0;
63 while i < (self.children.len() as i64) {
64 let child = &self.children[i as usize];
65 html = format!("{}{}", html, child.render(depth + 1));
66 i += 1;
67 }
68 }
69 html
70 }
71}
72
73#[derive(Debug, Clone, Default)]
74pub struct TreeView {
75 pub items: Vec<TreeItem>,
76}
77
78impl TreeView {
79 #[inline]
80 pub fn new() -> TreeView {
81 TreeView { items: Vec::new() }
82 }
83 #[inline]
84 pub fn item(mut self, item: TreeItem) -> TreeView {
85 self.items.push(item);
86 self
87 }
88}
89
90impl Renderable for TreeView {
91 #[inline]
92 fn render(self) -> String {
93 let mut html = "<div class='wj-tree-view'>
94"
95 .to_string();
96 let mut i = 0;
97 while i < (self.items.len() as i64) {
98 let item = &self.items[i as usize];
99 html = format!("{}{}", html, item.render(0));
100 i += 1;
101 }
102 format!("{}</div>", html)
103 }
104}