128 lines
No EOL
5.1 KiB
HTML
128 lines
No EOL
5.1 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<h1>
|
|
EXCEPTION PAGE
|
|
</h1>
|
|
<hr />
|
|
<h2>
|
|
BAILOUT INFO:
|
|
</h2>
|
|
<div id="bailout-info-container">
|
|
|
|
</div>
|
|
<script>
|
|
// Helpers
|
|
function getCookieValueByName(name) {
|
|
const value = "; " + document.cookie;
|
|
const parts = value.split("; " + name + "=");
|
|
|
|
if (parts.length === 2) {
|
|
return parts.pop().split(";").shift();
|
|
}
|
|
return "";
|
|
}
|
|
|
|
window.onload = () => {
|
|
// =============== Check for session info:
|
|
const existingVuexDataJSON = window.localStorage.getItem('vuex');
|
|
const existingVuexData = existingVuexDataJSON ? JSON.parse(existingVuexDataJSON) : null;
|
|
|
|
console.log(`================ VUEX DATA`);
|
|
console.log(existingVuexData);
|
|
|
|
// If no info exists, exit.
|
|
if(!existingVuexData) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
// =============== Collect diagnostic data:
|
|
const bailoutInfo = [];
|
|
|
|
// App & Site Name
|
|
bailoutInfo.push({ name: 'App Name', value: 'FixMyGlass' });
|
|
bailoutInfo.push({ name: 'Site Name', value: 'SafeliteDotcom' });
|
|
|
|
// Not included (yet) from heritage:
|
|
// - Site ID
|
|
// - Code
|
|
// - Module
|
|
// - Page
|
|
|
|
bailoutInfo.push({ name: 'Timestamp', value: `${new Date()}` });
|
|
|
|
// - URL
|
|
// - Server
|
|
|
|
const sessionId = getCookieValueByName('sid');
|
|
bailoutInfo.push({ name: 'Session Id', value: sessionId });
|
|
|
|
const userAgent = window.navigator.userAgent;
|
|
bailoutInfo.push({ name: 'User Agent', value: userAgent });
|
|
|
|
// - IP
|
|
// - Session Log Sequence Number
|
|
|
|
bailoutInfo.push({ name: 'Referral Seq Number', value: existingVuexData.order?.referralSequenceNumber });
|
|
bailoutInfo.push({ name: 'Referral Number', value: existingVuexData.order?.referralNumber });
|
|
bailoutInfo.push({ name: 'Referral Date', value: existingVuexData.order?.referralDate });
|
|
bailoutInfo.push({ name: 'Referral Provider Number', value: existingVuexData.order?.serviceLocation?.provider?.providerNumber });
|
|
bailoutInfo.push({ name: 'Referral CTU', value: existingVuexData.order?.serviceLocation?.provider?.address?.zipCodeCtu });
|
|
|
|
// - Referral Insured Zip
|
|
// - Referral Insured Service Zip
|
|
|
|
bailoutInfo.push({ name: 'Referral CarID', value: existingVuexData.order?.vehicle?.carId });
|
|
|
|
const vehicle = existingVuexData.order?.vehicle;
|
|
const vehicleString = vehicle?.year
|
|
? `${vehicle.year} ${vehicle.make} ${vehicle.model} - ${vehicle.style}`
|
|
: null;
|
|
bailoutInfo.push({ name: 'Referral Vehicle', value: vehicleString });
|
|
bailoutInfo.push({ name: 'Work Order Number', value: existingVuexData.order?.workOrderNumber });
|
|
bailoutInfo.push({ name: 'Work Order ID', value: existingVuexData.order?.workOrderId });
|
|
bailoutInfo.push({ name: 'Parent Account Number', value: existingVuexData.order?.payment?.parentAccountNumber });
|
|
|
|
// - Parent Account Name
|
|
// - Client GUID
|
|
|
|
// =============== Display diagnostic data:
|
|
// Create display nodes
|
|
const elements = bailoutInfo.map(
|
|
dataPoint => {
|
|
const element = document.createElement('li');
|
|
element.textContent = `${dataPoint.name}: ${dataPoint.value}`;
|
|
|
|
return element;
|
|
}
|
|
);
|
|
|
|
const fragment = new DocumentFragment();
|
|
|
|
elements.forEach(
|
|
(element) => {
|
|
fragment.append(element);
|
|
}
|
|
);
|
|
|
|
// Attach nodes to DOM and render
|
|
const attachNode = document.getElementById('bailout-info-container');
|
|
if(attachNode) {
|
|
const ul = attachNode.appendChild(document.createElement('ul'));
|
|
ul.append(fragment);
|
|
}
|
|
} catch(e) {
|
|
|
|
}
|
|
|
|
// =============== Clear User Data
|
|
// ======== To avoid reproducing the same issue due to invalid states.
|
|
window.localStorage.removeItem('vuex');
|
|
};
|
|
</script>
|
|
</body>
|
|
</html> |