- getConfig: function () {
- return fetch("config.yml")
- .then((response) => {
- if (!response.ok) {
- throw Error(response.statusText);
- }
- return response.text().then((body) => {
- return jsyaml.load(body);
+ searchHotkey() {
+ if (this.config.hotkey && this.config.hotkey.search) {
+ return this.config.hotkey.search;
+ }
+ },
+ buildDashboard: async function () {
+ const defaults = parse(defaultConfig);
+ let config;
+ try {
+ config = await this.getConfig();
+ this.currentPage = window.location.hash.substring(1) || "default";
+
+ if (this.currentPage !== "default") {
+ let pageConfig = await this.getConfig(
+ `assets/${this.currentPage}.yml`
+ );
+ config = Object.assign(config, pageConfig);
+ }
+ } catch (error) {
+ console.log(error);
+ config = this.handleErrors("⚠️ Error loading configuration", error);
+ }
+ this.config = merge(defaults, config);
+ this.services = this.config.services;
+
+ document.title =
+ this.config.documentTitle ||
+ `${this.config.title} | ${this.config.subtitle}`;
+ if (this.config.stylesheet) {
+ let stylesheet = "";
+ for (const file of this.config.stylesheet) {
+ stylesheet += `@import "${file}";`;
+ }
+ this.createStylesheet(stylesheet);
+ }
+ },
+ getConfig: function (path = "assets/config.yml") {
+ return fetch(path).then((response) => {
+ if (response.status == 404 || response.redirected) {
+ this.configNotFound = true;
+ return {};
+ }
+
+ if (!response.ok) {
+ throw Error(`${response.statusText}: ${response.body}`);
+ }
+
+ const that = this;
+ return response
+ .text()
+ .then((body) => {
+ return parse(body);
+ })
+ .then(function (config) {
+ if (config.externalConfig) {
+ return that.getConfig(config.externalConfig);
+ }
+ return config;