summaryrefslogtreecommitdiffstats
path: root/install/ui/dns.js
diff options
context:
space:
mode:
authorPetr Voborník <pvoborni@redhat.com>2012-01-24 15:31:18 +0100
committerEndi S. Dewata <edewata@redhat.com>2012-01-31 08:39:12 -0600
commit191f05e4774a2b62f43f1445c6e08e9057539f98 (patch)
tree527ae42f75d6925f7fa5e8a1e6d217bc2d6268e5 /install/ui/dns.js
parent1f3d8003f7ccb7793be6452942f62d10433e7f27 (diff)
downloadfreeipa-191f05e4774a2b62f43f1445c6e08e9057539f98.tar.gz
freeipa-191f05e4774a2b62f43f1445c6e08e9057539f98.tar.xz
freeipa-191f05e4774a2b62f43f1445c6e08e9057539f98.zip
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
Diffstat (limited to 'install/ui/dns.js')
-rw-r--r--install/ui/dns.js121
1 files changed, 71 insertions, 50 deletions
diff --git a/install/ui/dns.js b/install/ui/dns.js
index d30cc3123..65c331f5b 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<pkeys.length; i++) {
+ var pkey = pkeys[i];
+
+ var command = IPA.command({
+ entity: that.table.entity.name,
+ method: 'show',
+ args: [zone, pkey],
+ options: { all: true }
+ });
+
+ batch.add_command(command);
+ }
+
+ batch.execute();
+ };
+
+
+ that.load_records = function(records) {
+ that.table.empty();
var types = IPA.dns_record_types();
- var result = data.result.result;
- var records = [];
+ for (var i=0; i<records.length; i++) {
- for (var i=0; i<result.length; i++) {
- var record = result[i];
+ var original = records[i];
+ var record = {
+ idnsname: original.idnsname,
+ values: []
+ };
for (var j=0; j<types.length; j++) {
var type = types[j];
- if (!record[type.value]) continue;
+ if (!original[type.value]) continue;
- var values = record[type.value];
+ var values = original[type.value];
for (var k=0; k<values.length; k++) {
- records.push({
- idnsname: record.idnsname,
+ record.values.push({
type: type.label,
data: values[k]
});
}
}
+
+ that.add_record(record);
}
+ that.table.set_values(that.selected_values);
+ };
- that.load_records(records);
+ that.add_record = function(record) {
- if (data.result.truncated) {
- var message = IPA.messages.search.truncated;
- message = message.replace('${counter}', data.result.count);
- that.table.summary.text(message);
- } else {
- that.table.summary.text(data.result.summary);
+ for (var i=0; i<record.values.length; i++) {
+
+ var value = record.values[i];
+
+ if (i === 0) {
+ value.idnsname = record.idnsname;
+ }
+
+ var tr = that.table.add_record(value);
+
+ if (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<batch.commands.length; i++) {
+ var command = batch.commands[i];
+ command.set_option('del_all', true);
}
- return values;
+ return batch;
};
return that;