81 lines
5.8 KiB
JavaScript
81 lines
5.8 KiB
JavaScript
"use strict";
|
|
(function () {
|
|
'use strict';
|
|
angular.module('myitsmApp').directive("gainsight", ['$window', 'metadataModel', 'gainsightModel', 'permissionModel', 'roles', function ($window, metadataModel, gainsightModel, permissionModel, roles) {
|
|
return {
|
|
restrict: "EA",
|
|
link: function (scope) {
|
|
metadataModel.getMetadataByType(EntityVO.TYPE_GLOBAL).then(function (res) {
|
|
if (res.enableGainsight) {
|
|
gainsightModel.getTelemetryConfiguration().then(function (config) {
|
|
if (config.settings.enableGainsight && config.displayBanner) {
|
|
gainsightModel.showOptinConfig();
|
|
}
|
|
var tagKey = config.productTag;
|
|
var userRole = !!permissionModel.hasPermission('admin:screenConfiguration') ? "Administrator" : "";
|
|
if (!userRole) {
|
|
if (!!permissionModel.hasPermission(roles.ITSM_AGENT_ROLE) || !!permissionModel.hasPermission(roles.ITSM_CHANGE_USER_ROLE)
|
|
|| !!permissionModel.hasPermission(roles.ITSM_KNOWLEDGE_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_PROBLEM_USER_ROLE)
|
|
|| !!permissionModel.hasPermission(roles.ITSM_ASSET_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_ASSET_ADMIN_ROLE)
|
|
|| !!permissionModel.hasPermission(roles.ITSM_RELEASE_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_SBE_USER_ROLE)
|
|
|| !!permissionModel.hasPermission(roles.ITSM_BROADCAST_USER_ROLE)) {
|
|
userRole = "Agent";
|
|
}
|
|
}
|
|
var gainsightConfig = {
|
|
application: {
|
|
id: "SmartIT",
|
|
productName: "Smart IT",
|
|
productVersion: "22.1"
|
|
},
|
|
user: {
|
|
id: config.hashedUserId,
|
|
globalId: config.hashedUserId,
|
|
role: userRole,
|
|
roles: {
|
|
isAdmin: !!permissionModel.hasPermission('admin:screenConfiguration'),
|
|
isKCSCoach: !!permissionModel.hasPermission(roles.ITSM_KCS_COACH_ROLE),
|
|
isKBAdmin: !!permissionModel.hasPermission(roles.ITSM_ADMIN_ROLE),
|
|
isAgent: !!permissionModel.hasPermission(roles.ITSM_AGENT_ROLE) || !!permissionModel.hasPermission(roles.ITSM_CHANGE_USER_ROLE)
|
|
|| !!permissionModel.hasPermission(roles.ITSM_KNOWLEDGE_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_PROBLEM_USER_ROLE)
|
|
|| !!permissionModel.hasPermission(roles.ITSM_ASSET_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_ASSET_ADMIN_ROLE)
|
|
|| !!permissionModel.hasPermission(roles.ITSM_RELEASE_USER_ROLE) || !!permissionModel.hasPermission(roles.ITSM_SBE_USER_ROLE)
|
|
|| !!permissionModel.hasPermission(roles.ITSM_BROADCAST_USER_ROLE)
|
|
}
|
|
}
|
|
};
|
|
var productInfo = {
|
|
productArea: {
|
|
name: "SmartIT",
|
|
version: '22.1.06',
|
|
hosting: config.settings.deploymentType
|
|
}
|
|
};
|
|
var gainsightScriptUrl = "https://web-sdk.aptrinsic.com/api/aptrinsic.js";
|
|
if (config.settings.loadGainsightFromBmcIt) {
|
|
gainsightScriptUrl = "https://documents.bmc.com/products/docs/gainsight/main/aptrinsic.js";
|
|
}
|
|
//Load if globally switched on
|
|
(function (global, doc, scriptUrl, accountId, configOptions) {
|
|
var aptrinsic = "aptrinsic";
|
|
global[aptrinsic] = global[aptrinsic] || function () {
|
|
(global[aptrinsic].q = global[aptrinsic].q || []).push(arguments);
|
|
};
|
|
global[aptrinsic].p = accountId;
|
|
global[aptrinsic].c = configOptions;
|
|
var script = doc.createElement("script");
|
|
script.async = true;
|
|
script.src = scriptUrl + "?a=" + accountId;
|
|
var firstScript = doc.getElementsByTagName("script")[0];
|
|
firstScript.parentNode.insertBefore(script, firstScript);
|
|
})(window, document, gainsightScriptUrl, tagKey);
|
|
$window.aptrinsic('identify', gainsightConfig.user, gainsightConfig.application);
|
|
$window.aptrinsic('set', 'globalContext', productInfo);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
};
|
|
}]);
|
|
})();
|