From c6ee3ae0278aa44bc5a5bfeae3f4acd05bb25841 Mon Sep 17 00:00:00 2001 From: Furkan <furkan.erdogan1205@gmail.com> Date: Fri, 21 Apr 2023 13:06:01 +0000 Subject: [PATCH] Z values are shown now --- js/app/views/PlotTabResultUI.js | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+), 0 deletions(-) diff --git a/js/app/views/PlotTabResultUI.js b/js/app/views/PlotTabResultUI.js index 78488c1..97c857f 100644 --- a/js/app/views/PlotTabResultUI.js +++ b/js/app/views/PlotTabResultUI.js @@ -231,6 +231,68 @@ Ext.define('amdaUI.PlotTabResultUI', { return parseFloat(val).toPrecision(5); }, + stringToRgbArray : function (str) { + var rgbArray = Ext.Array.map(str.split("|"), function(val) { + var rgb = val.replace(/\[|\]/g, "").split(","); + return [parseInt(rgb[0]), parseInt(rgb[1]), parseInt(rgb[2])]; + }); + rgbArray.pop(); + return rgbArray; + }, + + getZAxisValue: function(image, x,y, size, axis, bgColor ){ + + var me = this; + if(bgColor==="[-1,-1,-1]") + bgColor="[255,255,255]"; // More readable for IHM part + + // Get the color under the cursor + var imgEl = image.getEl(); + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + canvas.width = size.width; + canvas.height = size.height; + context.drawImage(imgEl.dom, 0, 0, canvas.width, canvas.height); + var imageData = context.getImageData(x, y, 1, 1); + var r = imageData.data[0]; + var g = imageData.data[1]; + var b = imageData.data[2]; + var cursorColor = "["+r+","+g+","+b+"]"; + + // Now we'll transform the color information to values + + if(cursorColor !== bgColor){ + var colorListArray = me.stringToRgbArray(axis.colorsList); + + // Creating the value scale + var interval = (axis.max - axis.min) / ( colorListArray.length- 1); + valuesListArray = new Array(colorListArray.length+1); + + for(var i=0;i< colorListArray.length+1; i++) + valuesListArray[i] = axis.min + i * interval; + + // Computation of the closest r,g,b values to the cursorColor + lowestChi = new Array(2); + for(var i=0;i< colorListArray.length; i++){ + var chi = Math.sqrt(Math.pow(colorListArray[i][0]-r, 2) + + Math.pow(colorListArray[i][1]-g, 2) + + Math.pow(colorListArray[i][2]-b, 2) ); + + if (i == 0) + lowestChi = [i,chi]; + else if (chi < lowestChi[1]) + lowestChi = [i,chi]; + } + + // Returning values + + if(axis.logarithmic) + return "[1e"+valuesListArray[lowestChi[0]].toFixed(3)+",1e"+valuesListArray[lowestChi[0]+1].toFixed(4)+"]"; + return "["+valuesListArray[lowestChi[0]].toFixed(4)+","+valuesListArray[lowestChi[0]+1].toFixed(4)+"]"; + } + return ""; + }, + createPlotImage: function (resultFolder, plotFile) { var me = this; var size = this.getImageSize(); @@ -284,8 +346,10 @@ Ext.define('amdaUI.PlotTabResultUI', { var xText = ''; var yLeftText = ''; + var colorText = ''; var yRightText = ''; var intervalText = ''; + var image=this; Ext.each(panel.plotArea.axes, function (axis) { switch (axis.id) { case 'timeAxis': @@ -300,6 +364,9 @@ Ext.define('amdaUI.PlotTabResultUI', { case 'y-right': yRightText = me.getAxisValue(axis, panel.plotArea.y + panel.plotArea.height, panel.plotArea.y, sourceYPos); break; + case 'colorAxis': + colorText = me.getZAxisValue(image, x,y, size,axis,panel.plotArea.plotAreaBackgroundColor ); + break; case 'xaxis_id': xText = me.getAxisValue(axis, panel.plotArea.x, panel.plotArea.x + panel.plotArea.width, sourceXPos); break; @@ -318,6 +385,8 @@ Ext.define('amdaUI.PlotTabResultUI', { text += (', Y Right : ' + yRightText); if (intervalText != '') text += (', ' + intervalText); + if (colorText != '') + text += (', Z : '+ colorText); } else me.panelImage.resetCursor(); -- libgit2 0.21.2