From 7d33e5bc3f95bdbf9ed70a62077cdfd9cb6ed7c9 Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Fri, 26 Aug 2011 18:36:54 +0200 Subject: Modifying sudo options refreshes the whole page https://fedorahosted.org/freeipa/ticket/1689 Currently adding or deleting sudo options will refresh the entire page. It's not a problem but the code could be optimized to refresh only the sudo options table --- install/ui/sudo.js | 41 +++++++++++++++++++++++++++++++++-------- install/ui/widget.js | 10 +++++----- 2 files changed, 38 insertions(+), 13 deletions(-) (limited to 'install') diff --git a/install/ui/sudo.js b/install/ui/sudo.js index 8d33550c0..1a6b03b1b 100644 --- a/install/ui/sudo.js +++ b/install/ui/sudo.js @@ -574,12 +574,12 @@ IPA.sudo.options_section = function(spec) { options: { ipasudoopt: value }, - on_success: function() { - that.facet.refresh(); + on_success: function(data) { + that.load(data.result.result); dialog.close(); }, - on_error: function() { - that.facet.refresh(); + on_error: function(data) { + that.update(); dialog.close(); } }); @@ -618,12 +618,24 @@ IPA.sudo.options_section = function(spec) { dialog.execute = function() { var batch = IPA.batch_command({ - on_success: function() { - that.facet.refresh(); + on_success: function(data) { + //last successful result of batch results contains valid data + var result; + for(var i = data.result.results.length - 1; i > -1; i--) { + result = data.result.results[i].result; + if(result) break; + } + + if(result) { + that.load(result); + } else { + that.update(); + } + dialog.close(); }, - on_error: function() { - that.facet.refresh(); + on_error: function(data) { + that.update(); dialog.close(); } }); @@ -646,6 +658,19 @@ IPA.sudo.options_section = function(spec) { dialog.open(that.container); }; + that.update = function() { + var command = IPA.command({ + entity: that.facet.entity.name, + method: 'show', + args: that.facet.get_primary_key(true), + on_success: function(data) { + that.load(data.result.result); + } + }); + + command.execute(); + }; + /*initialization*/ setup_table(); diff --git a/install/ui/widget.js b/install/ui/widget.js index 62af6c16d..83cb4dcb2 100644 --- a/install/ui/widget.js +++ b/install/ui/widget.js @@ -1471,11 +1471,11 @@ IPA.table_widget = function (spec) { that.empty(); that.values = result[that.name]; - if (!that.values) return; - - for (var i=0; i