docs2/Roo.docs.init.js
[roojs1] / docs2 / 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({ source : res.responseText});
167                 
168             },
169             scope : this
170         });
171         
172         
173     },
174     
175     loadDoc : function(cls)
176     {
177         Roo.docs.doc_body_content.hide();
178         this.currentClass = cls.name;
179         if (!cls.is_class) {
180             return;
181         }
182         Roo.docs.doc_body_content.show();
183         Roo.Ajax.request({
184             url : 'symbols/' + cls.name + '.json',
185             method : 'GET',
186             success : function(res, o)
187             {
188                 var d = Roo.decode(res.responseText);
189                 this.fillDoc(d);
190                 
191             },
192             scope : this
193         });
194         
195         
196     },
197     
198     fillDoc : function(d)
199     {
200         /*{
201             "name" : "Roo.bootstrap.Progress",
202             "augments" : [
203               "Roo.bootstrap.Component",
204               "Roo.Component",
205               "Roo.util.Observable"
206             ],
207             "desc" : "Bootstrap Progress class",
208             "config" : [
209               {
210         */
211         document.body.scrollTop  = 0;
212         for (var k in d) {
213             if (typeof(Roo.docs['doc_' + k])  !=  'undefined') {
214                 Roo.docs['doc_' + k].el.dom.innerHTML = Roo.docs.template.resolveLinks(d[k]);;
215             }
216         }
217         Roo.docs.doc_extends.hide();
218         Roo.docs.doc_extends_sep.hide();
219         if (d.augments.length) {
220             Roo.docs.doc_extends.show();
221             Roo.docs.doc_extends_sep.show();
222             Roo.docs.doc_extends.el.dom.innerHTML = d.augments[0];
223         }
224         Roo.docs.doc_source.el.dom.innerHTML = d.name.replace(/\./g,"/") + ".js";
225         
226         if (d.augments.length) {
227             Roo.docs.augments.show();
228             Roo.docs.augments.bodyEl().dom.innerHTML = Roo.docs.template.augments(d);
229         } else {
230             Roo.docs.augments.hide();
231         }
232         
233         
234         
235         Roo.docs.configTableContainer.hide();
236         Roo.docs.methodsTableContainer.hide();
237         Roo.docs.eventsTableContainer.hide();
238         if (d.config.length) {
239             Roo.docs.configTableContainer.show();
240             Roo.docs.configTable.store.load( { params : { data : d.config.sort(Roo.docs.template.makeSortby("name")) }});
241         } 
242         
243         if (d.methods.length) {
244             Roo.docs.methodsTable.store.load( { params : { data : Roo.docs.template.methodsSort(d) }});
245             Roo.docs.methodsTableContainer.show();
246         }
247         if (d.events.length) {
248             Roo.docs.eventsTable.store.load( { params : { data : d.events.sort(Roo.docs.template.makeSortby("name")) }});
249             Roo.docs.eventsTableContainer.show();
250         }
251         
252         
253     },
254     onClick : function(e)
255     {
256         if (e.target.nodeName != 'A') {
257             return;
258         }
259         if (!e.target.href.match(/#/)) {
260             return;
261         }
262         e.stopPropagation();
263         var link = e.target.href.split('#')[1];
264         this.loadClass(link);
265         
266     }
267     
268     
269     
270     
271 };
272
273
274 Roo.onReady(Roo.docs.init.onReady, Roo.docs.init);
275     
276