aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/filters/category-type-filter.ts
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/filters/category-type-filter.ts')
-rw-r--r--catalog-ui/src/app/filters/category-type-filter.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/catalog-ui/src/app/filters/category-type-filter.ts b/catalog-ui/src/app/filters/category-type-filter.ts
new file mode 100644
index 0000000000..66663263c3
--- /dev/null
+++ b/catalog-ui/src/app/filters/category-type-filter.ts
@@ -0,0 +1,28 @@
+import {ComponentType} from "../utils/constants";
+import {CacheService} from "../services/cache-service";
+export class CategoryTypeFilter {
+
+ static $inject = ['Sdc.Services.CacheService'];
+
+ constructor(cacheService:CacheService) {
+ let filter = <CategoryTypeFilter>(categories:any, selectedType:Array<string>, selectedSubResourceTypes:Array<string>) => {
+
+ if (selectedType.indexOf(ComponentType.RESOURCE) === -1 && selectedSubResourceTypes.length > 0) {
+ selectedType = selectedType.concat([ComponentType.RESOURCE]);
+ }
+
+ if (!selectedType.length)
+ return categories;
+
+ let filteredCategories:any = [];
+ selectedType.forEach((type:string) => {
+ filteredCategories = filteredCategories.concat(cacheService.get(type.toLowerCase() + 'Categories'));
+ });
+
+ return _.filter(categories, function (category:any) {
+ return filteredCategories.indexOf(category) != -1;
+ });
+ };
+ return filter;
+ }
+}