Statistics Library Documentation

This JavaScript library provides methods for collecting and aggregating numerical data, useful for analytics, charts, and real-time metrics.

Integration into your development project

{
  "javascript": {
    "eval": [
      "service/*",
      "vendor-appnameservice.js"
    ]
  },
  "apis": {
    "vendor-appname": {
      "com.innovaphone.statistics": {}
    }
  }
}

Initialization

To initialize the library, pass an options object specifying table names:

var stats = new Statistics({
    datasetsTable: "statistics_datasets",
    dataTable: "statistics_data"
});

Methods

createDataset(datasetName, type, callback)

Creates a dataset if it doesn't already exist.

Examples:

stats.createDataset("pageViews", "sum");
stats.createDataset("cpuUsage", "max");
stats.createDataset("existingData", null, function(obj, callback){});

insertData(datasetName, value)

Inserts a numerical value into the current hour's bucket for the dataset.

stats.insertData("pageViews", 1);

Notes

Example

var stats = new Statistics({
    datasetsTable: "appname_stat_datasets",
    dataTable: "appname_stat_data"
})
.createDataset("usage")
.createDataset("cpu", "max")
.createDataset("customDataFromYourApp", null, getCustomData);

function getCustomData(obj, callback) {
    if (obj.mode === "live") {
        getCountsLive(obj.start, function (err, result) {
            if (err) {
                callback(err.error || "Unknown Error");
            } else if (result) {
                var data = { next: result.next, counts: result.counts };
                callback(null, data);
            } else {
                callback("No Results");
            }
        });
    } else {
        getCountsForPeriod(obj.start, obj.end, obj.mode, function (err, result) {
            if (err) {
                callback(err.error || "Unknown Error");
            } else if (result) {
                var data = { next: result.next, counts: result.counts };
                callback(null, data);
            } else {
                callback("No Results");
            }
        });
    }
}