14cafa98c48305aaa1ef3ff6e9020ec104f00130
[sdc.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 /**
22  * Created by ob0695 on 5/9/2017.
23  */
24 /**
25  * Created by ob0695 on 5/9/2017.
26  */
27 /**
28  * Created by obarda on 1/8/2017.
29  */
30 'use strict';
31 import {RequirementsGroup, Component, Relationship, RelationshipModel} from "app/models";
32
33 export interface IRequirementsListScope extends ng.IScope {
34
35     requirements:RequirementsGroup;
36     currentComponent: Component;
37 }
38
39
40 export class RequirementsListDirective implements ng.IDirective {
41
42     constructor(private $filter: ng.IFilterService) {
43
44     }
45
46     scope = {
47         requirements: '=',
48         component: '='
49     };
50
51     restrict = 'E';
52     replace = true;
53     template = ():string => {
54         return require('./requirements-list-view.html');
55     };
56
57     link = (scope:IRequirementsListScope) => {
58
59         scope.isInstanceSelected = () : boolean => {
60             return  scope.component && scope.component.selectedInstance != undefined && scope.component.selectedInstance != null;
61         }
62
63         scope.getRelation = (requirement:any):any => {
64             if (scope.isInstanceSelected() && scope.component.componentInstancesRelations) {
65                 let relationItem:Array<RelationshipModel> = _.filter((<Component>scope.component).componentInstancesRelations, (relation:RelationshipModel) => {
66                     return relation.fromNode === scope.component.selectedInstance.uniqueId &&
67                         _.filter(relation.relationships, (relationship:Relationship) => {
68                             return relationship.relation.requirement == requirement.name && relationship.relation.requirementOwnerId == requirement.ownerId;
69                         }).length;
70                 });
71
72                 if (relationItem && relationItem.length) {
73                     return {
74                         type: requirement.relationship.split('.').pop(),
75                         requirementName: this.$filter('resourceName')(scope.component.componentInstances[_.map
76                         (scope.component.componentInstances, "uniqueId").indexOf(relationItem[0].toNode)].name)
77                     };
78                 }
79             }
80             return null;
81         };
82
83     };
84
85     public static factory = ($filter: ng.IFilterService)=> {
86         return new RequirementsListDirective($filter);
87     };
88 }
89
90 RequirementsListDirective.factory.$inject = ['$filter'];