diff options
Diffstat (limited to 'install/ui/facet.js')
-rw-r--r-- | install/ui/facet.js | 58 |
1 files changed, 34 insertions, 24 deletions
diff --git a/install/ui/facet.js b/install/ui/facet.js index 80e977b41..1c220d032 100644 --- a/install/ui/facet.js +++ b/install/ui/facet.js @@ -672,11 +672,11 @@ IPA.facet_title = function(spec) { return that; }; -IPA.table_facet = function(spec) { +IPA.table_facet = function(spec, no_init) { spec = spec || {}; - var that = IPA.facet(spec); + var that = IPA.facet(spec, no_init); that.managed_entity = spec.managed_entity ? IPA.get_entity(spec.managed_entity) : that.entity; @@ -684,6 +684,7 @@ IPA.table_facet = function(spec) { that.search_all_entries = spec.search_all_entries; that.search_all_attributes = spec.search_all_attributes; that.selectable = spec.selectable === undefined ? true : spec.selectable; + that.select_changed = IPA.observer(); that.row_enabled_attribute = spec.row_enabled_attribute; that.row_disabled_attribute = spec.row_disabled_attribute; @@ -691,13 +692,6 @@ IPA.table_facet = function(spec) { that.columns = $.ordered_map(); - var init = function() { - var columns = spec.columns || []; - for (var i=0; i<columns.length; i++) { - that.create_column(columns[i]); - } - }; - that.get_columns = function() { return that.columns.values; }; @@ -947,19 +941,6 @@ IPA.table_facet = function(spec) { return that.table.get_selected_values(); }; - that.select_changed = function() { - - that.selected_values = that.get_selected_values(); - - if (that.remove_button) { - if (that.selected_values.length === 0) { - that.remove_button.addClass('action-button-disabled'); - } else { - that.remove_button.removeClass('action-button-disabled'); - } - } - }; - that.init_table = function(entity) { that.table = IPA.table_widget({ @@ -992,7 +973,8 @@ IPA.table_facet = function(spec) { } that.table.select_changed = function() { - that.select_changed(); + that.selected_values = that.get_selected_values(); + that.select_changed.notify([that.selected_values]); }; that.table.prev_page = function() { @@ -1026,7 +1008,14 @@ IPA.table_facet = function(spec) { }; }; - init(); + that.init_table_columns = function() { + var columns = spec.columns || []; + for (var i=0; i<columns.length; i++) { + that.create_column(columns[i]); + } + }; + + if (!no_init) that.init_table_columns(); that.table_facet_create_get_records_command = that.create_get_records_command; @@ -1307,6 +1296,27 @@ IPA.dirty_state_listener = function(spec) { return that; }; +IPA.selected_state_listener = function(spec) { + + spec = spec || {}; + + spec.event = spec.event || 'select_changed'; + + var that = IPA.state_listener(spec); + + that.on_event = function(selected) { + that.state = []; + + if (selected && selected.length > 0) { + that.state.push('item-selected'); + } + + that.state_changed.notify(); + }; + + return that; +}; + IPA.action_button_widget = function(spec) { spec = spec || {}; |