UNPKG

2.4 kBJavaScriptView Raw
1import domready from "domready";
2import createVisualization from "./createVisualization";
3import jsonTree from "../json-tree";
4
5//Add Multiple Event listeners --> https://gist.github.com/juanbrujo/a1f77db1e6f7cb17b42b
6function multipleEventsListeners(elem, events, func) {
7 var event = events.split(" ");
8 for (var i = 0; i < event.length; i++) {
9 elem.addEventListener(event[i], func, false);
10 }
11}
12
13domready(() => {
14 // stats are already provided and have been placed on the document window
15 if (window.electrify) {
16 document.getElementById("statsDropBox").style.display = "none";
17 createVisualization(window.electrify);
18 } else {
19 //stats will be uploaded by user
20 const visualizationContainer = document.getElementById("visualizations")
21 visualizationContainer.style.display = "none";
22
23 var dragDropBox = document.getElementById("statsDropBox");
24 var fileInput = document.getElementById("fileInput");
25
26 //
27 //change css on dragover
28 //
29 multipleEventsListeners(dragDropBox, "drag dragstart dragend dragover dragenter dragleave drop", (e) => {
30 e.preventDefault();
31 e.stopPropagation();
32 })
33 multipleEventsListeners(dragDropBox, "dragover drageneter", (e) => {
34 e.target.classList.add("dragover");
35 });
36 multipleEventsListeners(dragDropBox, "dragleave dragend drop", (e) => {
37 e.target.classList.remove("dragover");
38 });
39
40 dragDropBox.onclick = () => fileInput.click();
41 dragDropBox.addEventListener("drop", (e) => onFileChange(e));
42
43 const readFile = (file, callback) => {
44 var reader = new FileReader();
45 reader.onloadend = ev => {
46 if (ev.target.readyState === FileReader.DONE) {
47 callback(reader.result);
48 }
49 };
50 reader.readAsText(file);
51 }
52
53 const handleFileUpload = (jsonText) => {
54 const json = JSON.parse(jsonText);
55 const webPackStats = jsonTree(json)
56 removeInputBoxAndRenderElectrify(webPackStats)
57 };
58
59 const onFileChange = (e) => {
60 let file = e.target.files ? e.target.files[0] : e.dataTransfer.files[0]
61 readFile(file, handleFileUpload);
62 }
63
64 fileInput.onchange = onFileChange;
65
66 function removeInputBoxAndRenderElectrify(webPackStats) {
67 visualizationContainer.style.display = 'block';
68 dragDropBox.style.display = 'none';
69 createVisualization(webPackStats);
70 }
71 }
72})