import { routes } from './routes.js'; let DEBUG = false; window.DEBUG = DEBUG; let SERVER_HOST; if (DEBUG) SERVER_HOST = 'localhost'; else SERVER_HOST = 'a2s.su'; window.SERVER_HOST = SERVER_HOST; /* main */ window.onload = function () { let app = document.documentElement; if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { switch_theme('dark'); } else { switch_theme('light'); } // theme switcher document.getElementById('app_theme_switcher').addEventListener('click', switch_theme, false); // routes handler window.addEventListener('hashchange', location_handler); location_handler(); }; /* Изменяет тему приложения */ function switch_theme() { let app = document.documentElement; let theme = app.getAttribute('data-bs-theme'); let theme_switcher = document.getElementById('app_theme_switcher'); let theme_icon = { dark: '☀️', light: '🌙', }; if (theme == 'auto' || theme == 'light') { theme_switcher.innerText = theme_icon['dark']; app.setAttribute('data-bs-theme', 'dark'); } else { theme_switcher.innerText = theme_icon['light']; app.setAttribute('data-bs-theme', 'light'); } } const location_handler = async () => { let location = window.location.hash.replace('#', ''); if (location.length == 0) { location = '/'; } const route = routes[location] || routes['404']; const html = await fetch(route.template).then((response) => response.text()); document.getElementById('content').innerHTML = html; document.title = route.title; document.querySelector('meta[name="description"]').setAttribute('content', route.description); if (route.script) { let script = document.getElementById('content').querySelector('script'); document.querySelector('#autorun').innerHTML = script.innerHTML; script.remove(); eval(document.querySelector('#autorun').innerHTML); } else { document.querySelector('#autorun').innerHTML = ''; } }; function get_from_api(callback, api_method = '', params = {}) { if (api_method == '') { console.log('wrong method'); } else { let url = `http://${SERVER_HOST}:50009/api/v1.0/${api_method}`; let opts = { method: 'get', headers: { 'Content-Type': 'application/json', }, }; fetch(url, opts) .then((response) => { return response.json(); }) .then((data) => { callback(data); }) .catch((err) => console.warn('Something went wrong.', err)); } } window.get_from_api = get_from_api;