From 633f067a091daae589e36e1d604b806e159a528e Mon Sep 17 00:00:00 2001
From: Benjamin Renard <benjamin.renard@akka.eu>
Date: Thu, 27 Feb 2025 08:03:05 +0000
Subject: [PATCH] Fix regression with Open Reference in interactive plot

---
 js/app/views/PlotComponents/PlotContextManager.js | 20 +++++++++++++-------
 js/app/views/PlotTabResultUI.js                   | 36 +++++++++++++++++++++---------------
 2 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/js/app/views/PlotComponents/PlotContextManager.js b/js/app/views/PlotComponents/PlotContextManager.js
index d8aa01c..9e8ed8c 100644
--- a/js/app/views/PlotComponents/PlotContextManager.js
+++ b/js/app/views/PlotComponents/PlotContextManager.js
@@ -82,16 +82,22 @@ Ext.define('amdaPlotComp.PlotContextManager', {
                     var intToPush = {
                         'id': id,
                         'start': interval.start,
-                        'stop': interval.stop
+                        'stop': interval.stop,
+                        'links': []
                     };
-                    if ((columnToShow != '') && (columnName != '') && interval.hasOwnProperty('params')) {
-                        Ext.Object.each(interval.params, function (param_id, param_value) {
-                            if (param_id == columnToShow) {
+                    
+                    Ext.Object.each(interval.params, function (param_id, param_value) {
+                        if (interval.hasOwnProperty('params')) {
+                            if ((columnToShow != '') && (columnName != '') && (param_id == columnToShow)) {
                                 intToPush['info'] = columnName + ': ' + param_value;
-                                return;
                             }
-                        });
-                    }
+                            if (param_value.toLowerCase().startsWith("http://") || param_value.toLowerCase().startsWith("https://")) {
+                                if (intToPush['links'].indexOf(param_value) < 0) {
+                                    intToPush['links'].push(param_value);
+                                }
+                            }
+                        }
+                    });
 
                     intervalsOver[parameter.ttorcat.name].push(intToPush);
 
diff --git a/js/app/views/PlotTabResultUI.js b/js/app/views/PlotTabResultUI.js
index c9be834..be4989c 100644
--- a/js/app/views/PlotTabResultUI.js
+++ b/js/app/views/PlotTabResultUI.js
@@ -502,21 +502,9 @@ Ext.define('amdaUI.PlotTabResultUI', {
 
 				if (timeAxisContext) {
                     var intervals = amdaPlotComp.PlotContextManager.getIntervalsOverMouse(me.crtContext, panel, crtTimestamp);
-					if (Object.keys(intervals).length > 0) {
-                        var links = [];
-                        Ext.Object.each(intervals, function (ttorcatname, intervals) {
-                            Ext.each(intervals, function (interval) {
-                                if (interval.params) {
-                                    Ext.Object.each(interval.params, function (paramKey, paramValue) {
-                                        if (paramValue.toLowerCase().startsWith("http://") || paramValue.toLowerCase().startsWith("https://")) {
-                                            if (links.indexOf(paramValue) < 0) {
-                                                links.push(paramValue);
-                                            }
-                                        }
-                                    });
-                                }
-                            });
-                        });
+
+                    if (Object.keys(intervals).length > 0) {
+                        var links = me.getIntervalsLinks(intervals);
                         if (links.length > 0) {
 							var menu = Ext.create('Ext.menu.Menu', { plain: true });
                             Ext.each(links, function (link) {
@@ -586,6 +574,24 @@ Ext.define('amdaUI.PlotTabResultUI', {
 		return intervalText;
     },
 
+    getIntervalsLinks: function(intervals) {
+        var links = [];
+        Ext.Object.each(intervals, function (ttorcatname, intervals) {
+            Ext.each(intervals, function (interval) {
+                if (interval.hasOwnProperty('links') && interval.links.length > 0) {
+                    Ext.each(interval.links, function (link) {
+                        if (link.toLowerCase().startsWith("http://") || link.toLowerCase().startsWith("https://")) {
+                            if (links.indexOf(link) < 0) {
+                                links.push(link);
+                            }
+                        }
+                    });
+                }
+            });
+        });
+        return links;
+    },
+
 	updateTimeTableInfo: function () {
 		if (!this.navToolBar)
 			return;
--
libgit2 0.21.2