lumino-showroom/assets/js/checkout.js

164 lines
7.0 KiB
JavaScript

function clearAddressFields() {
$('#address-components').hide();
$('#street-number').val('');
$('#street-number').prop('disabled', true);
$('#route').val('');
$('#locality').val('');
$('#postal-code').val('');
}
function getAddressFiedlValue(addressComponents, $field) {
let field = addressComponents.find(obj => obj.types.indexOf($field) > -1);
return field != undefined ? field.long_name : '';
}
let input = document.querySelector("#ctelefon");
let iti = null;
if (input != undefined) {
iti = window.intlTelInput(input, {
initialCountry: "de",
preferredCountries: ["de"],
geoIpLookup: function (callback) {
$.get('https://ipinfo.io', function () { }, "jsonp").always(function (resp) {
let countryCode = (resp && resp.country) ? resp.country : "us";
callback(countryCode);
});
},
utilsScript: $("meta[name='url-base']").attr('content') + "/template/assets/libs/intl-tel-input/js/utils.min.js",
});
}
function updateProducts() {
$('#list-products').html('');
if (objProducts.length > 0) {
getInfoFromSelectedProduct().done(function (response, status) {
response.contents.forEach(function (product) {
let objProduct = getProductInfo(product);
let elementProduct = createProductElement(objProduct);
$('#list-products').append(elementProduct);
});
if (totalPrice > 0) {
$('#total-checkout-price').text(numberToEuroFormat(totalPrice));
} else {
$('#form-section').hide();
$('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').hide();
$('#total-checkout-price').parent().parent().parent().hide();
$('#no-products-in-checkout').hide();
$('#cart-error-in-checkout').show();
}
}).fail(function (response) {
$('#form-section').hide();
$('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').hide();
$('#total-checkout-price').parent().parent().parent().hide();
$('#no-products-in-checkout').hide();
$('#cart-error-in-checkout').show();
});
$('#form-section').show();
$('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').show();
$('#total-checkout-price').parent().parent().parent().show();
$('#no-products-in-checkout').hide();
$('#cart-error-in-checkout').hide();
}
else {
$('#form-section').hide();
$('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').hide();
$('#total-checkout-price').parent().parent().parent().hide();
$('#no-products-in-checkout').show();
$('#cart-error-in-checkout').hide();
}
}
$(function () {
updateProducts();
$("#successful-submitting-form").delay(4000).slideUp(200, function () { $(this).alert('close'); });
$('#anfrage').submit(function (event) {
event.preventDefault();
let form = $(this);
getInfoFromSelectedProduct().done(function (response, status) {
let products = response.contents.map(product => {
product = getProductInfo(product);
product = calculatePrice(product);
return product.quantity + 'x ' + product.title + ' (' + numberToEuroFormat(product.calc_preis) + ')';
});
let cart = products.join(" - ") + " - Gesammt: " + numberToEuroFormat(totalPrice);
$('#ccart').val(cart);
$('#ctelefon').val(iti.getNumber());
objProducts = [];
localStorage.setItem("products", JSON.stringify(objProducts));
form.unbind('submit').submit();
});
});
$(document).on('click', '.btn-remove-product', function () {
if (objProducts.length > 0) {
$('#form-section').show();
$('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').show();
$('#total-checkout-price').parent().parent().parent().show();
$('#no-products-in-checkout').hide();
} else {
$('#form-section').hide();
$('#list-products').parent().parent().parent().parent().parent().find('.modal-footer').hide();
$('#total-checkout-price').parent().parent().parent().hide();
$('#no-products-in-checkout').show();
}
});
$(document).on('input', '.select-quantity', function () {
getInfoFromSelectedProduct().done(function (response, status) {
totalPrice = 0;
response.contents.forEach(function (product) {
let objProduct = getProductInfo(product);
objProduct = calculatePrice(objProduct);
totalPrice += objProduct.calc_preis * objProduct.quantity;
});
$('#total-checkout-price').text(numberToEuroFormat(totalPrice));
});
});
});
$(window).on('load', google.maps.event, function () {
let input = document.getElementById('field_location');
let options = {
types: ['address'],
componentRestrictions: { country: "de" }
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
autocomplete.addListener("place_changed", () => {
clearAddressFields();
const place = autocomplete.getPlace();
if (!place.geometry) return;
var componentMap = {
country: 'country',
locality: 'locality',
administrative_area_level_1: 'administrative_area_level_1',
administrative_area_level_2: 'administrative_area_level_2',
postal_code: 'postal_code',
route: 'route',
street_number: 'street_number',
};
$('#address-components').show();
let addressComponents = autocomplete.getPlace().address_components;
let streetNumber = getAddressFiedlValue(addressComponents, 'street_number');
if (streetNumber == '') {
$('#street-number').prop('disabled', false);
$('#street-number').focus();
}
else {
$('#street-number').prop('disabled', true);
$('#street-number').val(streetNumber);
}
let country = getAddressFiedlValue(addressComponents, 'country');
let route = getAddressFiedlValue(addressComponents, 'route');
$('#route').val(route);
let locality = getAddressFiedlValue(addressComponents, 'locality');
$('#locality').val(locality);
let postalCode = getAddressFiedlValue(addressComponents, 'postal_code');
$('#postal-code').val(postalCode);
$('#street-number').blur(function () {
if ($('#street-number').val() == '') $('#street-number').focus();
else {
$('#street-number').prop('disabled', true);
$('#field_location').val(route + ' ' + $('#street-number').val() + ', ' + locality + ', ' + country);
}
});
});
});