fediverse-export-analyzer/public/js/modules/handleUpload.min.js.map

1 wiersz
12 KiB
Plaintext

{"version":3,"file":"handleUpload.min.js","sources":["modules/handleUpload.js"],"sourcesContent":["import sortArrayOfObjects from \"/js/modules/sortArrayOfObjects.min.js\";\r\nimport loadEmbedScript from \"/js/modules/loadEmbedScript.min.js\";\r\nimport Cookie from \"/js/cookies/main.min.js\";\r\n\r\nconst cookieManager = new Cookie();\r\nconst fileInput = document.getElementById(\"file-input\");\r\nconst introElement = document.getElementById(\"intro\");\r\nconst loadingAnimation = document.getElementById(\"loading-animation\");\r\nconst loadingText = document.getElementById(\"loading-text\");\r\nconst resultsElement = document.getElementById(\"results\");\r\nconst userInfo = document.getElementById(\"user-info\");\r\nconst userAvatar = document.getElementById(\"user-avatar\");\r\nconst userDescription = document.getElementById(\"user-description\");\r\nconst userDataBreakdown = document.getElementById(\"user-data-breakdown\");\r\nconst chartElement = document.getElementById(\"chart\");\r\n\r\nconst handleUpload = () => {\r\n if (fileInput) {\r\n fileInput.addEventListener(\"change\", async (ev) => {\r\n loadingAnimation.classList.remove('d-none');\r\n loadingText.classList.remove('d-none');\r\n fileInput.disabled = true;\r\n const formData = new FormData();\r\n formData.set(\"archive\", fileInput.files[0]);\r\n\r\n const resp = await fetch(\"/extract-data\", {\r\n method: \"POST\",\r\n body: formData,\r\n });\r\n\r\n const response = await resp.json();\r\n console.log(response);\r\n\r\n if (response && response.data) {\r\n introElement.classList.add(\"d-none\");\r\n resultsElement.classList.remove(\"d-none\");\r\n const userData = response.data;\r\n\r\n let userDescriptionHTML = '';\r\n let userDataBreakdownHTML = '';\r\n\r\n if (userData.actor){\r\n userDescriptionHTML += `\r\n <p class=\"mb-0\">\r\n <strong>${\r\n userData.actor.name || userData.actor.preferredUsername\r\n }</strong>\r\n </p>\r\n ${userData.actor.summary.replaceAll('class=\"invisible\"', \"\")}\r\n `;\r\n \r\n if (userData.actor.attachment) {\r\n userDescriptionHTML += `\r\n <ul class=\"list-group\">\r\n ${userData.actor.attachment\r\n .map(\r\n (attachment) => `\r\n <li class=\"list-group-item\">${\r\n attachment.name\r\n }: ${attachment.value.replace('class=\"invisible\"', \"\")}</li>\r\n `\r\n )\r\n .join(\"\")}\r\n </ul>\r\n `;\r\n }\r\n \r\n userDescription.innerHTML = `<div>${userDescriptionHTML}</div>`;\r\n userAvatar.innerHTML = `\r\n <img class=\"img-thumbnail\" width=\"64\" height=\"64\" src=\"data:image/jpg;base64,${userData.avatar}\">\r\n `;\r\n } else {\r\n userInfo.remove();\r\n userDescription.remove();\r\n }\r\n\r\n let posts = [],\r\n firstPost,\r\n postCount = 0;\r\n\r\n if (userData?.outbox?.orderedItems) {\r\n posts = userData.outbox.orderedItems;\r\n } else if (userData?.outbox){\r\n posts = userData.outbox; \r\n }\r\n \r\n postCount = posts.length;\r\n if (postCount) {\r\n // posts = sortArrayOfObjects(posts, key, desc)\r\n firstPost = posts[0];\r\n }\r\n const options = {\r\n weekday: \"long\",\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\",\r\n };\r\n\r\n if (userData.actor){\r\n const accountCreationDate = moment(userData.actor.published);\r\n const today = moment();\r\n const timeAgo = today.diff(accountCreationDate, 'days');\r\n \r\n \r\n userDataBreakdownHTML += `\r\n <p>\r\n You created your account on <strong>${new Date(userData.actor.published).toLocaleDateString(\r\n undefined,\r\n options\r\n )}</strong>, which is <strong>${timeAgo.toLocaleString()} day(s) ago</strong>. Since then, you posted <strong>${postCount.toLocaleString()} times</strong>, or about ${(Math.round(postCount/timeAgo)).toLocaleString()} time(s) a day on average.\r\n </p>\r\n `;\r\n }\r\n\r\n let instanceURL;\r\n\r\n if (userData.format === 'mastodon'){\r\n if (firstPost) {\r\n const postURL = firstPost?.object?.id || firstPost?.id;\r\n const url = new URL(postURL);\r\n instanceURL = `${url.protocol}//${url.hostname}`\r\n\r\n\r\n userDataBreakdownHTML += `\r\n <p>\r\n Here's your <a href=\"${postURL}\" target=\"_blank\">first post</a>!\r\n </p>\r\n `;\r\n\r\n userDataBreakdownHTML += `\r\n <iframe\r\n src=\"${postURL}/embed\"\r\n class=\"mastodon-embed\"\r\n style=\"max-width: 100%; border: 0\" width=\"400\"\r\n allowfullscreen=\"allowfullscreen\"></iframe>\r\n `;\r\n }\r\n\r\n userDataBreakdownHTML += `\r\n <p class=\"mt-4\">\r\n And this is what your posting history looks like.\r\n </p>\r\n `;\r\n } else {\r\n userDataBreakdownHTML += `\r\n <p>\r\n Here's what your posting history looks like.\r\n </p>\r\n `;\r\n }\r\n \r\n userDataBreakdown.innerHTML = userDataBreakdownHTML;\r\n\r\n if (userData.format === 'mastodon'){\r\n loadEmbedScript(instanceURL);\r\n }\r\n\r\n // chartOptions.options.legend = {\r\n // display: false\r\n // };\r\n\r\n const data = {\r\n labels: posts.map((post) => moment(post.published || post.createdAt)),\r\n datasets: [\r\n {\r\n label: \"Your posts in time\",\r\n data: posts.map((post, index) => {\r\n return {\r\n x: moment(post.published || post.createdAt),\r\n // y: (new Date(post.published || post.createdAt)).getHour() + 1,\r\n y: (new Date(post.published || post.createdAt)).getHours(),\r\n };\r\n }),\r\n backgroundColor: ['#ff6384']\r\n },\r\n ],\r\n };\r\n\r\n new Chart(chartElement, {\r\n type: \"scatter\",\r\n data : data,\r\n options: {\r\n scales: {\r\n x: \r\n {\r\n type: \"time\",\r\n position: \"bottom\",\r\n ticks: {\r\n beginAtZero: false,\r\n stepSize: 10,\r\n },\r\n },\r\n y: \r\n {\r\n ticks: {\r\n beginAtZero: false,\r\n display: false,\r\n },\r\n scaleLabel: {\r\n display: false,\r\n // labelString: chartEl.dataset.axisLabelData\r\n // labelString: chartEl.dataset.sourceId ? window.ftfDataviz[parseInt( chartEl.dataset.sourceId )].axis_label_title : ''\r\n // labelString: 'Day of the month'\r\n },\r\n minorTickInterval: null,\r\n },\r\n },\r\n\r\n // scales: {\r\n // x: {\r\n // type: 'linear',\r\n // position: 'bottom'\r\n // }\r\n // }\r\n },\r\n });\r\n } else {\r\n loadingAnimation.classList.add('d-none');\r\n loadingText.classList.add('d-none');\r\n fileInput.disabled = false;\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport default handleUpload;\r\n"],"names":["sortArrayOfObjects","loadEmbedScript","Cookie","cookieManager","fileInput","document","getElementById","introElement","loadingAnimation","loadingText","resultsElement","userInfo","userAvatar","userDescription","userDataBreakdown","chartElement","handleUpload","addEventListener","async","ev","classList","remove","disabled","formData","FormData","set","files","response","await","fetch","method","body","json","console","log","data","add","userData","let","userDescriptionHTML","userDataBreakdownHTML","posts","actor","name","preferredUsername","summary","replaceAll","attachment","map","value","replace","join","innerHTML","avatar","firstPost","postCount","outbox","orderedItems","length","options","weekday","year","month","day","accountCreationDate","moment","published","timeAgo","diff","Date","toLocaleDateString","undefined","toLocaleString","Math","round","instanceURL","format","postURL","object","id","url","URL","protocol","hostname","labels","post","createdAt","datasets","label","index","x","y","getHours","backgroundColor","Chart","type","scales","position","ticks","beginAtZero","stepSize","display","scaleLabel","minorTickInterval"],"mappings":"OAAOA,uBAAwB,+CACxBC,oBAAqB,4CACrBC,WAAY,0BAEnB,MAAMC,cAAgB,IAAID,OACpBE,UAAYC,SAASC,eAAe,YAAY,EAChDC,aAAeF,SAASC,eAAe,OAAO,EAC9CE,iBAAmBH,SAASC,eAAe,mBAAmB,EAC9DG,YAAcJ,SAASC,eAAe,cAAc,EACpDI,eAAiBL,SAASC,eAAe,SAAS,EAClDK,SAAWN,SAASC,eAAe,WAAW,EAC9CM,WAAaP,SAASC,eAAe,aAAa,EAClDO,gBAAkBR,SAASC,eAAe,kBAAkB,EAC5DQ,kBAAoBT,SAASC,eAAe,qBAAqB,EACjES,aAAeV,SAASC,eAAe,OAAO,EAE9CU,aAAe,KACfZ,WACFA,UAAUa,iBAAiB,SAAUC,MAAOC,IAC1CX,iBAAiBY,UAAUC,OAAO,QAAQ,EAC1CZ,YAAYW,UAAUC,OAAO,QAAQ,EACrCjB,UAAUkB,SAAW,CAAA,EACrB,IAAMC,EAAW,IAAIC,SACrBD,EAASE,IAAI,UAAWrB,UAAUsB,MAAM,EAAE,EAOpCC,EAAWC,MALJA,MAAMC,MAAM,gBAAiB,CACxCC,OAAQ,OACRC,KAAMR,CACR,CAAC,GAE2BS,KAAK,EAGjC,GAFAC,QAAQC,IAAIP,CAAQ,EAEhBA,GAAYA,EAASQ,KAAM,CAC7B5B,aAAaa,UAAUgB,IAAI,QAAQ,EACnC1B,eAAeU,UAAUC,OAAO,QAAQ,EAClCgB,EAAWV,EAASQ,KAE1BG,IAAIC,EAAsB,GACtBC,EAAwB,GAqCxBC,GAnCAJ,EAASK,OACXH;;sBAGIF,EAASK,MAAMC,MAAQN,EAASK,MAAME;;YAGxCP,EAASK,MAAMG,QAAQC,WAAW,oBAAqB,EAAE;YAGvDT,EAASK,MAAMK,aACjBR;;gBAEIF,EAASK,MAAMK,WACdC,IACC;8CAEAD,EAAWJ,SACRI,EAAWE,MAAMC,QAAQ,oBAAqB,EAAE;eAErD,EACCC,KAAK,EAAE;;eAKdtC,gBAAgBuC,kBAAoBb,UACpC3B,WAAWwC;2FACsEf,EAASgB;cAG1F1C,SAASU,OAAO,EAChBR,gBAAgBQ,OAAO,GAGb,IACViC,EACAC,EAAY,EAEVlB,GAAUmB,QAAQC,aACpBhB,EAAQJ,EAASmB,OAAOC,aACfpB,GAAUmB,SACnBf,EAAQJ,EAASmB,SAGnBD,EAAYd,EAAMiB,UAGhBJ,EAAYb,EAAM,IAEpB,IAAMkB,EAAU,CACdC,QAAS,OACTC,KAAM,UACNC,MAAO,OACPC,IAAK,SACP,EAEI1B,EAASK,QACLsB,EAAsBC,OAAO5B,EAASK,MAAMwB,SAAS,EAErDC,EADQF,OAAO,EACCG,KAAKJ,EAAqB,MAAM,EAGtDxB;;kDAEwC,IAAI6B,KAAKhC,EAASK,MAAMwB,SAAS,EAAEI,mBACvEC,KAAAA,EACAZ,CACF,gCAAgCQ,EAAQK,eAAe,yDAAyDjB,EAAUiB,eAAe,8BAA+BC,KAAKC,MAAMnB,EAAUY,CAAQ,EAAEK,eAAe;;aAK1NlC,IAAIqC,EAEoB,aAApBtC,EAASuC,QACPtB,IACIuB,EAAUvB,GAAWwB,QAAQC,IAAMzB,GAAWyB,GAC9CC,EAAM,IAAIC,IAAIJ,CAAO,EAC3BF,EAAiBK,EAAIE,SAAP,KAAoBF,EAAIG,SAStC3C,EANAA;;uCAE2BqC;;;;uBAMhBA;;;;eAObrC;;;;aAMAA;;;;YAOF1B,kBAAkBsC,UAAYZ,EAEN,aAApBH,EAASuC,QACX3E,gBAAgB0E,CAAW,EAO7B,IAAMxC,EAAO,CACXiD,OAAQ3C,EAAMO,IAAI,GAAUiB,OAAOoB,EAAKnB,WAAamB,EAAKC,SAAS,CAAC,EACpEC,SAAU,CACR,CACEC,MAAO,qBACPrD,KAAMM,EAAMO,IAAI,CAACqC,EAAMI,KACd,CACLC,EAAGzB,OAAOoB,EAAKnB,WAAamB,EAAKC,SAAS,EAE1CK,EAAG,IAAKtB,KAAKgB,EAAKnB,WAAamB,EAAKC,SAAU,EAAEM,SAAS,CAC3D,EACD,EACDC,gBAAiB,CAAC,UACpB,EAEJ,EAEA,IAAIC,MAAM/E,aAAc,CACtBgF,KAAM,UACN5D,KAAOA,EACPwB,QAAS,CACPqC,OAAQ,CACNN,EACE,CACEK,KAAM,OACNE,SAAU,SACVC,MAAO,CACLC,YAAa,CAAA,EACbC,SAAU,EACZ,CACF,EACFT,EACE,CACEO,MAAO,CACLC,YAAa,CAAA,EACbE,QAAS,CAAA,CACX,EACAC,WAAY,CACVD,QAAS,CAAA,CAIX,EACAE,kBAAmB,IACrB,CACJ,CAQF,CACF,CAAC,CACH,MACE/F,iBAAiBY,UAAUgB,IAAI,QAAQ,EACvC3B,YAAYW,UAAUgB,IAAI,QAAQ,EAClChC,UAAUkB,SAAW,CAAA,CAEzB,CAAC,CAEL,iBAEeN"}