var Row = function(key, value, metadata) {
- this.key = key;
- this.value = value;
+ this.key = key || '';
+ this.value = value || '';
this.metadata = metadata;
};
ChangeProperty: smartxmlTransformations.createContextTransformation({
impl: function(t, rowIndex, propName, value) {
var row = this.getMetadata().at(rowIndex);
+ if(row.getValue() === value) {
+ return;
+ }
t.rowIndex = rowIndex;
t.propName = propName;
t.oldValue = row[propName];
this.triggerChangeEvent('metadataRemoved', {row: t.row});
},
undo: function(t) {
- var metadata = this.getMetadata();
- metadata._rows.splice(t.rowIdx, 0, new Row(t.row.getKey(), t.row.getValue(), metadata));
+ var metadata = this.getMetadata(),
+ row = new Row(t.row.getKey(), t.row.getValue(), metadata);
+ metadata._rows.splice(t.rowIdx, 0, row);
+ this.triggerChangeEvent('metadataAdded', {row: row});
}
}),
- forEach: function(callback) {
- return this._rows.forEach(callback);
+ _iter: function(method, callback, key) {
+ return this._rows
+ .filter(function(row) { return !key || row.getKey() === key; })
+ [method](function(row) { return callback(row); });
+ },
+ forEach: function(callback, key) {
+ return this._iter('forEach', callback, key);
+ },
+ some: function(callback, key) {
+ return this._iter('some', callback, key);
},
add: function(rowDesc, options) {
var row;