1 $group
2 class TreeManager
3 ctor
4 param props
5 set this.props = props
6 set this.schemaTreeViews = {}
7 _ this.initialize
8 m initialize
9 js/event_on( schema-selected-ready)
10 let ittfSelectTag = wz.element("ittfSelect")
11 set ittfSelectTag.onchange
12 =>
13 param ev
14 log 'ittfSelectTag.click', ev.target.value
15 js/event_emit( ittf-cheatsheet-item-changed)
16 @ id ev.target.value
17 let snippetSelectTag = wz.element("snippetSelect")
18 set snippetSelectTag.onchange
19 =>
20 param ev
21 log 'snippetSelectTag.click', ev.target.value
22 js/event_emit( snippet-cheatsheet-item-changed)
23 @ id ev.target.value
24 var
25 decl i
26 decl L = ittfSelectTag.options.length - 1
27 for i=L; i >= 0; i--
28 _ ittfSelectTag.remove(i)
29 let opt = document.createElement("option")
30 set opt.value = -1
31 set opt.innerHTML = ""
32 _ ittfSelectTag.append(opt)
33 _ data.json.elements.map
34 =>
35 param element
36 param i
37 # log "TreeManager", "initialize", "element", element
38 _ element.items.map
39 =>
40 param item
41 param j
42 # log "TreeManager", "initialize", "item", item
43 set opt = document.createElement("option")
44 set opt.value = item.id
45 set opt.innerHTML = item.title
46 _ ittfSelectTag.append(opt)
47 var
48 decl i
49 decl L = snippetSelectTag.options.length - 1
50 for i=L; i >= 0; i--
51 _ snippetSelectTag.remove(i)
52 set opt = document.createElement("option")
53 set opt.value = -1
54 set opt.innerHTML = ""
55 _ snippetSelectTag.append(opt)
56 _ data.json.elements.map
57 =>
58 param element
59 param i
60 # log "TreeManager", "initialize", "element", element
61 _ element.items.map
62 =>
63 param item
64 param j
65 log "TreeManager", "initialize", "item", item
66 set opt = document.createElement("option")
67 set opt.value = item.id
68 set opt.innerHTML = item.title
69 _ snippetSelectTag.append(opt)
70 if false
71 _ this.getSchemaTreeView
72 @ data.name
73 @ data.json
74 m getSchemaTreeView
75 param name
76 param json
77 if this.schemaTreeViews[name]
78 _ wz.replaceChildren
79 @ 'items-tree-view'
80 @ this.schemaTreeViews[name]
81 else
82 var treeView
83 new TreeView
84 {
85 @ app this
86 @ filesystem null
87 @ formsContainerId null
88 _ treeView.render
89 _ jsonToItemTree
90 @ name
91 @ json
92 a_cb_throw( element )
93 # log 'treeView.render', element
94 set this.schemaTreeViews[name] = element
95 _ wz.replaceChildren
96 @ 'items-tree-view'
97 @ element
98 function jsonToItemTree
99 param schemaName
100 param json
101 var root
102 {
103 @ name schemaName
104 @ isFolder true
105 @ expanded true
106 [ children
107 foreach e in json.elements
108 var item
109 {
110 @ name e.name
111 @ isFolder true
112 @ expanded true
113 [ children
114 _ root.children.push
115 @ item
116 foreach e2 in e.items
117 var item2
118 {
119 @ name e2.title
120 @ id e2.id
121 @ isFolder false
122 [ children
123 _ item.children.push
124 @ item2
125 return root