docs2/Roo.docs.init.js
[roojs1] / docs2 / Roo.docs.init.js
1
2
3 Roo.docs.init = {
4     
5     onReady : function()
6     {
7        
8         //if (typeof(pagedata) == 'undefined') {
9         //    Site.onReady.defer(100, Roo.docs.init);
10         //    return;
11         //}
12         //Roo.debug = 1;
13         
14         Roo.XComponent.hideProgress = true;
15         Roo.XComponent.build();
16         
17         
18         
19         
20         Roo.XComponent.on('buildcomplete', function() {
21             
22             //Roo.XComponent.modules[0].el.fireEvent('render');
23              this.loadTree();
24         }, this);
25         Roo.get(document.body).on('click', this.onClick, this);
26       
27         
28     },
29     
30     loadTree: function()
31     {
32         Roo.docs.doc_body_content.hide();
33         
34         Roo.Ajax.request({
35             url : 'tree.json',
36             method : 'GET',
37             success : function(res, o)
38             {
39                 var d = Roo.decode(res.responseText);
40                 Roo.log(d);
41                 // our classes witch children first..
42                 d.forEach(function(e) {
43                     if (e.cn.length) {
44                         this.addTreeItem(Roo.docs.navGroup, e, 'NavSidebarItem');
45                     }
46                 }, this);
47                 
48                 d.forEach(function(e) {
49                     if (!e.cn.length) {
50                         this.addTreeItem(Roo.docs.navGroup, e, 'NavSidebarItem');
51                     }
52                 }, this);
53                 var roo = Roo.docs.navGroup.items[1].menu;
54                 roo.show(roo.triggerEl, '?', false);
55                 this.classes = d;
56                 
57             },
58             scope : this
59         });
60         
61         
62     },
63     addTreeItem : function(parent, e, type) {
64         // add a node..
65         var node = parent.addxtypeChild(Roo.factory({
66             html: e.name.split('.').pop(),
67             id : e.name,
68             xns : Roo.bootstrap,
69             showArrow: false,
70             xtype : type,
71             preventDefault : true,
72           //  cls : type == 'NavSidebarItem' ? 'open' : '',
73             listeners : {
74                 click : (function(mi,ev,c)
75                 {
76                     
77                     ev.stopPropagation();
78                      
79                     if (c.cn.length) {
80                         Roo.log(ev);
81                         if (mi.menu.el.hasClass('show')) {
82                             mi.menu.hide();
83                         } else {
84                             mi.menu.show(mi.menu.triggerEl,'?', false);
85                         }
86                         
87                     }
88                     
89                     Roo.docs.init.loadDoc(c);
90                     
91                 }).createDelegate(this,[e], true)
92                 
93             },
94             fa :  e.cn.length  ? 'chevron-right' : '',
95             menu : !e.cn.length ? false  : Roo.factory({
96                 type : 'treeview',
97                 xns: Roo.bootstrap,
98                 xtype : 'Menu',
99                 listeners : {
100                     beforehide : (function(mi,c)
101                     {
102                         if (c.name.split('.').length < 2) {
103                             return false;
104                         }
105                         return true;
106                         
107                     }).createDelegate(this,[e], true)
108                     
109                 }
110                 
111             })
112         }));
113         parent.items.push(node);
114         if (e.cn.length  && type == 'NavSidebarItem') {
115             this.topm = node.menu;
116         }
117         
118         
119         if (!e.cn.length) {
120             return;
121         }
122         e.cn.forEach(function(ec) {
123             var cn = ec.name.split('.').pop();
124             Roo.log(cn);
125             if (cn == cn.toLowerCase()) {
126                 this.addTreeItem(node.menu, ec,'MenuItem');
127             }
128             
129         }, this);
130         e.cn.forEach(function(ec) {
131             var cn = ec.name.split('.').pop();
132             if (cn != cn.toLowerCase()) {
133                 this.addTreeItem(node.menu, ec,'MenuItem');
134             }
135         }, this);
136         
137     },
138     loadDoc : function(cls)
139     {
140         Roo.docs.doc_body_content.hide();
141         this.currentClass = cls.name;
142         if (!cls.is_class) {
143             return;
144         }
145         Roo.docs.doc_body_content.show();
146         Roo.Ajax.request({
147             url : 'symbols/' + cls.name + '.json',
148             method : 'GET',
149             success : function(res, o)
150             {
151                 var d = Roo.decode(res.responseText);
152                 this.fillDoc(d);
153                 
154             },
155             scope : this
156         });
157         
158         
159     },
160     fillDoc : function(d)
161     {
162         /*{
163             "name" : "Roo.bootstrap.Progress",
164             "augments" : [
165               "Roo.bootstrap.Component",
166               "Roo.Component",
167               "Roo.util.Observable"
168             ],
169             "desc" : "Bootstrap Progress class",
170             "config" : [
171               {
172         */
173         document.body.scrollTop  = 0;
174         for (var k in d) {
175             if (typeof(Roo.docs['doc_' + k])  !=  'undefined') {
176                 Roo.docs['doc_' + k].el.dom.innerHTML = Roo.docs.template.resolveLinks(d[k]);;
177             }
178         }
179         Roo.docs.doc_extends.hide();
180         Roo.docs.doc_extends_sep.hide();
181         if (d.augments.length) {
182             Roo.docs.doc_extends.show();
183             Roo.docs.doc_extends_sep.show();
184             Roo.docs.doc_extends.el.dom.innerHTML = d.augments[0];
185         }
186         Roo.docs.doc_source.el.dom.innerHTML = d.name.replace(/\./g,"/") + ".js";
187         
188         if (d.augments.length) {
189             Roo.docs.augments.show();
190             Roo.docs.augments.bodyEl().dom.innerHTML = Roo.docs.template.augments(d);
191         } else {
192             Roo.docs.augments.hide();
193         }
194         
195         
196         
197         Roo.docs.configTableContainer.hide();
198         Roo.docs.methodsTableContainer.hide();
199         Roo.docs.eventsTableContainer.hide();
200         if (d.config.length) {
201             Roo.docs.configTableContainer.show();
202             Roo.docs.configTable.store.load( { params : { data : d.config.sort(Roo.docs.template.makeSortby("name")) }});
203         } 
204         
205         if (d.methods.length) {
206             Roo.docs.methodsTable.store.load( { params : { data : Roo.docs.template.methodsSort(d) }});
207             Roo.docs.methodsTableContainer.show();
208         }
209         if (d.events.length) {
210             Roo.docs.eventsTable.store.load( { params : { data : d.events.sort(Roo.docs.template.makeSortby("name")) }});
211             Roo.docs.eventsTableContainer.show();
212         }
213         
214         
215     },
216     onClick : function(e)
217     {
218         if (e.target.nodeName != 'A') {
219             return;
220         }
221         if (!e.target.href.match(/#/)) {
222             return;
223         }
224         e.stopPropagation();
225         var link = e.target.href.split('#')[1];
226         this.loadClass(link);
227         
228     }
229     
230     
231     
232     
233 };
234
235
236 Roo.onReady(Roo.docs.init.onReady, Roo.docs.init);
237     
238