Commit 3ee957e9 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Cleanup of event tracking.

- Separated out two events: showClass and showMember.
- The showMember now also gets fired when navigating to a member
  within one class.
- All the tracking events are now fired *after* the thing has happened.
  That's the common practice in ExtJS and also useful when something
  goes wrong in the event handler.
- Added documentation.
- Cleaned up trailing whitespace.
parent 07e26333
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -86,15 +86,17 @@ task :export do
        s.parentNode.insertBefore(ga, s);
      })();

      Docs.afterLaunch = function() {
          Docs.App.getController('Classes').addListener('showClass', function(cls, anchor) { 
      Docs.initEventTracking = function() {
          Docs.App.getController('Classes').addListener({
              showClass: function(cls) {
                  _gaq.push(['_trackEvent', 'Classes', 'Show', cls]);
              if (anchor) {
              },
              showMember: function(cls, anchor) {
                  _gaq.push(['_trackEvent', 'Classes', 'Member', cls + ' - ' + anchor]);
              }
          });
          Docs.App.getController('Classes').addListener('showGuide', function(guide) { 
              },
              showGuide: function(guide) {
                  _gaq.push(['_trackEvent', 'Guides', 'Show', guide]);
              }
          });
      }
    </script>
+4 −3
Original line number Diff line number Diff line
@@ -27,8 +27,9 @@ Ext.define('Docs.Application', {
        Docs.History.init();
        Docs.Settings.init();

        if (Docs.afterLaunch) {
            Docs.afterLaunch();
        // When google analytics event tracking script present on page
        if (Docs.initEventTracking) {
            Docs.initEventTracking();
        }
    }
});
+26 −11
Original line number Diff line number Diff line
@@ -37,11 +37,27 @@ Ext.define('Docs.controller.Classes', {
    ],

    init: function() {
        
        this.addEvents({
            "showClass" : true,
            "showGuide" : true
        });
        this.addEvents(
            /**
             * @event showClass
             * Fired after class shown. Used for analytics event tracking.
             * @param {String} cls  name of the class.
             */
            "showClass",
            /**
             * @event showMember
             * Fired after class member scrolled to view. Used for analytics event tracking.
             * @param {String} cls  name of the class.
             * @param {String} anchor  name of the member in form type-name like "method-bind".
             */
            "showMember",
            /**
             * @event showGuide
             * Fired after guide shown. Used for analytics event tracking.
             * @param {String} guide  name of the guide.
             */
            "showGuide"
        );

        Ext.getBody().addListener('click', function(cmp, el) {
            this.loadClass(el.rel);
@@ -141,7 +157,6 @@ Ext.define('Docs.controller.Classes', {
    },

    showClass: function(cls, anchor) {
        
        if (this.currentCls != cls) {
            var container = Ext.getCmp('container'),
                showClass = container.down('showclass'),
@@ -157,11 +172,12 @@ Ext.define('Docs.controller.Classes', {
            }

            this.getTree().selectClass(cls.name);
            this.fireEvent('showClass', cls.name, anchor);        
            this.fireEvent('showClass', cls.name);
        }

        if (anchor) {
            this.getClassOverview().scrollToEl("#" + anchor);
            this.fireEvent('showMember', cls.name, anchor);
        } else {
            this.getClassOverview().getEl().down('.x-panel-body').scrollTo('top', 0);
        }
@@ -172,8 +188,6 @@ Ext.define('Docs.controller.Classes', {
    showGuide: function(name, noHistory) {
        noHistory || Docs.History.push("/guide/" + name);

        this.fireEvent('showGuide', name);

        Ext.data.JsonP.request({
            url: this.getBaseUrl() + "/guides/" + name + "/README.js",
            callbackName: name,
@@ -181,6 +195,7 @@ Ext.define('Docs.controller.Classes', {
                Ext.getCmp("guide").update(json.guide);
                Ext.getCmp('container').layout.setActiveItem(2);
                Docs.Syntax.highlight(Ext.get("guide"));
                this.fireEvent('showGuide', name);
            },
            scope: this
        });
+1 −1

File changed.

Contains only whitespace changes.