multiEdit widget: Support field pre-filter

If adding a 'fieldPreFilter' option to a multiEdit, the returned array
specifies field IDs to be hidden.
This commit is contained in:
Brian Federle 2012-07-30 16:08:41 -07:00
parent 768be1a69b
commit 441600f409
2 changed files with 23 additions and 2 deletions

View File

@ -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' },

View File

@ -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 = $('<tr>').appendTo(
$('<thead>').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 = $('<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,