diff --git a/frontend-js/src/main/js/Configuration.js b/frontend-js/src/main/js/Configuration.js index 8254c7ae0b3d8934091205cd54967228bb26af87..a0370187013c4f73d68016751a8a14cbafecb74b 100644 --- a/frontend-js/src/main/js/Configuration.js +++ b/frontend-js/src/main/js/Configuration.js @@ -408,7 +408,11 @@ Configuration.prototype.getElementTypeTree = function () { var treeNodes = { "lcsb.mapviewer.model.map.BioEntity": { text: "BioEntity", - children: [] + children: [], + data: { + className: "lcsb.mapviewer.model.map.BioEntity", + name: "BioEntity" + } } }; @@ -438,7 +442,7 @@ Configuration.prototype.getElementTypeTree = function () { for (var treeNodeName in treeNodes) { if (treeNodes.hasOwnProperty(treeNodeName)) { var treeNode = treeNodes[treeNodeName]; - if (treeNode.data !== undefined) { + if (treeNode.data !== undefined && treeNode.data.parentClass !== undefined) { var parentNode = treeNodes[treeNode.data.parentClass]; if (parentNode.data === undefined || parentNode.data.name !== "Compartment") { parentNode.children.push(treeNode); diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js index c1705ce4b24b18d5c6928df00fdcd943b4fe7480..eb38cdb1982aaed2796cdb2c744a51a312b330d9 100644 --- a/frontend-js/src/main/js/ServerConnector.js +++ b/frontend-js/src/main/js/ServerConnector.js @@ -1157,12 +1157,8 @@ ServerConnector.updateUserPreferences = function (params) { }).then(function (content) { var obj = JSON.parse(content); var user = new User(obj); - if (self._usersByLogin[user.getLogin()] !== undefined) { - self._usersByLogin[user.getLogin()].getPreferences().update(user.getPreferences()); - } else { - self._usersByLogin[user.getLogin()] = user; - } - return self._usersByLogin[user.getLogin()]; + params.user.getPreferences().update(user.getPreferences()); + return params.user; }); }; diff --git a/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js b/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js index 1241d1c4e0eab5527b165a179657f645e62f8106..13566cf9e7bd483825de3c1ce6e08fea55cac189 100644 --- a/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js +++ b/frontend-js/src/main/js/gui/admin/ChooseValidatorsDialog.js @@ -154,7 +154,7 @@ ChooseValidatorsDialog.prototype.createVerifyAnnotationsDualListBox = function ( "annotation-list": requiredAnnotationsData.list }; data.setElementRequiredAnnotations(elementRequiredAnnotations); - return ServerConnector.updateUserPreferences({user: user, preferences: data}).then(null, GuiConnector.alert); + return ServerConnector.updateUserPreferences({user: user, preferences: data}).catch(GuiConnector.alert); } }); checkbox.checked = requiredAnnotationsData.requiredAtLeastOnce; diff --git a/frontend-js/src/main/js/map/data/UserPreferences.js b/frontend-js/src/main/js/map/data/UserPreferences.js index 36ff821d76c9f6f184047d51a2875af2ce813b6a..4a41e01ba29a25a809ac4ddb57b06d3d51781da0 100644 --- a/frontend-js/src/main/js/map/data/UserPreferences.js +++ b/frontend-js/src/main/js/map/data/UserPreferences.js @@ -34,8 +34,8 @@ UserPreferences.prototype.update = function (userPreferences) { updateDict(this._projectUpload, userPreferences.getProjectUpload()); updateDict(this._elementAnnotators, userPreferences.getElementAnnotators); - updateDict(this._elementValidAnnotations, userPreferences.getElementValidAnnotations()); - updateDict(this._elementRequiredAnnotations, userPreferences.getElementRequiredAnnotations()); + updateDict(this._elementValidAnnotations, userPreferences._elementValidAnnotations); + updateDict(this._elementRequiredAnnotations, userPreferences._elementRequiredAnnotations); updateDict(this._annotatorsParameters, userPreferences.getAnnotatorsParameters()); updateDict(this._guiPreferences, userPreferences.getGuiPreferences()); }; diff --git a/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java b/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java index 94ea23876865138be5739f1bef0c12527c78acb8..79ae0db71f0cb9965f5950ddb193d2bedce3dbe4 100644 --- a/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java +++ b/model/src/main/java/lcsb/mapviewer/model/user/UserAnnotationSchema.java @@ -337,6 +337,15 @@ public class UserAnnotationSchema implements Serializable { return new ArrayList<MiriamType>(); } + public boolean requiresAtLeastOneAnnotation(Class<?> clazz) { + for (UserClassRequiredAnnotations cva : classRequiredAnnotators) { + if (cva.getClassName().equals(clazz.getCanonicalName())) { + return cva.getRequireAtLeastOneAnnotation(); + } + } + return false; + } + /** * @return the classRequiredAnnotators * @see #classRequiredAnnotators diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java index b79e0ef37258f9217ede64927ce122ad8b7148a5..fc5918b7765cb2dc686aef6030ef21378e12e632 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java @@ -1153,6 +1153,7 @@ public class ProjectService implements IProjectService { ClassTreeNode top = elementUtils.getAnnotatedElementClassTree(); Class<?> clazz = top.getClazz(); + top.setData(annotationSchema.requiresAtLeastOneAnnotation(clazz)); TreeNode root = new DefaultTreeNode(new AnnotatedObjectTreeRow(top, modelAnnotator.getAvailableAnnotators(clazz), modelAnnotator.getAnnotatorsFromCommonNames(annotationSchema.getAnnotatorsForClass(clazz)), annotationSchema.getValidAnnotations(clazz), annotationSchema.getRequiredAnnotations(clazz)), null); @@ -1171,6 +1172,7 @@ public class ProjectService implements IProjectService { for (ClassTreeNode node : element.getLeft().getChildren()) { clazz = node.getClazz(); + node.setData(annotationSchema.requiresAtLeastOneAnnotation(clazz)); AnnotatedObjectTreeRow data = new AnnotatedObjectTreeRow(node, modelAnnotator.getAvailableAnnotators(clazz), modelAnnotator.getAnnotatorsFromCommonNames(annotationSchema.getAnnotatorsForClass(clazz)), annotationSchema.getValidAnnotations(clazz), annotationSchema.getRequiredAnnotations(clazz));