AppSuite:Metrics-Details: Difference between revisions

From Open-Xchange
(Created page with "=== Details === ==== Overview ==== {{metrics-01.jpg| image}} ==== Listener ==== With metrics in mind listeners are waiting for special events to occur - usually a user act...")
 
No edit summary
Line 1: Line 1:
=== Details ===
=== Metrics: Details ===


==== Overview ====
==== Overview ====

Revision as of 08:02, 22 September 2015

Metrics: Details

Overview

Template:Metrics-01.jpg

Listener

With metrics in mind listeners are waiting for special events to occur - usually a user action that manifests as a mouse click.

Common practice is to register listeners by using jQuerie’s delagate (TODO: link) function. For example this snippet would listen for any mousedown event on an action icon within the mail app toolbar.

$('.classic-toolbar-container').delegate('.io-ox-action-link', 'mousedown', yourHandler); hint: please do not register these listeners when metrics is disabled to avoid unnecessary work for the client.

Handlers

Handler call the public functions of the metrics module. To gain access to the metrics object simply require ‘io.ox/metrics/main’.

require(['io.ox/metrics/main'], function(metrics) {

   metrics.trackEvent({
       app: 'mail',
       target: 'detail/toolbar',
       type: 'click',
       action: $(e.currentTarget).attr('data-action')
   });

});

Metrics module

The metrics module provide some simple api that enables you to track events.

trackEvent()

//app//

 * application name
 * //example: ‘mail’//

//target//

 * container/area
 * //example: ‘detail/toolbar’//

//type//

 * type of event
 * //example: ‘click’//

//action//

 * name/id of the action
 * //example: ‘delete’//
trackPage()

//name//

 * name of the page. for OX Appsuite this is the name of the application
 * //example: ‘mail’//

//id//

 * id of the page.
 * //example: ‘io.ox/mail’//

//name//

 * name of the page
 * //example: ‘Mail’//
trackVariable()
 * currently unused
watch(options, data)

Shortcut to register a trackEvent listener by using _.delegate on a container node

watch({

   node: $('#my-actions'),
   selector: '#my-button',
   event: 'click'

}, dataToTrack)

= getUserHash()

return unique user (based on cookie value)

isEnabled()

returns boolean that indicates status of the metrics module

require(['io.ox/metrics/main'], function (metrics) {

   var name = app.get('parent').get('name') || 'unknown',
       apptitle = _.last(name.split('/')),
       facet = model.get('facet').get('id').split(':')[0];
   // toolbar actions
   metrics.trackEvent({
       app: apptitle,
       target: apptitle + '/search/facet/' + facet,
       action: 'search',
       value: facet
   });

});