-
Notifications
You must be signed in to change notification settings - Fork 0
/
speedtest.js
108 lines (94 loc) · 2.51 KB
/
speedtest.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
/**
* @param {{submit_blank:boolean}} option
*/
function calcEquation(option) {
var formule = mathZone.getFormule();
/**
* @type {HTMLTextAreaElement}
*/
var output = document.getElementById('sortie_equation');
output.value = '';
/**
* @type {HtmlSelectElement}
*/
const version = document.querySelector('select#version')?.value;
var resultat;
if (version === 'vjig0ll')
resultat = getResultat(formule);
else if (version === 'vjigmath')
resultat = getResultatJig(formule);
else {
alert(`Version invalide : ${version}`);
return;
}
output.value = resultat;
}
/**
* @param {string} formule
*/
function getResultat(formule) {
/**
* @type {HTMLTextAreaElement}
*/
const outputSteps = document.getElementById('etapes_equation');
outputSteps.value = '...';
var steps = [];
formule = formule.replace(/^f\([\w,]+\)=/, '');
const formuleS = MATH.parseMath(formule, steps);
const start = Date.now();
var duree = 0;
var i = 0;
while ((duree = Date.now() - start) < 100) {
i++;
MATH.parseMath(formule);
}
steps.push(`Opérations par secondes : ${i / duree * 1000} (${i} en ${duree} ms)`);
outputSteps.value = steps.join('\n');
return formuleS;
}
/**
* @param {string} formule
*/
function getResultatJig(formule) {
/**
* @type {HTMLTextAreaElement}
*/
const outputSteps = document.getElementById('etapes_equation');
outputSteps.value = '...';
formule = formule.replace(/^f\([\w,]+\)=/, '');
const readyToCalc = JigMath.getSystem(formule);
readyToCalc.setVariable('x', 2);
const variablesNotSet = readyToCalc.variablesNotSet();
if (variablesNotSet.length) {
console.warn(`Some variables are not set.`, variablesNotSet);
}
var formuleS = readyToCalc.getValue();
const start = Date.now();
var duree = 0;
var i = 0;
while ((duree = Date.now() - start) < 100) {
i++;
formuleS = readyToCalc.getValue();
}
outputSteps.value = `Opérations par secondes : ${i / duree * 1000} (${i} en ${duree} ms)`;
return formuleS;
}
var mathZone;
window.addEventListener('load', () => {
const calc = document.querySelector('#calc');
calc.addEventListener('mousedown', e => {
if (e.button === 1) e.preventDefault();
});
calc.addEventListener('mouseup', e => {
if (e.button === 1) calcEquation({ submit_blank: true });
});
calc.addEventListener('click', e => {
if (e.ctrlKey)
calcEquation({ submit_blank: true });
else
calcEquation();
});
JigMath.addCustomFunction('f', (x) => 3 * x + 1);
JigMath.setLogLevel(1);
mathZone = new EquaColor(document.getElementById('formule_container'));
});