From 5aa7d1440cadfd8a6065518165a9de9700b59d19 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 16 Oct 2019 12:17:23 +0200
Subject: [PATCH] general overlays are always above user overlays

---
 .../src/main/js/map/window/AliasInfoWindow.js | 10 ++++++
 .../js/map/window/AliasInfoWindow-test.js     | 31 +++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/frontend-js/src/main/js/map/window/AliasInfoWindow.js b/frontend-js/src/main/js/map/window/AliasInfoWindow.js
index b4ba0dfea8..2d36ce0f75 100644
--- a/frontend-js/src/main/js/map/window/AliasInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/AliasInfoWindow.js
@@ -114,6 +114,16 @@ AliasInfoWindow.prototype.createChartDiv = function (params) {
   var promises = [];
   var self = this;
 
+  overlays.sort(function (overlayA, overlayB) {
+    if (overlayA.getPublicOverlay() !== overlayB.getPublicOverlay()) {
+      if (overlayA.getPublicOverlay()) {
+        return -1;
+      }
+      return 1;
+    }
+    return overlayA.getOrder() - overlayB.getOrder();
+  });
+
   overlays.forEach(function (overlay, i) {
     promises.push(overlay.getFullAliasById(self.getAlias().getId()).then(function (data) {
       var rowDiv = document.createElement("div");
diff --git a/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js b/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js
index 34d5f2d2bd..121874a5f0 100644
--- a/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js
+++ b/frontend-js/src/test/js/map/window/AliasInfoWindow-test.js
@@ -427,6 +427,37 @@ describe('AliasInfoWindow', function () {
         assert.ok(div);
       });
     });
+
+    it("overlay order", function () {
+      var map = helper.createCustomMap();
+      var alias = helper.createAlias(map);
+      var aliasWindow = new AliasInfoWindow({
+        alias: alias,
+        map: map,
+        marker: helper.createMarker({element: alias, map: map})
+      });
+      var overlay1 = helper.createOverlay();
+      overlay1.setOrder(2);
+      var overlay2 = helper.createOverlay();
+      overlay2.setPublicOverlay(true);
+      overlay2.setOrder(10);
+      var overlay3 = helper.createOverlay();
+      overlay3.setPublicOverlay(true);
+      overlay3.setOrder(9);
+      var overlay4 = helper.createOverlay();
+      overlay4.setOrder(1);
+      var overlays = [overlay1, overlay2, overlay3, overlay4];
+
+      return aliasWindow.createChartDiv({overlays: overlays}).then(function (htmlDiv) {
+        var overlay1Position = htmlDiv.innerHTML.indexOf(overlay1.getName());
+        var overlay2Position = htmlDiv.innerHTML.indexOf(overlay2.getName());
+        var overlay3Position = htmlDiv.innerHTML.indexOf(overlay3.getName());
+        var overlay4Position = htmlDiv.innerHTML.indexOf(overlay4.getName());
+        assert.ok(overlay3Position < overlay2Position);
+        assert.ok(overlay2Position < overlay4Position);
+        assert.ok(overlay4Position < overlay1Position);
+      });
+    });
   });
 
   it("createVcfString ", function () {
-- 
GitLab