From 451a3400b76511393c62a444f588a4ed15f4a549 Mon Sep 17 00:00:00 2001 From: Michael Lando Date: Sun, 19 Feb 2017 10:28:42 +0200 Subject: Initial OpenECOMP SDC commit Change-Id: I0924d5a6ae9cdc161ae17c68d3689a30d10f407b Signed-off-by: Michael Lando --- .../app/scripts/models/components/product.ts | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 catalog-ui/app/scripts/models/components/product.ts (limited to 'catalog-ui/app/scripts/models/components/product.ts') diff --git a/catalog-ui/app/scripts/models/components/product.ts b/catalog-ui/app/scripts/models/components/product.ts new file mode 100644 index 0000000000..6ba3404afb --- /dev/null +++ b/catalog-ui/app/scripts/models/components/product.ts @@ -0,0 +1,109 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +/** + * Created by obarda on 2/4/2016. + */ +/// +module Sdc.Models.Components { + 'use strict'; + + export class Product extends Component{ + + public contacts:Array; + public componentService: Services.Components.IProductService; + public fullName: string; + + constructor(componentService: Services.Components.IProductService, $q:ng.IQService, component?:Product) { + super(componentService, $q, component); + + if(component) { + this.fullName = component.fullName; + this.filterTerm = this.name + ' ' + this.description + ' ' + (this.tags ? this.tags.toString() : '') + ' ' + this.version; + this.contacts = component.contacts; + } + this.componentService = componentService; + this.iconSprite = "sprite-product-icons"; + } + + public deleteGroup = (uniqueId: string): void => { + _.forEach(this.categories, (category: Models.IMainCategory) => { + _.forEach(category.subcategories, (subcategory:Models.ISubCategory) => { + subcategory.groupings = _.reject (subcategory.groupings, (group:Models.IGroup) => { + return group.uniqueId === uniqueId; + }); + if(subcategory.groupings.length == 0){ // if there is no groups, delete the subcategory + category.subcategories = _.reject (category.subcategories, (subcategoryObj:Models.ISubCategory) => { + return subcategoryObj.uniqueId === subcategory.uniqueId; + }); + if(category.subcategories.length == 0){ // if there is no subcategory, delete the category + this.categories = _.reject (this.categories , (categoryObj:Models.IMainCategory) => { + return categoryObj.uniqueId === category.uniqueId; + }); + } + } + }); + }); + }; + + private getCategoryObjectById = (categoriesArray:Array, categoryUniqueId:string):Models.ICategoryBase => { + let categorySelected = _.find(categoriesArray, (category) => { + return category.uniqueId === categoryUniqueId; + }); + return categorySelected; + }; + + public addGroup = (category: Models.IMainCategory, subcategory: Models.ISubCategory, group: Models.IGroup): void => { + if(!this.categories){ + this.categories = new Array(); + } + let existingCategory:Models.IMainCategory = this.getCategoryObjectById(this.categories, category.uniqueId); + let newGroup = angular.copy(group); + newGroup.filterTerms = undefined; + newGroup.isDisabled = undefined; + if(!existingCategory){ + let newCategory: Models.IMainCategory = angular.copy(category); + newCategory.filteredGroup = undefined; + newCategory.subcategories = []; + let newSubcategory:Models.ISubCategory = angular.copy(subcategory); + newSubcategory.groupings = []; + newSubcategory.groupings.push(newGroup); + newCategory.subcategories.push(newSubcategory); + this.categories.push(newCategory); + } + else{ + let existingSubcategory:Models.ISubCategory = this.getCategoryObjectById(existingCategory.subcategories, subcategory.uniqueId); + if(!existingSubcategory){ + let newSubcategory:Models.ISubCategory = angular.copy(subcategory); + newSubcategory.groupings = []; + newSubcategory.groupings.push(newGroup); + existingCategory.subcategories.push(newSubcategory); + + } else { + let existingGroup:Models.IGroup = this.getCategoryObjectById(existingSubcategory.groupings, group.uniqueId); + if(!existingGroup){ + existingSubcategory.groupings.push(newGroup); + } + } + } + }; + + } +} + -- cgit 1.2.3-korg