-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfileHandler.js
More file actions
111 lines (97 loc) · 4.09 KB
/
fileHandler.js
File metadata and controls
111 lines (97 loc) · 4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import * as GRAPHING from './launcher.js'
const inputElement = document.getElementById("input");
document.getElementById("submitGraph").onclick = addGraph;
inputElement.addEventListener("change", getFile);
var input;
function getFile(event) {
input = event.target
if ('files' in input && input.files.length > 0) {
placeFileContent(
document.getElementById('content-target'),
input.files[0])
}
}
var formattedContent;
function placeFileContent(target, file) {
readFileContent(file).then(content => {
formattedContent = formatData(content)
}).catch(error => console.log(error))
}
function readFileContent(file) {
const reader = new FileReader()
return new Promise((resolve, reject) => {
reader.onload = event => resolve(event.target.result)
reader.onerror = error => reject(error)
reader.readAsText(file)
})
}
function formatData(data) {
if (document.getElementById("Bar").checked || document.getElementById("Line").checked) {
let dataVal = data.split('\n');
let axisTitles = dataVal[0].split(",");
dataVal.splice(0,1);
dataVal = dataVal.map(elem => elem.split(","))
dataVal = dataVal.map(elem => [elem[0], parseFloat(elem[1])])
return [dataVal, axisTitles];
} else if (document.getElementById("Scatter").checked) {
let dataVal = data.split('\n');
let axisTitles = dataVal[0].split(",");
dataVal.splice(0,1);
dataVal = dataVal.map(elem => elem.split(","))
dataVal = dataVal.map(elem => [parseInt(elem[0]), parseInt(elem[1])])
return [dataVal, axisTitles];
} else if (document.getElementById("Australia").checked) {
let dataVal = data.split('\n');
return dataVal;
} else if (document.getElementById("multiLine").checked) {
let dataVal = data.split('\n\n');
console.log(dataVal)
let axisTitles = dataVal[0].split(",");
dataVal.splice(0, 1);
let seriesTitles = dataVal[0].split('\n');
seriesTitles = seriesTitles.slice(1)
console.log(seriesTitles)
let datas = dataVal.slice(1);
datas = datas.map(series => series.split('\n'));
datas.forEach(series => series.shift())
datas = datas.map(series => series.map(elem => elem.split(",")))
datas = datas.map(series => series.map(elem => [elem[0], parseFloat(elem[1])]))
return [seriesTitles, [datas], axisTitles]
}
}
function addGraph() {
const message = document.getElementById("successMessage")
message.style.visibility = "visible";
if (document.getElementById("Bar").checked || document.getElementById("Scatter").checked || document.getElementById("Line").checked|| document.getElementById("Australia").checked|| document.getElementById("multiLine").checked) {
if (inputElement.value != "") {
let title = document.getElementById("titleInput").value;
if (document.getElementById("Bar").checked) {
GRAPHING.addGraphFromFile(formattedContent, title, 'bar')
document.getElementById("Bar").checked = false;
} else if (document.getElementById("Scatter").checked) {
document.getElementById("Scatter").checked = false;
GRAPHING.addGraphFromFile(formattedContent, title, 'scatter')
} else if (document.getElementById("Line").checked) {
document.getElementById("Line").checked = false;
GRAPHING.addGraphFromFile(formattedContent, title, 'line')
} else if (document.getElementById("Australia").checked) {
document.getElementById("Australia").checked = false;
GRAPHING.addGraphFromFile(formattedContent, title, 'australia')
}else if (document.getElementById("multiLine").checked) {
document.getElementById("multiLine").checked = false;
GRAPHING.addGraphFromFile(formattedContent, title, 'multiLine')
}
document.getElementById("titleInput").value = "";
inputElement.value = "";
message.textContent = "Successfully added graph"
message.style.color = "green";
} else {
message.textContent = "Please select a file"
message.style.color = "red";
}
} else {
message.textContent = "Please select graph type"
message.style.color = "red";
}
setTimeout(() => message.style.visibility = "hidden", 10000)
}