95 lines
4.0 KiB
JavaScript
Executable File
95 lines
4.0 KiB
JavaScript
Executable File
class Transactions extends HTMLElement {
|
|
|
|
balance = 0;
|
|
points = 0;
|
|
|
|
constructor() {
|
|
super();
|
|
|
|
let template = document.getElementById('transactions');
|
|
let templateContent = template.content;
|
|
|
|
console.log('INITIALIZING TRANSACTIONS VIEW')
|
|
|
|
const shadow = this.attachShadow({
|
|
mode: 'open'
|
|
})
|
|
.appendChild(templateContent.cloneNode(true));
|
|
}
|
|
|
|
createTransaction(vendor, date, amount, points){
|
|
var transaction = document.createElement('transaction-element');
|
|
transaction.setAttribute('vendor', vendor);
|
|
transaction.setAttribute('date', date);
|
|
if (amount != '-') amount = amount.toFixed(2);
|
|
if (points != '-') points = points.toFixed(2);
|
|
transaction.setAttribute('amount', amount);
|
|
transaction.setAttribute('points',points);
|
|
return transaction;
|
|
}
|
|
|
|
connectedCallback() {
|
|
var sr = this.shadowRoot;
|
|
var transactionlist = sr.getElementById('TRANSACTIONLIST');
|
|
var balance = sr.getElementById('BALANCE');
|
|
var points = sr.getElementById('POINTS');
|
|
var transactionComponent = this;
|
|
|
|
getTransactions(loyalty.getCookie('access_token'), (err, _transactions) => {
|
|
console.log(_transactions)
|
|
if (err == null) {
|
|
let transactions = _transactions.sort((a,b) => new Date(b.date) -new Date(a.date))
|
|
transactions.forEach(transaction => {
|
|
const date = new Date(transaction.date)
|
|
const year = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date)
|
|
const month = new Intl.DateTimeFormat('en', { month: 'short' }).format(date)
|
|
const day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date)
|
|
if (transaction.amount != null || transaction.amount != undefined) transactionComponent.balance += transaction.amount
|
|
if (transaction.pointsEarned != null || transaction.pointsEarned != undefined) transactionComponent.points += transaction.pointsEarned
|
|
if (transaction.amount == null || transaction.amount == undefined) transaction.amount = '-'
|
|
if (transaction.pointsEarned == null || transaction.pointsEarned == undefined) transaction.pointsEarned = '-'
|
|
let transactionElement = transactionComponent.createTransaction(transaction.transactionName, month + " " + day + " " + year, transaction.amount, transaction.pointsEarned)
|
|
transactionlist.appendChild(transactionElement)
|
|
})
|
|
|
|
balance.innerHTML = '$' + transactionComponent.balance.toFixed(2);
|
|
points.innerHTML = transactionComponent.points.toFixed(2);
|
|
} else if (err == 'User not registered') {
|
|
let phoneview = document.getElementById("phoneview");
|
|
let mobileview = phoneview.getMobileView();
|
|
mobileview.innerHTML = "";
|
|
let element = document.createElement('loading-spinner-element');
|
|
element.setAttribute("status", "User is marked for deletion...")
|
|
mobileview.appendChild(element)
|
|
phoneview.hideNavigation();
|
|
|
|
setTimeout(() => {
|
|
element.setAttribute("status", "Logging out...")
|
|
setTimeout(() => {
|
|
// clear cookies of tokens
|
|
document.cookie = "access_token=; Max-Age=0'"
|
|
document.cookie = "id_token=; Max-Age=0'"
|
|
|
|
// clear local storage
|
|
localStorage.clear()
|
|
|
|
mobileview.innerHTML = "";
|
|
var welcome = document.createElement('welcome-element')
|
|
welcome.setAttribute('mode','INTEGRATED')
|
|
mobileview.appendChild(welcome)
|
|
|
|
}, 2500)
|
|
}, 2000)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
try {
|
|
customElements.define('transactions-element', Transactions);
|
|
} catch (err) {
|
|
const h3 = document.createElement('h3')
|
|
h3.innerHTML = err
|
|
document.body.appendChild(h3)
|
|
}
|