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
6.4 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}\n\nfunction logFilterToQueryString(filter) {\n const parts = [];\n\n if (parts.length === 0) {\n return \"\";\n }\n\n return \"?\" + parts.map(p => `${p.k}=${encodeURIComponent(p.v)}`);\n}\n\nfunction logFilterFromQueryString(qs) {\n const filter = {};\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 \"limit\":\n {\n filter.limit = parseInt(part.v) || 0;\n break;\n }\n }\n }\n\n return filter;\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`;","map":{"version":3,"sources":["/home/gisle/projects/react/rpdata-frontend2/lib/rpdata/logs.ts"],"names":["gql","listLogs","filter","post","LOGS_DOC","logs","logFilterToQueryString","parts","length","map","p","k","encodeURIComponent","v","logFilterFromQueryString","qs","qsParts","startsWith","slice","split","t","kv","decodeURIComponent","part","characters","channels","events","limit","parseInt"],"mappings":"AAAA,SAAoBA,GAApB,QAA+B,mBAA/B;AAEA,OAAO,eAAeC,QAAf,CAAwBD,GAAxB,EAAwCE,MAAxC,EAAkF;AACvF,SAAO,CAAC,MAAMF,GAAG,CAACG,IAAJ,CAASC,QAAT,EAAmB;AAACF,IAAAA;AAAD,GAAnB,EAA6B,UAA7B,CAAP,EAAiDG,IAAxD;AACD;;AAED,SAASC,sBAAT,CAAgCJ,MAAhC,EAA2D;AACzD,QAAMK,KAA6B,GAAG,EAAtC;;AAIA,MAAIA,KAAK,CAACC,MAAN,KAAiB,CAArB,EAAwB;AACtB,WAAO,EAAP;AACD;;AACD,SAAO,MAAMD,KAAK,CAACE,GAAN,CAAUC,CAAC,IAAK,GAAEA,CAAC,CAACC,CAAE,IAAGC,kBAAkB,CAACF,CAAC,CAACG,CAAH,CAAM,EAAjD,CAAb;AACD;;AAED,SAASC,wBAAT,CAAkCC,EAAlC,EAAyD;AACvD,QAAMb,MAAiB,GAAG,EAA1B;AACA,QAAMc,OAAO,GAAG,CAACD,EAAE,CAACE,UAAH,CAAc,GAAd,IAAqBF,EAAE,CAACG,KAAH,CAAS,CAAT,CAArB,GAAmCH,EAApC,EAAwCI,KAAxC,CAA8C,GAA9C,EAAmDV,GAAnD,CAAuDW,CAAC,IAAIA,CAAC,CAACD,KAAF,CAAQ,GAAR,CAA5D,EAA0EV,GAA1E,CAA8EY,EAAE,KAAK;AACnGV,IAAAA,CAAC,EAAEU,EAAE,CAAC,CAAD,CAD8F;AAEnGR,IAAAA,CAAC,EAAES,kBAAkB,CAACD,EAAE,CAAC,CAAD,CAAH;AAF8E,GAAL,CAAhF,CAAhB;;AAKA,OAAK,MAAME,IAAX,IAAmBP,OAAnB,EAA4B;AAC1B,YAAQO,IAAI,CAACZ,CAAb;AACE,WAAK,YAAL;AAAmB;AACjBT,UAAAA,MAAM,CAACsB,UAAP,GAAoBD,IAAI,CAACV,CAAL,CAAOM,KAAP,CAAa,GAAb,CAApB;AACA;AACD;;AACD,WAAK,UAAL;AAAiB;AACfjB,UAAAA,MAAM,CAACuB,QAAP,GAAkBF,IAAI,CAACV,CAAL,CAAOM,KAAP,CAAa,GAAb,CAAlB;AACA;AACD;;AACD,WAAK,QAAL;AAAe;AACbjB,UAAAA,MAAM,CAACwB,MAAP,GAAgBH,IAAI,CAACV,CAAL,CAAOM,KAAP,CAAa,GAAb,CAAhB;AACA;AACD;;AACD,WAAK,OAAL;AAAc;AACZjB,UAAAA,MAAM,CAACyB,KAAP,GAAeC,QAAQ,CAACL,IAAI,CAACV,CAAN,CAAR,IAAoB,CAAnC;AACA;AACD;AAhBH;AAkBD;;AAED,SAAOX,MAAP;AACD;;AA6CD,MAAME,QAAQ,GAAGJ,GAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAArB","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\nfunction logFilterToQueryString(filter: LogFilter): string {\n const parts: {k:string, v:string}[] = [];\n \n\n\n if (parts.length === 0) {\n return \"\";\n }\n return \"?\" + parts.map(p => `${p.k}=${encodeURIComponent(p.v)}`);\n}\n\nfunction logFilterFromQueryString(qs: string): LogFilter {\n const filter: LogFilter = {};\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 \"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 /** Search text */\n open?: string\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"}