Components system
This commit is contained in:
@@ -8,7 +8,7 @@ class ModelManager {
|
||||
this.itemChangeObservers = [];
|
||||
this.items = [];
|
||||
this._extensions = [];
|
||||
this.acceptableContentTypes = ["Note", "Tag", "Extension", "SN|Editor", "SN|Theme"];
|
||||
this.acceptableContentTypes = ["Note", "Tag", "Extension", "SN|Editor", "SN|Theme", "SN|Component"];
|
||||
}
|
||||
|
||||
get allItems() {
|
||||
@@ -71,29 +71,34 @@ class ModelManager {
|
||||
}
|
||||
|
||||
mapResponseItemsToLocalModelsOmittingFields(items, omitFields) {
|
||||
var models = [], processedObjects = [];
|
||||
var models = [], processedObjects = [], allModels = [];
|
||||
|
||||
// first loop should add and process items
|
||||
for (var json_obj of items) {
|
||||
json_obj = _.omit(json_obj, omitFields || [])
|
||||
var item = this.findItem(json_obj["uuid"]);
|
||||
|
||||
_.omit(json_obj, omitFields);
|
||||
|
||||
if(item) {
|
||||
item.updateFromJSON(json_obj);
|
||||
}
|
||||
|
||||
if(json_obj["deleted"] == true || !_.includes(this.acceptableContentTypes, json_obj["content_type"])) {
|
||||
if(item) {
|
||||
allModels.push(item);
|
||||
this.removeItemLocally(item)
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
_.omit(json_obj, omitFields);
|
||||
|
||||
if(!item) {
|
||||
item = this.createItem(json_obj);
|
||||
} else {
|
||||
item.updateFromJSON(json_obj);
|
||||
}
|
||||
|
||||
this.addItem(item);
|
||||
|
||||
allModels.push(item);
|
||||
models.push(item);
|
||||
processedObjects.push(json_obj);
|
||||
}
|
||||
@@ -106,14 +111,14 @@ class ModelManager {
|
||||
}
|
||||
}
|
||||
|
||||
this.notifySyncObserversOfModels(models);
|
||||
this.notifySyncObserversOfModels(allModels);
|
||||
|
||||
return models;
|
||||
}
|
||||
|
||||
notifySyncObserversOfModels(models) {
|
||||
for(var observer of this.itemSyncObservers) {
|
||||
var relevantItems = models.filter(function(item){return item.content_type == observer.type});
|
||||
var relevantItems = models.filter(function(item){return item.content_type == observer.type || observer.type == "*"});
|
||||
if(relevantItems.length > 0) {
|
||||
observer.callback(relevantItems);
|
||||
}
|
||||
@@ -144,7 +149,11 @@ class ModelManager {
|
||||
item = new Editor(json_obj);
|
||||
} else if(json_obj.content_type == "SN|Theme") {
|
||||
item = new Theme(json_obj);
|
||||
} else {
|
||||
} else if(json_obj.content_type == "SN|Component") {
|
||||
item = new Component(json_obj);
|
||||
}
|
||||
|
||||
else {
|
||||
item = new Item(json_obj);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user