Commit de9f46b6 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Created Docs.ClassLoader class.

Turned the remaining global functions in functions.js into ClassLoader
class.  Removed the functions.js.
parent babeb511
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -106,9 +106,8 @@
  </script>
  <script type="text/javascript" src="output/tree.js"></script>

  <script type="text/javascript" src="js/functions.js"></script>

  <script type="text/javascript" src="js/App.js"></script>
  <script type="text/javascript" src="js/ClassLoader.js"></script>
  <script type="text/javascript" src="js/History.js"></script>
  <script type="text/javascript" src="js/PageHeader.js"></script>
  <script type="text/javascript" src="js/ClassTree.js"></script>
+81 −0
Original line number Diff line number Diff line
/**
 * Manages the loading of class documentation.
 */
Ext.define("Docs.ClassLoader", {
    singleton: true,
    cache: {},

    /**
     * Loads class.
     *
     * @param {String} cls  name of the class to load
     * @param {Boolean} noHistory  true to disable adding entry to browser history
     */
    load: function(cls, noHistory) {
        var member,
            hashIdx = cls.indexOf('#');

        if (hashIdx > 0) {
            member = cls.substr(hashIdx + 1);
            cls = cls.substr(0, hashIdx);
        }

        if (!noHistory) {
            Docs.History.push(cls);
        }

        Docs.App.setClassMode();
        var docTabPanel = Ext.getCmp('docTabPanel');
        if (docTabPanel) {
            Ext.getCmp('docTabPanel').setActiveTab(0);
        }

        if (this.cache[cls]) {
            this.showClass(this.cache[cls], member);
        } else {
            if (docTabPanel) {
                Ext.getCmp('doc-overview').setLoading(true);
            }

            Ext.Ajax.request({
                url: Docs.App.getBaseUrl() + '/output/' + cls + '.json',
                success: function(response, opts) {
                    var json = Ext.JSON.decode(response.responseText);
                    this.cache[cls] = json;
                    this.showClass(json, member);
                },
                failure : function(response, opts) {
                    console.log('Fail');
                },
                scope: this
            });
        }
    },

    showClass: function(cls, anchor) {
        var docTabPanel = Ext.getCmp('docTabPanel');
        if (!docTabPanel) {
            Ext.create('Docs.ClassPanel');
        }

        Ext.get('docTabPanel').show();
        var pageContent = Ext.get('pageContent');
        if (pageContent) {
            pageContent.setVisibilityMode(Ext.core.Element.DISPLAY).hide();
        }

        Docs.PageHeader.load(cls);

        var docOverviewTab = Ext.getCmp('doc-overview');
        docOverviewTab.load(cls);
        docOverviewTab.setLoading(false);

        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);
        }
    }
});
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ Ext.define('Docs.ClassTree', {
            var clsName = node.raw ? node.raw.clsName : node.data.clsName;

            if (clsName) {
                getDocClass(clsName);
                Docs.ClassLoader.load(clsName);
            } else if (!node.isLeaf()) {
                if (node.isExpanded()) {
                    node.collapse(false);
+2 −2
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ Ext.define("Docs.History", {
        window.addEventListener('popstate', function(e) {
            e.preventDefault();
            if (e.state && e.state.docClass) {
                getDocClass(e.state.docClass, true);
                Docs.ClassLoader.load(e.state.docClass, true);
            }
            return false;
        }, false);
@@ -22,7 +22,7 @@ Ext.define("Docs.History", {
        var matches = document.location.hash.match(/#\/api\/(.*)/);
        if (matches) {
            var className = matches[1];
            getDocClass(className, true);
            Docs.ClassLoader.load(className, true);
        }
    },

+1 −1
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ Ext.define('Docs.OverviewPanel', {
            });

            cmp.el.addListener('click', function(cmp, el) {
                getDocClass(el.rel);
                Docs.ClassLoader.load(el.rel);
            }, this, {
                preventDefault: true,
                delegate: '.docClass'
Loading