diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2014-07-09 16:14:32 +0200 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2014-07-21 10:47:06 +0200 |
commit | 8fcf6d6b34400c1924f509701856b86e4f647624 (patch) | |
tree | 8236ec68cea6232d354ae2fc7a7bc9ec498ee411 | |
parent | d2f2fc5addc0634b24ccda7a5aae1ed1d3c6001a (diff) | |
download | freeipa-8fcf6d6b34400c1924f509701856b86e4f647624.tar.gz freeipa-8fcf6d6b34400c1924f509701856b86e4f647624.tar.xz freeipa-8fcf6d6b34400c1924f509701856b86e4f647624.zip |
webui: option_widget_base: sort options
https://fedorahosted.org/freeipa/ticket/4253
Reviewed-By: Endi Sukma Dewata <edewata@redhat.com>
-rw-r--r-- | install/ui/src/freeipa/aci.js | 1 | ||||
-rw-r--r-- | install/ui/src/freeipa/widget.js | 19 |
2 files changed, 18 insertions, 2 deletions
diff --git a/install/ui/src/freeipa/aci.js b/install/ui/src/freeipa/aci.js index d4eb0febe..ec3d82cf9 100644 --- a/install/ui/src/freeipa/aci.js +++ b/install/ui/src/freeipa/aci.js @@ -545,6 +545,7 @@ aci.attributes_widget = function(spec) { spec = spec || {}; spec.layout = spec.layout || 'columns attribute_widget'; + spec.sort = spec.sort === undefined ? true : spec.sort; var that = IPA.checkboxes_widget(spec); diff --git a/install/ui/src/freeipa/widget.js b/install/ui/src/freeipa/widget.js index 3204b353e..c12115592 100644 --- a/install/ui/src/freeipa/widget.js +++ b/install/ui/src/freeipa/widget.js @@ -1259,6 +1259,7 @@ IPA.option_widget_base = function(spec, that) { that.name = spec.name; that.label = spec.label; that.tooltip = spec.tooltip; + that.sort = spec.sort === undefined ? false : spec.sort; that.value_changed = that.value_changed || IPA.observer(); that.default_value = spec.default_value || null; that.default_on_empty = spec.default_on_empty === undefined ? true : spec.default_on_empty; @@ -1379,11 +1380,25 @@ IPA.option_widget_base = function(spec, that) { } }; + that.sort_options = function() { + var options = that.options.concat(); + options.sort(function(a,b) { + if (a.value > b.value) + return 1; + if (a.value < b.value) + return -1; + return 0; + }); + return options; + }; + that.create_options = function(container) { container = $(container)[0]; - for (var i=0, l=that.options.length; i<l; i++) { + var options = that.options; + if (that.sort) options = that.sort_options(); + for (var i=0, l=options.length; i<l; i++) { var option_container = that.create_option_container(); - var option = that.options[i]; + var option = options[i]; that.create_option(option, option_container); construct.place(option_container, container); } |