1c5c333d27ad472e4332620babcf6825886e3850
[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} 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 = _.filter(scope.component.componentInstancesRelations, (relation:any) => {
66                     return relation.fromNode === scope.component.selectedInstance.uniqueId &&
67                         _.some(relation.relationships, {
68                             'requirement': requirement.name,
69                             'requirementOwnerId': requirement.ownerId
70                         });
71                 });
72
73                 if (relationItem && relationItem.length) {
74                     return {
75                         type: requirement.relationship.split('.').pop(),
76                         requirementName: this.$filter('resourceName')(scope.component.componentInstances[_.map
77                         (scope.component.componentInstances, "uniqueId").indexOf(relationItem[0].toNode)].name)
78                     };
79                 }
80             }
81             return null;
82         };
83
84     };
85
86     public static factory = ($filter: ng.IFilterService)=> {
87         return new RequirementsListDirective($filter);
88     };
89 }
90
91 RequirementsListDirective.factory.$inject = ['$filter'];