diff options
author | Endi S. Dewata <edewata@redhat.com> | 2011-06-16 11:00:01 -0500 |
---|---|---|
committer | Adam Young <ayoung@redhat.com> | 2011-06-17 16:01:40 -0400 |
commit | 79ce958a3c9e182a4b4ee0850d7315fdd51982d7 (patch) | |
tree | 57936b4f0eef1ef78ebf72a177bde72be9a4c878 /install/ui/association.js | |
parent | a2a3782efb386f18689faf35a069c4da1085e87d (diff) | |
download | freeipa-79ce958a3c9e182a4b4ee0850d7315fdd51982d7.tar.gz freeipa-79ce958a3c9e182a4b4ee0850d7315fdd51982d7.tar.xz freeipa-79ce958a3c9e182a4b4ee0850d7315fdd51982d7.zip |
Storing page number in URL.
The association facet has been modified to store the current page
number in the browser's URL. This way page changes are stored in
browser's history allowing the back button to work properly.
Ticket #1264
Diffstat (limited to 'install/ui/association.js')
-rw-r--r-- | install/ui/association.js | 72 |
1 files changed, 44 insertions, 28 deletions
diff --git a/install/ui/association.js b/install/ui/association.js index 3c847c59c..883bb2b42 100644 --- a/install/ui/association.js +++ b/install/ui/association.js @@ -671,7 +671,7 @@ IPA.association_facet = function (spec) { spec = spec || {}; - var that = IPA.facet(spec); + var that = IPA.table_facet(spec); that.attribute_member = spec.attribute_member; that.indirect_attribute_member = spec.indirect_attribute_member; @@ -688,49 +688,34 @@ IPA.association_facet = function (spec) { that.add_method = spec.add_method || 'add_member'; that.remove_method = spec.remove_method || 'remove_member'; - that.columns = $.ordered_map(); that.adder_columns = $.ordered_map(); that.page_length = spec.page_length === undefined ? 20 : spec.page_length; - that.get_column = function(name) { - return that.columns.get(name); - }; - - that.add_column = function(column) { - that.columns.put(column.name, column); - }; - - that.create_column = function(spec) { - var column = IPA.column(spec); - that.add_column(column); - return column; - }; - that.get_adder_column = function(name) { return that.adder_columns.get(name); }; that.add_adder_column = function(column) { + column.entity_name = that.managed_entity_name; that.adder_columns.put(column.name, column); }; that.create_adder_column = function(spec) { - var column = IPA.column(spec); + var column; + if (spec instanceof Object) { + var factory = spec.factory || IPA.column; + column = factory(spec); + } else { + column = IPA.column({ name: spec }); + } that.add_adder_column(column); return column; }; - var i; - if (spec.columns){ - for (i = 0; i < spec.columns.length; i+= 1){ - that.create_column(spec.columns[i]); - } - } - if (spec.adder_columns){ - for (i = 0; i < spec.adder_columns.length; i+= 1){ - that.create_adder_column(spec.adder_columns[i]); - } + var adder_columns = spec.adder_columns || []; + for (var i=0; i<adder_columns.length; i++) { + that.create_adder_column(adder_columns[i]); } that.init = function() { @@ -785,7 +770,38 @@ IPA.association_facet = function (spec) { column.entity_name = that.other_entity; } + that.table.prev_page = function() { + if (that.table.current_page > 1) { + IPA.nav.push_state({ page: that.table.current_page-1 }); + } + }; + + that.table.next_page = function() { + if (that.table.current_page < that.table.total_pages) { + IPA.nav.push_state({ page: that.table.current_page+1 }); + } + }; + + that.table.set_page = function(page) { + if (page < 1) { + page = 1; + } else if (page > that.total_pages) { + page = that.total_pages; + } + IPA.nav.push_state({ page: page }); + }; + that.table.refresh = function() { + var page = parseInt(IPA.nav.get_state('page'), 10) || 1; + if (page < 1) { + IPA.nav.push_state({ page: 1 }); + return; + } else if (page > that.table.total_pages) { + IPA.nav.push_state({ page: that.table.total_pages }); + return; + } + that.table.current_page = page; + that.table.current_page_input.val(page); that.refresh_table(); }; @@ -1095,7 +1111,7 @@ IPA.association_facet = function (spec) { that.table.total_pages = 1; } - that.refresh_table(); + that.table.refresh(); } var pkey = IPA.get_entity(that.entity_name).get_primary_key(); |