From 191f05e4774a2b62f43f1445c6e08e9057539f98 Mon Sep 17 00:00:00 2001 From: Petr Voborník Date: Tue, 24 Jan 2012 15:31:18 +0100 Subject: Added paging to DNS record search facet Paging in DNS record search facet was disabled because there was a mismatch between primary keys sent by server and values displayed in the facet. The facet was modified to enable paging. To preserve amount of information which was displayed before, current rows have variable height - they can contain more that one line depending on number of values in the record. Each record has a checkbox and indsname in its first line to distinguish one record from others. Because there is only one checkbox for record, delete command is called with --rem-all option which causes that entire record is removed. Individual values can be deleted in record's details facet. https://fedorahosted.org/freeipa/ticket/2094 --- install/ui/dns.js | 121 ++++++++++++++++++++++++++++++--------------------- install/ui/search.js | 4 +- 2 files changed, 74 insertions(+), 51 deletions(-) (limited to 'install') diff --git a/install/ui/dns.js b/install/ui/dns.js index d30cc312..65c331f5 100644 --- a/install/ui/dns.js +++ b/install/ui/dns.js @@ -105,7 +105,7 @@ IPA.dns.zone_entity = function(spec) { facet_group: 'dnsrecord', nested_entity : 'dnsrecord', name: 'records', - pagination: false, + deleter_dialog: IPA.dns.record_search_deleter_dialog, title: IPA.metadata.objects.dnszone.label_singular, label: IPA.metadata.objects.dnsrecord.label, columns: [ @@ -468,80 +468,101 @@ IPA.dns.record_search_facet = function(spec) { var that = IPA.nested_search_facet(spec); - that.load_all = function(data) { + that.get_records = function(pkeys, on_success, on_error) { + + var batch = IPA.batch_command({ + name: that.get_records_command_name(), + on_success: on_success, + on_error: on_error + }); + + var zone = IPA.nav.get_state('dnszone-pkey'); + + for (var i=0; i 0) { + $('input[name="'+that.table.name+'"]', tr).remove(); + } } }; - that.get_selected_values = function() { + return that; +}; - var values = []; +IPA.dns.record_search_deleter_dialog = function(spec) { - var records = {}; - var value; - var record_type; - - $('input[name="idnsname"]:checked', that.table.tbody).each(function() { - $('div', $(this).parent().parent()).each(function() { - var div = $(this); - var name = div.attr('name'); - var text = div.text(); - - if (name === 'idnsname') { - value = records[text]; - if (!value) { - value = { pkey: text }; - records[text] = value; - } - } else if (name === 'type') { - record_type = text.toLowerCase()+'record'; - - } else if (name === 'data') { - if (!value[record_type]) { - value[record_type] = text; - } else { - value[record_type] += ',' + text; - } - } - }); - }); + spec = spec || {}; - for (var key in records) { - values.push(records[key]); + var that = IPA.search_deleter_dialog(spec); + + that.create_command = function() { + + var batch = that.search_deleter_dialog_create_command(); + + for (var i=0; i