Skip to content
Snippets Groups Projects

when trying to show elements twice without waitng for promise resolve exception is thrown

Merged Piotr Gawron requested to merge 113-higlighting-multiple-times into master
2 files
+ 101
42
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -39,6 +39,8 @@ UserDbOverlay.prototype.getDetailDataByIdentifiedElement = function(element) {
UserDbOverlay.prototype.addMarker = function(params) {
var self = this;
self.disableAddRemoveElements();
var elements = [];
if (params.length === undefined) {
params = [ params ];
@@ -51,6 +53,7 @@ UserDbOverlay.prototype.addMarker = function(params) {
element.setIcon(singleElementParam.icon);
}
if (self._markerIdentifiedElements[element.getType()][element.getId()] !== undefined) {
self.enableAddRemoveElements();
return Promise.reject(new Error("Element already highlighted: " + element.getId()));
}
elements.push(element);
@@ -61,6 +64,7 @@ UserDbOverlay.prototype.addMarker = function(params) {
}
return self.getIdentifiedElements().then(function(elements) {
self.enableAddRemoveElements();
return self.callListeners("onSearch", {
fitBounds : false,
identifiedElements : elements,
@@ -70,6 +74,7 @@ UserDbOverlay.prototype.addMarker = function(params) {
UserDbOverlay.prototype.addSurface = function(params) {
var self = this;
self.disableAddRemoveElements();
var elements = [];
if (params.length === undefined) {
@@ -84,6 +89,7 @@ UserDbOverlay.prototype.addSurface = function(params) {
element.setOpacity(singleElementParam.options.opacity);
}
if (self._surfaceIdentifiedElements[element.getType()][element.getId()] !== undefined) {
self.enableAddRemoveElements();
return Promise.reject(new Error("Element already highlighted: " + element.getId()));
}
elements.push(element);
@@ -94,6 +100,7 @@ UserDbOverlay.prototype.addSurface = function(params) {
}
return self.getIdentifiedElements().then(function(elements) {
self.enableAddRemoveElements();
return self.callListeners("onSearch", {
fitBounds : false,
identifiedElements : elements,
@@ -103,69 +110,82 @@ UserDbOverlay.prototype.addSurface = function(params) {
UserDbOverlay.prototype.removeMarker = function(params) {
var self = this;
self.disableAddRemoveElements();
var elements = [];
if (params.length === undefined) {
params = [ params ];
}
if (params.length > 0) {
var i, element;
for (i = 0; i < params.length; i++) {
var singleElementParam = params[i];
element = new IdentifiedElement(singleElementParam.element);
if (self._markerIdentifiedElements[element.getType()][element.getId()] === undefined) {
return Promise.reject(new Error("Element is not highlighted: " + element.getId()));
}
elements.push(element);
}
for (i = 0; i < elements.length; i++) {
element = elements[i];
self._markerIdentifiedElements[element.getType()][element.getId()] = undefined;
delete self._markerIdentifiedElements[element.getType()][element.getId()];
var i, element;
for (i = 0; i < params.length; i++) {
var singleElementParam = params[i];
element = new IdentifiedElement(singleElementParam.element);
if (self._markerIdentifiedElements[element.getType()][element.getId()] === undefined) {
self.enableAddRemoveElements();
return Promise.reject(new Error("Element is not highlighted: " + element.getId()));
}
elements.push(element);
}
for (i = 0; i < elements.length; i++) {
element = elements[i];
self._markerIdentifiedElements[element.getType()][element.getId()] = undefined;
delete self._markerIdentifiedElements[element.getType()][element.getId()];
}
return self.getIdentifiedElements().then(function(elements) {
return self.callListeners("onSearch", {
fitBounds : false,
identifiedElements : elements,
});
return self.getIdentifiedElements().then(function(elements) {
self.enableAddRemoveElements();
return self.callListeners("onSearch", {
fitBounds : false,
identifiedElements : elements,
});
} else {
return Promise.resolve();
}
});
};
UserDbOverlay.prototype.removeSurface = function(params) {
var self = this;
self.disableAddRemoveElements();
var elements = [];
if (params.length === undefined) {
params = [ params ];
}
if (params.length > 0) {
var i, element;
for (i = 0; i < params.length; i++) {
var singleElementParam = params[i];
element = new IdentifiedElement(singleElementParam.element);
if (self._surfaceIdentifiedElements[element.getType()][element.getId()] === undefined) {
return Promise.reject(new Error("Element is not highlighted: " + element.getId()));
}
elements.push(element);
}
for (i = 0; i < elements.length; i++) {
element = elements[i];
self._surfaceIdentifiedElements[element.getType()][element.getId()] = undefined;
delete self._surfaceIdentifiedElements[element.getType()][element.getId()];
var i, element;
for (i = 0; i < params.length; i++) {
var singleElementParam = params[i];
element = new IdentifiedElement(singleElementParam.element);
if (self._surfaceIdentifiedElements[element.getType()][element.getId()] === undefined) {
self.enableAddRemoveElements();
return Promise.reject(new Error("Element is not highlighted: " + element.getId()));
}
elements.push(element);
}
for (i = 0; i < elements.length; i++) {
element = elements[i];
self._surfaceIdentifiedElements[element.getType()][element.getId()] = undefined;
delete self._surfaceIdentifiedElements[element.getType()][element.getId()];
}
return self.getIdentifiedElements().then(function(elements) {
return self.callListeners("onSearch", {
fitBounds : false,
identifiedElements : elements,
});
return self.getIdentifiedElements().then(function(elements) {
self.enableAddRemoveElements();
return self.callListeners("onSearch", {
fitBounds : false,
identifiedElements : elements,
});
});
};
UserDbOverlay.prototype.disableAddRemoveElements = function() {
if (this._addRemoveElementsDisabled) {
throw new Error("wait until previous Promise for showBioEntity/hideBioEntity is resolved");
} else {
this._addRemoveElementsDisabled = true;
}
};
UserDbOverlay.prototype.enableAddRemoveElements = function() {
if (this._addRemoveElementsDisabled) {
this._addRemoveElementsDisabled = false;
} else {
return Promise.resolve();
logger.warn("showBioEntity/hideBioEntity is not disabled");
}
};
Loading