window.uniqueTimeStamp = Date.now();
/**
* options: {
* enableLogs: Boolean,
* intervalFrequency: Number,
* logIdentifier: String,
* maxIterations: Number,
* onSuccess: () => void,
* onTimeout: () => void,
* successCheck: () => Boolean,
* }
*/
function waitForX(options) {
var log = function log() {
if (options.enableLogs)
console.log.apply(console, arguments)
}
var logSuffix = options.logIdentifier ? ' -- [' + options.logIdentifier + ']' : ''
var intervalFrequency = options.intervalFrequency || 100
var maxIterations = options.maxIterations || 100
// Do 1 immediate check before the interval starts.
if (options.successCheck()) {
log('SUCCESS (immediate), no interval needed' + logSuffix)
options.onSuccess()
return;
}
log('every ' + intervalFrequency + 'ms, for ' + intervalFrequency * maxIterations + 'ms' + logSuffix)
var iterations = 0
var waitTimer = window.setInterval(function () {
if (options.successCheck.apply(options)) {
log('SUCCESS, waited: ' + ((iterations + 1) * intervalFrequency) + 'ms (' + (iterations + 1) + ' iterations)' + logSuffix)
options.onSuccess.apply(options)
window.clearInterval(waitTimer);
log('cleared interval' + logSuffix)
}
if (iterations >= maxIterations) {
log('TIMED OUT' + logSuffix)
// Safety net to ensure this interval won't run forever.
window.clearInterval(waitTimer)
log('cleared interval' + logSuffix)
if (options.onTimeout) {
options.onTimeout.apply(options)
}
}
iterations++
}, options.intervalFrequency)
}
function getDefaultPayloadAdobeAC(attendee) {
var payload = {
events: {
pageView: true,
},
page: {
detail: "",
language: navigator.language,
name: document.location.pathname,
referrer: getReferrerAdobeAC(),
section: "sanow",
url: document.location.href,
},
user: {
loginStatus: getLoginStatusAdobeAC(attendee),
},
form: {},
SMC: {},
};
return payload;
}
function getReferrerAdobeAC() {
var referrer = document.referrer;
if (
referrer === "https://accounts.sap.com/" ||
referrer === "https://accounts400.sap.com/"
) {
referrer = window.localStorage.getItem("referrerUrl");
}
if (typeof Storage !== "undefined") {
localStorage.setItem("referrerUrl", document.location.href);
}
return referrer;
}
function getLoginStatusAdobeAC(attendee) {
var loginStatus = "logN";
if (
(window.initialState && window.initialState.isAttendeeLoggedIn) ||
(attendee && attendee.attendeeId)
) {
loginStatus = "logY";
}
return loginStatus;
}
function getSAPRelationshipAdobeAC(attendee) {
switch (attendee.relationshipToSAP) {
case "Customer":
return 01;
case "Prospective Customer":
return 02;
case "Partner":
return 03;
case "Prospective Partner":
return 04;
case "Consultant":
return 05;
case "Press/Analyst":
return 06;
case "Investor/Shareholder":
return 07;
case "Student":
return 08;
case "SAP Employee":
return 09;
case "Competitor":
return 10;
}
}
function runTrackDataAdobeAC(payload) {
if (window._trackData) {
console.log("adobeDataLayerPayload", payload);
window._trackData(payload);
} else {
console.warn("*** _trackData is not defined ***");
}
}
var basicPagesAdobeAC = [
"all-tracks",
"americasregionpage",
"AmericasRegionPagePreKeynote",
"AmericasShowAllSpeakerGallery",
"asiapacificregionpage",
"AsiaPacificRegionPagePreKeynote",
"AsiaPacificShowAllSpeakerGallery",
"calendar",
"DashboardPreKeynote",
"discovermore",
"discovermoreprekeynote",
"emearegionpage",
"EMEARegionPagePreKeynote",
"EMEAShowAllSpeakerGallery",
"faq",
"home",
"HomePreKeynote",
"instructions",
"June2homepage",
"June2Dashbaord",
"SessionCatalog",
"sessions",
"sessionsprekeynote",
"ShowAllFeaturedinMyRegionAmericas",
"ShowAllFeaturedinMyRegionAsiaPacific",
"ShowAllFeaturedinMyRegionEMEA",
"ShowAllRecommendedSessions",
"ShowAllSAPrunsSAP",
"sponsors",
"sponsorsprekeynote",
"track-customer-experience",
"track-finance",
"track-hr",
"track-industries",
"track-it",
"track-midmarket",
"track-procurement",
"track-supply-chain"
];
var attendeeAdobeAC = data.attendee || {};
if (basicPagesAdobeAC.indexOf(data.page) !== -1) {
var payload = getDefaultPayloadAdobeAC(attendeeAdobeAC);
runTrackDataAdobeAC(payload);
} else if (data.page === "welcome") {
var payload = getDefaultPayloadAdobeAC(attendeeAdobeAC);
payload.user.loginStatus = "logY";
runTrackDataAdobeAC(payload);
} else if (data.page === "dashboard") {
var payload = getDefaultPayloadAdobeAC(attendeeAdobeAC);
payload.user.loginStatus = "logY";
runTrackDataAdobeAC(payload);
window.localStorage.removeItem("referrerUrl");
} else if (data.page === "regquestions" || data.page === "MyProfile" || data.page === 'unsubscribe' || data.page === "contactInfo") {
var payload = getDefaultPayloadAdobeAC(attendeeAdobeAC);
var trimTimestamp = uniqueTimeStamp.toString().substr(-10);
var trimAttendeeId = attendeeAdobeAC.attendeeId.substr(-10);
payload.user.loginStatus = "logY";
payload.events.formView = true;
payload.events.formSubmit = false;
payload.events.SMCInteraction = false;
payload.form.uniqueID = trimAttendeeId + trimTimestamp;
console.log("Unique ID - Reg Question:", trimTimestamp + trimAttendeeId);
payload.form.name = "RF_G_2022_04_PME_EV_SAPPHIREVIRTUAL2022";
runTrackDataAdobeAC(payload);
} else if (data.page === "Confirm") {
var payload = getDefaultPayloadAdobeAC(attendeeAdobeAC);
var trimTimestamp = uniqueTimeStamp.toString().substr(-10);
var trimAttendeeId = attendeeAdobeAC.attendeeId.substr(-10);
payload.user.loginStatus = "logY";
payload.events.formView = false;
payload.events.formSubmit = true;
payload.events.SMCInteraction = true;
payload.form.uniqueID = trimAttendeeId + trimTimestamp;
console.log("Unique ID - Confirm:", trimTimestamp + trimAttendeeId);
payload.form.name = "RF_G_2022_04_PME_EV_SAPPHIREVIRTUAL2022";
payload.form.transactionID = "S-1649707982616001L21R-" + attendeeAdobeAC.attendeeId;
payload.form.relationship = getSAPRelationshipAdobeAC(attendeeAdobeAC);
payload.form.optinStatus = attendeeAdobeAC.marketingConsentSubscriptions && attendeeAdobeAC.marketingConsentSubscriptions.toLowerCase();
payload.form.country = attendeeAdobeAC.countryId && attendeeAdobeAC.countryId.toLowerCase();
payload.SMC.interactionType = "YY_ONLINE_EVENT_REG";
payload.SMC.itemsOfInterest = ["No Item of Interest Value"];
payload.SMC.interactionReason = "SAP_EVENT";
payload.SMC.interactionID = "S-1616776025591001kHdE-" + attendeeAdobeAC.attendeeId;
runTrackDataAdobeAC(payload);
/*var remainingID = ["1619829570585001Ex7x"];
for (var i = 0; i < remainingID.length; i++) {
var payload2 = getDefaultPayloadAdobeAC(attendeeAdobeAC);
payload2.user.loginStatus = "logY";
payload2.events.formView = false;
payload2.events.formSubmit = false;
payload2.events.SMCInteraction = true;
payload2.form.transactionID = "";
payload2.SMC.interactionType = "YY_ONLINE_EVENT_REG";
payload2.SMC.itemsOfInterest = ["No Item of Interest Value"];
payload2.SMC.interactionReason = "SAP_EVENT";
payload2.SMC.interactionID = "S-" + remainingID[i] + "-" + attendeeAdobeAC.attendeeId;
runTrackDataAdobeAC(payload2)
} */
} else if (
data.app &&
data.app === "widgets" &&
data.page.match(/^(\d)+[a-zA-Z]+/g)
) {
var payload = getDefaultPayloadAdobeAC(attendeeAdobeAC);
waitForX({
enableLogs: false,
intervalFrequency: 250,
maxIterations: 60,
onSuccess: () => {
var titleEl = document.querySelector('.exhibitor-title h1, .catalog-result-title-text .title-text');
if (titleEl)
payload.page.detail = titleEl.innerText;
runTrackDataAdobeAC(payload);
},
onTimeout: () => {
runTrackDataAdobeAC(payload);
},
successCheck: () => {
return document.querySelector('.exhibitor-title h1, .catalog-result-title-text .title-text');
},
});
}