-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpopup.js
145 lines (119 loc) · 5.4 KB
/
popup.js
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// Inject the payload.js script into the current tab after the popout has loaded
window.addEventListener('load', function (evt) {
chrome.extension.getBackgroundPage().chrome.tabs.executeScript(null, { file: 'jquery-3.4.1.js'});;
chrome.extension.getBackgroundPage().chrome.tabs.executeScript(null, { file: 'Chart.js'});;
chrome.extension.getBackgroundPage().chrome.tabs.executeScript(null, { file: 'js/sweetalert2.all.min.js'});;
chrome.extension.getBackgroundPage().chrome.tabs.executeScript(null, { file: 'js/payload.js'});;
});
var cats = [];
function removeElement(className) {
var element = document.getElementsByClassName(className);
for (var z = 0; z < element.length; z++) {
element[z].outerHTML = "";
}
}
//Listen to messages from the payload.js script and write to popout.html
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
var send = false;
if(message.type == "m1") {
document.getElementById('rawScore').innerHTML = "Your raw score: " + message.content;
}
if(message.type == "m2") {
document.getElementById('categories').innerHTML = "";
//showing scores for each grade category
for (var i = 0; i < (message.content.length * 2); i++) {
if (i < message.content.length) {
cats[i] = message.content[i];
var para = document.createElement("div");
para.className = 'category';
var node = document.createTextNode(message.content[i] + ": " + message.numerator[i] + "/" + message.denominator[i] + " (" + (100*message.numerator[i]/message.denominator[i]).toFixed(2) + "%)");
para.appendChild(node);
var element = document.getElementById("mainDiv");
element.appendChild(para);
if (i == message.content.length-1) {
element.appendChild(document.createElement("br"));
}
//create form for putting grade weighting
} else {
var input = document.createElement("input");
input.setAttribute('type',"number");
input.setAttribute('name',"username");
var para = document.createElement("div");
para.id = 'weightDiv' + i;
para.className = 'weightDiv';
input.className = 'form-control';
input.id = 'weighting' + i;
var child = document.getElementById('weighting' + i);
var node = document.createTextNode(message.content[i - message.content.length] + " weight: ");
para.appendChild(node);
para.appendChild(input);
var element = document.getElementById("mainDiv");
element.appendChild(para);
var inputs = document.getElementsByClassName("form-control");
for (var z = 0; z < inputs.length; z++) {
inputs[z].placeholder = "Enter category weight";
}
}
}
element.appendChild(document.createElement("br"));
var categoryWeight = [];
var weightedPercent = [];
var grade = 0;
var g;
var categoryWeight2 = [];
var catWeightTot = 0;
//Cateogry weight button
document.getElementById("catWeight").addEventListener("click", function(){
var send = true;
var x = [{}];
//get value from input form
for (var i = 0; i < cats.length; i++) {
x[i] = {};
x[i].val = parseInt(document.getElementsByClassName("form-control")[i].value, 10);
x[i].cat = message.content[i];
catWeightTot+=x[i].val;
weightedPercent[i] = (message.numerator[i] / message.denominator[i]) * x[i].val;
grade += weightedPercent[i];
}
g = grade.toFixed(2)*100/catWeightTot;
//display current final grade
var para = document.createElement("div");
para.className = 'category';
var node = document.createTextNode("Your current final grade: " + g + "%");
para.appendChild(node);
var element = document.getElementById("mainDiv");
element.appendChild(para);
for (var i = 0; i < cats.length; i++) {
removeElement("weightDiv");
}
var brs = document.getElementsByTagName('br');
brs[0].outerHTML = "";
sendResponse({farewell: "goodbye", weight: weightedPercent, tot: catWeightTot, indivWeight: JSON.stringify(x)});
});
//predict grade after taking final
document.getElementById("finalGradePredict").addEventListener("click", function(){
if (g == null) {
swal("Please enter the category weighting first");
} else {
swal("How much of your total grade is the final worth?", {
content: "input",
})
.then((value) => {
var worth = value;
if (!isNaN(worth)) {
swal("What do you think you'd get on the final?", {
content: "input",
})
.then((value2) => {
var finalPredict = ((worth/100) * value2) + ((100-worth)/100 * g);
swal("Your final grade will be " + finalPredict.toFixed(2) + "%");
})
} else {
swal("Please enter only numbers");
}
});
}
});
return true;
}
});