2 * Manages the front page and switching between the main parts of docs
5 Ext.define("Docs.App", {
9 * Returns base URL used for making AJAX requests.
10 * @return {String} URL
12 getBaseUrl: function() {
13 return document.location.href.replace(/#.*/, "").replace(/index.html/, "");
17 * Initializes listeners for all kind of links on front page.
20 this.initResizeWindow();
22 Ext.core.DomHelper.append(Ext.get("api-overview"), this.renderOverviewData(Docs.overviewData));
24 // load front page when clicked on logo
25 Ext.get(Ext.query(".header > h2 > a")[0]).addListener('click', function() {
27 Docs.History.push("");
28 }, this, {preventDefault: true});
30 // load guide when clicked on guide link
31 Ext.Array.forEach(Ext.query("#api-overview .guides a"), function(el) {
32 Ext.get(el).addListener('click', function() {
34 Docs.Guides.load(el.className);
35 }, this, {preventDefault: true});
38 // render classes tree
39 Ext.create('Docs.ClassTree', {
43 Ext.tip.QuickTipManager.init();
47 setIndexMode: function() {
48 Ext.get("top-block").setStyle({display: 'block'});
49 Ext.get("top-block").update('<h1>Ext JS 4.0 API Documentation</h1>');
51 Ext.get("api-overview").setStyle({display: 'block'});
52 Ext.get("api-guide").setStyle({display: 'none'}).update("");
53 Ext.get("api-class").setStyle({display: 'none'});
56 setGuideMode: function() {
57 Ext.get("top-block").setStyle({display: 'none'});
59 Ext.get("api-overview").setStyle({display: 'none'});
60 Ext.get("api-guide").setStyle({display: 'block'});
61 Ext.get("api-class").setStyle({display: 'none'});
64 setClassMode: function() {
65 Ext.get("top-block").setStyle({display: 'block'});
67 Ext.get("api-overview").setStyle({display: 'none'});
68 Ext.get("api-guide").setStyle({display: 'none'}).update("");
69 Ext.get("api-class").setStyle({display: 'block'});
72 initResizeWindow: function() {
74 // Resize the main window and tree on resize
75 window.onresize = Ext.bind(function() {
76 if (!this.resizeTimeout) {
77 this.resizeTimeout = Ext.Function.defer(this.resizeWindow, 100, this);
82 resizeWindow: function() {
83 var treePanelCmp = Ext.getCmp('treePanelCmp'),
84 docTabPanel = Ext.getCmp('docTabPanel'),
85 container = Ext.get('container'),
86 viewportHeight = Ext.core.Element.getViewportHeight(),
87 viewportWidth = Ext.core.Element.getViewportWidth();
89 if (Ext.get('notice')) {
90 viewportHeight = viewportHeight - 40;
95 height: String(viewportHeight - 40) + 'px',
96 width: String(viewportWidth - 280) + 'px'
100 treePanelCmp.setHeight(viewportHeight - 140);
102 Ext.get('docContent').setHeight(viewportHeight - 90);
106 docTabPanel.setHeight(viewportHeight - 125);
109 this.resizeTimeout = null;
112 renderOverviewData: function(data) {
113 var tpl = new Ext.XTemplate(
114 '<tpl for="organisation">',
115 '<div class="category">',
117 '<tpl for="categories">',
118 '<div class="{align}">',
121 '<div class="links">',
122 '{[this.renderClasses(values)]}',
127 '<div style="clear:both"></div>',
131 renderClasses: function(category) {
132 return Ext.Array.map(data.categories[category].classes, function(cls) {
133 return Ext.String.format('<a href="#/api/{0}" rel="{0}" class="docClass">{0}</a>', cls);
138 return tpl.apply(data);