diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index 0943224d38579977b71da030eddf6008ccff4ee9..9382812aaf709a4ed128baafda4954ff7bf8c2b8 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -277,8 +277,9 @@ ServerConnector.getProjectsUrl = function(queryParams, filterParams) { }; ServerConnector.getProjectUrl = function(queryParams, filterParams) { + var id = this.getIdOrAsterisk(queryParams.projectId); return this.getApiUrl({ - url : this.getProjectsUrl(queryParams) + queryParams.projectId + "/", + url : this.getProjectsUrl(queryParams) + id + "/", params : filterParams, }); }; @@ -1268,24 +1269,18 @@ ServerConnector.addOverlay = function(params) { }); }; -ServerConnector.updateOverlay = function(params) { +ServerConnector.updateOverlay = function(overlay) { var self = this; var queryParams = { - overlayId : params.overlayId + overlayId : overlay.getId(), }; var filterParams = { - overlay : {} + overlay : { + name : overlay.getName(), + description : overlay.getDescription(), + } }; - if (params.name !== undefined) { - filterParams.overlay.name = params.name; - } - if (params.description !== undefined) { - filterParams.overlay.description = params.description; - } - return self.getProjectId(params.projectId).then(function(result) { - queryParams.projectId = result; - return self.sendPatchRequest(self.updateOverlayUrl(queryParams), filterParams); - }); + return self.sendPatchRequest(self.updateOverlayUrl(queryParams), filterParams); }; ServerConnector.removeOverlay = function(params) { diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js index 543276cac52382101e7e19df5f4de3ff3b2b0947..570d2391d9e554d353b573ccac11b41ced6df71c 100644 --- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js @@ -249,10 +249,54 @@ EditProjectDialog.prototype.createOverlaysTab = function(tabMenuDiv, tabContentD }; EditProjectDialog.prototype.createOverlaysTabContent = function() { - return Functions.createElement({ + var self = this; + var result = Functions.createElement({ type : "div", - content : "Helo" }); + result.appendChild(self._createOverlayTable()); + return result; +}; + +EditProjectDialog.prototype._createOverlayTable = function() { + var self = this; + var overlaysTable = Functions.createElement({ + type : "table", + name : "overlaysTable", + className : "display", + style : "width:100%", + }); + + $(overlaysTable).DataTable({ + fnRowCallback : function(nRow, aData, iDisplayIndex) { + nRow.setAttribute('id', "overlay-" + aData[0]); + }, + columns : [ { + title : 'Id', + }, { + title : 'Name', + }, { + title : 'Description', + }, { + title : 'Owner', + }, { + title : 'Data', + }, { + title : 'Update', + }, { + title : 'Remove', + }, ], + }); + $(overlaysTable).on("click", "[name='removeOverlay']", function() { + var button = this; + return self.removeOverlay($(button).attr("data")).then(null, GuiConnector.alert); + }); + + $(overlaysTable).on("click", "[name='saveOverlay']", function() { + var button = this; + return self.saveOverlay($(button).attr("data")).then(null, GuiConnector.alert); + }); + + return overlaysTable; }; EditProjectDialog.prototype.createUsersTab = function(tabMenuDiv, tabContentDiv) { @@ -274,6 +318,47 @@ EditProjectDialog.prototype.createUsersTabContent = function() { }; EditProjectDialog.prototype.init = function() { + var self = this; + return ServerConnector.getOverlays({ + projectId : self.getProject().getProjectId() + }).then(function(overlays) { + return self.setOverlays(overlays); + }).then(function() { + $(window).trigger('resize'); + }); +}; + +EditProjectDialog.prototype.setOverlays = function(overlays) { + var self = this; + self._overlayById = []; + // return ServerConnector.getUsers().then(function(users) { + var users = []; + var dataTable = $($("[name='overlaysTable']", self.getElement())[0]).DataTable(); + var data = []; + for (var i = 0; i < overlays.length; i++) { + var overlay = overlays[i]; + self._overlayById[overlay.getId()] = overlay; + var rowData = self.overlayToTableRow(overlay, users) + data.push(rowData); + } + dataTable.clear().rows.add(data).draw(); + // }); +}; + +EditProjectDialog.prototype.overlayToTableRow = function(overlay, users) { + var row = []; + var id = overlay.getId(); + + row[0] = id; + row[1] = "<input name='name-" + id + "' value='" + overlay.getName() + "'/>"; + row[2] = "<input name='description-" + id + "' value='" + overlay.getDescription() + "'/>"; + row[3] = overlay.getCreator(); + row[4] = overlay.getInputDataAvailable(); + row[5] = "<button name='saveOverlay' data='" + id + "'>SAVE</button>"; + row[6] = "<button name='removeOverlay' data='" + id + "'>REMOVE</button>"; + + logger.debug(overlay.getId()); + return row; }; EditProjectDialog.prototype.destroy = function() { @@ -286,7 +371,8 @@ EditProjectDialog.prototype.open = function() { if (!$(div).hasClass("ui-dialog-content")) { $(div).dialog({ title : self.getProject().getProjectId(), - width : 400, + width : window.innerWidth / 2, + height : window.innerHeight / 2, }); } $(div).dialog("open"); @@ -320,4 +406,13 @@ EditProjectDialog.prototype.close = function() { $(this.getElement()).dialog("close"); }; +EditProjectDialog.prototype.saveOverlay = function(overlayId) { + var self = this; + var overlay = self._overlayById[overlayId]; + overlay.setName($("[name='name-" + overlayId + "']", self.getElement())[0].value); + overlay.setDescription($("[name='description-" + overlayId + "']", self.getElement())[0].value); + + return ServerConnector.updateOverlay(overlay); +}; + module.exports = EditProjectDialog; diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js index 78881ee703a902bcf162f8ad607c1c22b7fbb7b8..c956c68be39dd6fd56e41d014fc5ecf60662e2cf 100644 --- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js @@ -171,7 +171,6 @@ MapsAdminPanel.prototype.setProjects = function(projects) { data.push(rowData); } dataTable.clear().rows.add(data).draw(); - }; MapsAdminPanel.prototype.addUpdateListener = function(project, dataTableRow) { @@ -208,19 +207,22 @@ MapsAdminPanel.prototype.onRefreshClicked = function() { MapsAdminPanel.prototype.showEditDialog = function(id) { GuiConnector.showProcessing(); + var dialog; return ServerConnector.getProject(id).then(function(project) { - var dialog = new EditProjectDialog({ + dialog = new EditProjectDialog({ element : Functions.createElement({ type : "div" }), project : project, customMap : null, }); + return dialog.init(); + }).then(function() { dialog.open(); GuiConnector.hideProcessing(); }).then(null, function(error) { GuiConnector.hideProcessing(); - Promise.reject(error); + return Promise.reject(error); }); }; MapsAdminPanel.prototype.removeProject = function(id) { diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js index f7a8eb9669224ab39afa9003728c8c6bfa8cacf6..b08b8c2f11ed120f70bbc17c864d283e13423c2d 100644 --- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js @@ -228,11 +228,9 @@ OverlayPanel.prototype.openEditOverlayDialog = function(overlay) { text : "SAVE", click : function() { var windowSelf = this; - return ServerConnector.updateOverlay({ - overlayId : overlay.id, - name : nameInput.value, - description : descriptionInput.value - }).then(function() { + overlay.setName(nameInput.value); + overlay.setDescription(descriptionInput.value); + return ServerConnector.updateOverlay(overlay).then(function() { return self.refresh(); }).then(function() { $(windowSelf).dialog("close"); diff --git a/frontend-js/src/test/js/ServerConnector-test.js b/frontend-js/src/test/js/ServerConnector-test.js index 7397a0351b677d352806465f5a574e38429145ae..fcb9702766a7c33104d0d832b0da6b13c0d39dab 100644 --- a/frontend-js/src/test/js/ServerConnector-test.js +++ b/frontend-js/src/test/js/ServerConnector-test.js @@ -8,6 +8,7 @@ var HttpStatus = require('http-status-codes'); var Alias = require('../../main/js/map/data/Alias'); var Configuration = require('../../main/js/Configuration'); +var LayoutData= require('../../main/js/map/data/LayoutData'); var LayoutAlias = require('../../main/js/map/data/LayoutAlias'); var MapModel = require('../../main/js/map/data/MapModel'); var NetworkError = require('../../main/js/NetworkError'); @@ -192,11 +193,12 @@ describe('ServerConnector', function() { }); it('updateOverlay', function() { - return ServerConnector.updateOverlay({ - overlayId : 17296, - name : "test nam2", - description : "test desc2", - }); + var overlay = new LayoutData({}); + overlay.setId(17296); + overlay.setName("test nam2"); + overlay.setDescription("test desc2"); + + return ServerConnector.updateOverlay(overlay); }); it('logout', function() { diff --git a/frontend-js/src/test/js/gui/admin/EditProjectDialog.js b/frontend-js/src/test/js/gui/admin/EditProjectDialog.js index 78ffb0c1eab810bb32810584141cbccc512ad4b2..085132d5739fe7b46203456a88c5afdd3b020988 100644 --- a/frontend-js/src/test/js/gui/admin/EditProjectDialog.js +++ b/frontend-js/src/test/js/gui/admin/EditProjectDialog.js @@ -26,6 +26,36 @@ describe('EditProjectDialog', function() { }); }); + it('init', function() { + var dialog; + var project; + return ServerConnector.getProject().then(function(result) { + project = result; + dialog = new EditProjectDialog({ + element : testDiv, + project : project, + customMap : null, + }); + return dialog.init(); + }); + }); + it('saveOverlay', function() { + var dialog; + var project; + return ServerConnector.getProject().then(function(result) { + project = result; + dialog = new EditProjectDialog({ + element : testDiv, + project : project, + customMap : null, + }); + return dialog.init(); + }).then(function(){ + return dialog.saveOverlay(14081); + }); + }); + + it('onSaveClicked', function() { var dialog; var project; diff --git a/frontend-js/testFiles/apiCalls/projects/all/overlays/14081/PATCH_overlay.name=Pathways and compartments&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/all/overlays/14081/PATCH_overlay.name=Pathways and compartments&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..84110294c8c0a0ad8a7aeb9ebc48f8c11fda10cb --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/all/overlays/14081/PATCH_overlay.name=Pathways and compartments&token=MOCK_TOKEN_ID& @@ -0,0 +1,3 @@ +{ + "status": "OK" +} \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/projects/all/overlays/17296/PATCH_overlay.description=test desc2&overlay.name=test nam2&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/all/overlays/17296/PATCH_overlay.description=test desc2&overlay.name=test nam2&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..84110294c8c0a0ad8a7aeb9ebc48f8c11fda10cb --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/all/overlays/17296/PATCH_overlay.description=test desc2&overlay.name=test nam2&token=MOCK_TOKEN_ID& @@ -0,0 +1,3 @@ +{ + "status": "OK" +} \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/projects/sample/overlays/token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/sample/overlays/token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..f19c8c7dd8ff820159276e47d820eceb81ff8b9e --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/sample/overlays/token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"idObject":14081,"modelId":15781,"name":"Pathways and compartments","description":"","status":"Not available","publicOverlay":true,"progress":"0.00","directory":"5e8ff9bf55ba3508199d22e984129be6/_nested0","creator":"","inputDataAvailable":"false"},{"idObject":14082,"modelId":15781,"name":"Network","description":"","status":"Not available","publicOverlay":true,"progress":"0.00","directory":"5e8ff9bf55ba3508199d22e984129be6/_normal0","creator":"","inputDataAvailable":"false"},{"idObject":14083,"modelId":15781,"name":"Empty","description":"","status":"Not available","publicOverlay":true,"progress":"0.00","directory":"5e8ff9bf55ba3508199d22e984129be6/_empty0","creator":"","inputDataAvailable":"false"},{"idObject":18076,"modelId":15781,"name":"C:\\fakepath\\test.txt","description":"xxx","status":"OK","publicOverlay":true,"progress":"0.00","directory":"5e8ff9bf55ba3508199d22e984129be6/.18076","creator":"","inputDataAvailable":"true"},{"idObject":18077,"modelId":15781,"name":"xxx","description":"yyy","status":"OK","publicOverlay":true,"progress":"0.00","directory":"5e8ff9bf55ba3508199d22e984129be6/.18077","creator":"","inputDataAvailable":"true"},{"idObject":18095,"modelId":15781,"name":"a test","description":"test2 casadsadasdqqq","status":"OK","publicOverlay":false,"progress":"0.00","directory":"5e8ff9bf55ba3508199d22e984129be6/.18095","creator":"admin","inputDataAvailable":"true"},{"idObject":20660,"modelId":15781,"name":"","description":"","status":"OK","publicOverlay":false,"progress":"0.00","directory":"5e8ff9bf55ba3508199d22e984129be6/.20660","creator":"admin","inputDataAvailable":"true"}] \ No newline at end of file diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java index b6bc43c0baca458297d1b6eccbf307a531fbb0c3..d42c8d428c09f93b038443fa2d9b4397b03cf995 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/projects/overlays/OverlayRestImpl.java @@ -120,7 +120,7 @@ public class OverlayRestImpl extends BaseRestImpl { if (model == null) { throw new QueryException("Project with given id doesn't exist"); } - return layoutService.getLayoutById(model, Integer.valueOf(overlayId), authenticationToken); + return layoutService.getLayoutById(Integer.valueOf(overlayId), authenticationToken); } public FileEntry getOverlaySource(String token, String projectId, String overlayId) throws SecurityException, QueryException { @@ -145,21 +145,16 @@ public class OverlayRestImpl extends BaseRestImpl { public LayoutView updateOverlay(String token, String projectId, String overlayId, Map<String, Object> overlayData) throws QueryException, SecurityException { AuthenticationToken authenticationToken = getUserService().getToken(token); - Model model = getModelService().getLastModelByProjectId(projectId, authenticationToken); - if (model == null) { - throw new ObjectNotFoundException("Project with given id doesn't exist"); - } if (overlayData == null) { throw new QueryException("overlay field cannot be undefined"); } - Project project = model.getProject(); - boolean isAdmin = getUserService().userHasPrivilege(authenticationToken, PrivilegeType.LAYOUT_MANAGEMENT, project); try { Integer id = Integer.valueOf(overlayId); Layout layout = layoutService.getLayoutDataById(id, authenticationToken); if (layout == null) { throw new ObjectNotFoundException("overlay doesn't exist"); } + boolean isAdmin = getUserService().userHasPrivilege(authenticationToken, PrivilegeType.LAYOUT_MANAGEMENT, layout.getModel().getProject()); if (layout.isPublicLayout() && !isAdmin) { throw new SecurityException("You cannot modify given overlay"); } @@ -170,7 +165,7 @@ public class OverlayRestImpl extends BaseRestImpl { layout.setTitle((String) overlayData.get("name")); } layoutDao.update(layout); - return layoutService.getLayoutById(model, Integer.valueOf(overlayId), authenticationToken); + return layoutService.getLayoutById(Integer.valueOf(overlayId), authenticationToken); } catch (NumberFormatException e) { throw new ObjectNotFoundException("overlay doesn't exist"); } @@ -184,7 +179,7 @@ public class OverlayRestImpl extends BaseRestImpl { } try { Integer id = Integer.valueOf(overlayId); - LayoutView layout = layoutService.getLayoutById(model, id, authenticationToken); + LayoutView layout = layoutService.getLayoutById(id, authenticationToken); if (layout == null) { throw new ObjectNotFoundException("Overlay doesn't exist"); } @@ -244,7 +239,7 @@ public class OverlayRestImpl extends BaseRestImpl { new CreateLayoutParams() .async(false).colorInputStream(stream).description(description).layoutFileName(filename).model(model).name(name).user(user) .colorSchemaType(colorSchemaType).directory(".")); - return layoutService.getLayoutById(model, Integer.valueOf(layout.getIdObject()), authenticationToken); + return layoutService.getLayoutById(Integer.valueOf(layout.getIdObject()), authenticationToken); } catch (InvalidColorSchemaException e) { throw new QueryException(e.getMessage(), e); } diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java index a53089ee5c1c49a60528b6a6ec27d873367ebc02..646931a61237fc94f527d9a6b2a79774adba940f 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java @@ -918,7 +918,7 @@ public class LayoutService implements ILayoutService { * @throws SecurityException */ private byte[] getInputDataForLayout(int layoutId, AuthenticationToken token) throws SecurityException { - Layout layout = getLayoutById(layoutId, token); + Layout layout = getLayoutDataById(layoutId, token); if (layout == null) { return null; } else { @@ -930,18 +930,6 @@ public class LayoutService implements ILayoutService { } } - private Layout getLayoutById(int layoutId, AuthenticationToken token) throws SecurityException { - Layout layout = layoutDao.getById(layoutId); - if (layout == null) { - return null; - } - User user = userService.getUserByToken(token); - if (!userCanViewOverlay(layout, user)) { - throw new SecurityException("User doesn't have access to overlay"); - } - return layout; - } - @Override public List<LightLayoutAliasView> getAliasesForLayout(Model model, int layoutId, AuthenticationToken token) throws SecurityException { try { @@ -1052,8 +1040,8 @@ public class LayoutService implements ILayoutService { } @Override - public LayoutView getLayoutById(Model model, int overlayId, AuthenticationToken token) throws SecurityException { - Layout layout = getLayoutById(overlayId, token); + public LayoutView getLayoutById(int overlayId, AuthenticationToken token) throws SecurityException { + Layout layout = getLayoutDataById(overlayId, token); if (layout == null) { return null; } @@ -1062,7 +1050,15 @@ public class LayoutService implements ILayoutService { @Override public Layout getLayoutDataById(int overlayId, AuthenticationToken token) throws SecurityException { - return getLayoutById(overlayId, token); + Layout layout = layoutDao.getById(overlayId); + if (layout == null) { + return null; + } + User user = userService.getUserByToken(token); + if (!userCanViewOverlay(layout, user)) { + throw new SecurityException("User doesn't have access to overlay"); + } + return layout; } @Override diff --git a/service/src/main/java/lcsb/mapviewer/services/interfaces/ILayoutService.java b/service/src/main/java/lcsb/mapviewer/services/interfaces/ILayoutService.java index 35e662b9231100f39736c4fb8f3d0b55a772d8a5..8918cbb8e460f4bd5860eb74e6e91c6bc490940d 100644 --- a/service/src/main/java/lcsb/mapviewer/services/interfaces/ILayoutService.java +++ b/service/src/main/java/lcsb/mapviewer/services/interfaces/ILayoutService.java @@ -523,7 +523,7 @@ public interface ILayoutService { List<LayoutView> getCustomLayouts(Model model, String token, Boolean publicOverlay, User creator) throws SecurityException; - LayoutView getLayoutById(Model model, int overlayId, AuthenticationToken token) throws SecurityException; + LayoutView getLayoutById(int overlayId, AuthenticationToken token) throws SecurityException; Layout getLayoutDataById(int overlayId, AuthenticationToken authenticationToken) throws SecurityException; diff --git a/service/src/main/java/lcsb/mapviewer/services/view/LayoutView.java b/service/src/main/java/lcsb/mapviewer/services/view/LayoutView.java index 5a20b3629acc99e847cda5e82efeb546871d8f5d..a85a32ed3b4a282bfbdf4a981136a9f768fba795 100644 --- a/service/src/main/java/lcsb/mapviewer/services/view/LayoutView.java +++ b/service/src/main/java/lcsb/mapviewer/services/view/LayoutView.java @@ -15,73 +15,75 @@ public class LayoutView extends AbstractView<Layout> implements Serializable { /** * */ - private static final long serialVersionUID = 1L; - + private static final long serialVersionUID = 1L; + /** * Comparator for {@link LayoutView} that use database identifier as a key for * comparison. */ - public static final Comparator<LayoutView> ID_COMPARATOR = new Comparator<LayoutView>() { - - @Override - public int compare(LayoutView arg0, LayoutView arg1) { - if (arg0 == null) { - return -1; - } else if (arg1 == null) { - return 1; - } else if (arg0.getIdObject() == null) { - return -1; - } else if (arg1.getIdObject() == null) { - return 1; - } else { - return arg0.getIdObject() - arg1.getIdObject(); + public static final Comparator<LayoutView> ID_COMPARATOR = new Comparator<LayoutView>() { + + @Override + public int compare(LayoutView arg0, LayoutView arg1) { + if (arg0 == null) { + return -1; + } else if (arg1 == null) { + return 1; + } else if (arg0.getIdObject() == null) { + return -1; + } else if (arg1.getIdObject() == null) { + return 1; + } else { + return arg0.getIdObject() - arg1.getIdObject(); + } } - } - }; - + }; + /** * Database identifier of the model to which layout belongs to. */ - private Integer modelId; - + private Integer modelId; + /** * Name of the layout. */ - private String name; - + private String name; + /** * Short description of the layout. */ - private String description; - + private String description; + /** * Status of processing the layout. * {@link lcsb.mapviewer.db.model.map.layout.LayoutStatus LayoutStatus} * defines possible values. */ - private String status; - + private String status; + + private Boolean publicOverlay; + /** * Processing progress (value between 0..100). */ - private String progress; - + private String progress; + /** * Where the files generated for this layout are stored. */ - private String directory; + private String directory; /** * Who created the layout. */ - private String creator; + private String creator; /** * "true" if input file from which layout was created is available, "false" * otherwise. */ - private String inputDataAvailable; + private String inputDataAvailable; /** * Default constructor. @@ -228,11 +230,29 @@ public class LayoutView extends AbstractView<Layout> implements Serializable { } /** - * @param inputDataAvailable the inputDataAvailable to set + * @param inputDataAvailable + * the inputDataAvailable to set * @see #inputDataAvailable */ public void setInputDataAvailable(String inputDataAvailable) { this.inputDataAvailable = inputDataAvailable; } + /** + * @return the publicOverlay + * @see #publicOverlay + */ + public Boolean getPublicOverlay() { + return publicOverlay; + } + + /** + * @param publicOverlay + * the publicOverlay to set + * @see #publicOverlay + */ + public void setPublicOverlay(Boolean publicOverlay) { + this.publicOverlay = publicOverlay; + } + } diff --git a/service/src/main/java/lcsb/mapviewer/services/view/LayoutViewFactory.java b/service/src/main/java/lcsb/mapviewer/services/view/LayoutViewFactory.java index d5185d30a9e2e58d861f11c379b2ade8c25eeeb1..ba968d0c1b9a216becdb4c0d962e05b4e9d49bb3 100644 --- a/service/src/main/java/lcsb/mapviewer/services/view/LayoutViewFactory.java +++ b/service/src/main/java/lcsb/mapviewer/services/view/LayoutViewFactory.java @@ -38,11 +38,12 @@ public class LayoutViewFactory extends AbstractViewFactory<Layout, LayoutView> { result.setDirectory(layout.getDirectory()); } if (layout.getCreator() != null) { - result.setCreator(layout.getCreator().getName() + " " + layout.getCreator().getSurname()); + result.setCreator(layout.getCreator().getLogin()); } else { result.setCreator(""); } result.setStatus(layout.getStatus().getCommonName()); + result.setPublicOverlay(layout.isPublicLayout()); result.setProgress(String.format("%1$,.2f", layout.getProgress())); result.setDescription(layout.getDescription());