%PDF- %PDF-
| Direktori : /data/old/home/stash/atlassian/stash/3.7.1/atlassian-stash/static/widget/ |
| Current File : //data/old/home/stash/atlassian/stash/3.7.1/atlassian-stash/static/widget/setup-tracking.js |
define('widget/setup-tracking', [
'jquery',
'lodash',
'util/client-storage',
'exports'
], function(
$,
_,
clientStorage,
exports
) {
'use strict';
var SESSION_STORE_KEY = 'stash.setup.complete.data';
/**
* @typedef {Object} Tracking
* @property {boolean} isDevMode
* @property {String} pageId
* @property {String} serverId
* @property {String} version
*/
/**
* @param {Tracking} tracking
*/
var setupIframe = function(tracking) {
var iframeHost = tracking.isDevMode ? "https://qa-wac.internal.atlassian.com" : "https://www.atlassian.com";
var iframeContextPath = "/pingback";
var iframeQueryStringParams = $.param({
product: 'stash',
sid: tracking.serverId,
pg: tracking.pageId,
v: tracking.version
});
// Setup progress iframe tracker
$("<iframe>").attr("id", "setup-progress-iframe").css("display", "none").appendTo("body").attr("src", iframeHost + iframeContextPath + "?" + iframeQueryStringParams);
};
function clearCompleteTracking() {
return clientStorage.removeSessionItem(SESSION_STORE_KEY);
}
/**
* @returns {Tracking} The tracking information that should be used on the setup page, or null if its not in session
* storage.
*/
function getCompleteTracking() {
return clientStorage.getSessionItem(SESSION_STORE_KEY);
}
/**
* @param {Tracking} currentTracking The tracking page for the current page.
*/
function storeCompleteTracking(currentTracking) {
var completeTracking = _.extend({}, currentTracking, {pageId: 'setup-complete'});
clientStorage.setSessionItem(SESSION_STORE_KEY, completeTracking);
}
/**
* Tracks progress through the setup wizard in order to measure drop off
*/
function track(maybePageId) {
var $content = $("#content");
// ServerId is used to uniquely identify an installation
var serverId = $content.attr('data-server-id');
var isDevMode = $content.attr('data-dev-mode-enabled') === "true";
var version = $.trim($("#product-version").text());
var pageId = maybePageId ? maybePageId : window.location.pathname.replace(/\//g, "_");
var tracking = { isDevMode: isDevMode, serverId: serverId, pageId: pageId, version: version };
storeCompleteTracking(tracking);
setupIframe(tracking);
}
/**
* Submits a tracking event only if a previous tracking event has been stored in session storage.
*/
function trackLoginPage() {
var tracking = getCompleteTracking();
if (tracking) {
clearCompleteTracking();
setupIframe(tracking);
}
}
exports.track = track;
exports.trackLoginPage = trackLoginPage;
});