Commit 0911cccc authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Remove use of Docs.contentState variable.

Store the state of expanded/collapsed inside the member objects themselves.
parent ccd3f493
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ Ext.define('Docs.Application', {
    launch: function() {
        Docs.App = this;
        Docs.Settings.init();
        Docs.contentState = {};

        Ext.create('Docs.view.Viewport');

+4 −10
Original line number Diff line number Diff line
@@ -157,7 +157,7 @@ Ext.define('Docs.Renderer', {

    renderMemberDiv: function(member, index) {
        this.memberTpl = this.memberTpl || new Ext.XTemplate(
            '<div id="{tagname}-{name}" class="member {firstChild} {inherited} {[values.open ? " open" : ""]}">',
            '<div id="{tagname}-{name}" class="member {firstChild} {inherited} {open}">',
                // leftmost column: expand button
                '<a href="#" class="side {expandable}">',
                    '<span>&nbsp;</span>',
@@ -184,13 +184,6 @@ Ext.define('Docs.Renderer', {
            }
        );

        var memberName = member.tagname + '-' + member.name,
            open;

        if (Docs.contentState && Docs.contentState['#!/api/' + this.cls.name] && Docs.contentState['#!/api/' + this.cls.name][memberName]) {
            open = Docs.contentState['#!/api/' + this.cls.name][memberName].expanded;
        }

        return this.memberTpl.apply(Ext.apply({
            // use classname "first-child" when it's first member in its category
            firstChild: (index === 0) ? "first-child" : "",
@@ -198,11 +191,12 @@ Ext.define('Docs.Renderer', {
            expandable: member.shortDoc ? "expandable" : "not-expandable",
            // use classname "inherited" when member is not defined in this class
            inherited: member.owner === this.cls.name ? "not-inherited" : "inherited",
            // use classname "open" to expand member description
            open: member.expanded ? "open" : "",
            // method params signature or property type signature
            signature: this.renderSignature(member),
            // full documentation together with optional parameters and return value
            longDoc: this.renderLongDoc(member),
            open: open
            longDoc: this.renderLongDoc(member)
        }, member));
    },

+19 −8
Original line number Diff line number Diff line
@@ -98,16 +98,13 @@ Ext.define('Docs.controller.Classes', {
                        var member = Ext.get(el).up('.member'),
                            docClass = member.down('.meta .docClass'),
                            clsName = docClass.getAttribute('rel'),
                            memberName = member.getAttribute('id'),
                            baseUrl = '#!/api/' + this.currentCls.name;

                        Docs.contentState[baseUrl] = Docs.contentState[baseUrl] || {};
                        Docs.contentState[baseUrl][memberName] = Docs.contentState[baseUrl][memberName] || {};
                            memberName = member.getAttribute('id');

                        if (member.hasCls('open')) {
                            Docs.contentState[baseUrl][memberName].expanded = false;
                        } else {
                            Docs.contentState[baseUrl][memberName].expanded = true;
                            this.getMember(memberName).expanded = false;
                        }
                        else {
                            this.getMember(memberName).expanded = true;
                            this.fireEvent('showMember', clsName, memberName);
                        }
                        member.toggleCls('open');
@@ -130,6 +127,20 @@ Ext.define('Docs.controller.Classes', {
        });
    },

    // Given a member name like "cfg-items", returns the corresponding member object from currentCls.
    getMember: function(longName) {
        var parts = longName.split(/-/);
        var type = parts[0];
        var name = parts[1];
        var matches = [];
        Ext.Array.forEach(['members', 'statics'], function(cat) {
            matches = matches.concat(Ext.Array.filter(this.currentCls[cat][type], function(m) {
                return m.name === name;
            }, this));
        }, this);
        return matches[0];
    },

    // We don't want to select the class that was opened in another window,
    // so restore the previous selection.
    handleUrlClick: function(url, event, view) {