forked from muratalperen/GoogleFormsAutoFiller
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfillMenu.js
128 lines (100 loc) · 3.24 KB
/
fillMenu.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
window.onload = function() {
// Add click listeners to language buttons
var langButtons = document.querySelectorAll("#selectLang>input");
for (var i = 0; i < langButtons.length; i++) {
langButtons[i].addEventListener("click", setLanguageByButton, false);
}
// Add click listeners to add and save button
document.getElementById("addNewEntryButton").addEventListener("click", addNewEntryButton, false);
document.getElementById("saveDataButton").addEventListener("click", saveData, false);
// List saved form data
var formData = {};
chrome.storage.sync.get("formData", function(result) {
formData = result["formData"];
if (objectIsEmpty(formData)) {
addNewEntry();
} else {
for (key in formData) {
addNewEntry(key, formData[key]);
}
}
});
}
/**
* Adds clear row on button click
*/
function addNewEntryButton(mouseEvent){
addNewEntry();
}
/**
* Adds row to table for a key & value couple
* @param {String} key Key data
* @param {String} val Value data
*/
function addNewEntry(key = "", val = "") {
// Create input row
var theRow = document.createElement("tr");
var theRow = document.getElementsByTagName("tbody")[0].appendChild(theRow);
// Create key input
var tdK = document.createElement("td");
theRow.appendChild(tdK);
var inpK = document.createElement("input");
inpK.type = "text";
inpK.value = key;
tdK.appendChild(inpK);
// Create value input
var tdV = document.createElement("td");
theRow.appendChild(tdV);
var inpV = document.createElement("input");
inpV.type = "text";
inpV.value = val;
tdV.appendChild(inpV);
return false;
}
/**
* Saves the data on table
*/
function saveData() {
var saveButton = document.getElementById("saveDataButton");
var savedText = document.getElementById("savedText");
saveButton.disabled = true;
// Get datas from inputs and remove empty inputs
var inputs = document.querySelectorAll('input[type="text"]');
var formData = {};
for (var i = 0; i < inputs.length / 2; i++) {
if (inputs[i * 2].value && inputs[i * 2 + 1].value) {
formData[inputs[i * 2].value.trim()] = inputs[i * 2 + 1].value.trim();
} else {
inputs[i * 2].parentNode.parentNode.remove();
}
}
// Save data
chrome.storage.sync.set({ "formData": formData }, function() {
console.log("Form data saved: " + formData);
// Fill forms with new data
chrome.tabs.executeScript({
code: "FillGoogleForms();"
});
});
// Saved text animation
saveButton.disabled = false;
savedText.style.opacity = 1;
var opacityInterval = setInterval(() => {
savedText.style.opacity -= 0.01;
if (savedText.style.opacity == 0) {
clearInterval(opacityInterval);
}
}, 10);
}
/**
* Checks if parameter object is empty, null etc.
* @param {String} object Object to be checked
* @return {String} Is empty
*/
function objectIsEmpty(object) {
var isEmpty = false;
if (!object || JSON.stringify(object) == JSON.stringify({})) {
isEmpty = true;
}
return isEmpty;
}