diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 44d2c88c680b7ab6221a985455eeceeb522b263e..61e9d9d1141079e126911d30fe5a1103e2ab93aa 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -1684,6 +1684,34 @@ 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); + GuiConnector.showProcessing(); + 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) { + GuiConnector.hideProcessing(); + 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 173549cf1ecaa56ce007480ddcae3bd2cabcf5fe..e51b523d0a85bf810a38d827c5e7467011b747ac 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; @@ -29,6 +30,7 @@ import lcsb.mapviewer.api.BaseRestImpl; import lcsb.mapviewer.api.ObjectExistsException; import lcsb.mapviewer.api.ObjectNotFoundException; import lcsb.mapviewer.api.QueryException; +import lcsb.mapviewer.api.projects.models.bioEntities.AllBioeEntitiesTests; import lcsb.mapviewer.api.projects.models.publications.PublicationsRestImpl; import lcsb.mapviewer.commands.ClearColorModelCommand; import lcsb.mapviewer.commands.ColorExtractor; @@ -51,6 +53,7 @@ import lcsb.mapviewer.converter.zip.ZipEntryFile; import lcsb.mapviewer.model.Project; import lcsb.mapviewer.model.cache.FileEntry; import lcsb.mapviewer.model.cache.UploadedFileEntry; +import lcsb.mapviewer.model.map.BioEntity; import lcsb.mapviewer.model.map.InconsistentModelException; import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.MiriamType; @@ -329,13 +332,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"); } @@ -346,6 +350,26 @@ public class ProjectRestImpl extends BaseRestImpl { // create model bounded by the polygon SubModelCommand subModelCommand = new SubModelCommand(originalModel, polygon); Model part = subModelCommand.execute(); + + //Get list of oeverlay ids + String 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), 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);