ldc-gen-game-web/resources/ts/pages/settings.ts
2025-08-14 14:12:13 +00:00

114 lines
4.7 KiB
TypeScript

import { HashToColor } from "../libs/hash_to_color";
document.addEventListener("DOMContentLoaded", function () {
if (!document.querySelector("main.settings-page")) {
// * We are not on settings page
return;
}
const codesHashSettings = document.getElementById("serial-key-hash");
if (codesHashSettings) {
HashToColor.generate(String(codesHashSettings.textContent), codesHashSettings);
}
const inputDiscountsActivated = document.querySelector("input[name=discounts_activated]") as HTMLInputElement | null;
const inputActivatedClosePage = document.querySelector("input[name=activated_close_page]") as HTMLInputElement | null;
const selectCodeType = document.querySelector("select[name=code_type]") as HTMLSelectElement | null;
const discountsSite = document.getElementById("discounts-site") as HTMLElement | null;
const discountsCampaign = document.getElementById("discounts-campaign") as HTMLElement | null;
const discountsWebCoupons = document.getElementById("discounts-web-coupons") as HTMLElement | null;
const closePageActiveDate = document.getElementById("close-page-active-date");
const settingsClosePageActiveDate = document.getElementById("settings-close-page-active-date") as HTMLInputElement | null;
const settingsDiscountsSite = document.getElementById("settings-discounts-site") as HTMLInputElement | null;
const settingsDiscountsCampaign = document.getElementById("settings-discounts-campaign") as HTMLInputElement | null;
const settingsNbUniqueCodeUse = document.getElementById("settings-nb-unique-code-use") as HTMLElement | null;
if (!inputDiscountsActivated) {
throw new Error("Missing input[name=discounts_activated]");
}
if (!inputActivatedClosePage) {
throw new Error("Missing input[name=activated_close_page]");
}
if (!selectCodeType) {
throw new Error("Missing select[name=code_type]");
}
if (!discountsSite) {
throw new Error("Missing #discounts-site");
}
if (!discountsCampaign) {
throw new Error("Missing #discounts-campaign");
}
if (!discountsWebCoupons) {
throw new Error("Missing #discounts-web-coupons");
}
if (!closePageActiveDate) {
throw new Error("Missing #close-page-active-date");
}
if (!settingsClosePageActiveDate) {
throw new Error("Missing #settings-close-page-active-date");
}
if (!settingsDiscountsSite) {
throw new Error("Missing #settings-discounts-site");
}
if (!settingsDiscountsCampaign) {
throw new Error("Missing #settings-discounts-campaign");
}
if (!settingsNbUniqueCodeUse) {
throw new Error("Missing #settings-nb-unique-code-use");
}
const discountsWebCouponsInputs = discountsWebCoupons.getElementsByTagName("input");
const toggleDiscount = () => {
if (!inputDiscountsActivated.checked) {
discountsSite.style.display = "none";
discountsCampaign.style.display = "none";
discountsWebCoupons.style.display = "none";
settingsDiscountsSite.disabled = true;
settingsDiscountsCampaign.disabled = true;
Array.from(discountsWebCouponsInputs).forEach(element => {
element.disabled = true;
});
} else {
discountsSite.style.display = "";
discountsCampaign.style.display = "";
discountsWebCoupons.style.display = "";
settingsDiscountsSite.disabled = false;
settingsDiscountsCampaign.disabled = false;
Array.from(discountsWebCouponsInputs).forEach(element => {
element.disabled = false;
});
}
};
const toggleClosePage = () => {
if (!inputActivatedClosePage.checked) {
closePageActiveDate.style.display = "none";
settingsClosePageActiveDate.disabled = true;
} else {
closePageActiveDate.style.display = "";
settingsClosePageActiveDate.disabled = false;
}
};
const toggleNbUniqueCodeUse = (): void => {
const shouldHide = selectCodeType.value === settingsNbUniqueCodeUse.dataset.enumHide;
settingsNbUniqueCodeUse.classList.toggle("d-none", shouldHide);
};
// Gestion du tableau pour discount
inputDiscountsActivated.addEventListener("change", toggleDiscount);
toggleDiscount();
// Gestion de l'activation de la page de fermeture (champ date à afficher ou non)
inputActivatedClosePage.addEventListener("change", toggleClosePage);
toggleClosePage();
// Gestion du nombre d'utilisation du code unique
selectCodeType.addEventListener("change", toggleNbUniqueCodeUse);
toggleNbUniqueCodeUse();
});