Question:
When I click the box in the repeater I call some functions and reason for that when I click this box it changes the section of course. And every data is connected to a database with code and in database datas are all arrays when I click box it’s increase or decrease the number currentSection and arrays index is connected to currentSection number in this way I can go next section just change a number from frontend and call it again. But problem is when I click these boxes too fast it gives me 502 bad gateway error for 1-2 minute.
Database:
What is the reason for that? (Is because of calling functions too fast or because of the what functions do)
And how can I optimize this and resolve this problem.
This is the repeater code.
function setupSectionRepeater() {
$w("#sectionRepeater").data = courseContents.sectionTitle;
setupRepeater();
function setupRepeater() {
$w("#sectionRepeater").onItemReady(($item, itemData, index) => {
$item("#sectionTitleRepeater").text = itemData.title
$w("#sectionRepeater").forEachItem(($item, itemData, index) => {
if (index === currentSection) {
$item("#styleBoxRepeater").style.backgroundColor = "#00A5FF"
} else {
$item("#styleBoxRepeater").style.backgroundColor = "#80D2FF"
}
})
$item("#styleBoxRepeater").onClick((event) => {
currentSection = index;
reloadData("bypass");
})
})
}
}
And here is the reloadData() function
async function reloadData(bypass) {
if (bypass) {
await getUserData();
await setupUserDatas();
await setupSectionRepeater();
await setupPageFundamental();
await setupGiftAndCertificate();
await disableButtons(); //this side will be called
} else {
await getUserData();
await setupUserDatas();
await setupSectionRepeater();
await setupPageFundamental();
await setupGiftAndCertificate();
await checkVideoDuration();
await disableButtons();
}
}
And here is the functions that called by reloadData() function
function getUserData() {
return wixData.query("academyUserDatas")
.eq("userId", userId)
.eq("courseId", courseId)
.find()
.then((data) => {
return userData = data.items[0]
})
}
function setupUserDatas() {
let statusImages = {
"certificateImage": 'wix:image://v1/510eca_a3b8082dd72a4118a8fd9eb085b103e9~mv2.png/sertifika-al%C4%B1nmam%C4%B1%C5%9F.png#originWidth=128&originHeight=128',
"certificatedImage": 'wix:image://v1/510eca_c47008f8a5c143228d540d38a73475ec~mv2.png/sertifika-al%C4%B1nm%C4%B1%C5%9F.png#originWidth=128&originHeight=128',
"certificateReady": 'wix:image://v1/510eca_5f0a3c3e326544d8b09a3a029da078e5~mv2.png/sertifika-al%C4%B1nmaya-haz%C4%B1r.png#originWidth=128&originHeight=128',
"giftImage": 'wix:image://v1/510eca_6ae6cbc6a4d0420cb4bde3ad423d736c~mv2.png/hediye-al%C4%B1nmam%C4%B1%C5%9F.png#originWidth=128&originHeight=128',
"giftedImage": 'wix:image://v1/510eca_e0e7b9721d834db3819d26bc51f8a228~mv2.png/hediye-al%C4%B1nm%C4%B1%C5%9F.png#originWidth=128&originHeight=128',
"giftReady": 'wix:image://v1/510eca_cbdf556e381d42e4935b3620796b7e21~mv2.png/hediye-al%C4%B1nmaya-haz%C4%B1r.png#originWidth=128&originHeight=128'
}
$w("#completePercentageSlider").value = userData.completedPercentage;
$w("#sectionStatus").text = `${courseContents.sectionVideo.length} Bölüm %${userData.completedPercentage.toFixed(0)} Tamamlandı!`
if (userData.certificated === true) {
$w("#certificatedImage").src = statusImages.certificatedImage;
} else {
if (userData.completedPercentage >= 100) {
$w("#certificatedImage").src = statusImages.certificateReady;
} else {
$w("#certificatedImage").src = statusImages.certificateImage;
}
}
if (userData.gifted === true) {
$w("#giftedImage").src = statusImages.giftedImage;
} else {
if (userData.completedPercentage >= 100) {
$w("#giftedImage").src = statusImages.giftReady;
} else {
$w("#giftedImage").src = statusImages.giftImage;
}
}
}
function setupSectionRepeater() {
$w("#sectionRepeater").data = courseContents.sectionTitle;
setupRepeater();
function setupRepeater() {
$w("#sectionRepeater").onItemReady(($item, itemData, index) => {
$item("#sectionTitleRepeater").text = itemData.title
$w("#sectionRepeater").forEachItem(($item, itemData, index) => {
if (index === currentSection) {
$item("#styleBoxRepeater").style.backgroundColor = "#00A5FF"
} else {
$item("#styleBoxRepeater").style.backgroundColor = "#80D2FF"
}
})
$item("#styleBoxRepeater").onClick((event) => {
currentSection = index;
reloadData("bypass");
})
})
}
}
function setupPageFundamental() {
$w("#headerTitle").text = `${currentCourse.courseTitle} | ${courseContents.sectionTitle[currentSection].title} | ${currentSection + 1}. Bölüm`
$w("#sectionTitle").text = courseContents.sectionTitle[currentSection].title
$w("#courseVideo").src = courseContents.sectionVideo[currentSection]
$w("#downloadSources").link = courseContents.sectionSources[currentSection]
$w("#downloadSources").target = "_blank"
$w("#notesText").text = courseContents.sectionNote[currentSection]
}
function setupGiftAndCertificate() {
let percentage = userData.completedPercentage;
let gift = userData.gifted;
if (percentage >= 100) {
$w("#certificatedImage").onClick((event) => {
let data = {
"courseId": courseId,
"courseTitle": currentCourse.courseTitle
}
wixWindow.openLightbox("Academy Certificate", data)
.catch((err) => {
console.error("Err:", err)
})
})
}
if (percentage >= 100 && gift != true) {
$w("#giftedImage").onClick((event) => {
let data = {
"courseId": courseId
}
wixWindow.openLightbox("Academy Gift", data)
.catch((err) => {
console.error("Err:", err)
})
})
}
}
function disableButtons() {
if (currentSection === courseContents.totalSectionCount - 1) {
$w("#goNext").hide()
} else {
$w("#goNext").show()
}
if (currentSection === 0) {
$w("#goBack").hide()
} else {
$w("#goBack").show()
}
}