From e943375d74ce8d48b8ad40b1a5d05437ca4f5c7f Mon Sep 17 00:00:00 2001 From: Tim Keller Date: Mon, 5 May 2025 20:38:42 -0500 Subject: add immich api class and page class --- src/pages.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/pages.js (limited to 'src/pages.js') diff --git a/src/pages.js b/src/pages.js new file mode 100644 index 0000000..7e0bdbc --- /dev/null +++ b/src/pages.js @@ -0,0 +1,35 @@ +export default class Page { + static pages = {} + static currentPage = null + + static pathnameCallback() { + const path = window.location.pathname.replace(/\/$/, "") + const page = Page.pages[path] + + if (!page) + throw new Error(`Path '${path}' does not exist`) + + if (Page.currentPage) + Page.currentPage.setVisible(false) + + page.setVisible(true) + Page.currentPage = page + } + + constructor(pageContainer, endpoint, f_initialize) { + Page.pages[endpoint] = this + + this.pageContainer = pageContainer + this.endpoint = endpoint + this.initialize = f_initialize + this.visible = false + this.initialized = false + } + + setVisible(visible) { + this.pageContainer.style.display = visible ? null : "none" + this.visible = visible + if (visible && !this.initialized && this.initialize) + this.initialized = this.initialize() + } +} -- cgit v1.2.3