{ "version": 3, "sources": ["../../../../../../../../source/febe/ui/src/scripts/ui.reports.ts"], "sourcesContent": ["import { Hatch, SafeString } from \"./classes/Hatch.js\";\n\nimport { SampleEvent, Task } from \"./global/interfaces\";\n\nimport Utils from \"./classes/Utils\";\n\nconst https = window.location.protocol === \"https:\";\nconst SOCKET_URL = `ws${https ? \"s\" : \"\"}://${window.location.host}`;\n\nfunction getTags(obj: SampleEvent) {\n let uniqueTags = {};\n obj.tasks.forEach((t: Task) => {\n if (t.tags) {\n t.tags.forEach((tag) => {\n if (tag.split(\":\").length === 2) {\n uniqueTags[tag.split(\":\")[1]] = tag.split(\":\")[0];\n } else {\n uniqueTags[tag] = \"normal\";\n }\n });\n }\n });\n\n return Object.entries(uniqueTags)\n .map(\n (i) => Hatch`\n ${i[0]}\n `\n )\n .join(\"\");\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n let handlers = {\n init: () => {\n handlers.rowUpdater();\n if (document.querySelector(\"#export-csv\")) {\n document.querySelector(\"#export-csv\").addEventListener(\"click\", handlers.downloadCsv);\n }\n document.querySelectorAll(\".row [data-clipboard]\").forEach((clipboard) => {\n clipboard.addEventListener(\"click\", (e) => {\n e.preventDefault();\n });\n });\n },\n downloadCsv: (e: Event) => {\n e.preventDefault();\n document.querySelector(\"#search\").setAttribute(\"action\", \"/export\");\n document.querySelector(\"#search\").submit();\n },\n updateRow: (obj: SampleEvent) => {\n let e = document.querySelector(`[data-sample-id=\"${obj.id}\"]`);\n\n //Update rendered row\n if (!e) {\n return;\n }\n let severity = \"normal\";\n if (obj.score > 4) {\n severity = \"warning\";\n }\n if (obj.score > 7) {\n severity = \"alert\";\n }\n e.querySelector(\".tags\").innerHTML = getTags(obj);\n e.classList.remove(\"alert\");\n e.classList.remove(\"warning\");\n e.classList.remove(\"normal\");\n e.classList.add(severity);\n e.querySelector(\".score-holder\").innerHTML = Hatch`\n
\n
\n ${obj.score ? obj.score : new SafeString(Utils.stateToIcon(obj.state).icon)}\n
\n
\n ${Utils.stateToIcon(obj.state).label}\n `.s;\n },\n rowUpdater: () => {\n const socket = new WebSocket(SOCKET_URL + \"/api/streams/sample\");\n socket.addEventListener(\"message\", function (event) {\n let obj = JSON.parse(event.data);\n handlers.updateRow(obj);\n });\n },\n };\n\n handlers.init();\n});\n"], "mappings": "+IAMA,IAAMA,EAAQ,OAAO,SAAS,WAAa,SACrCC,EAAa,KAAKD,EAAQ,IAAM,QAAQ,OAAO,SAAS,OAE9D,SAASE,EAAQC,EAAkB,CACjC,IAAIC,EAAa,CAAC,EAClB,OAAAD,EAAI,MAAM,QAAS,GAAY,CACzB,EAAE,MACJ,EAAE,KAAK,QAASE,GAAQ,CAClBA,EAAI,MAAM,GAAG,EAAE,SAAW,EAC5BD,EAAWC,EAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EAAIA,EAAI,MAAM,GAAG,EAAE,CAAC,EAEhDD,EAAWC,CAAG,EAAI,QAEtB,CAAC,CAEL,CAAC,EAEM,OAAO,QAAQD,CAAU,EAC7B,IACEE,GAAMC;AAAA,sBACSD,EAAE,CAAC,MAAMA,EAAE,CAAC;AAAA,MAE9B,EACC,KAAK,EAAE,CACZ,CAEA,SAAS,iBAAiB,mBAAoB,UAAY,CACxD,IAAIE,EAAW,CACb,KAAM,IAAM,CACVA,EAAS,WAAW,EAChB,SAAS,cAAc,aAAa,GACtC,SAAS,cAAc,aAAa,EAAE,iBAAiB,QAASA,EAAS,WAAW,EAEtF,SAAS,iBAAiB,uBAAuB,EAAE,QAASC,GAAc,CACxEA,EAAU,iBAAiB,QAAUC,GAAM,CACzCA,EAAE,eAAe,CACnB,CAAC,CACH,CAAC,CACH,EACA,YAAc,GAAa,CACzB,EAAE,eAAe,EACjB,SAAS,cAAc,SAAS,EAAE,aAAa,SAAU,SAAS,EAClE,SAAS,cAA+B,SAAS,EAAE,OAAO,CAC5D,EACA,UAAYP,GAAqB,CAC/B,IAAIO,EAAI,SAAS,cAAc,oBAAoBP,EAAI,MAAM,EAG7D,GAAI,CAACO,EACH,OAEF,IAAIC,EAAW,SACXR,EAAI,MAAQ,IACdQ,EAAW,WAETR,EAAI,MAAQ,IACdQ,EAAW,SAEbD,EAAE,cAAc,OAAO,EAAE,UAAYR,EAAQC,CAAG,EAChDO,EAAE,UAAU,OAAO,OAAO,EAC1BA,EAAE,UAAU,OAAO,SAAS,EAC5BA,EAAE,UAAU,OAAO,QAAQ,EAC3BA,EAAE,UAAU,IAAIC,CAAQ,EACxBD,EAAE,cAA2B,eAAe,EAAE,UAAYH;AAAA;AAAA;AAAA,gBAGhDJ,EAAI,MAAQA,EAAI,MAAQ,IAAIS,EAAWC,EAAM,YAAYV,EAAI,KAAK,EAAE,IAAI;AAAA;AAAA;AAAA,YAG5EU,EAAM,YAAYV,EAAI,KAAK,EAAE;AAAA,UAC/B,CACN,EACA,WAAY,IAAM,CACD,IAAI,UAAUF,EAAa,qBAAqB,EACxD,iBAAiB,UAAW,SAAUa,EAAO,CAClD,IAAIX,EAAM,KAAK,MAAMW,EAAM,IAAI,EAC/BN,EAAS,UAAUL,CAAG,CACxB,CAAC,CACH,CACF,EAEAK,EAAS,KAAK,CAChB,CAAC", "names": ["https", "SOCKET_URL", "getTags", "obj", "uniqueTags", "tag", "i", "Hatch", "handlers", "clipboard", "e", "severity", "SafeString", "Utils", "event"] }