1. New Router and Base Page Class architecture to avoid circular references and conform to module bundler requirements. \n 2. Relative path bug fix for lib/validation.js file to work using module bundler.

This commit is contained in:
2024-09-17 17:00:18 +01:00
parent 00dc753add
commit 6f6bea00f9
104 changed files with 1348 additions and 247 deletions

View File

@@ -3,10 +3,16 @@ import Events from "../lib/events.js";
import LocalStorage from "../lib/local_storage.js";
import API from "../api.js";
import DOM from "../dom.js";
import { router } from "../router.js";
export class BasePage {
constructor() {
export default class BasePage {
constructor(router) {
if (!router) {
throw new Error("Router is required");
}
else {
console.log("initialising with router: ", router);
}
this.router = router;
this.title = titlePageCurrent;
// this.hash = hashPageCurrent;
if (this.constructor === BasePage) {
@@ -74,51 +80,51 @@ export class BasePage {
this.hookupButtonNavAdminHome();
}
hookupButtonNavHome() {
Events.initialiseEventHandler('.' + flagNavHome, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavHome, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageHome);
this.router.navigateToHash(hashPageHome);
});
});
}
hookupButtonNavServices() {
Events.initialiseEventHandler('.' + flagNavServices, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavServices, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
console.log('going to services page');
router.navigateToHash(hashPageServices);
this.router.navigateToHash(hashPageServices);
});
});
}
hookupButtonNavContact() {
Events.initialiseEventHandler('.' + flagNavContact, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavContact, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageContact);
this.router.navigateToHash(hashPageContact);
});
});
}
hookupButtonNavUserAccount() {
Events.initialiseEventHandler('.' + flagNavUserAccount, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavUserAccount, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageUserAccount);
this.router.navigateToHash(hashPageUserAccount);
});
});
}
hookupButtonNavUserLogout() {
Events.initialiseEventHandler('.' + flagNavUserLogout, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavUserLogout, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageUserLogout);
this.router.navigateToHash(hashPageUserLogout);
});
});
}
hookupButtonNavUserLogin() {
Events.initialiseEventHandler('.' + flagNavUserLogin, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavUserLogin, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
// router.navigateToHash(hashPageUserLogin);
// this.router.navigateToHash(hashPageUserLogin);
/*
let dataRequest = {};
dataRequest[keyCallback] = hashPageCurrent;
@@ -128,7 +134,7 @@ export class BasePage {
API.loginUser()
.then(function(response) {
if (response.Success) {
window.app.router.navigateToUrl(response[keyCallback], null, false);
this.router.navigateToUrl(response[keyCallback], null, false); // window.app.
} else {
DOM.alertError("Error", response.Message);
}
@@ -137,76 +143,76 @@ export class BasePage {
});
}
hookupButtonNavStoreHome() {
Events.initialiseEventHandler('.' + flagNavStoreHome, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavStoreHome, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageStoreHome);
this.router.navigateToHash(hashPageStoreHome);
});
});
}
hookupButtonNavStoreProductCategories() {
Events.initialiseEventHandler('.' + flagNavStoreProductCategories, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavStoreProductCategories, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageStoreProductCategories);
this.router.navigateToHash(hashPageStoreProductCategories);
});
});
}
hookupButtonNavStoreProducts() {
Events.initialiseEventHandler('.' + flagNavStoreProducts, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavStoreProducts, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageStoreProducts);
this.router.navigateToHash(hashPageStoreProducts);
});
});
}
hookupButtonNavStoreProductPermutations() {
Events.initialiseEventHandler('.' + flagNavStoreProductPermutations, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavStoreProductPermutations, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageStoreProductPermutations);
this.router.navigateToHash(hashPageStoreProductPermutations);
});
});
}
hookupButtonNavStoreProductPrices() {
Events.initialiseEventHandler('.' + flagNavStoreProductPrices, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavStoreProductPrices, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageStoreProductPrices);
this.router.navigateToHash(hashPageStoreProductPrices);
});
});
}
hookupButtonNavStoreProductVariations() {
Events.initialiseEventHandler('.' + flagNavStoreProductVariations, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavStoreProductVariations, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageStoreProductVariations);
this.router.navigateToHash(hashPageStoreProductVariations);
});
});
}
hookupButtonNavStoreStockItems() {
Events.initialiseEventHandler('.' + flagNavStoreStockItems, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavStoreStockItems, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageStoreStockItems);
this.router.navigateToHash(hashPageStoreStockItems);
});
});
}
hookupButtonNavAdminHome() {
Events.initialiseEventHandler('.' + flagNavAdminHome, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
Events.initialiseEventHandler('.' + flagNavAdminHome, flagInitialised, (navigator) => {
navigator.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageAdminHome);
this.router.navigateToHash(hashPageAdminHome);
});
});
}
hookupImagesLogo() {
let selectorImagesLogo = "img." + flagImageLogo;
Events.initialiseEventHandler(selectorImagesLogo, flagInitialised, function(imageLogo) {
imageLogo.addEventListener("click", function(event) {
Events.initialiseEventHandler(selectorImagesLogo, flagInitialised, (buttonImageLogo) => {
buttonImageLogo.addEventListener("click", (event) => {
event.stopPropagation();
router.navigateToHash(hashPageHome);
this.router.navigateToHash(hashPageHome);
});
});
}

View File

@@ -1,17 +1,17 @@
import Events from "../lib/events.js";
import LocalStorage from "../lib/local_storage.js";
import Validation from "../lib/validation";
import { BasePage } from "./base.js";
import Validation from "../lib/validation.js";
import BasePage from "./base.js";
import API from "../api.js";
import DOM from "../dom.js";
export class TableBasePage extends BasePage {
export default class TableBasePage extends BasePage {
// callFilterTableContent
// callSaveTableContent
constructor() {
super();
constructor(router) {
super(router);
/*
if (!this.constructor.callFilterTableContent) {
throw new Error(`Class ${this.constructor.name} must have a static callFilterTableContent method attribute that takes a single argument - the filters as json.`);

View File

@@ -1,13 +1,12 @@
import Events from "../../lib/events.js";
import { BasePage } from "../base.js";
// import { router } from "../../router.js";
import BasePage from "../base.js";
export class PageAdminHome extends BasePage {
export default class PageAdminHome extends BasePage {
static hash = hashPageAdminHome;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {
@@ -29,14 +28,14 @@ export class PageAdminHome extends BasePage {
hookupButtonNavAdminStoreStripeProducts() {
Events.initialiseEventHandler('.' + flagNavAdminStoreStripeProducts, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
router.navigateToHash(hashPageAdminStoreStripeProducts);
this.router.navigateToHash(hashPageAdminStoreStripeProducts);
});
});
}
hookupButtonNavAdminStoreStripePrices() {
Events.initialiseEventHandler('.' + flagNavAdminStoreStripePrices, flagInitialised, function(navigator) {
navigator.addEventListener("click", function(event) {
router.navigateToHash(hashPageAdminStoreStripePrices);
this.router.navigateToHash(hashPageAdminStoreStripePrices);
});
});
}

View File

@@ -1,11 +1,11 @@
import { BasePage } from "../base.js";
import BasePage from "../base.js";
export class PageContact extends BasePage {
export default class PageContact extends BasePage {
static hash = hashPageContact;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -1,11 +1,11 @@
import { BasePage } from "../base.js";
import BasePage from "../base.js";
export class PageHome extends BasePage {
export default class PageHome extends BasePage {
static hash = hashPageHome;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -1,11 +1,11 @@
import { BasePage } from "../base.js";
import BasePage from "../base.js";
export class PageServices extends BasePage {
export default class PageServices extends BasePage {
static hash = hashPageServices;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -0,0 +1,17 @@
import BasePage from "../base.js";
export default class PageAccessibilityReport extends BasePage {
static hash = hashPageAccessibilityReport;
constructor(router) {
super(router);
}
initialize() {
this.sharedInitialize();
}
leave() {
super.leave();
}
}

View File

@@ -1,10 +1,10 @@
import { BasePage } from "../base.js";
import BasePage from "../base.js";
export class PageAccessibilityStatement extends BasePage {
export default class PageAccessibilityStatement extends BasePage {
static hash = hashPageAccessibilityStatement;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -1,11 +1,11 @@
import { BasePage } from "../base.js";
import BasePage from "../base.js";
export class PageLicense extends BasePage {
export default class PageLicense extends BasePage {
static hash = hashPageLicense;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -0,0 +1,18 @@
import BasePage from "../base.js";
export default class PagePrivacyPolicy extends BasePage {
static hash = hashPagePrivacyPolicy;
constructor(router) {
super(router);
}
initialize() {
this.sharedInitialize();
}
leave() {
super.leave();
}
}

View File

@@ -0,0 +1,17 @@
import BasePage from "../base.js";
export default class PageRetentionSchedule extends BasePage {
static hash = hashPageDataRetentionSchedule;
constructor(router) {
super(router);
}
initialize() {
this.sharedInitialize();
}
leave() {
super.leave();
}
}

View File

@@ -1,14 +1,13 @@
import Events from "../../lib/events.js";
import LocalStorage from "../../lib/local_storage.js";
import Validation from "../../lib/validation";
// import { BasePage } from "../base.js";
import Validation from "../../lib/validation.js";
// import BasePage from "../base.js";
import DOM from "../../dom.js";
import { isEmpty } from "../../lib/utils.js";
export class StoreMixinPage { // extends BasePage {
export default class StoreMixinPage {
constructor() {
// super();
}
initialize(thisPage) {

View File

@@ -1,13 +1,13 @@
import Events from "../../lib/events.js";
import LocalStorage from "../../lib/local_storage.js";
import { BasePage } from "../base.js";
import BasePage from "../base.js";
export class PageStoreBasket extends BasePage {
export default class PageStoreBasket extends BasePage {
static hash = hashPageStoreBasket;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -1,11 +1,11 @@
import { BasePage } from "../base.js";
import BasePage from "../base.js";
export class PageStoreHome extends BasePage {
export default class PageStoreHome extends BasePage {
static hash = hashPageStoreHome;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -1,16 +1,16 @@
import Events from "../../lib/events.js";
import { TableBasePage } from "../base_table.js";
import TableBasePage from "../base_table.js";
import API from "../../api.js";
import DOM from "../../dom.js";
export class PageStoreProductCategories extends TableBasePage {
export default class PageStoreProductCategories extends TableBasePage {
static hash = hashPageStoreProductCategories;
callFilterTableContent = API.getCategoriesByFilters;
callSaveTableContent = API.saveCategories;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -1,14 +1,14 @@
import Events from "../../lib/events.js";
import { BasePage } from "../base.js";
import Validation from "../../lib/validation";
import BasePage from "../base.js";
import Validation from "../../lib/validation.js";
export class PageStoreProductPermutations extends BasePage {
export default class PageStoreProductPermutations extends BasePage {
static hash = hashPageStoreProductPermutations;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {

View File

@@ -1,14 +1,14 @@
import Events from "../../lib/events.js";
import Validation from "../../lib/validation";
import { BasePage } from "../base.js";
import Validation from "../../lib/validation.js";
import BasePage from "../base.js";
export class PageStoreStockItems extends BasePage {
export default class PageStoreStockItems extends BasePage {
static hash = hashPageStoreStockItems;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {
@@ -374,7 +374,7 @@ export class PageStoreStockItems extends BasePage {
}
import { TableBasePage } from "../base_table.js";
import TableBasePage from "../base_table.js";
import API from "../../api.js";
import DOM from "../../dom.js";

View File

@@ -1,11 +1,11 @@
import { BasePage } from "../base.js";
import BasePage from "../base.js";
export class PageUser extends BasePage {
export default class PageUser extends BasePage {
static hash = hashPageUser;
constructor() {
super();
constructor(router) {
super(router);
}
initialize() {