Commit c6ee3ae0278aa44bc5a5bfeae3f4acd05bb25841
1 parent
d6106d7d
Exists in
master
and in
21 other branches
Z values are shown now
Showing
1 changed file
with
69 additions
and
0 deletions
Show diff stats
js/app/views/PlotTabResultUI.js
@@ -231,6 +231,68 @@ Ext.define('amdaUI.PlotTabResultUI', { | @@ -231,6 +231,68 @@ Ext.define('amdaUI.PlotTabResultUI', { | ||
231 | return parseFloat(val).toPrecision(5); | 231 | return parseFloat(val).toPrecision(5); |
232 | }, | 232 | }, |
233 | 233 | ||
234 | + stringToRgbArray : function (str) { | ||
235 | + var rgbArray = Ext.Array.map(str.split("|"), function(val) { | ||
236 | + var rgb = val.replace(/\[|\]/g, "").split(","); | ||
237 | + return [parseInt(rgb[0]), parseInt(rgb[1]), parseInt(rgb[2])]; | ||
238 | + }); | ||
239 | + rgbArray.pop(); | ||
240 | + return rgbArray; | ||
241 | + }, | ||
242 | + | ||
243 | + getZAxisValue: function(image, x,y, size, axis, bgColor ){ | ||
244 | + | ||
245 | + var me = this; | ||
246 | + if(bgColor==="[-1,-1,-1]") | ||
247 | + bgColor="[255,255,255]"; // More readable for IHM part | ||
248 | + | ||
249 | + // Get the color under the cursor | ||
250 | + var imgEl = image.getEl(); | ||
251 | + var canvas = document.createElement('canvas'); | ||
252 | + var context = canvas.getContext('2d'); | ||
253 | + canvas.width = size.width; | ||
254 | + canvas.height = size.height; | ||
255 | + context.drawImage(imgEl.dom, 0, 0, canvas.width, canvas.height); | ||
256 | + var imageData = context.getImageData(x, y, 1, 1); | ||
257 | + var r = imageData.data[0]; | ||
258 | + var g = imageData.data[1]; | ||
259 | + var b = imageData.data[2]; | ||
260 | + var cursorColor = "["+r+","+g+","+b+"]"; | ||
261 | + | ||
262 | + // Now we'll transform the color information to values | ||
263 | + | ||
264 | + if(cursorColor !== bgColor){ | ||
265 | + var colorListArray = me.stringToRgbArray(axis.colorsList); | ||
266 | + | ||
267 | + // Creating the value scale | ||
268 | + var interval = (axis.max - axis.min) / ( colorListArray.length- 1); | ||
269 | + valuesListArray = new Array(colorListArray.length+1); | ||
270 | + | ||
271 | + for(var i=0;i< colorListArray.length+1; i++) | ||
272 | + valuesListArray[i] = axis.min + i * interval; | ||
273 | + | ||
274 | + // Computation of the closest r,g,b values to the cursorColor | ||
275 | + lowestChi = new Array(2); | ||
276 | + for(var i=0;i< colorListArray.length; i++){ | ||
277 | + var chi = Math.sqrt(Math.pow(colorListArray[i][0]-r, 2) + | ||
278 | + Math.pow(colorListArray[i][1]-g, 2) + | ||
279 | + Math.pow(colorListArray[i][2]-b, 2) ); | ||
280 | + | ||
281 | + if (i == 0) | ||
282 | + lowestChi = [i,chi]; | ||
283 | + else if (chi < lowestChi[1]) | ||
284 | + lowestChi = [i,chi]; | ||
285 | + } | ||
286 | + | ||
287 | + // Returning values | ||
288 | + | ||
289 | + if(axis.logarithmic) | ||
290 | + return "[1e"+valuesListArray[lowestChi[0]].toFixed(3)+",1e"+valuesListArray[lowestChi[0]+1].toFixed(4)+"]"; | ||
291 | + return "["+valuesListArray[lowestChi[0]].toFixed(4)+","+valuesListArray[lowestChi[0]+1].toFixed(4)+"]"; | ||
292 | + } | ||
293 | + return ""; | ||
294 | + }, | ||
295 | + | ||
234 | createPlotImage: function (resultFolder, plotFile) { | 296 | createPlotImage: function (resultFolder, plotFile) { |
235 | var me = this; | 297 | var me = this; |
236 | var size = this.getImageSize(); | 298 | var size = this.getImageSize(); |
@@ -284,8 +346,10 @@ Ext.define('amdaUI.PlotTabResultUI', { | @@ -284,8 +346,10 @@ Ext.define('amdaUI.PlotTabResultUI', { | ||
284 | 346 | ||
285 | var xText = ''; | 347 | var xText = ''; |
286 | var yLeftText = ''; | 348 | var yLeftText = ''; |
349 | + var colorText = ''; | ||
287 | var yRightText = ''; | 350 | var yRightText = ''; |
288 | var intervalText = ''; | 351 | var intervalText = ''; |
352 | + var image=this; | ||
289 | Ext.each(panel.plotArea.axes, function (axis) { | 353 | Ext.each(panel.plotArea.axes, function (axis) { |
290 | switch (axis.id) { | 354 | switch (axis.id) { |
291 | case 'timeAxis': | 355 | case 'timeAxis': |
@@ -300,6 +364,9 @@ Ext.define('amdaUI.PlotTabResultUI', { | @@ -300,6 +364,9 @@ Ext.define('amdaUI.PlotTabResultUI', { | ||
300 | case 'y-right': | 364 | case 'y-right': |
301 | yRightText = me.getAxisValue(axis, panel.plotArea.y + panel.plotArea.height, panel.plotArea.y, sourceYPos); | 365 | yRightText = me.getAxisValue(axis, panel.plotArea.y + panel.plotArea.height, panel.plotArea.y, sourceYPos); |
302 | break; | 366 | break; |
367 | + case 'colorAxis': | ||
368 | + colorText = me.getZAxisValue(image, x,y, size,axis,panel.plotArea.plotAreaBackgroundColor ); | ||
369 | + break; | ||
303 | case 'xaxis_id': | 370 | case 'xaxis_id': |
304 | xText = me.getAxisValue(axis, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos); | 371 | xText = me.getAxisValue(axis, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos); |
305 | break; | 372 | break; |
@@ -318,6 +385,8 @@ Ext.define('amdaUI.PlotTabResultUI', { | @@ -318,6 +385,8 @@ Ext.define('amdaUI.PlotTabResultUI', { | ||
318 | text += (', Y Right : ' + yRightText); | 385 | text += (', Y Right : ' + yRightText); |
319 | if (intervalText != '') | 386 | if (intervalText != '') |
320 | text += (', ' + intervalText); | 387 | text += (', ' + intervalText); |
388 | + if (colorText != '') | ||
389 | + text += (', Z : '+ colorText); | ||
321 | } | 390 | } |
322 | else | 391 | else |
323 | me.panelImage.resetCursor(); | 392 | me.panelImage.resetCursor(); |