mirror of https://github.com/docker/docs.git
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
var assign = require('object-assign');
|
|
var Mixpanel = require('mixpanel');
|
|
var uuid = require('node-uuid');
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var util = require('./Util');
|
|
var settings;
|
|
|
|
try {
|
|
settings = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'settings.json'), 'utf8'));
|
|
} catch (err) {
|
|
settings = {};
|
|
}
|
|
|
|
var token = process.env.NODE_ENV === 'development' ? settings['mixpanel-dev'] : settings.mixpanel;
|
|
if (!token) {
|
|
token = 'none';
|
|
}
|
|
|
|
var mixpanel = Mixpanel.init(token);
|
|
|
|
if (localStorage.getItem('metrics.enabled') === null) {
|
|
localStorage.setItem('metrics.enabled', true);
|
|
}
|
|
|
|
var Metrics = {
|
|
enabled: function () {
|
|
return localStorage.getItem('metrics.enabled') === 'true';
|
|
},
|
|
setEnabled: function (enabled) {
|
|
localStorage.setItem('metrics.enabled', !!enabled);
|
|
},
|
|
track: function (name, data) {
|
|
data = data || {};
|
|
if (!name) {
|
|
return;
|
|
}
|
|
|
|
if (localStorage.getItem('metrics.enabled') !== 'true') {
|
|
return;
|
|
}
|
|
|
|
var id = localStorage.getItem('metrics.id');
|
|
if (!id) {
|
|
localStorage.setItem('metrics.id', uuid.v4());
|
|
}
|
|
|
|
var os = navigator.userAgent.match(/Mac OS X (\d+_\d+_\d+)/)[1].replace(/_/g, '.');
|
|
mixpanel.track(name, assign({
|
|
distinct_id: id,
|
|
version: util.packagejson().version,
|
|
'Operating System Version': os,
|
|
beta: !!settings.beta
|
|
}, data));
|
|
},
|
|
|
|
};
|
|
module.exports = Metrics;
|