9863b5d2718bfc57a5e1d1fda2b5ff285298fab7
[sdc.git] /
1 /**
2  * Created by ob0695 on 5/9/2017.
3  */
4 /**
5  * Created by ob0695 on 5/9/2017.
6  */
7 /**
8  * Created by obarda on 1/8/2017.
9  */
10 'use strict';
11 import {RequirementsGroup, Component} from "app/models";
12
13 export interface IRequirementsListScope extends ng.IScope {
14
15     requirements:RequirementsGroup;
16     currentComponent: Component;
17 }
18
19
20 export class RequirementsListDirective implements ng.IDirective {
21
22     constructor(private $filter: ng.IFilterService) {
23
24     }
25
26     scope = {
27         requirements: '=',
28         component: '='
29     };
30
31     restrict = 'E';
32     replace = true;
33     template = ():string => {
34         return require('./requirements-list-view.html');
35     };
36
37     link = (scope:IRequirementsListScope) => {
38
39         scope.isInstanceSelected = () : boolean => {
40             return  scope.component && scope.component.selectedInstance != undefined && scope.component.selectedInstance != null;
41         }
42
43         scope.getRelation = (requirement:any):any => {
44             if (scope.isInstanceSelected() && scope.component.componentInstancesRelations) {
45                 let relationItem = _.filter(scope.component.componentInstancesRelations, (relation:any) => {
46                     return relation.fromNode === scope.component.selectedInstance.uniqueId &&
47                         _.some(relation.relationships, {
48                             'requirement': requirement.name,
49                             'requirementOwnerId': requirement.ownerId
50                         });
51                 });
52
53                 if (relationItem && relationItem.length) {
54                     return {
55                         type: requirement.relationship.split('.').pop(),
56                         requirementName: this.$filter('resourceName')(scope.component.componentInstances[_.map
57                         (scope.component.componentInstances, "uniqueId").indexOf(relationItem[0].toNode)].name)
58                     };
59                 }
60             }
61             return null;
62         };
63
64     };
65
66     public static factory = ($filter: ng.IFilterService)=> {
67         return new RequirementsListDirective($filter);
68     };
69 }
70
71 RequirementsListDirective.factory.$inject = ['$filter'];