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=3533221af41a90ee4aed32c0b57b47721005acb8;hb=b9d6c8b6386de221d1a316f8e2c1ffec4b7bffce;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..3533221af 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,13 +293,27 @@ 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(){ - var data = [["ROLE_ADMIN"],["ROLE_USER"]]; - this.tableModel.setData(data); + load : function(){ + + var service = org.argeo.security.ria.SecurityAPI.getListRolesService(); + service.addListener("completed", function(response){ + var data = []; + response.getContent().forEach(function(el){data.push([el]);}); + this.tableModel.setData(data); + }, this); + service.send(); var commands = this.getCommands(); this.toolBarPart.add(commands["new_role"].command.getToolbarButton());