Skip to content
Snippets Groups Projects
Commit 2d261730 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

Merge branch '399-legend-disappears-after-one-cycle-of-show' into 'master'

Resolve "Legend disappears after one cycle of show"

Closes #399

See merge request piotr.gawron/minerva!303
parents e3515a1f 1e84595f
No related branches found
No related tags found
1 merge request!303Resolve "Legend disappears after one cycle of show"
Pipeline #
......@@ -74,7 +74,7 @@ Legend.prototype.hide = function () {
};
Legend.prototype.show = function () {
var maxZIndex = Math.max.apply(null,
$.map($('body *'), function (e, n) {
$.map($('body *'), function (e) {
if ($(e).css('position') !== 'static') {
return parseInt($(e).css('z-index')) || 1;
}
......@@ -107,12 +107,38 @@ function createLegendSlide(file, index) {
return result;
}
function getValidLegendFiles(legendFiles) {
var result = [];
var promises = [];
legendFiles.forEach(function (file) {
result.push(file);
var url = file.getValue();
if (url.indexOf("http") !== 0 && "" !== url) {
url = ServerConnector.getServerBaseUrl() + url;
}
promises.push(ServerConnector.sendGetRequest(url).catch(function (error) {
var index = result.indexOf(file);
if (index > -1) {
result.splice(index, 1);
}
}));
});
return Promise.all(promises).then(function () {
return result;
});
}
Legend.prototype.init = function () {
require('request').debug = true;
var self = this;
var element = self.getElement();
var menu = self.getControlElement(PanelControlElementType.LEGEND_INDICATORS_OL);
var slides = self.getControlElement(PanelControlElementType.LEGEND_SLIDES_DIV);
return ServerConnector.getConfigurationParam(ConfigurationType.LEGEND_FILES).then(function (legendFiles) {
return getValidLegendFiles(legendFiles);
}).then(function (legendFiles) {
for (var i = 0; i < legendFiles.length; i++) {
var legendFile = legendFiles[i];
menu.appendChild(createLegendIndicator(legendFile, i));
......@@ -120,6 +146,7 @@ Legend.prototype.init = function () {
}
$(element).carousel();
});
};
module.exports = Legend;
......@@ -3,6 +3,7 @@
require("../mocha-config.js");
var Legend = require('../../../main/js/gui/Legend');
var ConfigurationType = require('../../../main/js/ConfigurationType');
var chai = require('chai');
var assert = chai.assert;
......@@ -22,15 +23,42 @@ describe('Legend', function () {
});
it('init', function () {
var map = helper.createCustomMap();
describe('init', function () {
it('default', function () {
var map = helper.createCustomMap();
var legend = new Legend({
element: testDiv,
customMap: map
var legend = new Legend({
element: testDiv,
customMap: map
});
return legend.init().then(function () {
//there are no elements visible (all of them have urls that cannot be resolved)
assert.equal(0, $(".item", testDiv).length);
});
});
return legend.init();
it('existing file', function () {
var map = helper.createCustomMap();
var legend = new Legend({
element: testDiv,
customMap: map
});
var originalUrl;
var files;
return ServerConnector.getConfigurationParam(ConfigurationType.LEGEND_FILES).then(function (legendFiles) {
files = legendFiles;
originalUrl = legendFiles[0].getValue();
legendFiles[0].setValue("https://www.google.pl/");
return legend.init();
}).then(function () {
assert.equal(1, $(".item", testDiv).length);
}).finally(function () {
files[0].setValue(originalUrl);
});
});
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment