appinsights-usage
Version:
Javascript module to track usage with Application Insights
88 lines (64 loc) • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _applicationinsightsJs = require('applicationinsights-js');
var _away = require('away');
var _away2 = _interopRequireDefault(_away);
var _removeValue = require('remove-value');
var _removeValue2 = _interopRequireDefault(_removeValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var UsageTracker = {
timespanOfInactivityToExpireSession: 1800000,
windowId: Date.now(),
init: function init(appInsightsOptions) {
if (!window.localStorage) {
return;
}
_applicationinsightsJs.AppInsights.downloadAndSetup(appInsightsOptions);
var timer = (0, _away2.default)(this.timespanOfInactivityToExpireSession);
if (this.allWindowsAreInactive()) {
localStorage.setItem('startSessionTimestamp', Date.now());
}
this.markWindowAsActive();
var self = this;
window.onbeforeunload = function () {
self.markWindowAsInactive();
if (self.allWindowsAreInactive()) {
self.sendSessionMetric(Date.now() - parseInt(localStorage.getItem('startSessionTimestamp')));
}
};
timer.on('idle', function () {
self.markWindowAsInactive();
if (self.allWindowsAreInactive()) {
self.sendSessionMetric(Date.now() - parseInt(localStorage.getItem('startSessionTimestamp')) - self.timespanOfInactivityToExpireSession);
}
});
timer.on('active', function () {
if (self.allWindowsAreInactive()) {
localStorage.setItem('startSessionTimestamp', Date.now());
}
self.markWindowAsActive.bind(self)();
});
},
allWindowsAreInactive: function allWindowsAreInactive() {
return !localStorage.getItem('activeWindows') || localStorage.getItem('activeWindows').length == 0;
},
markWindowAsInactive: function markWindowAsInactive() {
var activeWindows = localStorage.getItem('activeWindows');
activeWindows = (0, _removeValue2.default)(activeWindows.split(","), this.windowId.toString()).toString();
localStorage.setItem('activeWindows', activeWindows);
},
markWindowAsActive: function markWindowAsActive() {
var activeWindows = localStorage.getItem('activeWindows') ? localStorage.getItem('activeWindows') : '';
activeWindows += "," + this.windowId;
localStorage.setItem('activeWindows', activeWindows);
},
sendSessionMetric: function sendSessionMetric(durationInMs) {
_applicationinsightsJs.AppInsights.trackMetric("Session Duration (seconds)", Math.round(durationInMs / 1000), 1);
_applicationinsightsJs.AppInsights.flush();
//for logging only:
// localStorage.setItem('Sessions', localStorage.getItem('Sessions')+","+Math.round(durationInMs/1000));
}
};
exports.default = UsageTracker;