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

checks for model and element existence added to remove method

parent c90da2cf
No related branches found
No related tags found
1 merge request!34Resolve "when highligting element that doesn't exist throw an error"
......@@ -37,10 +37,11 @@ UserDbOverlay.prototype.getDetailDataByIdentifiedElement = function(element) {
return model.getByIdentifiedElement(element, true);
};
UserDbOverlay.prototype._createIdentifiedElements = function(params, sourceArray) {
UserDbOverlay.prototype._createIdentifiedElements = function(params, sourceArray, mustBeUndefined) {
var self = this;
var result = [];
var promises = [];
var mustBeDefined = !mustBeUndefined;
for (var i = 0; i < params.length; i++) {
var singleElementParam = params[i];
var element = new IdentifiedElement(singleElementParam.element);
......@@ -52,9 +53,12 @@ UserDbOverlay.prototype._createIdentifiedElements = function(params, sourceArray
element.setLineWeight(singleElementParam.options.lineWeight);
element.setLineOpacity(singleElementParam.options.lineOpacity);
}
if (sourceArray[element.getType()][element.getId()] !== undefined) {
if (sourceArray[element.getType()][element.getId()] !== undefined && mustBeUndefined) {
return Promise.reject(new Error("Element already highlighted: " + element.getId()));
}
if (sourceArray[element.getType()][element.getId()] === undefined && mustBeDefined) {
return Promise.reject(new Error("Element is not highlighted: " + element.getId()));
}
result.push(element);
var submap = self.getMap().getSubmapById(element.getModelId());
if (submap === null) {
......@@ -79,7 +83,7 @@ UserDbOverlay.prototype.addMarker = function(params) {
if (params.length === undefined) {
params = [ params ];
}
return self._createIdentifiedElements(params, self._markerIdentifiedElements).then(function(elements) {
return self._createIdentifiedElements(params, self._markerIdentifiedElements, true).then(function(elements) {
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
self._markerIdentifiedElements[element.getType()][element.getId()] = element;
......@@ -105,7 +109,7 @@ UserDbOverlay.prototype.addSurface = function(params) {
params = [ params ];
}
return self._createIdentifiedElements(params, self._surfaceIdentifiedElements).then(function(elements) {
return self._createIdentifiedElements(params, self._surfaceIdentifiedElements, true).then(function(elements) {
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
self._surfaceIdentifiedElements[element.getType()][element.getId()] = element;
......@@ -127,32 +131,26 @@ UserDbOverlay.prototype.removeMarker = function(params) {
var self = this;
self.disableAddRemoveElements();
var elements = [];
if (params.length === undefined) {
params = [ params ];
}
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._createIdentifiedElements(params, self._markerIdentifiedElements, false).then(function(elements) {
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
self._markerIdentifiedElements[element.getType()][element.getId()] = undefined;
delete self._markerIdentifiedElements[element.getType()][element.getId()];
}
return self.getIdentifiedElements();
}).then(function(elements) {
self.enableAddRemoveElements();
return self.callListeners("onSearch", {
fitBounds : false,
identifiedElements : elements,
});
}).then(null, function(error) {
self.enableAddRemoveElements();
return Promise.reject(error);
});
};
......@@ -164,23 +162,14 @@ UserDbOverlay.prototype.removeSurface = function(params) {
if (params.length === undefined) {
params = [ params ];
}
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()));
return self._createIdentifiedElements(params, self._surfaceIdentifiedElements, false).then(function(elements) {
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
self._surfaceIdentifiedElements[element.getType()][element.getId()] = undefined;
delete self._surfaceIdentifiedElements[element.getType()][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.getIdentifiedElements();
}).then(function(elements) {
self.enableAddRemoveElements();
return self.callListeners("onSearch", {
fitBounds : false,
......
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