/* * Project-wide globals */ import {TolNode} from './tol'; // ========== For server requests ========== const SERVER_DATA_URL = (new URL(window.location.href)).origin + '/data/' const SERVER_IMG_PATH = '/tol_data/img/' export async function queryServer(params: URLSearchParams){ // Construct URL const url = new URL(SERVER_DATA_URL); url.search = params.toString(); // Query server let responseObj; try { const response = await fetch(url.toString()); responseObj = await response.json(); } catch (error){ console.log(`Error with querying ${url.toString()}: ${error}`); return null; } return responseObj; } export function getImagePath(imgName: string): string { return SERVER_IMG_PATH + imgName.replaceAll('\'', '\\\''); } // ========== For server responses (matches backend/tilo.py) ========== // Represents a search-string suggestion export type SearchSugg = { name: string, canonicalName: string | null, pop: number, }; // Holds search suggestions and an indication of if there was more export type SearchSuggResponse = { suggs: SearchSugg[], hasMore: boolean, }; export type DescInfo = { text: string, wikiId: number, fromRedirect: boolean, fromDbp: boolean, }; export type ImgInfo = { id: number, src: string, url: string, license: string, artist: string, credit: string, }; export type NodeInfo = { tolNode: TolNode, descInfo: null | DescInfo, imgInfo: null | ImgInfo, }; export type InfoResponse = { nodeInfo: NodeInfo, subNodesInfo: [] | [NodeInfo | null, NodeInfo | null], }; // ========== Used by auto-mode and tutorial-pane ========== export type Action = 'expand' | 'collapse' | 'expandToView' | 'unhideAncestor' | 'tileInfo' | 'search' | 'autoMode' | 'settings' | 'help';