|
|
|
@ -21,38 +21,63 @@ function ComponentDescriptorService($http, $q) { |
|
|
|
|
|
|
|
var componentsByType = {}; |
|
|
|
var componentsByClazz = {}; |
|
|
|
var actionsByPlugin = {}; |
|
|
|
|
|
|
|
var service = { |
|
|
|
getComponentDescriptorsByType: getComponentDescriptorsByType, |
|
|
|
getComponentDescriptorByClazz: getComponentDescriptorByClazz, |
|
|
|
getPluginActionsByPluginClazz: getPluginActionsByPluginClazz, |
|
|
|
getComponentDescriptorsByTypes: getComponentDescriptorsByTypes |
|
|
|
} |
|
|
|
|
|
|
|
return service; |
|
|
|
|
|
|
|
function getComponentDescriptorsByTypes(componentTypes, ruleChainType) { |
|
|
|
function getComponentDescriptorsByType(componentType) { |
|
|
|
var deferred = $q.defer(); |
|
|
|
if (componentsByType[componentType]) { |
|
|
|
deferred.resolve(componentsByType[componentType]); |
|
|
|
} else { |
|
|
|
var url = '/api/components/' + componentType; |
|
|
|
$http.get(url, null).then(function success(response) { |
|
|
|
componentsByType[componentType] = response.data; |
|
|
|
for (var i = 0; i < componentsByType[componentType].length; i++) { |
|
|
|
var component = componentsByType[componentType][i]; |
|
|
|
componentsByClazz[component.clazz] = component; |
|
|
|
} |
|
|
|
deferred.resolve(componentsByType[componentType]); |
|
|
|
}, function fail() { |
|
|
|
deferred.reject(); |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
return deferred.promise; |
|
|
|
} |
|
|
|
|
|
|
|
function getComponentDescriptorsByTypes(componentTypes, type) { |
|
|
|
var deferred = $q.defer(); |
|
|
|
var result = []; |
|
|
|
if (!componentsByType[ruleChainType]) { |
|
|
|
componentsByType[ruleChainType] = {}; |
|
|
|
if (!componentsByType[type]) { |
|
|
|
componentsByType[type] = {}; |
|
|
|
} |
|
|
|
for (var i=componentTypes.length-1;i>=0;i--) { |
|
|
|
var componentType = componentTypes[i]; |
|
|
|
if (componentsByType[ruleChainType][componentType]) { |
|
|
|
result = result.concat(componentsByType[ruleChainType][componentType]); |
|
|
|
if (componentsByType[type][componentType]) { |
|
|
|
result = result.concat(componentsByType[type][componentType]); |
|
|
|
componentTypes.splice(i, 1); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!componentTypes.length) { |
|
|
|
deferred.resolve(result); |
|
|
|
} else { |
|
|
|
var url = '/api/components?componentTypes=' + componentTypes.join(',') + '&ruleChainType=' + ruleChainType; |
|
|
|
var url = '/api/components?componentTypes=' + componentTypes.join(',') + '&ruleChainType=' + type; |
|
|
|
$http.get(url, null).then(function success(response) { |
|
|
|
var components = response.data; |
|
|
|
for (var i = 0; i < components.length; i++) { |
|
|
|
var component = components[i]; |
|
|
|
var componentsList = componentsByType[ruleChainType][component.type]; |
|
|
|
var componentsList = componentsByType[type][component.type]; |
|
|
|
if (!componentsList) { |
|
|
|
componentsList = []; |
|
|
|
componentsByType[ruleChainType][component.type] = componentsList; |
|
|
|
componentsByType[type][component.type] = componentsList; |
|
|
|
} |
|
|
|
componentsList.push(component); |
|
|
|
componentsByClazz[component.clazz] = component; |
|
|
|
@ -65,4 +90,37 @@ function ComponentDescriptorService($http, $q) { |
|
|
|
} |
|
|
|
return deferred.promise; |
|
|
|
} |
|
|
|
|
|
|
|
function getComponentDescriptorByClazz(componentDescriptorClazz) { |
|
|
|
var deferred = $q.defer(); |
|
|
|
if (componentsByClazz[componentDescriptorClazz]) { |
|
|
|
deferred.resolve(componentsByClazz[componentDescriptorClazz]); |
|
|
|
} else { |
|
|
|
var url = '/api/component/' + componentDescriptorClazz; |
|
|
|
$http.get(url, null).then(function success(response) { |
|
|
|
componentsByClazz[componentDescriptorClazz] = response.data; |
|
|
|
deferred.resolve(componentsByClazz[componentDescriptorClazz]); |
|
|
|
}, function fail() { |
|
|
|
deferred.reject(); |
|
|
|
}); |
|
|
|
} |
|
|
|
return deferred.promise; |
|
|
|
} |
|
|
|
|
|
|
|
function getPluginActionsByPluginClazz(pluginClazz) { |
|
|
|
var deferred = $q.defer(); |
|
|
|
if (actionsByPlugin[pluginClazz]) { |
|
|
|
deferred.resolve(actionsByPlugin[pluginClazz]); |
|
|
|
} else { |
|
|
|
var url = '/api/components/actions/' + pluginClazz; |
|
|
|
$http.get(url, null).then(function success(response) { |
|
|
|
actionsByPlugin[pluginClazz] = response.data; |
|
|
|
deferred.resolve(actionsByPlugin[pluginClazz]); |
|
|
|
}, function fail() { |
|
|
|
deferred.reject(); |
|
|
|
}); |
|
|
|
} |
|
|
|
return deferred.promise; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|