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