From 441600f40962ea536b593c48f30044af4c9447c1 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Mon, 30 Jul 2012 16:08:41 -0700 Subject: [PATCH] multiEdit widget: Support field pre-filter If adding a 'fieldPreFilter' option to a multiEdit, the returned array specifies field IDs to be hidden. --- ui/scripts/network.js | 7 +++++++ ui/scripts/ui/widgets/multiEdit.js | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 494e11f964c..2e6d4296a21 100644 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -2226,6 +2226,13 @@ } }, multipleAdd: true, + fieldPreFilter: function(args) { + var context = args.context; + var fields = args.fields; + + // Returns fields to be hidden + return []; + }, fields: { 'name': { edit: true, label: 'label.name', isEditable: true }, 'publicport': { edit: true, label: 'label.public.port' }, diff --git a/ui/scripts/ui/widgets/multiEdit.js b/ui/scripts/ui/widgets/multiEdit.js index 2243385e0d5..f13adb59f78 100644 --- a/ui/scripts/ui/widgets/multiEdit.js +++ b/ui/scripts/ui/widgets/multiEdit.js @@ -19,7 +19,7 @@ /** * Append item to list */ - addItem: function(data, fields, $multi, itemData, actions, options) { + addItem: function(data, fields, hiddenFields, $multi, itemData, actions, options) { if (!options) options = {}; var $tr; @@ -35,7 +35,8 @@ // Setup columns $.each(fields, function(fieldName, field) { - if (options.ignoreEmptyFields && !data[fieldName]) { + if ((options.ignoreEmptyFields && !data[fieldName]) || + $.inArray(fieldName.toString(), hiddenFields) > -1) { return true; } @@ -682,6 +683,16 @@ var context = args.context; var ignoreEmptyFields = args.ignoreEmptyFields; var actionPreFilter = args.actionPreFilter; + var fieldPreFilter = args.fieldPreFilter; + var hiddenFields = []; + + if (fieldPreFilter) { + hiddenFields = fieldPreFilter({ + fields: $.map(fields, function(v, k) { return k; }), + context: context, + $multi: $multi + }); + } var $thead = $('').appendTo( $('').appendTo($inputTable) @@ -693,6 +704,8 @@ // Setup input table headers $.each(args.fields, function(fieldName, field) { + if ($.inArray(fieldName.toString(), hiddenFields) > -1) return true; + var $th = $('').addClass(fieldName).html(_l(field.label.toString())); $th.attr('rel', fieldName); $th.appendTo($thead); @@ -929,6 +942,7 @@ _medit.addItem( data, fields, + hiddenFields, $multi, itemData, actions,