lib/countly.device_details.js

var countlyModel = require('./countly.model.js');
var countlyCommon = require('./countly.common.js');
var countlyOsMapping = require('../../frontend/express/public/javascripts/countly/countly.device.osmapping.js');

/**
* This module defines default model to handle device_details data
* @module "api/lib/countly.device_details"
* @extends module:api/lib/countly.model~countlyMetric
*/

/**
* Model creator
* @returns {object} new model
*/
function create() {
    /** @lends module:api/lib/countly.device_details */
    var countlyDeviceDetails = countlyModel.create(function(rangeArr) {
        return rangeArr.replace(/:/g, ".");
    });

    /**
     * Function to fix data based on segement for Bars
     * @param  {String} segment - name of the segment/metric to get data for, by default will use default _name provided on initialization
     * @param  {Object} rangeData - countly standard metric data object
     * @returns {Object} - metric data object
     */
    countlyDeviceDetails.fixBarSegmentData = function(segment, rangeData) {
        var i;

        if (segment === "os") {
            var chartData = rangeData.chartData;
            for (i = 0; i < chartData.length; i++) {
                if (countlyOsMapping[chartData[i].range.toLowerCase()]) {
                    chartData[i].os = countlyOsMapping[chartData[i].range.toLowerCase()].name;
                }
            }

            chartData = countlyCommon.mergeMetricsByName(chartData, "os");
            rangeData.chartData = chartData;
        }

        return rangeData;
    };

    return countlyDeviceDetails;
}
module.exports = create;