This repository has been archived on 2022-05-10. You can view files and clone it, but cannot push or open issues or pull requests.
tghandbook/src/index.ts

77 lines
2.3 KiB
TypeScript
Raw Normal View History

2020-06-26 11:59:13 +00:00
import TabManager from "./ui/TabManager";
import sections from "./ui/sections";
import { nextAnimationFrame } from "./utils";
2020-06-26 11:59:13 +00:00
import { searchBox } from "./scripts/search";
2020-06-17 09:43:21 +00:00
// @ts-expect-error: Parcel image import
import unknown from "~/assets/images/tab-icons/unknown.svg";
2020-06-17 09:43:21 +00:00
async function load() {
const sectionListContainer = document.getElementById("section-list");
const tabListContainer = document.getElementById("tab-list");
const tabContentContainer = document.getElementById("tabs");
const manager = new TabManager(
sectionListContainer,
tabListContainer,
tabContentContainer
);
manager.setLoading(true);
await nextAnimationFrame();
2020-06-18 11:54:09 +00:00
// Add loading "bar"
const spinnerContainer = document.querySelector("#tabs > .speen");
const icons = document.createElement("div");
icons.className = "loading-icons";
sections.forEach((section) =>
section.tabs.forEach((tab) => {
const iconElement = document.createElement("img");
iconElement.dataset.tab = tab.page;
iconElement.src = tab.icon || unknown;
iconElement.title = tab.page.replace(/_/gi, " ");
icons.appendChild(iconElement);
})
);
spinnerContainer.appendChild(icons);
2020-06-19 18:26:43 +00:00
const promises = sections.flatMap((section) => {
manager.createSection(section.name);
return section.tabs.map(async (tab) => {
// Load page
await manager.openTab(section.name, tab.page, {
icon: tab.icon,
text: tab.text,
});
// Remove icon from loading
icons.removeChild(icons.querySelector(`img[data-tab=${tab.page}]`));
});
});
// DEV: If you only need one page just comment the block above and uncomment this:
// manager.createSection("Medical");
// const promises = [manager.openTab("Medical", "Infections", {})];
Promise.all(promises).then(() => {
// Remove app-wide loading
manager.setLoading(false);
// Set first page as active
2020-06-26 11:59:13 +00:00
manager.setActive("Infections");
});
}
2020-06-18 11:54:09 +00:00
if ("serviceWorker" in navigator) {
const x = process.env.SUBPATH ? `${process.env.SUBPATH}/sw.js` : "sw.js";
2020-06-18 11:54:09 +00:00
navigator.serviceWorker
.register(x)
.then((registration) => {
console.log("Registration successful, scope is:", registration.scope);
})
.catch((error) => {
console.log("Service worker registration failed, error:", error);
});
}
load();
2020-06-24 15:12:11 +00:00
document.body.appendChild(searchBox());