2 Ext.define('Docs.ClassTree', {
3 extend: 'Ext.tree.Panel',
11 height: Ext.core.Element.getViewportHeight() - 170,
18 // xtype: 'container',
21 // margin: '0 0 10 0',
26 // clickEvent: 'mouseover',
27 // iconCls: 'icon-fav',
28 // baseCls: 'historyBut',
29 // margin: '0 10 0 0',
34 // click: function(menu, item) {
36 // getDocClass(item.text)
45 // iconCls: 'icon-hist',
46 // clickEvent: 'mouseover',
47 // baseCls: 'historyBut',
49 // id: 'historyItems',
52 // { text: 'Ext.button.Button', iconCls: 'icon-class' }
55 // click: function(menu, item) {
57 // getDocClass(item.text)
68 itemclick: function(view, node) {
70 var clsName = node.raw ? node.raw.clsName : node.data.clsName;
74 } else if (!node.isLeaf()){
75 if (node.isExpanded()) {
84 setTimeout(function() {
85 self.selectCurrentClass()
90 selectCurrentClass: function() {
92 var treePanel = Ext.getCmp('treePanelCmp');
94 if (req.docClass != 'undefined') {
96 var classNode = Ext.getCmp('treePanelCmp').getRootNode().findChildBy(function(n){
97 return req.docClass == n.raw.clsName;
101 treePanel.getSelectionModel().select(classNode);
102 classNode.bubble(function(n){
111 Ext.define('CouchView', {
112 extend: 'Ext.data.Model',
113 fields: [ 'id', 'key', 'value' ]
116 var convert = function(classes) {
123 classes.keys.forEach(function(cls) {
125 var parts = cls.split('.'),
128 var stitchedParts = [];
129 for (var i = 0; i < parts.length; i++) {
130 if (i > 0 && parts[i + 1] && parts[i + 1][0] && parts[i][0] && parts[i][0].match(/^[A-Z]/) && parts[i + 1][0].match(/^[A-Z]/)) {
131 var n = parts.splice(i, 2).join('.');
132 parts.splice(i, 0, n);
136 parts.forEach(function(part) {
137 if (!prevObject[part]) {
138 prevObject[part] = {};
141 prevObject = prevObject[part];
145 function handleTree(cls, tree) {
149 for (var key in tree) treeKeys.push(key);
151 treeKeys.forEach(function(key) {
156 innerNodes[innerNodes.length - 1].allowDrop = false;
157 var clsName = (cls ? (cls + ".") : "") + key;
158 var clsData = classes.get(clsName);
160 var subTreeKeys = [];
161 for (var k2 in tree[key]) subTreeKeys.push(k2);
162 if (subTreeKeys.length) {
163 innerNodes[innerNodes.length - 1].children = handleTree(clsName, tree[key]);
164 innerNodes[innerNodes.length - 1].allowDrag = false;
165 innerNodes[innerNodes.length - 1].iconCls = 'icon-pkg';
167 innerNodes[innerNodes.length - 1].clsName = clsName;
168 innerNodes[innerNodes.length - 1].text = innerNodes[innerNodes.length - 1].text + '<a rel="'+clsName+'" class="fav"></a>';
169 innerNodes[innerNodes.length - 1].iconCls = 'icon-' + clsData.data.value.clsType;
173 innerNodes[innerNodes.length - 1].iconCls = 'icon-' + clsData.data.value.clsType;
176 innerNodes[innerNodes.length - 1].text = innerNodes[innerNodes.length - 1].text + '<a rel="'+clsName+'" class="fav"></a>';
177 innerNodes[innerNodes.length - 1].leaf = true;
178 innerNodes[innerNodes.length - 1].clsName = clsName;
185 return handleTree(null, tree);
188 var classPackagesStore;
191 var resizeWindowFn = function() {
193 var treePanelCmp = Ext.getCmp('treePanelCmp'),
194 docTabPanel = Ext.getCmp('docTabPanel'),
195 container = Ext.get('container'),
196 viewportHeight = Ext.core.Element.getViewportHeight(),
197 viewportWidth = Ext.core.Element.getViewportWidth();
199 if (Ext.get('notice')) {
200 viewportHeight = viewportHeight - 40;
203 container.setStyle({position: 'absolute', height: String(viewportHeight - 40) + 'px', width: String(viewportWidth - 280) + 'px'})
206 treePanelCmp.setHeight(viewportHeight - 140);
208 Ext.get('docContent').setHeight(viewportHeight - 90);
212 docTabPanel.setHeight(viewportHeight - 125);
215 resizeWindows = null;
218 // Resize the main window and tree on resize
219 Ext.onReady(function() {
223 window.onresize = function() {
225 resizeWindows = setTimeout(resizeWindowFn, 100);
229 if (req.standAloneMode) {
230 if (window.location.href.match(/api/)) {
231 req.baseDocURL = '../';
232 } else if (window.location.href.match(/guide/)){
233 req.baseDocURL = '../';
237 classPackagesStore = new Ext.data.Store({
241 callbackParam: 'callback',
242 url : req.baseDocURL + '/classes.json',
251 var nodes = convert(this.data)[0];
252 nodes.expanded = true;
253 Ext.create('Docs.ClassTree', {