diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2011-08-30 13:39:53 +0200 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2011-08-31 05:08:18 +0000 |
commit | 6b19b2dc895b862d00eaf1eb4f047282418f598c (patch) | |
tree | af25d5b7f79b63c91c3c258134059024cdcc618b /install/ui/widget.js | |
parent | e52f6528736f311e06c188e5b4858b6fc0ec16f0 (diff) | |
download | freeipa.git-6b19b2dc895b862d00eaf1eb4f047282418f598c.tar.gz freeipa.git-6b19b2dc895b862d00eaf1eb4f047282418f598c.tar.xz freeipa.git-6b19b2dc895b862d00eaf1eb4f047282418f598c.zip |
Enable update and reset button only if dirty
https://fedorahosted.org/freeipa/ticket/1697
Original problem:
WEBUI: Update automount location refer to unknown command
Update name of the automount location (Policy -> Automount ->
custom_location -> Settings -> Update) in the WEBUI refer to an unknown command.
Solution:
Tracking dirty state in field -> section -> details facet.
'Reset' and 'Updates' in details facet are enabled only if facet is dirty.
Removes the problem above and 'no modification to be performed' annoyance.
Diffstat (limited to 'install/ui/widget.js')
-rw-r--r-- | install/ui/widget.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/install/ui/widget.js b/install/ui/widget.js index f3559a35..1a068354 100644 --- a/install/ui/widget.js +++ b/install/ui/widget.js @@ -62,6 +62,8 @@ IPA.widget = function(spec) { that.dirty = false; that.valid = true; + that.dirty_changed = IPA.observer(); + function set_param_info(){ if (!that.param_info && that.entity){ @@ -296,6 +298,7 @@ IPA.widget = function(spec) { }; that.set_dirty = function(dirty) { + var old = that.dirty; that.dirty = dirty; if (that.undo) { if (dirty) { @@ -304,6 +307,10 @@ IPA.widget = function(spec) { that.hide_undo(); } } + + if(old !== dirty) { + that.dirty_changed.notify([], that); + } }; that.get_undo = function() { @@ -496,6 +503,7 @@ IPA.multivalued_text_widget = function(spec) { }; that.set_dirty = function(dirty, index) { + var old = that.dirty; that.dirty = dirty; if (that.undo) { @@ -510,6 +518,10 @@ IPA.multivalued_text_widget = function(spec) { that.set_dirty(that.test_dirty()); } } + + if(old !== dirty) { + that.dirty_changed.notify([], that); + } }; that.show_undo = function(index) { @@ -1939,3 +1951,33 @@ IPA.button = function(spec) { return button; }; +IPA.observer = function(spec) { + + var that = {}; + + that.listeners = []; + + that.attach = function(callback) { + that.listeners.push(callback); + }; + + that.detach = function(callback) { + for(var i=0; i < that.listeners.length; i++) { + if(callback === that.listeners[i]) { + that.listeners.splice(i,1); + break; + } + } + }; + + that.notify = function(args, context) { + args = args || []; + context = context || this; + + for(var i=0; i < that.listeners.length; i++) { + that.listeners[i].apply(context, args); + } + }; + + return that; +}; |