diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 1677a08b3ea7978ea19c3fe62482e4837d74bafc..28c1d7d393a7b185af6bb213164577187bf83e77 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -1693,6 +1693,32 @@ ServerConnector.addOverlay = function (params) { }); }; +ServerConnector.addOverlayFromString = function(name, content) { + var fileName = name + ".txt"; + var overlay = new DataOverlay({ + name: name, + description: "", + filename: fileName + }); + var fileContent = new TextEncoder("UTF8").encode(content); + self = this; + return self.getProjectId().then(function (projectid) { + + return ServerConnector.uploadFile({ + filename: fileName, + content: fileContent + }).then(function (file) { + return ServerConnector.addOverlay({ + fileId: file.id, + overlay: overlay, + projectId: self.getProjectId() + }); + }).then(function (result) { + return result; + }); + }); +} + ServerConnector.updateOverlay = function (overlay) { var self = this; var queryParams = { diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java index 0b7757109bb776e1595ee142badf23401b33fcb2..0d412bce85a455cd107aaa2ee8f818152ad856aa 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/ProjectRestImpl.java @@ -1,5 +1,6 @@ package lcsb.mapviewer.api.projects; +import java.awt.Color; import java.awt.geom.Path2D; import java.awt.geom.PathIterator; import java.io.ByteArrayInputStream; @@ -330,13 +331,14 @@ public class ProjectRestImpl extends BaseRestImpl { String backgroundOverlayId, String overlayIds, String zoomLevel, String polygonString) throws SecurityException, QueryException, IOException, InvalidColorSchemaException, CommandExecutionException, ConverterException, InconsistentModelException { + User user = getUserService().getUserByToken(token); Model topModel = getModelService().getLastModelByProjectId(projectId, token); if (topModel == null) { throw new ObjectNotFoundException("Project with given id doesn't exist"); } - + Model originalModel = topModel.getSubmodelById(modelId); - + if (originalModel == null) { throw new ObjectNotFoundException("Model with given id doesn't exist"); } @@ -347,6 +349,32 @@ public class ProjectRestImpl extends BaseRestImpl { // create model bounded by the polygon SubModelCommand subModelCommand = new SubModelCommand(originalModel, polygon); Model part = subModelCommand.execute(); + + //Get list of overlay ids + String[] overlayIdsList; + if (overlayIds == null || overlayIds.trim().isEmpty()) { + overlayIdsList = new String[0]; + } + else { + overlayIdsList = overlayIds.split(","); + } + // Remove all colors + if (overlayIdsList.length > 0) + { + + for (Element element: part.getElements()){ + element.setColor(Color.WHITE); + } + } + // Color with overlays + for (String overlayId: overlayIdsList){ + Layout overlay = layoutService.getLayoutById(Integer.parseInt(overlayId.trim()), token); + + ColorSchemaReader reader = new ColorSchemaReader(); + Collection<ColorSchema> schemas = reader.readColorSchema(overlay.getInputData().getFileContent()); + + new ColorModelCommand(part, schemas, getUserService().getColorExtractorForUser(user)).execute(); + } IConverter parser = getModelParser(handlerClass); InputStream is = parser.exportModelToInputStream(part);