in js/projection/editable.js [68:116]
update: function (options) {
if (BaseProjection.prototype.update.call(this, options)) {
var model = this.src.data;
var columns = model.get('columns');
var iconClasses = this.get('editable.icon.class');
var tooltipText = this.get('editable.tooltip.text');
var editableTemplate = this.get('editable.template');
_.each(this.viewConfig, function (view, key) {
var column = columns[key] || { property: key };
var $metadata = column.$metadata = column.$metadata || {};
var attrBody = $metadata['attr.body'] = $metadata['attr.body'] || {};
var className = attrBody.class || [];
if (_.isString(className)) {
className = className.split(/\s+/);
}
attrBody.class = _.union(className, ['grid-editable-cell']);
columns[key] = column;
});
var value = _.map(model.get('value'), function (item) {
return isReadonlyRow(item) ? item : _.mapObject(item, function (value, key) {
if (this.isEditable(key, item)) {
var $html = null;
var text = null;
if (_.isObject(value)) {
$html = value.$html;
} else {
text = value;
value = {};
}
value.$html = editableTemplate({
$html: $html,
text: text,
tooltipText: tooltipText,
classes: iconClasses,
});
}
return value;
}, this);
}, this);
this.patch({ value: value });
}
},