/**
* A wrapper for the knockout's text binding. This just adds a dummy name or a temporary name to the newly added field (e.g Item 1);
* @module app/custom_bindings/label
* @requires knockout
* @requires jquery
* @requires app/models/Field
* @requires hasher
*/
define(['knockout', 'jquery', 'models/Field', 'hasher'], function(ko, $, Field, hasher) {
ko.bindingHandlers.label = {
update: function(el, valueAccessor, allBindings, viewModel, bindingContext) {
var label = ko.unwrap(valueAccessor()),
field = ko.dataFor(el),
numbering = field.showNumbering() ? field.numbering() : bindingContext.$index() + 1,
dummyText = 'Item ' + numbering;
if(field.key === '5') {
fieldLabel = field.panel_title() || label;
}else if (field.key === '10') {
fieldLabel = field.defaultText() || label;
} else {
fieldLabel = label.length && label;
}
if (!fieldLabel) {
fieldLabel = dummyText;
}
if(field.temporary_label) {
field.temporary_label = field.temporary_label.split(' ')[0] + ' ' + fieldLabel;
}
newValueAccessor = function() {
return fieldLabel;
};
ko.bindingHandlers.text.update(el, newValueAccessor, allBindings, viewModel, bindingContext);
}
}
});