Second frontend, written in Next.JS + Typescript.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1 lines
10 KiB

{"ast":null,"code":"import { gql } from \"../client/graphql\";\nexport async function listLogs(gql, filter) {\n return (await gql.post(LOGS_DOC, {\n filter\n }, \"ListLogs\")).logs;\n}\nexport function logFilterToQueryString(filter) {\n const parts = [];\n\n if (filter.characters != null && filter.characters.length > 0) {\n parts.push({\n k: \"characters\",\n v: filter.characters.join(\",\")\n });\n }\n\n if (filter.channels != null && filter.channels.length > 0) {\n parts.push({\n k: \"channels\",\n v: filter.channels.join(\",\")\n });\n }\n\n if (filter.events != null && filter.events.length > 0) {\n parts.push({\n k: \"events\",\n v: filter.events.join(\",\")\n });\n }\n\n if (filter.search != null && filter.search !== \"\") {\n parts.push({\n k: \"search\",\n v: filter.search\n });\n }\n\n if (filter.open != null) {\n parts.push({\n k: \"open\",\n v: filter.open ? \"true\" : \"false\"\n });\n }\n\n if (filter.limit != null) {\n parts.push({\n k: \"limit\",\n v: filter.limit.toFixed(0)\n });\n } else {\n parts.push({\n k: \"limit\",\n v: \"100\"\n });\n }\n\n if (parts.length === 1 && parts[0].k === \"limit\" && parts[0].v === \"100\") {\n return \"\";\n }\n\n return \"?\" + parts.map(p => `${p.k}=${encodeURIComponent(p.v)}`);\n}\nexport function logFilterFromQueryString(qs) {\n const filter = {\n limit: 100\n };\n const qsParts = (qs.startsWith(\"?\") ? qs.slice(1) : qs).split(\"&\").map(t => t.split(\"=\")).map(kv => ({\n k: kv[0],\n v: decodeURIComponent(kv[1])\n }));\n\n for (const part of qsParts) {\n switch (part.k) {\n case \"characters\":\n {\n filter.characters = part.v.split(\",\");\n break;\n }\n\n case \"channels\":\n {\n filter.channels = part.v.split(\",\");\n break;\n }\n\n case \"events\":\n {\n filter.events = part.v.split(\",\");\n break;\n }\n\n case \"search\":\n {\n filter.search = part.v;\n break;\n }\n\n case \"open\":\n {\n filter.open = part.v === \"open\";\n break;\n }\n\n case \"limit\":\n {\n filter.limit = parseInt(part.v) || 0;\n break;\n }\n }\n }\n\n return filter;\n}\nconst LOGS_DOC = gql`\nquery ListLogs($filter: LogsFilter) {\n logs(filter: $filter) {\n ...LogMeta\n ...LogMetaCharacters\n }\n}\n\nquery FindLog($id: String!) {\n log(id: $id) {\n ...LogMeta\n ...LogData\n }\n}\n\nfragment LogMeta on Log {\n id\n shortId\n date\n channelName\n title\n eventName\n description\n}\n\nfragment LogMetaCharacters on Log {\n characters {\n id\n name\n shortName\n author\n }\n}\n\nfragment LogData on Log {\n open\n channel {\n name\n logged\n hub\n eventName\n locationName\n }\n characters {\n id\n nicks\n author\n name\n shortName\n description\n }\n posts {\n id\n time\n kind\n nick\n text\n position\n }\n}\n`;","map":{"version":3,"sources":["/home/gisle/projects/react/rpdata-frontend2/src/lib/rpdata/logs.ts"],"names":["gql","listLogs","filter","post","LOGS_DOC","logs","logFilterToQueryString","parts","characters","length","push","k","v","join","channels","events","search","open","limit","toFixed","map","p","encodeURIComponent","logFilterFromQueryString","qs","qsParts","startsWith","slice","split","t","kv","decodeURIComponent","part","parseInt"],"mappings":"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","sourcesContent":["import { GQLClient, gql } from \"../client/graphql\";\n\nexport async function listLogs(gql: GQLClient, filter?: LogFilter): Promise<LogHeader[]> {\n return (await gql.post(LOGS_DOC, {filter}, \"ListLogs\")).logs;\n}\n\nexport function logFilterToQueryString(filter: LogFilter): string {\n const parts: {k:string, v:string}[] = [];\n\n if (filter.characters != null && filter.characters.length > 0) {\n parts.push({k:\"characters\", v:filter.characters.join(\",\")})\n }\n if (filter.channels != null && filter.channels.length > 0) {\n parts.push({k:\"channels\", v:filter.channels.join(\",\")})\n }\n if (filter.events != null && filter.events.length > 0) {\n parts.push({k:\"events\", v:filter.events.join(\",\")})\n }\n if (filter.search != null && filter.search !== \"\") {\n parts.push({k:\"search\", v:filter.search})\n }\n if (filter.open != null) {\n parts.push({k:\"open\", v:filter.open ? \"true\" : \"false\"})\n }\n if (filter.limit != null) {\n parts.push({k:\"limit\", v:filter.limit.toFixed(0)})\n } else {\n parts.push({k:\"limit\", v:\"100\"})\n }\n\n if (parts.length === 1 && parts[0].k === \"limit\" && parts[0].v === \"100\") {\n return \"\";\n }\n\n return \"?\" + parts.map(p => `${p.k}=${encodeURIComponent(p.v)}`);\n}\n\nexport function logFilterFromQueryString(qs: string): LogFilter {\n const filter: LogFilter = {limit: 100};\n const qsParts = (qs.startsWith(\"?\") ? qs.slice(1) : qs).split(\"&\").map(t => t.split(\"=\")).map(kv => ({\n k: kv[0],\n v: decodeURIComponent(kv[1]),\n }));\n\n for (const part of qsParts) {\n switch (part.k) {\n case \"characters\": {\n filter.characters = part.v.split(\",\");\n break;\n }\n case \"channels\": {\n filter.channels = part.v.split(\",\");\n break;\n }\n case \"events\": {\n filter.events = part.v.split(\",\");\n break;\n }\n case \"search\": {\n filter.search = part.v;\n break;\n }\n case \"open\": {\n filter.open = part.v === \"open\";\n break;\n }\n case \"limit\": {\n filter.limit = parseInt(part.v) || 0;\n break;\n }\n }\n }\n\n return filter;\n}\n\nexport interface LogFilter {\n /** Character IDs */\n characters?: string[]\n\n /** Channel names */\n channels?: string[]\n\n /** Event names */\n events?: string[]\n\n /** Search text */\n search?: string\n\n /** Show only open logs */\n open?: boolean\n\n /** Limit the result set size. */\n limit?: number\n}\n\nexport interface LogHeader extends LogCommon {\n /** Character IDs */\n characters: LogHeaderCharacter[]\n}\n\ninterface LogCommon {\n id: string\n shortId: string\n date: string\n channelName: string\n title: string\n description: string\n eventName: string\n open: boolean\n}\n\ninterface LogHeaderCharacter {\n id: string\n name: string\n shortName: string\n author: string\n}\n\nconst LOGS_DOC = gql`\nquery ListLogs($filter: LogsFilter) {\n logs(filter: $filter) {\n ...LogMeta\n ...LogMetaCharacters\n }\n}\n\nquery FindLog($id: String!) {\n log(id: $id) {\n ...LogMeta\n ...LogData\n }\n}\n\nfragment LogMeta on Log {\n id\n shortId\n date\n channelName\n title\n eventName\n description\n}\n\nfragment LogMetaCharacters on Log {\n characters {\n id\n name\n shortName\n author\n }\n}\n\nfragment LogData on Log {\n open\n channel {\n name\n logged\n hub\n eventName\n locationName\n }\n characters {\n id\n nicks\n author\n name\n shortName\n description\n }\n posts {\n id\n time\n kind\n nick\n text\n position\n }\n}\n`;"]},"metadata":{},"sourceType":"module"}