+++ /dev/null
-if (!Array.prototype.forEach)
-{
- Array.prototype.forEach = function(fun /*, thisp*/)
- {
- var len = this.length;
- if (typeof fun != "function")
- throw new TypeError();
-
- var thisp = arguments[1];
- for (var i = 0; i < len; i++)
- {
- if (i in this)
- fun.call(thisp, this[i], i, this);
- }
- };
-}
-
-Ext.define('Docs.SourceCodePanel', {
- extend: 'Ext.panel.Panel',
-
- id: 'doc-source',
- title: 'Source',
- autoScroll: true,
- listeners: {
- activate: function(a,b,c) {
- var self = this;
-
- var url = req.baseDocURL + '/source/' + req.source,
- idx = url.indexOf('#');
- if (idx) {
- url = url.substr(0, idx);
- }
-
- Ext.Ajax.request({
- method : 'GET',
- url : url + '?plain=1',
-
- success : function(response, opts) {
- self.update('<pre class="prettyprint">' + response.responseText + '</pre>');
- prettyPrint();
- },
- failure : function(response, opts) {
- console.log('Fail');
- }
- });
- }
- }
-});
-
-Ext.define('Docs.OverviewToolbar', {
- extend: 'Ext.toolbar.Toolbar',
- dock: 'top',
- id: 'overview-toolbar',
- cls: 'member-links',
- padding: '3 5',
-
- items: [],
-
- initComponent: function() {
-
- var self = this;
- var members = [
- ['cfgs', 'Configs', 'configs', 'config'],
- ['properties', 'Properties', 'properties', 'property'],
- ['methods', 'Methods', 'methods', 'method'],
- ['events', 'Events', 'events', 'event']
- ];
- this.items = [];
-
- members.forEach(function(member) {
-
- if (clsInfo[member[0]] && clsInfo[member[0]].length) {
-
- var menuItems = [];
- for(var i=0; i< clsInfo[member[0]].length; i++) {
- var memberName = clsInfo[member[0]][i];
- menuItems.push({text: memberName, memberName: member[3] + '-' + memberName});
- }
-
- var butMenu = Ext.create('Ext.menu.Menu', {
- items: menuItems,
- plain: true,
- listeners: {
- click: function(menu, item) {
- Ext.getCmp('doc-overview').scrollToEl("a[name=" + item.memberName + "]");
- }
- }
- });
-
- self.items.push({
- xtype: 'splitbutton',
- iconCls: 'icon-' + member[3],
- cls: member[2],
- text: member[1] + ' <span class="num">' + clsInfo[member[0]].length + '</span>',
- listeners: {
- click: function() {
- Ext.getCmp('doc-overview').scrollToEl("a[name=" + member[2] + "]");
- }
- },
- menu: butMenu
- });
- }
- });
-
- if (clsInfo.subclasses.length) {
- var menuItems = [];
- for(var i=0; i< clsInfo.subclasses.length; i++) {
- menuItems.push({text: clsInfo.subclasses[i], clsName: clsInfo.subclasses[i]});
- }
-
- var butMenu = Ext.create('Ext.menu.Menu', {
- items: menuItems,
- plain: true,
- listeners: {
- click: function(menu, item) {
- getDocClass(item.clsName);
- }
- }
- });
-
- self.items.push({
- xtype: 'button',
- cls: 'subcls',
- iconCls: 'icon-subclass',
- text: 'Sub Classes <span class="num">' + clsInfo.subclasses.length + '</span>',
- menu: butMenu
- });
- }
-
- self.items = self.items.concat([
- { xtype: 'tbfill' },
- {
- boxLabel: 'Hide inherited',
- boxLabelAlign: 'before',
- xtype: 'checkbox',
- margin: '0 5 0 0',
- padding: '0 0 5 0',
- handler: function(el) {
- Ext.query('.member.inherited').forEach(function(m) {
- if(el.checked) {
- Ext.get(m).setStyle({display: 'none'});
- } else {
- Ext.get(m).setStyle({display: 'block'});
- }
- });
-
- Ext.query('.member.f').forEach(function(m) {
- Ext.get(m).removeCls('f');
- });
-
- ['cfgs', 'properties', 'methods', 'events'].forEach(function(m) {
- // If the number of inherited members is the same as the total number of members...
- if (Ext.query('.m-'+m+' .member').length == Ext.query('.m-'+m+' .member.inherited').length) {
- var first = Ext.query('.m-'+m)[0];
- if (first) {
- if (el.checked) {
- Ext.get(Ext.query('.m-'+m)[0]).setStyle({display: 'none'});
- } else {
- Ext.get(Ext.query('.m-'+m)[0]).setStyle({display: 'block'});
- }
- }
- }
- var t = el.checked ? 'ni' : 'member';
- var firstMemberEl = Ext.query('.m-'+m+' .member.' + t);
- if (firstMemberEl.length > 0) {
- Ext.get(firstMemberEl[0]).addCls('f');
- }
- });
- }
- },
- {
- xtype: 'button',
- iconCls: 'expandAllMembers',
- handler: function() {
- Ext.query('.member').forEach(function(el) {
- Ext.get(el).addCls('open');
- });
- }
- },
- {
- xtype: 'button',
- iconCls: 'collapseAllMembers',
- handler: function() {
- Ext.query('.member').forEach(function(el) {
- Ext.get(el).removeCls('open');
- });
- }
- }
- ]);
-
- this.callParent(arguments);
- }
-});
-
-Ext.define('Docs.OverviewPanel', {
- extend: 'Ext.panel.Panel',
-
- id: 'doc-overview',
- cls: 'doc-tab iScroll',
- title: 'Overview',
- autoScroll: true,
-
- scrollToEl: function(query) {
- var el = Ext.get(Ext.query(query)[0]);
- if (el) {
- var scrollOffset = el.getY() - 150;
- var docContent = Ext.get(Ext.query('#doc-overview .x-panel-body')[0]);
- var currentScroll = docContent.getScroll()['top'];
- docContent.scrollTo('top', currentScroll + scrollOffset, true);
-
- var prnt = el.up('.member');
- if (prnt) {
- Ext.get(prnt).addCls('open');
- }
- }
- },
-
- listeners: {
- afterrender: function(cmp) {
- cmp.el.addListener('click', function(cmp, el) {
- Ext.get(Ext.get(el).up('.member')).toggleCls('open');
- }, this, {
- preventDefault: true,
- delegate: '.expand'
- });
- cmp.el.addListener('click', function(cmp, el) {
- getDocClass(el.rel);
- }, this, {
- preventDefault: true,
- delegate: '.docClass'
- });
- prettyPrint();
- }
- },
-
- initComponent: function() {
- this.dockedItems = [
- Ext.create('Docs.OverviewToolbar')
- ];
-
- if (Ext.get('doc-overview-content')) {
- this.contentEl = 'doc-overview-content';
- }
-
- this.callParent(arguments);
- }
-});
-
-
-Ext.define('Docs.classPanel', {
- extend: 'Ext.tab.Panel',
-
- id: 'docTabPanel',
- renderTo: 'docContent',
-
- style: 'border-color: #bfbfbf;',
- plain: true,
-
- // Remember tab scroll position on Webkit
- listeners: {
- beforetabchange: function(tabPanel, newCard, oldCard) {
- oldCard.prevScroll = oldCard.body.getScroll()['top'];
- },
- tabchange: function(tabPanel, newCard, oldCard) {
- if (newCard.prevScroll) {
- newCard.body.scrollTo('top', newCard.prevScroll);
- }
- },
- afterrender: function() {
- resizeWindowFn();
- }
- },
-
- initComponent: function() {
-
- this.height = Ext.get('docContent').getHeight() - 55;
- this.items = [ Ext.create('Docs.OverviewPanel') ];
-
- if (!req.standAloneMode) {
- this.items.push(Ext.create('Docs.SourceCodePanel'));
- }
-
- this.callParent(arguments);
- }
-});
-
-var classCache = {};
-var getDocClass = function(cls, noHistory) {
-
- var member,
- hashIdx = cls.indexOf('#');
-
- if (hashIdx > 0) {
- member = cls.substr(hashIdx + 1);
- cls = cls.substr(0, hashIdx);
- }
-
- if (req.standAloneMode) {
- if (window.location.href.match(/api/)) {
- window.location = cls + '.html';
- } else if (window.location.href.match(/guide/)){
- window.location = '../api/' + cls + '.html';
- } else {
- window.location = 'api/' + cls + '.html';
- }
- return;
- }
-
- var fullUrl = req.baseDocURL + "/api/" + cls;
- if (!noHistory && window.history && window.history.pushState) {
- window.history.pushState({
- docClass: cls
- },
- '', fullUrl);
- }
-
- var docTabPanel = Ext.getCmp('docTabPanel');
- if (docTabPanel) {
- Ext.getCmp('docTabPanel').setActiveTab(0);
- }
-
- if(classCache[cls]) {
- showClass(classCache[cls], member);
- } else {
- if (docTabPanel) {
- Ext.getCmp('doc-overview').setLoading(true);
- }
-
- Ext.data.JsonP.request({
- callbackKey: 'docsCallback',
- url : req.baseDocURL + '/api/' + cls + '/ajax',
-
- success : function(response, opts) {
- classCache[response.cls] = response;
- showClass(response, member);
- },
- failure : function(response, opts) {
- console.log('Fail');
- }
- });
- }
-};
-
-var showClass = function(resp, anchor) {
-
- var docTabPanel = Ext.getCmp('docTabPanel');
-
- clsInfo = resp.clsInfo;
- req.docClass = resp.cls;
- req.source = resp.source;
-
- if (!docTabPanel) {
- Ext.get('docContent').update('');
- Ext.create('Docs.classPanel');
- }
-
- Ext.get('docTabPanel').show();
- var pageContent = Ext.get('pageContent');
- if (pageContent) {
- pageContent.setVisibilityMode(Ext.core.Element.DISPLAY).hide();
- }
-
- var docOverviewTab = Ext.getCmp('doc-overview');
-
- docOverviewTab.update(resp.content);
- docOverviewTab.removeDocked(Ext.getCmp('overview-toolbar'), true);
- docOverviewTab.addDocked(Ext.create('Docs.OverviewToolbar'));
- docOverviewTab.setLoading(false);
-
- prettyPrint();
-
- var historyItems = Ext.getCmp('historyItems');
- if (historyItems) {
-
- var item = classPackagesStore.getById(resp.cls);
-
- var menuItem = {
- text: resp.cls
- };
- if (item.data.value.clsType) {
- menuItem.iconCls = 'icon-'+item.data.value.clsType;
- }
-
- historyItems.insert(0, menuItem);
- }
-
-
- Ext.get('top-block').update(resp.title);
- if (anchor) {
- Ext.getCmp('doc-overview').scrollToEl("a[name=" + anchor + "]");
- } else {
- var docContent = Ext.get(Ext.query('#doc-overview .x-panel-body')[0]);
- docContent.scrollTo('top', 0);
- }
-};
-
-var showContent = function(title, html) {
- Ext.getCmp('docTabPanel').hide();
- Ext.get('pageContent').setVisibilityMode(Ext.core.Element.DISPLAY).show().update(html);
-};
-
-
-/**
- * History manager for compliant browsers
- */
-if (window.history && window.history.pushState && !req.standAloneMode) {
-
- // window.addEventListener('hashchange', function(e) {
- // // console.log('Hash changed')
- // });
-
- var ignoreInitialHistory = true;
-
- window.addEventListener('popstate', function(e) {
- e.preventDefault();
-
- if (ignoreInitialHistory) {
- ignoreInitialHistory = false;
- return false;
- }
-
- if (e.state && e.state.docClass) {
- getDocClass(e.state.docClass, true);
- }
- return false;
- }, false);
-}
-
-
-
-// Ext.onReady(function() {
-//
-// Ext.define('Docs.tabBar', {
-// extend: 'Ext.tab.Panel',
-//
-// id: 'tabBar',
-// items: [],
-// renderTo: Ext.getBody(),
-// width: 500,
-// plain: true,
-// tabPosition: 'bottom',
-// // minTabWidth: 50,
-// autoRender: true,
-// listeners: {
-// afterrender: function() {
-// this.alignTo('top-block', 'tr', [-500, -10])
-// }
-// },
-//
-// initComponent: function() {
-//
-// var me = this;
-//
-// for(var i=0; i< 15; i++) {
-// this.items.push({
-// // xtype: 'tab',
-// title: 'test ' + i
-// // tabBar: me
-// })
-// }
-//
-// this.callParent(arguments);
-// }
-// });
-//
-// Ext.create('Docs.tabBar')
-//
-// })
\ No newline at end of file