Add archetypeCacheService

This commit is contained in:
kgiszewski
2015-06-01 10:13:29 -04:00
parent 50a486a9ac
commit 34b3ed3b47
3 changed files with 69 additions and 57 deletions
+2 -1
View File
@@ -62,7 +62,8 @@ module.exports = function(grunt) {
'app/helpers/labelhelpers.js',
'app/resources/propertyeditor.js',
'app/services/archetypeService.js',
'app/services/archetypeLabelService.js'
'app/services/archetypeLabelService.js',
'app/services/archetypeCacheService.js'
],
dest: '<%= basePath %>/js/archetype.js'
}
+63
View File
@@ -0,0 +1,63 @@
angular.module('umbraco.services').factory('archetypeCacheService', function (archetypePropertyEditorResource) {
//private
var isEntityLookupLoading = false;
var entityCache = [];
var isDatatypeLookupLoading = false;
var datatypeCache = [];
return {
getDatatypeByGuid: function(guid) {
var cachedDatatype = _.find(datatypeCache, function (dt){
return dt.dataTypeGuid == guid;
});
if(cachedDatatype) {
return cachedDatatype;
}
//go get it from server
if (!isDatatypeLookupLoading) {
isDatatypeLookupLoading = true;
archetypePropertyEditorResource.getDataType(guid).then(function(datatype) {
datatype.dataTypeGuid = guid;
datatypeCache.push(datatype);
isDatatypeLookupLoading = false;
return datatype;
});
}
return null;
},
getEntityById: function(scope, id, type) {
var cachedEntity = _.find(entityCache, function (e){
return e.id == id;
});
if(cachedEntity) {
return cachedEntity;
}
//go get it from server
if (!isEntityLookupLoading) {
isEntityLookupLoading = true;
scope.resources.entityResource.getById(id, type).then(function(entity) {
entityCache.push(entity);
isEntityLookupLoading = false;
return entity;
});
}
return null;
}
}
});
+4 -56
View File
@@ -1,4 +1,4 @@
angular.module('umbraco.services').factory('archetypeLabelService', function (archetypePropertyEditorResource) {
angular.module('umbraco.services').factory('archetypeLabelService', function (archetypeCacheService) {
//private
var isEntityLookupLoading = false;
@@ -109,7 +109,7 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar
});
if(propertyConfig) {
var datatype = this.getDatatypeByGuid(propertyConfig.dataTypeGuid);
var datatype = archetypeCacheService.getDatatypeByGuid(propertyConfig.dataTypeGuid);
if(datatype) {
//console.log(datatype);
@@ -136,58 +136,6 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar
return parsedTemplate;
},
getDatatypeByGuid: function(guid) {
var cachedDatatype = _.find(datatypeCache, function (dt){
return dt.dataTypeGuid == guid;
});
if(cachedDatatype) {
return cachedDatatype;
}
//go get it from server
if (!isDatatypeLookupLoading) {
isDatatypeLookupLoading = true;
archetypePropertyEditorResource.getDataType(guid).then(function(datatype) {
datatype.dataTypeGuid = guid;
datatypeCache.push(datatype);
isDatatypeLookupLoading = false;
return datatype;
});
}
return null;
},
getEntityById: function(scope, id, type) {
var cachedEntity = _.find(entityCache, function (e){
return e.id == id;
});
if(cachedEntity) {
return cachedEntity;
}
//go get it from server
if (!isEntityLookupLoading) {
isEntityLookupLoading = true;
scope.resources.entityResource.getById(id, type).then(function(entity) {
entityCache.push(entity);
isEntityLookupLoading = false;
return entity;
});
}
return null;
},
urlPicker: function(value, scope, args) {
if(!args.propertyName) {
@@ -199,13 +147,13 @@ angular.module('umbraco.services').factory('archetypeLabelService', function (ar
switch (value.type) {
case "content":
if(value.typeData.contentId) {
entity = this.getEntityById(scope, value.typeData.contentId, "Document");
entity = archetypeCacheService.getEntityById(scope, value.typeData.contentId, "Document");
}
break;
case "media":
if(value.typeData.mediaId) {
entity = this.getEntityById(scope, value.typeData.mediaId, "Media");
entity = archetypeCacheService.getEntityById(scope, value.typeData.mediaId, "Media");
}
break;