114 lines
4.7 KiB
TypeScript
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();
|
|
});
|