File: Editeur.js

package info (click to toggle)
openboard 1.7.3%2Bdfsg-0.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 57,404 kB
  • sloc: cpp: 76,443; javascript: 10,089; xml: 234; ansic: 38; makefile: 23; sh: 8
file content (216 lines) | stat: -rw-r--r-- 7,858 bytes parent folder | download | duplicates (3)
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
 
var editeur = {
	idFct : 0,
	fct : {
		fct : "",
		fctX : "",
		fctY : "",
		from : 0,
		to : 2*Math.PI,
		couleur : "",
		couleurD1 : "",
		couleurD2 : "",
		couleurP1 : "",
		width : 2,
		style : "continu",
		aire : false,
		derivee1 : false,
		derivee2 : false,
		primitive1 : false,
		conditionInitiale : 0
	},
	editer : function(id){
		this.idFct = id;
		if(fct.list[this.idFct]){
			document.getElementById("editeurFonction").style.visibility = "visible";
			this.setOptions();
		}
		else{
			document.getElementById("editeurFonction").style.visibility = "hidden";
		}
		fct.updateList();
	},
	couleur : function(id){
		colorPicker.init(id);
		afficherMenu('menuCouleur');
	},
	getOptions : function(){
		this.fct.fct = document.getElementById("editeurInput").value;
		this.fct.fctX = document.getElementById("editeurFctX").value;
		this.fct.fctY = document.getElementById("editeurFctY").value;
		this.fct.from = document.getElementById("editeurFrom").value;
		this.fct.to = document.getElementById("editeurTo").value;
		this.fct.width = document.getElementById("editeurWidth").value;
		this.fct.style = document.getElementById("editeurStyle").value;
		this.fct.aire = document.getElementById("editeurAire").checked ? true : false;
		this.fct.derivee1 = document.getElementById("editeurD1").checked ? true : false;
		this.fct.derivee2 = document.getElementById("editeurD2").checked ? true : false;
		this.fct.primitive1 = document.getElementById("editeurP1").checked ? true : false;
		if(this.fct.primitive1){
			document.getElementById("editeurConditionInitiale").disabled = "";
			document.getElementById("editeurTexteConditionInitiale").style.color = "rgb(0,0,0)"
		}
		else{
			document.getElementById("editeurConditionInitiale").disabled = "disabled";
			document.getElementById("editeurTexteConditionInitiale").style.color = "rgb(128,128,128)"
		}
		this.fct.conditionInitiale = parseFloat(document.getElementById("editeurConditionInitiale").value);
		
		fct.list[this.idFct].set(this.fct);
		
		fct.updateList();
		historique.ajouter(fct.list[this.idFct]);
		this.apercu();
	},
	setOptions : function(){
		var f = fct.list[this.idFct].get();
		for(var i in f){
			this.fct[i] = f[i];
		}
		
		this.setDisplayStyle();
		
		document.getElementById("editeurInput").value = this.fct.fct;
		document.getElementById("editeurFctX").value = this.fct.fctX;
		document.getElementById("editeurFctY").value = this.fct.fctY;
		document.getElementById("editeurFrom").value = this.fct.from;
		document.getElementById("editeurTo").value = this.fct.to;
		document.getElementById("editeurCouleur").style.backgroundColor = this.fct.couleur;
		document.getElementById("editeurCouleurD1").style.backgroundColor = this.fct.couleurD1;
		document.getElementById("editeurCouleurD2").style.backgroundColor = this.fct.couleurD2;
		document.getElementById("editeurCouleurP1").style.backgroundColor = this.fct.couleurP1;
		document.getElementById("editeurWidth").value = this.fct.width;
		document.getElementById("editeurStyle").value = this.fct.style;
		document.getElementById("editeurAire").checked = this.fct.aire ? "checked" : "";
		document.getElementById("editeurD1").checked = this.fct.derivee1 ? "checked" : "";
		document.getElementById("editeurD2").checked = this.fct.derivee2 ? "checked" : "";
		document.getElementById("editeurP1").checked = this.fct.primitive1 ? "checked" : "";
		if(this.fct.primitive1){
			document.getElementById("editeurConditionInitiale").disabled = "";
			document.getElementById("editeurTexteConditionInitiale").style.color = "rgb(0,0,0)"
		}
		else{
			document.getElementById("editeurConditionInitiale").disabled = "disabled";
			document.getElementById("editeurTexteConditionInitiale").style.color = "rgb(128,128,128)"
		}
		document.getElementById("editeurConditionInitiale").value = this.fct.conditionInitiale;
		
		document.getElementById("outputX").innerHTML = " ";
		document.getElementById("outputAire").innerHTML = " ";
		this.apercu();
	},
	setDisplayStyle : function(){
		if(fct.list[this.idFct] instanceof CartesianFunction){
			document.getElementById("editeurFctPrefix").textContent = "f(x) = ";
			document.getElementById("editeurFctDiv").style.display = "block";
			document.getElementById("editeurFctXYDiv").style.display = "none";
			document.getElementById("editeurRangeDiv").style.display = "none";
			document.getElementById("editeurDeriveesDiv").style.display = "block";
			document.getElementById("editeurStyleDiv").style.display = "block";
			document.getElementById("editeurAireDiv").style.display = "block";
		}
		else if(fct.list[this.idFct] instanceof ImplicitFunction){
			document.getElementById("editeurFctPrefix").textContent = "";
			document.getElementById("editeurFctDiv").style.display = "block";
			document.getElementById("editeurFctXYDiv").style.display = "none";
			document.getElementById("editeurRangeDiv").style.display = "none";
			document.getElementById("editeurDeriveesDiv").style.display = "none";
			document.getElementById("editeurStyleDiv").style.display = "none";
			document.getElementById("editeurAireDiv").style.display = "none";
		}
		else if(fct.list[this.idFct] instanceof PolarFunction){
			document.getElementById("editeurFctPrefix").textContent = "r(t) = ";
			document.getElementById("editeurFctDiv").style.display = "block";
			document.getElementById("editeurFctXYDiv").style.display = "none";
			document.getElementById("editeurRangeDiv").style.display = "block";
			document.getElementById("editeurDeriveesDiv").style.display = "none";
			document.getElementById("editeurStyleDiv").style.display = "block";
			document.getElementById("editeurAireDiv").style.display = "none";
		}
		else if(fct.list[this.idFct] instanceof ParametricFunction){
			document.getElementById("editeurFctDiv").style.display = "none";
			document.getElementById("editeurFctXYDiv").style.display = "block";
			document.getElementById("editeurRangeDiv").style.display = "block";
			document.getElementById("editeurDeriveesDiv").style.display = "none";
			document.getElementById("editeurStyleDiv").style.display = "block";
			document.getElementById("editeurAireDiv").style.display = "none";
		}
	},
	etudier : function(){
		fct.etudier(this.idFct);
	},
	supprimer : function(){
		fct.enlever(this.idFct);
		if(!fct.list[this.idFct]){
			this.editer(this.idFct - 1);
		}
		else{
			this.editer(this.idFct);
		}
	},
	dupliquer : function(){
		fct.dupliquer(this.idFct);
		this.editer(this.idFct + 1);
	},
	apercu : function(){
		editorPreview.drawFunction(fct.list[this.idFct]);
	}
};


