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