OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2022-01-06 6adb341db180240e0af34ace40100912d4ed5257
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
'use strict';
 
define(['app', 'angular'],
    function (app, angular) {
 
        app.directive('relColumnGenerator', ['$compile', '$log', '$rootScope', '$relProvider', '$filter',
            function ($compile, $log, $rootScope, $relProvider, $filter) {
                return {
                    restrict : "A",
                    compile : function (tElement, tAttrs) {
                        return function (scope, element, attrs) {
                            scope.data = scope[attrs["relColumnGenerator"]];
 
                            var myData = scope.data;
                            var makeTag = "";
 
                            scope.tableConfigs.forEach(function (tableConfig, index) {
 
                                if (tableConfig.colSpan > 0) {
                                    return;
                                }
 
                                // 하위 단계 표시 추가
                                var myToken = "";
                                if ( scope.data.depth > 0)  {
                                    for(var i=0; i<scope.data.depth; i++) {
                                        if (i == scope.data.depth - 1) {
                                            myToken += treeStartToken;
                                        } else {
                                            myToken += "&emsp;";
                                        }
                                    }
                                    myToken += "&nbsp;";
                                }
 
                                makeTag = '<td class="' + tableConfig.dAlign + ' ' + tableConfig.dVisible + '">';
 
                                if (tableConfig.dType === "checkbox") {
                                    //  체크 박스일때
                                    /*if (scope.data.defaultYn) {
                                        makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" disabled ng-click="$root.$relProvider.rowChecked(tableConfigs, data, fn.getResponseData())">';
                                    }
                                    else {*/
                                    makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" ng-click="$root.$relProvider.rowChecked(tableConfigs, data, fn.getResponseData())">';
                                    //}
 
                                    tableConfig.hChecked = false;
                                }
                                else if (tableConfig.dType === "radio") {
                                    //  라디오 버튼일때
                                    makeTag += '<input type="radio" ng-checked="data.checked == true ? true : false" ng-click="$root.$relProvider.rowChecked(tableConfigs, data, fn.getResponseData())">';
                                }
                                else if (tableConfig.dType === "renderer") {
                                    //  랜더러 일때
                                    switch (tableConfig.dRenderer) {
 
                                        // 연관 이슈 이동(제목)
                                        case "ISSUE_RELATION_MOVE" :
                                            makeTag += "<span class=\"titlename cursor text-center\" ng-click=\"event.changeDetailView(data.issueRelation)\">" + scope.data.title + "</span></a>";
                                            break;
 
                                        // 연관이슈 구분
                                        case "ISSUE_RELATION_TYPE":
                                            makeTag += "<span>" + scope.data.relationIssueTypeName + "</span>";
                                            break;
 
                                        // 연관이슈 삭제
                                        case "ISSUE_RELATION_DELETE":
                                            if (scope.data.modifyPermissionCheck) {
                                                makeTag += '<img class="cursor" src="/assets/images/delete-icon.png" ng-click="event.removeRelationIssue(data.id)">';
                                            }
                                            break;
 
                                        // 연관 이슈 우선순위
                                        case "REL_COMMON_PRIORITY" :
                                            makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.priorityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.priorityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.priorityVo.name + "'></span>";
                                            break;
 
                                        // 연관 이슈 중요도
                                        case "REL_COMMON_SEVERITY" :
                                            makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.severityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.severityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityVo.name + "'></span>";
                                            break;
 
                                        // 연관 이슈 등록자
                                        case "REL_REGISTER":
                                            scope.data.registerVos = [scope.data.issueRelation.registerVo];
                                            makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>';
                                            break;
 
                                            break;
 
                                        // 연관 이슈 담당부서
                                        case "REL_ISSUE_DEPARTMENT" :
                                            makeTag += "<ul class='ul-not-comma'>";
                                            makeTag += "<div style='color: #000000'>";
                                            angular.forEach(scope.data.issueRelation.departmentVos, function (departments) {
                                                makeTag += "<li>" + departments.departmentName + "</li>";
                                            });
                                            makeTag += "</div>";
                                            makeTag += "</ul>";
                                            break;
 
                                        // 연관 이슈 목록에서 기간 표시
                                        case "REL_ISSUE_DUE_DATE" :
                                            if (!$rootScope.isDefined(scope.data.issueRelation.startDate) && !$rootScope.isDefined(scope.data.issueRelation.completeDate)) {
                                                makeTag += "<span translate='common.noDate'>기간 없음</span>";
                                            } else {
                                                makeTag += "<span>" + scope.data.issueRelation.startDate + " ~ " + scope.data.issueRelation.completeDate + "</span>";
                                            }
                                            break;
 
                                        // 연관 이슈 사용자 정의 필드
                                        case "REL_ISSUE_CUSTOM_FIELD_VALUE_VIEW" :
                                            var values = [];
 
                                            for (var count in scope.data.issueRelation.issueCustomFieldValueVos) {
                                                var issueCustomFieldValueVo = scope.data.issueRelation.issueCustomFieldValueVos[count];
                                                //  테이블 설정에서 dName 부분에 사용자 정의 필드 id 를 넣고 해당 값을 추출한다.
                                                if (tableConfig.columnHint.id == issueCustomFieldValueVo.customFieldVo.id) {
                                                    values.push(issueCustomFieldValueVo.useValue);
                                                }
                                            }
                                            angular.forEach(values, function (value) {
                                                makeTag += '<span class="table-word-break-all cursor">' + value + '<span><br>';
                                            });
 
                                            break;
                                    }
                                }
 
                                makeTag += '</td>';
 
                                var linkFn = $compile(makeTag);
                                var content = linkFn(scope);
 
                                element.append(content);
                            });
                        }
                    }
                }
        }]);
    });