      1 /**
      2  * @fileoverview Basic metrics capability.  Expectation is that new metrics will
      3  *  likely be set up as separate files / separate sets.
      4  */
      5
      6 /**
      7  * @namespace
      8  */
      9 var Ozone = Ozone || {};
     10
     11 /**
     12  * @namespace
     13  */
     14 Ozone.metrics = Ozone.metrics || {};
     15
     16 /**
     17  * @description Basic logging capability - meant to be called by other methods
     18  *    which transform or validate data
     19  * @since OWF 3.8.0
     20  *
     21  * @param {String} userId
     22  * @param {String} userName
     23  * @param {String} metricSite Identifier, potentially URL, for source of metric - typically OWF instance
     24  * @param {String} componentName
     25  * @param {String} componentId
     26  * @param {String} componentInstanceId
     27  * @param {String} metricTypeId String describing metric - recommend package name construct
     28  * @param {String} metricData Any additional data for metric - do any necessary validation appropriate to metricTypeId before sending through
     29  */
     30 Ozone.metrics.logMetric = function(userId, userName, metricSite, componentName, componentId, componentInstanceId, metricTypeId, metricData) {
     31 	var currentDate = new Date();
     32
     33     Ozone.util.Transport.send({
     34         url: OWF.getContainerUrl() + '/metric',
     35         method: 'POST',
     36         onSuccess: function(response) {
     37         },
     38         autoSendVersion : false,
     39         content : {
     40           metricTime: currentDate.getTime(),
     41           userId: userId,
     42           userName: userName,
     43           site: metricSite,
     44           userAgent: navigator.userAgent,
     45           component: componentName,
     46           componentId: componentId,
     47           instanceId: componentInstanceId,
     48           metricTypeId: metricTypeId,
     49           widgetData: metricData
     50         }
     51     });
     52 };
     53
     54 /**
     55  * @description Logs a set of metrics to the server all at once.  All
     56  * metrics passed into a call to this function will be logged in a single
     57  * HTTP request, instead of one request per metric
     58  * @since OWF 6.0
     59  *
     60  * @param {Array} metrics
     61  * @param {String} metrics[*].userId
     62  * @param {String} metrics[*].userName
     63  * @param {Number} metrics[*].metricTime The time at which is metric was collected (in UNIX time)
     64  * @param {String} metrics[*].site Identifier, potentially URL, for source of metric - typically OWF instance
     65  * @param {String} metrics[*].component
     66  * @param {String} metrics[*].componentId
     67  * @param {String} metrics[*].instanceId
     68  * @param {String} metrics[*].metricTypeId String describing metric - recommend package name construct
     69  * @param {String} metrics[*].widgetData Any additional data for metric - do any necessary validation appropriate to metricTypeId before sending through
     70  * @param {String} metrics[*].userAgent Should be set to the user-agent string of the browser
     71  */
     72 Ozone.metrics.logBatchMetrics = function(metrics) {
     73 	var currentDate = new Date();
     74
     75     Ozone.util.Transport.send({
     76         url: OWF.getContainerUrl() + '/metric',
     77         method: 'POST',
     78         onSuccess: function(response) {
     79         },
     80         autoSendVersion : false,
     81         content : {
     82         	data: metrics
     83         }
     84     });
     85 };
     86
     87 /**
     88  * @description Log view of widget - see calls in dashboards
     89  * @since OWF 3.8.0
     90  *
     91  * @param {String} userId     - see Ozone.metrics.logMetric userId
     92  * @param {String} userName   - see Ozone.metrics.logMetric userName
     93  * @param {String} metricSite - see Ozone.metrics.logMetric metricSite
     94  * @param {Object} widget
     95  */
     96 Ozone.metrics.logWidgetRender = function(userId, userName, metricSite, widget) {
     97
     98   // checking here, on the assumption we may save ourselves some validation time
     99   //   on any widget data validation (last param)
    100   if (Ozone.config.metric.enabled === true) {
    101       Ozone.metrics.logMetric(userId, userName, metricSite, widget.name, widget.widgetGuid, widget.id, "ozone.widget.view", "");
    102       }
    103 };
    104