X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fruntime%2Forg.argeo.security.ria%2Fsrc%2Fargeo-ria-lib%2Fsecurity%2Fclass%2Forg%2Fargeo%2Fsecurity%2Fria%2FRolesApplet.js;h=676aaa3d9bbf46b55020b2dfffe0c3cae0b0eb40;hb=f7c73e12f9534b0b796686e207dd4b43193977fa;hp=6cd0b43995d850f8105841880830d933e8001704;hpb=887773721e5ce1aabbd45b8fc1278ffcf6bb25f8;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/RolesApplet.js b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/RolesApplet.js index 6cd0b4399..676aaa3d9 100644 --- a/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/RolesApplet.js +++ b/security/runtime/org.argeo.security.ria/src/argeo-ria-lib/security/class/org/argeo/security/ria/RolesApplet.js @@ -126,7 +126,7 @@ qx.Class.define("org.argeo.security.ria.RolesApplet", this._selectionToValues(this.table.getSelectionModel(), this.getViewSelection()); }, this); - this.rolesUsersStub = {"ROLE_ADMIN":["root","mbaudier"],"ROLE_USER":["mbaudier","cdujeu"]}; + this.rolesUsersStub = {"ROLE_ADMIN":["gandalf"],"ROLE_USER":["demo","frodo","gandalf"]}; this.toggleButton = new qx.ui.form.ToggleButton("Filter", "org.argeo.security.ria/go-next.png"); this.toggleButton.set({ @@ -157,8 +157,14 @@ qx.Class.define("org.argeo.security.ria.RolesApplet", }); this.saveButton.addListener("execute", function(){ - alert("Saving changes..."); - this.setGuiMode(this.initialState); + if(!this.usersAppletReference){ + this.setGuiMode(this.initialState); + return; + } + var newSelection = this.usersAppletReference.getViewSelection().getNodes(); + var diff = this._selectionDiff(this.getChooserOriginalSelection(), newSelection); + this.saveRoleModifications(diff.deltaPlus, diff.deltaMinus); + this.setGuiMode(this.initialState); }, this); this.cancelButton.addListener("execute", function(){ if(!this.getChooserSelectionModified()){ @@ -224,13 +230,17 @@ qx.Class.define("org.argeo.security.ria.RolesApplet", } }, + saveRoleModifications : function(deltaPlus, deltaMinus){ + console.log(deltaPlus); + console.log(deltaMinus); + }, + monitorChooserSelectionChanges : function(event){ if(!this.usersAppletReference || this.getChooserSelectionModified()) return; var initialSelection = this.getChooserOriginalSelection(); var crtSelection = event.getTarget().getNodes(); if(!qx.lang.Array.equals(initialSelection.sort(), crtSelection.sort())){ - this.setChooserSelectionModified(true); - console.log("Changed!"); + this.setChooserSelectionModified(true); this.saveButton.setEnabled(true); } }, @@ -253,10 +263,11 @@ qx.Class.define("org.argeo.security.ria.RolesApplet", return; } var uniqueValue = this._selectionToValues(selectionModel)[0]; - var initSelection = this.rolesUsersStub[uniqueValue]; + //var initSelection = this.rolesUsersStub[uniqueValue]; + this.usersAppletReference.applySelection(uniqueValue, "roles"); + var initSelection = this.usersAppletReference.getViewSelection().getNodes(); this.setChooserOriginalSelection(initSelection); this.setChooserSelectionModified(false); - this.usersAppletReference.applySelection(initSelection, "username"); this.saveButton.setEnabled(false); }, @@ -282,14 +293,33 @@ qx.Class.define("org.argeo.security.ria.RolesApplet", return values; }, + _selectionDiff : function(initialSelection, modifiedSelection){ + var deltaMinus = qx.lang.Array.clone(initialSelection); + var deltaPlus = qx.lang.Array.clone(modifiedSelection); + qx.lang.Array.exclude(deltaPlus, initialSelection); + qx.lang.Array.exclude(deltaMinus, modifiedSelection); + return {deltaPlus : deltaPlus, deltaMinus : deltaMinus}; + }, + /** * Load a given row : the data passed must be a simple data array. * @param data {Element} The text xml description. */ - load : function(){ + load : function(){ + // WARNING, THE USERS APPLET MUST BE LOADED! + var vManager = org.argeo.ria.components.ViewsManager.getInstance(); + this.usersAppletReference = vManager.getViewPaneById("users").getContent(); + + this.usersAppletReference.addListener("changeRolesList", function(event){ + var rolesList = event.getData(); + var data = []; + rolesList.forEach(function(el){data.push([el]);}); + this.tableModel.setData(data); + }, this); + /* var data = [["ROLE_ADMIN"],["ROLE_USER"]]; this.tableModel.setData(data); - + */ var commands = this.getCommands(); this.toolBarPart.add(commands["new_role"].command.getToolbarButton()); this.toolBarPart.add(commands["delete_role"].command.getToolbarButton());