define(['knockout'], function(ko) {
/**
* Updates the field numbering when a field is moved or deleted
* @module app/helpers/updateNumbering
* @requires knockout
* @param {Array} fields Array of fields to update
* @param {Boolean} recursive Recursive flag
* @return {None}
*/
function updateNumbering(fields, recursive) {
var n = 0,
showNumbering;
recursive = recursive || false;
ko.utils.arrayForEach(fields, function(item, i) {
if (item && !item._destroy) {
showNumbering = ko.isObservable(item.showNumbering) ? item.showNumbering() : item.showNumbering;
if (recursive && item.childFields().length) {
updateNumbering(item.childFields(), item);
}
if (showNumbering) {
item.numbering(++n);
} else {
item.numbering('');
}
}
});
};
return updateNumbering;
});