Files
standardnotes-app-web/app/assets/javascripts/app/services/itemManager.js
2016-12-15 17:37:26 -06:00

55 lines
1.3 KiB
JavaScript

class ItemManager {
set items(items) {
this._items = items;
this.resolveReferences();
}
get items() {
return this._items;
}
referencesForItemId(itemId) {
return _.find(this.items, {uuid: itemId});
}
resolveReferences() {
this.items.forEach(function(item){
// build out references
item.content.references = _.map(item.content.references, function(reference){
return this.referencesForItemId(reference.uuid);
}.bind(this))
}.bind(this));
}
itemsForContentType(contentType) {
return this.items.filter(function(item){
return item.content_type == contentType;
});
}
// returns dirty item references that need saving
deleteItem(item) {
_.remove(this.items, item);
item.content.references.forEach(function(referencedItem){
this.removeReferencesBetweenItems(referencedItem, item);
}.bind(this))
return item.content.references;
}
removeReferencesBetweenItems(itemOne, itemTwo) {
itemOne.removeReference(itemTwo);
itemTwo.removeReference(itemOne);
return [itemOne, itemTwo];
}
createReferencesBetweenItems(itemOne, itemTwo) {
itemOne.addReference(itemTwo);
itemTwo.addReference(itemOne);
return [itemOne, itemTwo];
}
}
angular.module('app.frontend').service('itemManager', ItemManager);