X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/fcecb8e0ed56cd955b1d2bcbc12e2675f40f0243..8f44492:/src/wlxml/extensions/metadata/metadata.js
diff --git a/src/wlxml/extensions/metadata/metadata.js b/src/wlxml/extensions/metadata/metadata.js
index b30b94c..899306d 100644
--- a/src/wlxml/extensions/metadata/metadata.js
+++ b/src/wlxml/extensions/metadata/metadata.js
@@ -17,6 +17,9 @@ _.extend(Row.prototype, {
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];
@@ -85,13 +88,23 @@ _.extend(Metadata.prototype, {
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;