previously when running on Heroku, JavaScript session storage data was successfully extracted and stored as new properties into JSON object. When the code was moved to run on local, JavaScript session storage still managed to get data, but failed to wrap into JSON object
async function GenerateExcel() {
let transferData = {}
let qtyData = await propertiesData().then(qData => {return qData});
transferData['qtyData'] = qtyData
let checkerRateDataB = document.querySelector('#checkRateDataB')
console.log("checkerRateDataB value:", checkerRateDataB.value);
if(checkerRateDataB.value == 'on') {
rateDataB = JSON.parse(sessionStorage.getItem("rateB"));
console.log(rateDataB)
transferData['rateDataB'] = rateDataB
} else{
transferData['rateDataB'] = null
};
let checkerRateDataU = document.querySelector('#checkRateDataU')
console.log("checkerRateDataU value:", checkerRateDataU.value);
if(checkerRateDataU.value == 'on') {
rateDataU = JSON.parse(sessionStorage.getItem("rateU"));
console.log(rateDataU);
transferData['rateDataU'] = rateDataU
console.log(transferData)
} else{
transferData['rateDataU'] = null
};
}
with the above code, when it runs on local, the debug console result of the above as follow:
Promise.then (async)
UserLogin @ (index):496
onclick @ (index):115
(index):744 checkerRateDataB value: on
(index):747 {G30: 332.09413969373963, Half Brick: 85.33031153804188}
(index):754 checkerRateDataU value: on
(index):757 {G30: 380.65825214182524, Half Brick: 53.84233534844155}
(index):759 {qtyData: {…}, rateDataB: {…}, rateDataU: {…}}qtyData: {Wall: {…}, Slab Conc: {…}, Beam Conc: {…}, Column Conc: {…}, Floor: {…}}rateDataB: {G30: 332.09413969373963, Half Brick: 85.33031153804188}rateDataU: null[[Prototype]]: Object
while on Heroku, rateDataU was with similar information as rateDataB
Going through ChatGPT, it advised me to edit the entire code into this:
async function GenerateExcel() {
let transferData = {}
let rateDataB = {}
let rateDataU = {}
let qtyData = await propertiesData().then(qData => { return qData });
transferData['qtyData'] = qtyData;
let checkerRateDataB = document.querySelector('#checkRateDataB');
console.log("checkerRateDataB value:", checkerRateDataB.value);
if (checkerRateDataB.value == 'on') {
rateDataB = JSON.parse(sessionStorage.getItem("rateB"));
console.log("rateDataB:", rateDataB);
transferData['rateDataB'] = rateDataB;
} else {
transferData['rateDataB'] = null;
}
let checkerRateDataU = document.querySelector('#checkRateDataU');
console.log("checkerRateDataU value:", checkerRateDataU.value);
if (checkerRateDataU.value == 'on') {
rateDataU = await retrieveRateU(); // Await the asynchronous retrieval of rateU
console.log("rateDataU:", rateDataU);
transferData['rateDataU'] = rateDataU;
} else {
transferData['rateDataU'] = null;
}
console.log(transferData);
// ... rest of your code
}
// Define an asynchronous function to retrieve rateU from sessionStorage
async function retrieveRateU() {
return JSON.parse(sessionStorage.getItem("rateU"));
}
at the end of the day after running on local with the above code, we've come to the same result as above:
Promise.then (async)
UserLogin @ (index):496
onclick @ (index):115
(index):744 checkerRateDataB value: on
(index):747 {G30: 332.09413969373963, Half Brick: 85.33031153804188}
(index):754 checkerRateDataU value: on
(index):757 {G30: 380.65825214182524, Half Brick: 53.84233534844155}
(index):759 {qtyData: {…}, rateDataB: {…}, rateDataU: {…}}qtyData: {Wall: {…}, Slab Conc: {…}, Beam Conc: {…}, Column Conc: {…}, Floor: {…}}rateDataB: {G30: 332.09413969373963, Half Brick: 85.33031153804188}rateDataU: null[[Prototype]]: Object
All I wish is my baby code running well again... Anyone can share with me what are the potential issues, including any needs of installations to the environment or etc...