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

opening submap changes url GET parameter

parent 36a1ea18
No related branches found
No related tags found
2 merge requests!630WIP: Resolve "The privileges of a new user are not saved in some cases",!553Resolve "allow to open multiple data overlays using url GET param"
......@@ -109,6 +109,27 @@ GuiConnector.prototype.init = function () {
}
};
/**
*
* @param {string} key
* @param {string} value
*/
GuiConnector.prototype.setUrlParam = function (key, value) {
var self = this;
if (self.getParams[key] !== value) {
self.getParams[key] = value;
var url = location.pathname + '?';
for (var getParamKey in self.getParams) {
if (self.getParams.hasOwnProperty(getParamKey)) {
var getParamValue = self.getParams[getParamKey];
url += getParamKey + "=" + getParamValue + "&";
}
}
window.history.replaceState(null, null, url);
}
};
/**
*
* @param {function} handler
......
......@@ -16,8 +16,12 @@ function ObjectWithListeners() {
/**
* @callback ListenerCallback
* @param event
* @param {Object} event
* @param {string} event.type
* @param {ObjectWithListeners} event.object
* @param {Object} event.arg
*/
/**
* Adds a listener function to the object.
*
......
......@@ -45,6 +45,7 @@ function CustomMap(options) {
this.registerListenerType("onShowOverlay");
this.registerListenerType("onHideOverlay");
this.registerListenerType("onBackgroundOverlayChange");
this.registerListenerType("onSubmapOpen");
// @type {boolean[]}
this._selectedOverlays = [];
......@@ -479,11 +480,12 @@ CustomMap.prototype.openSubmap = function (id) {
return self.refreshMarkers();
});
}
}).then(function (value) {
return self.callListeners("onSubmapOpen", {mapId: id});
});
} else {
return Promise.resolve();
}
};
/**
......@@ -1218,26 +1220,26 @@ CustomMap.prototype.getDistance = function (params) {
if (element.getY() <= y && element.getY() + element.getHeight() >= y) {
return 0;
} else {
return Math.min(
Math.abs(element.getY() - y),
Math.abs(element.getY() + element.getHeight() - y)
return Math.min(
Math.abs(element.getY() - y),
Math.abs(element.getY() + element.getHeight() - y)
);
}
} else if (element.getY() <= y && element.getY() + element.getHeight() >= y) {
return Math.min(
Math.abs(element.getX() - x),
Math.abs(element.getX() + element.getWidth() - x)
return Math.min(
Math.abs(element.getX() - x),
Math.abs(element.getX() + element.getWidth() - x)
);
} else {
var elementX = element.getX();
var elementY = element.getY();
var elementWidth = element.getWidth();
var elementHeight = element.getHeight();
return Math.min(
Functions.distance(p1, new Point(elementX, y)),
Functions.distance(p1, new Point(elementX + elementWidth, elementY)),
Functions.distance(p1, new Point(elementX, elementY + elementHeight)),
Functions.distance(p1, new Point(elementX + elementWidth, elementY + elementHeight))
return Math.min(
Functions.distance(p1, new Point(elementX, y)),
Functions.distance(p1, new Point(elementX + elementWidth, elementY)),
Functions.distance(p1, new Point(elementX, elementY + elementHeight)),
Functions.distance(p1, new Point(elementX + elementWidth, elementY + elementHeight))
);
}
} else if (element instanceof Reaction) {
......
......@@ -317,6 +317,16 @@ function assignSplitBarHandler(customMap, pluginManager) {
});
}
/**
*
* @param {CustomMap} customMap
*/
function addUrlChangeListenersToCustomMap(customMap) {
customMap.addListener("onSubmapOpen", function (event) {
GuiConnector.setUrlParam("submap", event.arg.mapId.toString());
});
}
/**
*
* @param {CustomMapOptions|*} params
......@@ -367,6 +377,7 @@ function create(params) {
customMap = new CustomMap(params);
addUrlChangeListenersToCustomMap(customMap);
new DbOverlayCollection({
map: customMap
......
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