UNPKG

appinsights-usage

Version:
88 lines (64 loc) 3.01 kB
'use strict'; 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;