From c0f155bbfe5c5448af1b38b9da9bb75e9cdac9b4 Mon Sep 17 00:00:00 2001 From: Adam Young Date: Fri, 27 May 2011 11:32:17 -0400 Subject: automount delete key indirect automount maps code review changes for automount: Removed: fields for mount and parentmap in maps details since they are not present in show or mod Hid undo link for adder dialog set up click handler for checkboxes when row does not have primary key removed add override in automountmap_adder_dialog moved 'var input...' in automount.js line 158 to start of method. changed logic in if statmenet ,dialog.js line 628 it if (!first) as suggested --- install/ui/add.js | 4 +- install/ui/automount.js | 86 +++++++++++++++++++++- install/ui/dialog.js | 51 ++++++++++++- install/ui/search.js | 23 +++++- .../ui/test/data/automountmap_add_indirect.json | 21 ++++++ install/ui/webui.js | 3 +- install/ui/widget.js | 15 ++-- 7 files changed, 185 insertions(+), 18 deletions(-) create mode 100644 install/ui/test/data/automountmap_add_indirect.json diff --git a/install/ui/add.js b/install/ui/add.js index 73a423f0..33df62ab 100644 --- a/install/ui/add.js +++ b/install/ui/add.js @@ -32,7 +32,7 @@ IPA.add_dialog = function (spec) { that.name = spec.name; that.title = spec.title; that._entity_name = spec.entity_name; - + that.method = spec.method || 'add'; that.init = function() { that.add_button(IPA.messages.buttons.add, function() { @@ -102,7 +102,7 @@ IPA.add_dialog = function (spec) { var command = IPA.command({ entity: that.entity_name, - method: 'add', + method: that.method, on_success: on_success, on_error: on_error }); diff --git a/install/ui/automount.js b/install/ui/automount.js index f865fe73..d008c964 100644 --- a/install/ui/automount.js +++ b/install/ui/automount.js @@ -63,7 +63,8 @@ IPA.entity_factories.automountmap = function() { nested_entity : 'automountkey', label : IPA.metadata.objects.automountkey.label, name: 'keys', - columns:['description'] + get_values: IPA.get_option_values, + columns:['automountkey','automountinformation'] }). details_facet({ sections:[ @@ -75,7 +76,27 @@ IPA.entity_factories.automountmap = function() { ] }). adder_dialog({ - fields:['automountmapname','description'] + factory: IPA.automountmap_adder_dialog, + fields:[{factory:IPA.method_radio_widget, + name: 'method', + undo: false, + label:'Map Type', + options:[{value:'add',label:'Direct'}, + {value:'add_indirect',label:'Indirect'}] + }, + 'automountmapname','description', + { + name:'key', + label:'Mount Point', + conditional:true, + undo: false + }, + { + name:'parentmap', + label:'Parent Map', + conditional:true, + undo: false + }] }). build(); }; @@ -99,3 +120,64 @@ IPA.entity_factories.automountkey = function() { }). build(); }; + + +IPA.automountmap_adder_dialog = function(spec){ + var that = IPA.add_dialog(spec); + + that.super_setup = that.setup; + that.setup = function(container) { + that.super_setup(container); + that.disable_conditional_fields(); + }; + + return that; +}; + + +IPA.get_option_values = function(){ + + var values = []; + $('input[name="select"]:checked', this.table.tbody).each(function() { + var value = {}; + $('span',$(this).parent().parent()).each(function(){ + var name = this.attributes['name'].value; + + value[name] = $(this).text(); + }); + values.push (value); + }); + return values; +}; + +IPA.method_radio_widget = function(spec){ + var direct = true; + + var that = IPA.radio_widget(spec); + + that.setup = function(container) { + + var input = $('input[name="'+that.name+'"]', that.container); + input. + filter("[value="+ that.dialog.method+"]"). + attr('checked', true); + + + input.change(function() { + that.dialog.method = this.value; + + if (this.value === 'add_indirect'){ + that.dialog.enable_conditional_fields(); + }else{ + that.dialog.disable_conditional_fields(); + } + }); + }; + + that.reset = function(){ + var input = $('input[name="'+that.name+'"]', that.container); + input.filter("[value=add]").click(); + }; + + return that; +}; diff --git a/install/ui/dialog.js b/install/ui/dialog.js index 4f93760b..3bcb4556 100644 --- a/install/ui/dialog.js +++ b/install/ui/dialog.js @@ -43,6 +43,31 @@ IPA.dialog = function(spec) { that.fields = $.ordered_map(); that.sections = $.ordered_map(); + that.conditional_fields = []; + + that.enable_conditional_fields = function(){ + for (var i =0; i < that.conditional_fields.length; i+=1) { + $('label[id='+ + that.conditional_fields[i] +'-label]', + that.container).css('visibility','visible'); + $('input[name='+ + that.conditional_fields[i] + + ']',that.container).css('visibility','visible'); + } + }; + + that.disable_conditional_fields = function(){ + for (var i =0; i < that.conditional_fields.length; i+=1) { + $('label[id='+ + that.conditional_fields[i] +'-label]', + that.container).css('visibility','hidden'); + + $('input[name='+ + that.conditional_fields[i] + + ']',that.container).css('visibility','hidden'); + } + }; + that.__defineGetter__("entity_name", function(){ return that._entity_name; }); @@ -70,7 +95,12 @@ IPA.dialog = function(spec) { }; that.add_field = function(field) { + field.dialog = that; that.fields.put(field.name, field); + if (field.conditional){ + that.conditional_fields.push(field.name); + } + }; that.field = function(field) { @@ -149,7 +179,8 @@ IPA.dialog = function(spec) { style: 'vertical-align: top;', title: field.label }).appendTo(tr); - td.append(field.label+': '); + td.append($('