Browse Source

Update default `add` and `remove` listeners in UndoManager

pull/803/head
Artur Arseniev 9 years ago
parent
commit
795d15fa50
  1. 22
      src/undo_manager/index.js
  2. 12
      src/utils/Sorter.js

22
src/undo_manager/index.js

@ -30,6 +30,28 @@ module.exports = () => {
this.em = em;
um = new UndoManager({ track: true, register: [] });
um.changeUndoType('change', { condition: false });
um.changeUndoType('add', {
on(model, collection, options = {}) {
if (options.avoidStore) return;
return {
object: collection,
before: undefined,
after: model,
options: { ...options }
};
}
});
um.changeUndoType('remove', {
on(model, collection, options = {}) {
if (options.avoidStore) return;
return {
object: collection,
before: model,
after: undefined,
options: { ...options }
};
}
});
const customUndoType = {
on(object, value, opt = {}) {
!beforeCache && (beforeCache = object.previousAttributes());

12
src/utils/Sorter.js

@ -311,12 +311,14 @@ module.exports = Backbone.View.extend({
if (dropContent && em) {
if (!dropModel) {
let comps = em.get('DomComponents').getComponents();
let tempModel = comps.add(dropContent, {
const opts = {
avoidStore: 1,
avoidChildren: 1,
avoidUpdateStyle: 1,
temporary: 1
});
dropModel = comps.remove(tempModel, { temporary: 1 });
};
let tempModel = comps.add(dropContent, opts);
dropModel = comps.remove(tempModel, opts);
this.dropModel = dropModel instanceof Array ? dropModel[0] : dropModel;
}
return dropModel;
@ -972,7 +974,7 @@ module.exports = Backbone.View.extend({
var opts = { at: index, noIncrement: 1 };
if (!dropContent) {
modelTemp = targetCollection.add({}, opts);
modelTemp = targetCollection.add({}, { ...opts, avoidStore: 1 });
if (model) {
modelToDrop = model.collection.remove(model);
@ -986,7 +988,7 @@ module.exports = Backbone.View.extend({
created = targetCollection.add(modelToDrop, opts);
if (!dropContent) {
targetCollection.remove(modelTemp);
targetCollection.remove(modelTemp, { avoidStore: 1 });
} else {
this.dropContent = null;
}

Loading…
Cancel
Save