-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
124 lines (100 loc) · 3.48 KB
/
app.js
File metadata and controls
124 lines (100 loc) · 3.48 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
112
113
114
115
116
117
118
119
120
121
122
123
124
if(window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {
document.querySelector('link[rel="icon"]').setAttribute('href', 'img/icon_dark.svg')
}
const form = document.getElementById('form') ;
console.log(form);
const resultDiv = document.getElementById("result");
let n = 2; // Nombre de valeurs
function addChoice() {
n++;
form.insertBefore(document.createElement("input"), document.getElementById('choose-button'));
form.children[n - 1].type = "text";
form.children[n - 1].placeholder = "Choix "+n;
}
function deleteChoice() {
if (n !== 2) {
n-- ;
form.children[n].remove();
}
}
function choose() {
let randomNumber = getRandom()
let result = form.children[randomNumber].value;
if (result !== "") {
console.log(result);
resultDiv.innerHTML = result;
} else {
console.log(undefined);
resultDiv.innerHTML = "choix "+(randomNumber + 1);
}
// Animation
resultDiv.hidden = false ;
resultDiv.style.animation = "show-result 1s ease";
setTimeout(() => {
resultDiv.style.animation = "";
}, 1010);
}
function getRandom() {
return Math.floor(Math.random() * n);
}
function exportData() {
let values;
for (i = 0; i < n; i++) {
if (i === 0) {
values = 'const data = {"n":"'+n+'",'
}
if (i !== (n-1)) {
values += '"value-'+(i+1)+'":"'+form.children[i].value+'",';
} else {
values += '"value-'+(i+1)+'":"'+form.children[i].value+'"}';
}
}
console.log(values);
let blob = new Blob([values],{type: 'text/javascript'}); // Convertit values en données brutes
let exportLink = document.createElement('a');
exportLink.setAttribute('href', window.URL.createObjectURL(blob)); //
exportLink.setAttribute('download', 'data.mathys');
exportLink.click();
window.URL.revokeObjectURL(blob);
}
// Créer un élément input qui sera activé par la fonction import data
let importButton = document.createElement('input');
importButton.setAttribute('type', 'file');
importButton.setAttribute('accept', '.mathys');
function importData() {
importButton.click();
}
// Lorqu'un fichier est chargé :
importButton.addEventListener("change", loadData, false);
function loadData() {
let file = importButton.files;
// Si il y a des fichiers importés :
if (file.length !== 0) {
// On crée un fichier contenant les données brutes importées puis on le declare
console.log(file[0].type);
let script = document.createElement('script');
script.src = window.URL.createObjectURL(file[0]);
script.type = "text/javascript";
document.querySelector('body').insertBefore(script, document.querySelector('script'));
console.log(script.src);
// Laisse au fichier le temps de charger puis le lit
setTimeout(() => {
implementData()
}, 300)
window.URL.revokeObjectURL(file[0]);
}
}
function implementData() {
n = data.n ;// Assigne à n la valeur n du fichier importé
// Si il y a plus de valeurs que de input dejà present :
if (n > form.children.length-1) {
for (i = 0; i < n-(form.children.length-2); i++) {
n--; // la fonction addchoice incrémente n de 1
addChoice();
}
}
// Applique ensuite les valeurs importées à chacun des input
for (i = 0; i < n; i++) {
form.children[i].value = data['value-'+(i + 1)];
}
}