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