var editorPreview = {
	id : "editeurApercu",
	
	xGauche : -5,
	xDroite : 5,
	yBas : -4,
	yHaut : 4,
	
	largeur : 0,
	hauteur : 0,
	multX : 1,
	multY : 1,
	
	ctx: null,
	
	init : function(){
		var canvas = document.getElementById("editeurApercu");
		this.ctx = canvas.getContext("2d");
		this.largeur = canvas.width;
		this.hauteur = canvas.height;
		this.multX = this.largeur/Math.abs(this.xDroite - this.xGauche);
		this.multY = this.hauteur/Math.abs(this.yHaut - this.yBas);
		this.precision = Math.abs(this.xDroite - this.xGauche)/50;
	},
	
	drawFunction : function(func){
		var x, y, pointX, pointY;
		var ctx = this.ctx;
		ctx.clearRect(0,0,100,80);
		ctx.globalAlpha = 0.7;
		ctx.fillStyle = "rgba(0,0,0,0.5)"
		ctx.fillRect(0,39.5, 100, 1);
		ctx.fillRect(49.5,0, 1, 80);
		ctx.beginPath();
// 		ctx.lineWidth = func.width/1.8;
// 		ctx.strokeStyle = func.couleur;
// 		ctx.moveTo(-100,-100);
// 		for(x = -5; x <= 5; x+=0.2){
// 			// Evaluer la valeur y du point x
// 			try{
// 				y = func.f(x);
// 			}
// 			catch(e){}
// 			if(!isNaN(y)){
// 				// Transformation des coordonnées
// 				pointX = x * 10 + 50;
// 				pointY = 40 - y * 10;
// 				
// 				// Dessiner la fonction
// 				ctx.lineTo(pointX, pointY);
// 			}
// 		}
		func.plot(ctx, this.precision, this);
// 		ctx.stroke();
	}
};