diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js index dc3e4c6681148590e707f5f9075ed2aab1ce43b1..44098fc4d2a165d368c052564a1bfa52738223bc 100644 --- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js @@ -114,7 +114,7 @@ EditProjectDialog.prototype.addTab = function (params) { navigationObject: navLi, navigationBar: params.tabMenuDiv }); - $(contentDiv).css("overflow","auto"); + $(contentDiv).css("overflow", "auto"); if (params.content !== undefined) { contentDiv.appendChild(params.content); @@ -821,7 +821,12 @@ function getValueOrEmpty(value) { } } -EditProjectDialog.prototype.mapToTableRow = function (map, users) { +/** + * + * @param {MapModel} map + * @returns {Array} + */ +EditProjectDialog.prototype.mapToTableRow = function (map) { var row = []; var id = map.getId(); var centerX = getValueOrEmpty(map.getDefaultCenterX()); @@ -831,7 +836,17 @@ EditProjectDialog.prototype.mapToTableRow = function (map, users) { row[1] = map.getName(); row[2] = "<input name='defaultCenterX-" + id + "' value='" + centerX + "'/>"; row[3] = "<input name='defaultCenterY-" + id + "' value='" + centerY + "'/>"; - row[4] = "<input name='defaultZoomLevel-" + id + "' value='" + zoomLevel + "'/>"; + var zoomLevelSelect = "<select name='defaultZoomLevel-" + id + "' value='" + zoomLevel + "'>" + + "<option value=''>---</option>"; + for (var i = map.getMinZoom(); i <= map.getMaxZoom(); i++) { + var selected = ""; + if (i === zoomLevel) { + selected = " selected "; + } + zoomLevelSelect += "<option value='" + i + "' " + selected + ">" + (i - map.getMinZoom()) + "</option>"; + } + zoomLevelSelect += "</select>"; + row[4] = zoomLevelSelect; row[5] = "<button name='saveMap' data='" + id + "'><i class=\"fa fa-save\" style=\"font-size:17px\"></i></button>"; return row; @@ -921,8 +936,10 @@ EditProjectDialog.prototype.saveOverlay = function (overlayId) { EditProjectDialog.prototype.saveMap = function (mapId) { var self = this; var map = self._mapsById[mapId]; - map.setDefaultCenterX($("[name='defaultCenterX-" + mapId + "']", self.getElement())[0].value); - map.setDefaultCenterY($("[name='defaultCenterY-" + mapId + "']", self.getElement())[0].value); + var centerX = parseInt($("[name='defaultCenterX-" + mapId + "']", self.getElement())[0].value); + var centerY = parseInt($("[name='defaultCenterY-" + mapId + "']", self.getElement())[0].value); + map.setDefaultCenterX(centerX); + map.setDefaultCenterY(centerY); map.setDefaultZoomLevel($("[name='defaultZoomLevel-" + mapId + "']", self.getElement())[0].value); return ServerConnector.updateModel({projectId: self.getProject().getProjectId(), model: map}); diff --git a/frontend-js/src/main/js/map/data/MapModel.js b/frontend-js/src/main/js/map/data/MapModel.js index 81a5dae53e5580ab0fa912bd3b7df2be7257ad81..a81d39314c136949eed0e68fe13fe4c0b206def7 100644 --- a/frontend-js/src/main/js/map/data/MapModel.js +++ b/frontend-js/src/main/js/map/data/MapModel.js @@ -455,8 +455,16 @@ MapModel.prototype.getDefaultZoomLevel = function () { return this._defaultZoomLevel; }; +/** + * + * @param {number} defaultZoomLevel + */ MapModel.prototype.setDefaultZoomLevel = function (defaultZoomLevel) { - this._defaultZoomLevel = defaultZoomLevel; + if (!isNaN(defaultZoomLevel)) { + this._defaultZoomLevel = defaultZoomLevel; + } else { + this._defaultZoomLevel = null; + } }; /** @@ -467,8 +475,16 @@ MapModel.prototype.getDefaultCenterX = function () { return this._defaultCenterX; }; +/** + * + * @param {number} defaultCenterX + */ MapModel.prototype.setDefaultCenterX = function (defaultCenterX) { - this._defaultCenterX = defaultCenterX; + if (!isNaN(defaultCenterX)) { + this._defaultCenterX = defaultCenterX; + } else { + this._defaultCenterX = null; + } }; /** @@ -480,7 +496,11 @@ MapModel.prototype.getDefaultCenterY = function () { }; MapModel.prototype.setDefaultCenterY = function (defaultCenterY) { - this._defaultCenterY = defaultCenterY; + if (!isNaN(defaultCenterY)) { + this._defaultCenterY = defaultCenterY; + } else { + this._defaultCenterY = null; + } }; MapModel.prototype.getSubmodelType = function () { diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java index 78c6e8a518283853d4616af260f59264de0ff694..5e3659dbc1a4d3ece5da1918825bc07267448108 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/models/ModelRestImpl.java @@ -138,6 +138,8 @@ public class ModelRestImpl extends BaseRestImpl { private Double parseDouble(Object value) throws QueryException { if (value instanceof Double) { return (Double) value; + } else if (value instanceof Integer) { + return ((Integer) value).doubleValue(); } else if (value instanceof String) { if (((String) value).equalsIgnoreCase("")) { return null; @@ -151,7 +153,7 @@ public class ModelRestImpl extends BaseRestImpl { } else if (value == null) { return null; } else { - throw new InvalidArgumentException(); + throw new QueryException("Don't know how to change " + value.getClass() + " into Double"); } } }