Czyszczenie kodu i dodanie przytwierdzonego przycisku na spodzie na mobilce

This commit is contained in:
2024-04-11 13:03:55 +02:00
parent 9f6b67c96d
commit effa463126
7 changed files with 2138 additions and 1771 deletions

View File

@@ -37,7 +37,7 @@ const deliveryPickupPoints = [];
let finpostjs = false;
// Funkcja inicjująca mapę
function loadMap() {
var htmlContent = `
const htmlContent = `
<div id="fbs_z02_cover">
<div id="fbs_z02_wrapper" class="dialog_fbs_z02">
<a id="fbs_z02_close" href="#close"></a>
@@ -113,10 +113,12 @@ function loadMap() {
document.querySelector('.asideContainer_pickup').innerHTML = '';
}
// Funkcja obsługująca dostawy z mapą
function createEventsInpost(ITEM_ID) {
var ITEM_FOR_MAP = '#item_' + ITEM_ID;
var oscItem = document.querySelector(ITEM_FOR_MAP).closest('.osc_item');
const ITEM_FOR_MAP = '#item_' + ITEM_ID;
const oscItem = document.querySelector(ITEM_FOR_MAP).closest('.osc_item');
document.querySelector(ITEM_FOR_MAP).addEventListener('click', function (e) {
const deliveryValue = ITEM_FOR_MAP.slice(1);
@@ -129,18 +131,9 @@ function loadMap() {
// Jesli nie ma informacji potrzebnej do mapy, zapisz wiadomosc do errora
let errorMessage = "";
if(!clientStreet){
errorMessage += `${<iai:variable vid="Wpisz ulicę i numer domu klienta"/>} <br>`;
addErrorMessage(document.getElementById("client_street"), <iai:variable vid="Wpisz ulicę i numer domu klienta"/>)
}
if(!clientZipCode){
errorMessage += `${<iai:variable vid="Podaj kod pocztowy adresu dostawy"/>} <br>`;
addErrorMessage(document.getElementById("client_zipcode"), <iai:variable vid="Podaj kod pocztowy adresu dostawy"/>)
}
if(!clientCity){
errorMessage += `${<iai:variable vid="Wpisz miasto odbiorcy przesyłki"/>}`;
addErrorMessage(document.getElementById("client_city"), <iai:variable vid="Wpisz miasto odbiorcy przesyłki"/>)
}
if(!clientStreet) errorMessage += addAddressErrorForMap("street");
if(!clientZipCode) errorMessage += addAddressErrorForMap("zipcode");
if(!clientCity) errorMessage += addAddressErrorForMap("city");
// Zablokuj wybranie mapy jak nie ma adresu
if(errorMessage !== ""){
@@ -170,7 +163,6 @@ function loadMap() {
if(!suggestions) return;
else suggestions.remove();
});
htmlContent = '';
}
// Wstaw adres klienta
@@ -249,6 +241,17 @@ function getAddressInfo(query){
};
return document.getElementById(`client_${query}`).value;
}
// Wiadomość errora, gdyby niebyło informacji adresowych przy otwieraniu mapy
const addressErrorMessagesForMap = {
"street": `${<iai:variable vid="Wpisz ulicę i numer domu klienta"/>}`,
"zipcode": `${<iai:variable vid="Podaj kod pocztowy adresu dostawy"/>}`,
"city": `${<iai:variable vid="Wpisz miasto odbiorcy przesyłki"/>}`,
}
function addAddressErrorForMap(query){
addErrorMessage(document.getElementById(`client_${query}`), addressErrorMessagesForMap[query]);
return `${addressErrorMessagesForMap[query]} <br>`;
}
// Utworzenie informacji o punkcie odbioru
function createPickuppointInfo(selectedPoint, deliveryPointId, name, streetText, cityText, zipcodeText, courierId){
// Pokazanie elementu fselectedPoint
@@ -298,10 +301,10 @@ function toggleMapList(e){
e.target.dataset.show = ifList ? "map" : "list";
}
//////////////////////////////////////////////////////////////////////////
// DANE KLIENTA
document.getElementById("cop_seection1").addEventListener("click", (e) => {
document.getElementById("bm-oscop-section1").addEventListener("click", (e) => {
// Pokazanie się okna od logowania
if(e.target.classList.contains("get_signin")) showSigninModal();
@@ -314,11 +317,11 @@ document.getElementById("cop_seection1").addEventListener("click", (e) => {
}
// Ukrycie/Pokazanie hasła
if(e.target.id === "toggle_password") return togglePassword(e.target);
if(e.target.id === "toggle-password") return togglePassword(e.target);
// Sprawdzenie czy kliknięcie było na firmę, czy na osobę prywatną
if(e.target.id === "client_type1") return document.querySelectorAll("#cop_seection1 .firm-group").forEach(el => el.classList.add("--fade-in"));
if(e.target.id === "client_type2") return document.querySelectorAll("#cop_seection1 .firm-group").forEach(el => el.classList.remove("--fade-in"));
if(e.target.id === "client_type1") return document.querySelectorAll("#bm-oscop-section1 .firm-group").forEach(el => el.classList.add("--fade-in"));
if(e.target.id === "client_type2") return document.querySelectorAll("#bm-oscop-section1 .firm-group").forEach(el => el.classList.remove("--fade-in"));
// Sprawdzenie czy dostawa na inny adres czy nie
if(e.target.id === "deliver_to_billingaddr"){
@@ -360,24 +363,24 @@ function togglePassword(el){
// Pokaż popup logowania
function showSigninModal(){
app_shop.fn.signinModal = new Modal({
element: $("#signin-form-ajax"),
element: $("#signin-form"),
classList: "--fade-in-modal",
afterShow: ()=>{
disablePageScroll();
document.querySelector(".signin_login_input").addEventListener("keydown", logInOnEnter);
document.querySelector(".signin_pass_input").addEventListener("keydown", logInOnEnter);
document.querySelector(".signin-form__login").addEventListener("keydown", logInOnEnter);
document.querySelector(".signin-form__pass").addEventListener("keydown", logInOnEnter);
},
beforeClose: ()=>{
enablePageScroll();
document.querySelector(".signin_login_input").removeEventListener("keydown", logInOnEnter);
document.querySelector(".signin_pass_input").removeEventListener("keydown", logInOnEnter);
document.querySelector(".signin-form__login").removeEventListener("keydown", logInOnEnter);
document.querySelector(".signin-form__pass").removeEventListener("keydown", logInOnEnter);
},
});
}
// Pokaż(true)/Schowaj(false) formularz dostawy na inny adres
function showDeliveryForm(style){
const deliveryWrapper = document.querySelector(".ajax_cop #client_new_additional .delivery_box.cn_wrapper");
const deliveryWrapper = document.querySelector(".bm-oscop__container #client_new_additional .delivery_box.cn_wrapper");
if((style && deliveryWrapper.classList.contains("--more")) || (!style && !deliveryWrapper.classList.contains("--more"))) return;
// Formularz dostawy na inny adres
@@ -452,15 +455,15 @@ const SIGNIN = (signinInput) => JSON.stringify({
});
function logInOnEnter(e){
if(e.key==="Enter") logInToAccount(false)
if(e.key === "Enter") logInToAccount(false)
}
const signinForm = document.querySelector(".signin-form_box_text form");
const signinForm = document.querySelector(".signin-form__container form");
if(signinForm) signinForm.addEventListener("submit", logInToAccount);
async function logInToAccount(event){
if(event) event.preventDefault();
const login = document.querySelector(".signin_login_input").value;
const password = document.querySelector(".signin_pass_input").value;
const login = document.querySelector(".signin-form__login").value;
const password = document.querySelector(".signin-form__pass").value;
const loginStatus = await fetchData({
data: SIGNIN(`
login: "${login.replace(/"/g, '\\"')}",
@@ -497,7 +500,7 @@ function getClientNew(){
success: function (e, a) {
app_shop.fn.load(
"place-order.php",
[["#cop_seection1", "#cop_seection1"]],
[["#bm-oscop-section1", "#bm-oscop-section1"]],
function () {
history.go(-1);
},
@@ -643,8 +646,8 @@ function handleShowSigninModalFromEmailModal(e){
showSigninModal();
}
// EventListener zmian w kontenerze cop_seection1
document.getElementById("cop_seection1").addEventListener("change", (e) => {
// EventListener zmian w kontenerze bm-oscop-section1
document.getElementById("bm-oscop-section1").addEventListener("change", (e) => {
const validateRequestId = ["client_zipcode", "delivery_zipcode", "client_nip", "client_email"];
const notEmptyFieldsId = ["client_firstname", "client_lastname", "client_city", "delivery_firstname", "delivery_lastname", "delivery_city", "client_firm"];
@@ -662,17 +665,13 @@ const notEmptyFieldsId = ["client_firstname", "client_lastname", "client_city",
// Walidacja ulicy i numeru domu
if(e.target.id === "client_street" || e.target.id === "delivery_street") validateStreet(e.target);
// Walidacja numeru telefonu
if(e.target.id === "client_phone" || e.target.id === "delivery_phone") validatePhone(e.target);
// Walidacja loginu i hasła rejestracji
if(e.target.classList.contains("register__login")) testLogin();
if(e.target.classList.contains("register__password")) testPassword();
// Walidacja imienia nazwiska miasta i firmy(wymagające po prostu nie bycia pustym)
if(notEmptyFieldsId.includes(e.target.id)) validateNotEmpty(e.target);
// Sprawdzenie czy firma w dostawie na inny adres została wpisana
if(e.target.id === "delivery_additional"){
if(e.target.value.length > 0) addSuccess(e.target);
@@ -818,7 +817,7 @@ function getNewPaymentsAndDeliveries(data = null) {
throwAjaxError(a);
app_shop.fn.ajaxLoadSite(0);
},
success: function (e) {
success: async function (e) {
let prepaidMarkup = "";
// Stworzenie markupa dla metod dostaw
@@ -834,13 +833,12 @@ function getNewPaymentsAndDeliveries(data = null) {
// Dane do zaznaczenia płatności i dostawy jeśli wcześniej na tej przeglądarce(localStorage) było już zamówienie
const prevOrderInfo = JSON.parse(localStorage.getItem("prevOrderInfo"));
console.log(prevOrderInfo);
// Wstawienie metod dostaw na strone
const deliveryMarkup = `<div id="osc_order1"><div id="osc_order1_prepaid" style="${paymentValue === "cash" ? "display:none;" : "display:block;"}">${prepaidMarkup}</div><div id="osc_order1_dvp" style="${paymentValue === "cash" ? "display:block;" : "display:none;"}">${dvpMarkup}</div></div>`;
const previousDeliveries = document.getElementById("osc_order1");
if(previousDeliveries) previousDeliveries.remove();
document.querySelector(".ajax_cop .step2_sub").insertAdjacentHTML("beforeend",deliveryMarkup);
document.getElementById("bm-oscop-deliveries").insertAdjacentHTML("beforeend",deliveryMarkup);
// Stworzenie metod płatności
let prepaidsMethodMarkup = "";
@@ -878,7 +876,7 @@ const checkedPayment = paymentValue === method.id;
ifPaymentCard = true;
}
else{
prepaidsMethodMarkup += markup;
prepaidsMethodMarkup += markup;
// Okienko vouchera
if(method.id === 2){
prepaidsMethodMarkup += `
@@ -904,8 +902,8 @@ const checkedPayment = paymentValue === method.id;
}
}
});
prepaidsTransferMarkup +="</div></div></label>";
prepaidsCardMarkup +="</div></div></label>";
prepaidsTransferMarkup += "</div></div></label>";
prepaidsCardMarkup += "</div></div></label>";
// Dołączenie metody płatność przy odbiorze
if(e.dvp.length) prepaidsMethodMarkup += `
@@ -922,16 +920,22 @@ const checkedPayment = paymentValue === method.id;
// Wstawienie metod płatności na stronę
const previousPayments = document.getElementById("osc_prepaids_method");
if(previousPayments) previousPayments.remove();
document.querySelector(".ajax_cop #checkout_step3_1 .step3_sub").insertAdjacentHTML("beforeend", `<div id="osc_prepaids_method"> ${ifPaymentTransfer ? prepaidsTransferMarkup : ""}${ifPaymentCard ? prepaidsCardMarkup : ""}${prepaidsMethodMarkup}</div>`);
document.getElementById("bm-oscop-payments").insertAdjacentHTML("beforeend", `<div id="osc_prepaids_method"> ${ifPaymentTransfer ? prepaidsTransferMarkup : ""}${ifPaymentCard ? prepaidsCardMarkup : ""}${prepaidsMethodMarkup}</div>`);
// Wstawienie błędu jeśli metody płatności są puste
const currentPayments = document.getElementById("osc_prepaids_method");
if(document.getElementById("osc_prepaids_method").innerHTML === "") currentPayments.insertAdjacentHTML("beforeend",'<div class="menu_messages_warning" id="menu_messages_warning"><div class="menu_messages_message_sub"><p>' + <iai:variable vid="Brak metod płatności"/> + <iai:variable vid="w celu uzyskania informacji jak skompletować zamówienie"/> + ', <a href="/contact.php">' + `${<iai:variable vid="skontaktuj się z nami"/>}` + "</a></p></div></div>");
// Przygotowanie informacji o dostawie do obliczenia daty dostawy
const deliveryDateInfo = {deliveryVal: null, delivery: null, pickuppoint: null};
const firstInput = document.querySelector("#osc_order1 input");
if(firstInput) changeDeliveryInfoObject(deliveryDateInfo, firstInput);
// Wstawienie pickuppoint jeśli edycja i istnieje
if(data?.pickupData !== undefined && data?.pickupData !== null){
const selectedShipping = document.querySelector(`#cop_seection2 input#${deliveryId}`);
checkPrevPickupPoint(
const selectedShipping = document.querySelector(`#bm-oscop-section2 input#${deliveryId}`);
const pointExists = await checkPrevPickupPoint(
selectedShipping.parentElement.querySelector(".fselectedPoint"),
data.pickupData.id,
data.pickupData.name,
@@ -939,12 +943,13 @@ const checkedPayment = paymentValue === method.id;
data.pickupData.address.city,
data.pickupData.address.postcode,
data.deliveryMethodId
).then(pointExists=>{
)
// Odznaczenie punktu jeśli punkt odbioru nie istnieje(Wcześniej był zaznaczony przy edycji)
if(!pointExists) selectedShipping.checked = false;
});
else changeDeliveryInfoObject(deliveryDateInfo, selectedShipping);
}// Sprawdzenie czy użytkownik ma zapisane poprzednio użyte metody w przeglądarce(tylko przy pierwszym załadowaniu strony)
else if(firstTimeLoadPage && prevOrderInfo && prevOrderInfo?.prevCountry === document.getElementById("client_region").value){
// POPRZEDNIa PŁATNOSC
const prevPaymentMethod = prevOrderInfo.prevPaymentMethod;
// Zaznaczenie metod płatności które nie tworzą popupa
@@ -956,7 +961,7 @@ const checkedPayment = paymentValue === method.id;
cloneElement(document.getElementById(paymentMethodId));
}
// Poprzednia dostawa
// POPRZEDNIA DOSTAWA
const prevDeliveryMethod = prevOrderInfo.prevDeliveryMethod;
const prevDeliveryInput = document.querySelector(`input#${prevDeliveryMethod.id}`);
@@ -964,7 +969,7 @@ const checkedPayment = paymentValue === method.id;
if(prevDeliveryInput){
// Sprawdzenie czy dostawa miała punkt odbioru
if(prevDeliveryMethod.fselectedPoint){
checkPrevPickupPoint(
const pointExists = await checkPrevPickupPoint(
prevDeliveryInput.parentElement.querySelector(".fselectedPoint"),
prevDeliveryMethod.fselectedPoint.deliveryPointId,
prevDeliveryMethod.fselectedPoint.name,
@@ -972,12 +977,12 @@ const checkedPayment = paymentValue === method.id;
prevDeliveryMethod.fselectedPoint.city,
prevDeliveryMethod.fselectedPoint.zipcode,
prevDeliveryMethod.fselectedPoint.courierId
).then(pointExists=>{
)
if(pointExists) prevDeliveryInput.checked = true;
});
}else{
prevDeliveryInput.checked = true;
}
changeDeliveryInfoObject(deliveryDateInfo, prevDeliveryInput);
}
}
@@ -986,16 +991,17 @@ const checkedPayment = paymentValue === method.id;
if(paymentValue && checkedPayment && (checkedPayment.dataset.group === "card" || checkedPayment.dataset.group === "transfer")){
cloneElement(checkedPayment);
}
// Przeładowanie mapy
loadMap();
// Zmiana daty dostawy i pokazanych opcji dostawy
if(deliveryDateInfo.deliveryVal && deliveryDateInfo.delivery && deliveryDateInfo.pickuppoint) calculateDeliveryDate(deliveryDateInfo.deliveryVal, deliveryDateInfo.delivery, deliveryDateInfo.pickuppoint);
// Przeliczenie kosztu dostawy
calculateBasketCost();
// Zmiana daty dostawy i pokazanych opcji dostawy
const firstInput = document.getElementById("osc_order1 input");
if(firstInput) deliveryDate(firstInput.value, firstInput.dataset.delivery, firstInput.dataset.pickuppoint);
calculateBasketCost();
app_shop.fn.ajaxLoadSite(0);
firstTimeLoadPage = false;
},
});
@@ -1104,10 +1110,10 @@ function checkPrevShipping(){
// Przeliczenie kosztu i czasu dostawy i zapisanie nowej metody dostawy
function changeCurrentShippingInfo(shippingMethod){
calculateBasketCost();
deliveryDate(shippingMethod.value, shippingMethod.dataset.delivery, shippingMethod.dataset.pickuppoint);
calculateDeliveryDate(shippingMethod.value, shippingMethod.dataset.delivery, shippingMethod.dataset.pickuppoint);
app_shop.vars.checkedShipping = shippingMethod.value;
}
document.getElementById("cop_seection2").addEventListener("click", e => {
document.getElementById("bm-oscop-section2").addEventListener("click", e => {
// Kliknięcie na dostawe
if(e.target.name === "shipping"){
// Wyczyszczenie wszystkich zaznaczonych punktów odbioru
@@ -1183,7 +1189,7 @@ function removePrevClone(){
const prevClone = document.querySelector(".osc_item-clone");
if(!prevClone) return;
const cloneGroupName = prevClone.querySelector("input").dataset.group;
document.getElementById(`payitem_${cloneGroupName}`).closest(".osc_item").style.display="flex";
document.getElementById(`payitem_${cloneGroupName}`).closest(".osc_item").style.display="grid";
prevClone.remove();
}
@@ -1244,7 +1250,7 @@ function changeDeliveryOptions(){
if(document.getElementById("payitem_cash") && document.getElementById("payitem_cash").checked) changePrepaidDvp("none", "block");
else changePrepaidDvp("block", "none");
document.querySelectorAll("#checkout_step2_1 input").forEach((el) => el.checked = false);
document.querySelectorAll("#bm-oscop-deliveries input").forEach((el) => el.checked = false);
app_shop.vars.checkedShipping = "";
calculateBasketCost();
}
@@ -1319,10 +1325,11 @@ function calculateBasketCost() {
const deliveryCostEl = document.querySelector("#order2_shipping_value .operation_value");
const productsPointsEl = document.querySelector("#order2_products_points .operation_value");
const summaryPointsEl = document.getElementById("summary-points");
const attatchedSummaryPointsEl = document.getElementById("attatched-points");
// Przygotowanie informacji o metodzie dostawy i platnosci
const orderInfo = {
delivery: document.querySelector('.ajax_cop input[name="shipping"]:checked') ? document.querySelector('.ajax_cop input[name="shipping"]:checked').value : "0-1",
payform_id: document.querySelector('.ajax_cop input[name="payform_id"]:checked') ? document.querySelector('.ajax_cop input[name="payform_id"]:checked').value : "cash"
delivery: document.querySelector('.bm-oscop__container input[name="shipping"]:checked') ? document.querySelector('.bm-oscop__container input[name="shipping"]:checked').value : "0-1",
payform_id: document.querySelector('.bm-oscop__container input[name="payform_id"]:checked') ? document.querySelector('.bm-oscop__container input[name="payform_id"]:checked').value : "cash"
}
xhrs && 4 != xhrs.readyState && 0 != xhrs.readyState && xhrs.abort(),
xhrs = $.ajax({
@@ -1358,13 +1365,17 @@ const summaryPointsEl = document.getElementById("summary-points");
productsPointsEl.parentElement.style.display = "flex";
summaryPointsEl.innerHTML = `+ ${t.products_worth_at_points} ${<iai:variable vid="pkt"/>}.`;
summaryPointsEl.style.display = "block";
attatchedSummaryPointsEl.innerHTML = `+ ${t.products_worth_at_points} ${<iai:variable vid="pkt"/>}.`;
attatchedSummaryPointsEl.style.display = "block";
}else {
productsPointsEl.parentElement.style.display = "none";
summaryPointsEl.style.display = "none";
attatchedSummaryPointsEl.style.display = "none";
}
// Cena całkowita
document.getElementById("summary-cost").innerHTML = formatPrice(t.total_to_pay, t.currency_sign) + "<small>" + <iai:variable vid="brutto"/> + "</small>";
document.getElementById("attatched-cost").innerHTML = formatPrice(t.total_to_pay, t.currency_sign);
},
});
};
@@ -1382,25 +1393,48 @@ function formatPrice(price, currencySign) {
};
// Funkcja od ustalenia daty dostawy
function deliveryDate(deliveryVal, delivery, pickuppoint) {
function calculateDeliveryDate(deliveryVal, delivery, pickuppoint) {
const deliveryMessageEl = document.querySelector("#order2_shiptime span:not(.operation_value)");
const attatchedMessageEl = document.querySelector("#attatched-shiptime span:not(.operation_value)");
const deliveryDateEl = document.querySelector("#order2_shiptime .operation_value");
const attatchedDateEl = document.querySelector("#attatched-shiptime .operation_value");
const date = delivery.split("#");
// Wybranie nazwy zaleznie czy dostawa jest do twojego mieszkania czy nie
if(deliveryVal === "0-0" || deliveryVal === "0-1" || pickuppoint === "y") deliveryMessageEl.innerHTML = `${<iai:variable vid="Odbiór zamówienia możliwy"/>}:`;
else deliveryMessageEl.innerHTML = `${<iai:variable vid="Przesyłka powinna być u Ciebie"/>}:`;
if(deliveryVal === "0-0" || deliveryVal === "0-1" || pickuppoint === "y"){
deliveryMessageEl.innerHTML = `${<iai:variable vid="Odbiór zamówienia możliwy"/>}:`;
attatchedMessageEl.innerHTML = `${<iai:variable vid="Odbiór zamówienia możliwy"/>}:`;
}
else{
deliveryMessageEl.innerHTML = `${<iai:variable vid="Przesyłka powinna być u Ciebie"/>}:`;
attatchedMessageEl.innerHTML = `${<iai:variable vid="Przesyłka powinna być u Ciebie"/>}:`;
}
if(date[4]>0) deliveryDateEl.innerHTML = `${<iai:variable vid="za"/>} ` + parseInt(date[5]) + ` ${<iai:variable vid="dni"/>} `;
if(date[4]>0) {
deliveryDateEl.innerHTML = `${<iai:variable vid="za"/>} ` + parseInt(date[5]) + ` ${<iai:variable vid="dni"/>} `;
attatchedDateEl.innerHTML = `${<iai:variable vid="za"/>} ` + parseInt(date[5]) + ` ${<iai:variable vid="dni"/>} `;
}
else{
if(parseInt(date[5]) === 0) deliveryDateEl.innerHTML = <iai:variable vid="Dzisiaj"/>;
else deliveryDateEl.innerHTML = orderTxt[`shipping${parseInt(date[3])}`];
if(parseInt(date[5]) === 0){
deliveryDateEl.innerHTML = <iai:variable vid="Dzisiaj"/>;
attatchedDateEl.innerHTML = <iai:variable vid="Dzisiaj"/>;
}
else{
deliveryDateEl.innerHTML = orderTxt[`shipping${parseInt(date[3])}`];
attatchedDateEl.innerHTML = orderTxt[`shipping${parseInt(date[3])}`];
}
}
};
// Zmiana informacji o dostawie
function changeDeliveryInfoObject(deliveryObject, deliveryElement){
deliveryObject.deliveryVal = deliveryElement.value;
deliveryObject.delivery = deliveryElement.dataset.delivery;
deliveryObject.pickuppoint = deliveryElement.dataset.pickuppoint;
}
// Obsługa klilnięć na elementy w podsumowaniu
document.getElementById("cop_seection3").addEventListener("click", (e) => {
const productsContainer = document.getElementById("checkout_step3_3");
document.getElementById("bm-oscop-section3").addEventListener("click", (e) => {
const productsContainer = document.querySelector(".summary__container");
// Kliknięcie na przyciski "Pokaż pozozostałe produkty" i "Zwiń listę"
const togggleProducts = e.target.closest(".order_products_action");
@@ -1412,40 +1446,98 @@ const productsContainer = document.getElementById("checkout_step3_3");
productsContainer.classList.add("--more");
togggleProducts.querySelector("span").innerHTML = `${<iai:variable vid="Zwiń listę"/>}`;
}
checkIfShowAttatched();
return;
}
// Kliknięcie na checkbox(nie zaznacz wszystkie i nie kod rabatowy)
if(e.target.type === "checkbox" && e.target.id !== "checkall-terms" && e.target.id !== "rebate_option"){
if(e.target.type === "checkbox" && e.target.id !== "checkall-terms" && e.target.id !== "rebate-option"){
document.querySelector(".bm-oscop__attatched-checkbox").classList.remove("--error");
const checkboxAllTerms = document.getElementById("checkall-terms");
if(e.target.checked === false) checkboxAllTerms.checked = false;
const attatchedcheckboxAllTerms = document.getElementById("attatched-checkall-terms");
if(e.target.checked === false) {
checkboxAllTerms.checked = false;
attatchedcheckboxAllTerms.checked = false;
// usuniecie bledu jesli jest na przyczepionym przycisku zakupowym
document.querySelector(".bm-oscop__attatched-checkbox").classList.remove("--error");
}
else{
const termsInputs = document.querySelectorAll(".order2_terms_wrapper input:not(#checkall-terms)");
let checkedCount = 0;
termsInputs.forEach(el => el.checked === true ? checkedCount++ : "");
if(checkedCount === termsInputs.length) checkboxAllTerms.checked = true;
if(checkedCount === termsInputs.length) {
checkboxAllTerms.checked = true;
attatchedcheckboxAllTerms.checked = true;
}
}
return;
}
// Kliknięcie na przycisk "Zaznacz wszystkie"
if(e.target.id === "checkall-terms"){
const termsInputs = document.querySelectorAll(".order2_terms_wrapper input:not(#checkall-terms)");
let checkAll = false;
termsInputs.forEach(el => el.checked === false ? checkAll = true : "");
termsInputs.forEach(function (el) {
if(checkAll) el.checked = true;
else el.checked = false;
});
return;
}
if(e.target.id === "checkall-terms") return toggleAllTerms();
// Usuń error na regulaminie
if(e.target.id === "order2_terms_conditions" || e.target.id === "order2_cancel"){
e.target.parentElement.querySelector("span").classList.remove("text-danger");
e.target.parentElement.querySelector("a").classList.remove("text-danger");
}
})
});
function toggleAllTerms(){
removeErrorOnTerms();
const termsInputs = document.querySelectorAll(".order2_terms_wrapper input:not(#checkall-terms)");
let checkAll = false;
termsInputs.forEach(el => el.checked === false ? checkAll = true : "");
termsInputs.forEach(function (el) {
el.checked = checkAll;
});
document.getElementById("checkall-terms").checked = checkAll;
document.getElementById("attatched-checkall-terms").checked = checkAll;
}
function removeErrorOnTerms(){
document.querySelector(".bm-oscop__attatched-checkbox").classList.remove("--error");
document.querySelector(".order2_terms_conditions span").classList.remove("text-danger");
document.querySelector(".order2_terms_conditions a").classList.remove("text-danger");
document.querySelector(".order2_cancel span").classList.remove("text-danger");
document.querySelector(".order2_cancel a").classList.remove("text-danger");
}
// PRZYCISK ZAKUPU PRZYTWIERDZONY NA DÓŁ STRONY
function checkIfShowAttatched(){
const attatchedEl = document.querySelector("#attatched-summary .bm-oscop__attatched-container");
const summaryCheckAllPos = document.getElementById("checkall-terms").getBoundingClientRect();
// Sprawdzenie czy pokazać przytwierdzony przycisk do zakupu
if(summaryCheckAllPos.top >= window.innerHeight - attatchedEl.offsetHeight){
attatchedEl.style.opacity = "1";
attatchedEl.closest("#attatched-summary").style.zIndex = "30";
}
else{
attatchedEl.style.opacity = "0";
attatchedEl.closest("#attatched-summary").style.zIndex = "-1";
}
// Sprawdzenie czy pokazywać cenę
const summaryEl = document.querySelector(".order2_summary");
// Przeliczana wysokość elementu przytwierdzonego przycisku zakupu na wypadek gdyby cena miała display: none
const attatchedElHeight = attatchedEl.querySelector(".bm-oscop__attatched-price").style.display === "none" ? (summaryEl.offsetHeight + attatchedEl.offsetHeight) : attatchedEl.offsetHeight
if(summaryEl.getBoundingClientRect().top >= window.innerHeight - attatchedElHeight){
attatchedEl.querySelector(".bm-oscop__attatched-price").style.display = "block";
}else{
attatchedEl.querySelector(".bm-oscop__attatched-price").style.display = "none";
}
}
window.addEventListener("scroll", e=>{
checkIfShowAttatched()
});
document.getElementById("attatched-checkall-terms").addEventListener("click", toggleAllTerms);
////////////////////////////////////////////////////////////////////////////////
// KOD RABATOWY (funkcje)
@@ -1475,7 +1567,7 @@ const DEACTIVATE_REBATE_CODE = () => JSON.stringify({
})
// Aktywacja kodu rabatowego
const rebateCode = document.getElementById("rebate_code");
const rebateCode = document.getElementById("rebate-code");
async function updateCode(){
if(rebateCode.value.trim() === ""){
addError(rebateCode);
@@ -1546,7 +1638,7 @@ const activeCodeEl = document.getElementById("active-code");
// Zmień wartości
activeCodeEl.innerHTML = show ? rebateCode.value : "";
showInput = error ? true : false;
document.getElementById("rebate_option").checked = error ? true : false;
document.getElementById("rebate-option").checked = error ? true : false;
if(!error) rebateCode.value = "";
else activeCodeEl.innerHTML = "";
}
@@ -1555,7 +1647,7 @@ const activeCodeEl = document.getElementById("active-code");
let showInput = false;
document.querySelector(".rebate").addEventListener("click", (e) => {
// Rozwinięcie opcji rabatowej
if(e.target.id === "rebate_option" || e.target.classList.contains("rebate__active_change")){
if(e.target.id === "rebate-option" || e.target.classList.contains("rebate__active-change")){
showInput = !showInput;
if(showInput) rebateCodeContainer.classList.add("--fade-in");
else rebateCodeContainer.classList.remove("--fade-in");
@@ -1563,7 +1655,7 @@ document.querySelector(".rebate").addEventListener("click", (e) => {
// Kliknięcie na zrealizuj i dezaktywuj
if(e.target.className.includes("rebate__code-realize")) updateCode();
if(e.target.classList.contains("rebate__active_remove")) removeCode();
if(e.target.classList.contains("rebate__active-remove")) removeCode();
});
@@ -1617,19 +1709,23 @@ async function validateFormInputs(query){
}
// Obsługa złożenia zamówienia
document.querySelector(".order2_button_order").addEventListener("click", async () => {
document.querySelectorAll(".order2_button_order").forEach(btnEl=>{
btnEl.addEventListener("click", handleBuyOnClick);
})
async function handleBuyOnClick(){
const termsConditionsInput = document.getElementById("order2_terms_conditions");
const cancelConditionsInput = document.getElementById("order2_cancel");
try {
app_shop.fn.ajaxLoadSite(1);
app_shop.vars.validation = 1;
// Sprawdzenie pól formularza
const x = await validateAllInputs();
if(x === false) app_shop.vars.validation = 0;
const allInputsCorrectlyValidated = await validateAllInputs();
if(allInputsCorrectlyValidated === false) app_shop.vars.validation = 0;
// Znalezienie obecnie zaznaczonej metody dostawy i płatności
const deliveryMethod = document.querySelector(".ajax_cop [name=shipping]:checked");
const paymentMethod = document.querySelector(".ajax_cop [name=payform_id]:checked");
const deliveryMethod = document.querySelector(".bm-oscop__container [name=shipping]:checked");
const paymentMethod = document.querySelector(".bm-oscop__container [name=payform_id]:checked");
// Sprawdzenie czy użytkownik zaakceptował regulamin
if(!termsConditionsInput.checked || !cancelConditionsInput.checked){
@@ -1665,25 +1761,29 @@ const cancelConditionsInput = document.getElementById("order2_cancel");
let alertMessage = "";
// Element sprawdzający czy regulamin jest zaznaczony
let termsAndConditions = termsConditionsInput.checked && cancelConditionsInput.checked;
if(!termsAndConditions) alertMessage += `${<iai:variable vid="Zatwierdź"/>} ${<iai:variable vid="Regulamin"/>}!<br/>`;
const termsAndConditions = termsConditionsInput.checked && cancelConditionsInput.checked;
if(!termsAndConditions){
document.querySelector(".bm-oscop__attatched-checkbox").classList.add("--error");
alertMessage += `${<iai:variable vid="Zatwierdź"/>} ${<iai:variable vid="Regulamin"/>}!<br/>`;
}
// Sprawdź metodę płatności i dostawy(scrollowanie do formularza ważniejsze)
if(!document.querySelector(`input[name="shipping"]:checked`)){
scrolledToElement = errorEl || document.querySelector("#bm-oscop-deliveries h2");
alertMessage += `${<iai:variable vid="Proszę wybrać dostępną metodę dostawy"/>}<br/>`;
}
if(!document.querySelector(`input[name="payform_id"]:checked`)){
scrolledToElement = errorEl || document.querySelector("#bm-oscop-payments h2");
alertMessage += `${<iai:variable vid="Proszę wybrać metodę płatności"/>}<br/>`;
}
// Błąd w formularzu
if(errorEl){
scrolledToElement = errorEl;
alertMessage += `${<iai:variable vid="W formularzu wystąpiły błędy"/>}<br/>`;
}// Sprawdź metodę płatności i dostawy(scrollowanie do formularza ważniejsze)
if(!document.querySelector(`input[name="payform_id"]:checked`)){
scrolledToElement = errorEl || document.querySelector("#checkout_step3_1 h2");
alertMessage += `${<iai:variable vid="Proszę wybrać metodę płatności"/>}<br/>`;
}
if(!document.querySelector(`input[name="shipping"]:checked`)){
scrolledToElement = errorEl || document.querySelector("#checkout_step2_1 h2");
alertMessage += `${<iai:variable vid="Proszę wybrać dostępną metodę dostawy"/>}`;
alertMessage += `${<iai:variable vid="W formularzu wystąpiły błędy"/>}`;
}
// Jeśli użytkownik zatwierdził regulamin, przescrolluj do elementu z błędem
if(termsAndConditions) scrollToHeight(scrolledToElement);
if(scrolledToElement) scrollToHeight(scrolledToElement);
// Pokaż error i przerwij składanie zamówienia
Alertek.show_alert(alertMessage);
@@ -1702,13 +1802,15 @@ const cancelConditionsInput = document.getElementById("order2_cancel");
console.log(e);
alert("blad");
}
});
}
// Przescrolluj do
function scrollToHeight(scrollToEl){
let yOffset = -45;
if(app_shop.vars.view === 1) yOffset = -100;
if(app_shop.vars.view === 2) yOffset = -75;
const y = scrollToEl.getBoundingClientRect().top + window.pageYOffset + yOffset;
window.scrollTo({top: y, behavior: 'smooth'});
}
@@ -1724,7 +1826,7 @@ function createOrder(deliveryMethod, paymentMethod){
// Weź dane klienta
const email = document.getElementById("client_email").value;
const phone = document.getElementById("client_phone").value;
const clientType = document.querySelector('.ajax_cop [name="client_type"]:checked').value;
const clientType = document.querySelector('.bm-oscop__container [name="client_type"]:checked').value;
const firmname = clientType === "firm" ? document.getElementById("client_firm").value : "";
const nip = clientType === "firm" ? document.getElementById("client_nip").value : "";
let firstname = document.getElementById("client_firstname").value;
@@ -1757,7 +1859,7 @@ function createOrder(deliveryMethod, paymentMethod){
else rebateCode = "";
let voucherCode;
if(document.querySelector(".ajax_cop #payitem_2") && document.querySelector(".ajax_cop #payitem_2").checked) voucherCode = document.querySelector(".ajax_cop #order_voucher_id").value;
if(document.querySelector(".bm-oscop__container #payitem_2") && document.querySelector(".bm-oscop__container #payitem_2").checked) voucherCode = document.querySelector(".bm-oscop__container #order_voucher_id").value;
// Jeśli zalogowany użytkownik jest firmą i nie ma imienia i nazwiska
if (clientType.disabled && clientType.value === "firm") {
@@ -1770,8 +1872,8 @@ function createOrder(deliveryMethod, paymentMethod){
lastname = lastname.replace(/[&\/\\#,+()$~%.'":*?<>{}!@~`^_]/g, "");
// Dodatkowe informacje (uwagi, faktura, punkt odbioru)
const shopRemarks = document.getElementById("shop_remarks").checked ? document.querySelector(".ajax_cop [name=remarks]").value : "";
const deliveryRemarks = document.getElementById("courier_remarks").checked ? document.querySelector(".ajax_cop [name=deliverer_remarks]").value : "";
const shopRemarks = document.getElementById("shop_remarks").checked ? document.querySelector(".bm-oscop__container [name=remarks]").value : "";
const deliveryRemarks = document.getElementById("courier_remarks").checked ? document.querySelector(".bm-oscop__container [name=deliverer_remarks]").value : "";
const invoiceOption = document.querySelector("input[name=invoice]:checked").value;
const pickuppoint = document.querySelector("#osc_order1 input:checked").dataset.pickuppoint === "y" ? document.querySelector("#osc_order1 input:checked").parentElement.querySelector("label [name=pickup_point]").value : "";
@@ -1847,7 +1949,7 @@ function createOrder(deliveryMethod, paymentMethod){
}
function checkNewsletter(logged, regular){
if(document.querySelector(`.ajax_cop [name=${logged}]`)) return document.querySelector(`.ajax_cop [name=${logged}]`).value ? 1 : 0;
if(document.querySelector(`.bm-oscop__container [name=${logged}]`)) return document.querySelector(`.bm-oscop__container [name=${logged}]`).value ? 1 : 0;
else if(document.querySelector(regular)) return document.querySelector(regular).checked ? 1 : 0;
else return 0;
}
@@ -2015,13 +2117,13 @@ function enablePageScroll(){
app_shop.fn.load = function(_url,target,callback,paramets) {
if(app_shop.vars.xhr && app_shop.vars.xhr.readystate != 4) app_shop.vars.xhr.abort();
$(target).addClass('load-content');
for(var i=0; target.length > i ; i++) $(target[i][0]).addClass('load-content');
for(let i=0; target.length > i ; i++) $(target[i][0]).addClass('load-content');
app_shop.vars.xhr = $.ajax({
url: _url+paramets,
timeout: 16000,
success: function(data,textStatus) {
for(var i=0; target.length > i ; i++) $(target[i][0]).removeClass('load-content').html($(data).find(target[i][1]).html());
for(let i=0; target.length > i ; i++) $(target[i][0]).removeClass('load-content').html($(data).find(target[i][1]).html());
app_shop.fn.change_url(_url);
app_shop.fn.evalJSFromHtml(data);
if(callback) callback();
@@ -2036,12 +2138,7 @@ function throwAjaxError(e) {
-1 !== $.inArray(e, ["nocontent", "error", "timeout", "abort", "parsererror"]) && (console.log("Error:" + e), Alertek.show_alert( "Błąd podczas logowania, proszę spróbować ponownie" + " (" + e + ": " + $.now() + ")"), $.cookie("off_opc", !0));
};
async function fetchData(options = {}) {
const {
data,
link,
linkParameter = '',
alert = true
} = options;
const {data,link,linkParameter = '',alert = true} = options;
if (!data) return false;
try {
const response = await fetch(`${link || app_shop.urls.graphql || '/graphql/v1/'}${linkParameter}`, {
@@ -2074,7 +2171,7 @@ function initOSCOP(){
// Element z numerem edycji jeśli jest
const editNumber = document.getElementById("edit-number");
if(document.querySelector(".ajax_cop").childElementCount && !editNumber) changeRegion(null);
if(document.querySelector(".bm-oscop__container").childElementCount && !editNumber) changeRegion(null);
// Jeśli edycja zamówienia uzupełnij dane (niewiadomo jak z voucherem bo go się nie da edytować)
if(editNumber){
@@ -2158,7 +2255,6 @@ if(editNumber){
// Pobranie danych o edytowanym zamówieniu
async function getEditData(){
const data = await fetchData({
data: ORDER_DETAILS(`OrderDetailsInput: {
orderNumber: ${editNumber.value},
@@ -2194,7 +2290,7 @@ if(editNumber){
if(differentDelivery){
// Pokazanie formularza dodatkowej dostawy
document.getElementById("deliver_to_billingaddr").checked = true;
document.querySelector(".ajax_cop #client_new_additional .delivery_box.cn_wrapper").classList.add("--more");
document.querySelector(".bm-oscop__container #client_new_additional .delivery_box.cn_wrapper").classList.add("--more");
document.querySelector(".delivery__address-list-button").classList.add("--fade-in");
fillInput(document.getElementById("delivery_firstname"), orderDetails.client.deliveryData.firstname);
@@ -2234,5 +2330,8 @@ if(editNumber){
input.parentElement.classList.add("--success", "has-success");
}
}
// Sprawdzenie czy schować przyczepiony przycisk od zakupu
checkIfShowAttatched()
}
initOSCOP();