fix new model creation

pull/8/head
Antelle 2015-10-27 22:40:34 +03:00
parent abdb329045
commit d973c9f989
3 changed files with 24 additions and 4 deletions

View File

@ -155,10 +155,7 @@ var AppModel = Backbone.Model.extend({
file = this.files.first();
group = file.get('groups').first();
}
var entry = EntryModel.newEntry(group, file);
group.addEntry(entry);
entry.isNew = true;
return entry;
return EntryModel.newEntry(group, file);
}
});

View File

@ -110,6 +110,9 @@ var EntryModel = Backbone.Model.extend({
this.entry.pushHistory();
this.file.setModified();
}
if (this.isNew) {
this.isNew = false;
}
this.entry.times.update();
},
@ -222,6 +225,14 @@ var EntryModel = Backbone.Model.extend({
this.group = trashGroup;
this.deleted = true;
}
},
removeWithoutHistory: function() {
var ix = this.group.group.entries.indexOf(this.entry);
if (ix >= 0) {
this.group.group.entries.splice(ix, 1);
}
this.group.removeEntry(this);
}
});
@ -237,6 +248,8 @@ EntryModel.newEntry = function(group, file) {
model.setEntry(entry, group, file);
model.entry.times.update();
model.unsaved = true;
model.isNew = true;
group.addEntry(model);
file.setModified();
return model;
};

View File

@ -381,6 +381,11 @@ var DetailsView = Backbone.View.extend({
this.setTitle(e.target.value);
} else if (code === Keys.DOM_VK_ESCAPE) {
$(e.target).unbind('blur');
if (this.model.isNew) {
this.model.removeWithoutHistory();
Backbone.trigger('refresh');
return;
}
this.render();
} else if (code === Keys.DOM_VK_TAB) {
e.preventDefault();
@ -393,6 +398,11 @@ var DetailsView = Backbone.View.extend({
},
setTitle: function(title) {
if (!title && this.model.isNew) {
this.model.removeWithoutHistory();
Backbone.trigger('refresh');
return;
}
if (this.model.title instanceof kdbxweb.ProtectedValue) {
title = kdbxweb.ProtectedValue.fromString(title);
}