175 lines
8.0 KiB
JavaScript
175 lines
8.0 KiB
JavaScript
|
|
import { PageBase } from "./page_base.js";
|
|
|
|
export class PageStoreHome extends PageBase {
|
|
static hash = hashPageStoreHome;
|
|
|
|
constructor() {
|
|
super();
|
|
}
|
|
|
|
initialize() {
|
|
this.sharedInitialize();
|
|
this.hookupFiltersStore();
|
|
this.hookupStoreHome();
|
|
}
|
|
|
|
|
|
hookupFiltersStore() {
|
|
hookupFilterCurrency();
|
|
hookupFilterDeliveryRegion();
|
|
hookupFilterIsIncludedVAT();
|
|
}
|
|
|
|
hookupFilterCurrency() {
|
|
/*
|
|
let elForm = document.querySelectorAll(idFormCurrency);
|
|
let elSelector = document.querySelectorAll(elForm.querySelector('select')[0]);
|
|
initialiseEventHandler(elSelector, flagInitialised, function(){
|
|
elForm = document.querySelectorAll(idFormCurrency);
|
|
elSelector.addEventListener("change", function(event) {
|
|
ajaxData = {};
|
|
ajaxData[keyForm] = convertForm2JSON(elForm);
|
|
console.log('sending data to currency selector controller: '); console.log(ajaxData);
|
|
ajaxJSONData('select currency', mapHashToController(hashStoreSelectCurrency), ajaxData, function() { window.location.reload() }, false);
|
|
|
|
let optionSelected = elSelector.options[elSelector.selectedIndex]
|
|
let textSelected = optionSelected.attr(attrDataShort)
|
|
|
|
});
|
|
});
|
|
console.log("form currency initialised")
|
|
*/
|
|
|
|
let dropdownCurrency = document.querySelectorAll(idCurrency)[0];
|
|
// dropdownCurrency.options.map(function(option) {
|
|
let option, indexHyphen, textOption;
|
|
for (let indexOption = 0; indexOption < dropdownCurrency.options.length; indexOption++) {
|
|
option = document.querySelectorAll(dropdownCurrency.options[indexOption]);
|
|
textOption = option.text();
|
|
indexHyphen = textOption.indexOf('-');
|
|
option.attr(attrTextExpanded, textOption);
|
|
option.attr(attrTextCollapsed, textOption.substring(0, indexHyphen - 1));
|
|
option.classList.add(flagCollapsed);
|
|
}
|
|
handleSelectCollapse(dropdownCurrency);
|
|
initialiseEventHandler(dropdownCurrency, flagInitialised, function() {
|
|
dropdownCurrency = document.querySelectorAll(dropdownCurrency);
|
|
dropdownCurrency.addEventListener("focus", function() {
|
|
handleSelectExpand(dropdownCurrency);
|
|
});
|
|
dropdownCurrency.addEventListener("blur", function() {
|
|
handleSelectCollapse(dropdownCurrency);
|
|
});
|
|
dropdownCurrency.addEventListener("change", function() {
|
|
let selectedCurrency = dropdownCurrency.val();
|
|
console.log("selected currency: ", selectedCurrency);
|
|
let basket = getLocalStorage(keyBasket);
|
|
basket[keyIdCurrency] = selectedCurrency;
|
|
// setLocalStorage(keyIdCurrency, selectedCurrency);
|
|
setLocalStorage(keyBasket, basket);
|
|
let ajaxData = {};
|
|
ajaxData[keyBasket] = basket;
|
|
ajaxJSONData('update currency', mapHashToController(hashPageCurrent), ajaxData, loadPageBody, false);
|
|
});
|
|
});
|
|
}
|
|
|
|
hookupFilterDeliveryRegion() {
|
|
/*
|
|
let elForm = document.querySelectorAll(idFormDeliveryRegion);
|
|
let elSelector = document.querySelectorAll(elForm.querySelector('select')[0]);
|
|
initialiseEventHandler(elSelector, flagInitialised, function(){
|
|
elForm = document.querySelectorAll(idFormDeliveryRegion);
|
|
elSelector.addEventListener("change", function(event) {
|
|
ajaxData = {};
|
|
ajaxData[keyForm] = convertForm2JSON(elForm);
|
|
console.log('sending data to delivery region selector controller: '); console.log(ajaxData);
|
|
ajaxJSONData('select delivery region', mapHashToController(hashStoreSelectDeliveryRegion), ajaxData, function() { window.location.reload() }, false);
|
|
});
|
|
console.log("form delivery region initialised")
|
|
});
|
|
*/
|
|
|
|
let dropdownRegion = document.querySelectorAll(idRegionDelivery)[0];
|
|
|
|
let option, indexHyphen, textOption;
|
|
for (let indexOption = 0; indexOption < dropdownRegion.options.length; indexOption++) {
|
|
option = document.querySelectorAll(dropdownRegion.options[indexOption]);
|
|
textOption = option.text();
|
|
indexHyphen = textOption.indexOf('-');
|
|
option.attr(attrTextExpanded, textOption);
|
|
option.attr(attrTextCollapsed, textOption.substring(0, indexHyphen - 1));
|
|
option.classList.add(flagCollapsed);
|
|
}
|
|
|
|
handleSelectCollapse(dropdownRegion);
|
|
|
|
initialiseEventHandler(dropdownRegion, flagInitialised, function() {
|
|
dropdownRegion = document.querySelectorAll(dropdownRegion);
|
|
dropdownRegion.addEventListener("focus", function() {
|
|
console.log("dropdown region focused");
|
|
handleSelectExpand(dropdownRegion);
|
|
});
|
|
dropdownRegion.addEventListener("blur", function() {
|
|
console.log("dropdown region blurred");
|
|
handleSelectCollapse(dropdownRegion);
|
|
});
|
|
dropdownRegion.addEventListener("change", function() {
|
|
handleSelectCollapse(dropdownRegion);
|
|
let selectedRegion = dropdownRegion.val();
|
|
console.log("selected region: ", selectedRegion);
|
|
let basket = getLocalStorage(keyBasket);
|
|
basket[keyIdRegionDelivery] = selectedRegion;
|
|
// setLocalStorage(keyIdRegionDelivery, selectedRegion);
|
|
setLocalStorage(keyBasket, basket);
|
|
let ajaxData = {};
|
|
ajaxData[keyIdRegionDelivery] = selectedRegion;
|
|
ajaxJSONData('update region', mapHashToController(hashStoreSetRegion), ajaxData, null, false);
|
|
});
|
|
});
|
|
}
|
|
|
|
hookupFilterIsIncludedVAT() {
|
|
let elForm = document.querySelectorAll(idFormIsIncludedVAT);
|
|
let elSelector = document.querySelectorAll(elForm.querySelector('input[type="checkbox"]')[0]);
|
|
initialiseEventHandler(elSelector, flagInitialised, function(){
|
|
elForm = document.querySelectorAll(idFormIsIncludedVAT);
|
|
elSelector.addEventListener("change", function(event) {
|
|
ajaxData = {};
|
|
ajaxData[keyForm] = convertForm2JSON(elForm);
|
|
console.log('sending data to include VAT controller: '); console.log(ajaxData);
|
|
ajaxJSONData('set include VAT', mapHashToController(hashStoreSetIsIncludedVAT), ajaxData, function() { window.location.reload() }, false);
|
|
});
|
|
console.log("form is included VAT initialised")
|
|
});
|
|
}
|
|
|
|
hookupStoreCardsProduct() {
|
|
|
|
let d; // , lsShared;
|
|
let selectorCardProduct = '.card.subcard';
|
|
initialiseEventHandler(selectorCardProduct, flagInitialised, function(cardProduct) {
|
|
console.log("initialising product card: ", cardProduct);
|
|
cardProduct.addEventListener("click", function(event) {
|
|
// d = { keyIdProduct: product.attr(attrIdProduct) }
|
|
var elemClicked = event.target;
|
|
if (elemClicked.id != 'submit') { // disable for submit buttons
|
|
console.log("product click: " + cardProduct.attr(attrIdProduct));
|
|
console.log("permutation click: " + cardProduct.attr(attrIdPermutation));
|
|
var d = {}
|
|
d[keyIdProduct] = cardProduct.attr(attrIdProduct)
|
|
d[keyIdPermutation] = cardProduct.attr(attrIdPermutation)
|
|
// send quantity requested
|
|
goToPage(hashPageStoreProduct, d);
|
|
}
|
|
});
|
|
console.log("click method added for product ID: " + cardProduct.attr(attrIdProduct) + ', permutation ID: ', cardProduct.attr(attrIdPermutation));
|
|
});
|
|
}
|
|
|
|
leave() {
|
|
super.leave();
|
|
}
|
|
}
|