OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-12-01 eee313007ce5c4f0879d764d56d3a1ba93f6fb37
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
/**
 * Created by wisestone on 2018-10-30.
 */
'use strict';
 
define([
        'app'
    ],
    function (app) {
        app.controller('widgetDashBoardController', ['$scope', '$rootScope', '$log', '$resourceProvider', 'Widget', 'SweetAlert', '$filter',
            function ($scope, $rootScope, $log, $resourceProvider, Widget, SweetAlert, $filter) {
 
                //  함수 모음
                $scope.fn = {
                    findAllWidget : findAllWidget   //  대시보드 위젯 전체 조회
                };
 
                //  변수 모음
                $scope.vm = {
                    issueStatisticsWidget : null,   //  전체 이슈 현황
                    projectProgressWidget : null,    //  진행중인 프로젝트 현황
                    myAssigneeIssueWidget : null, //  나에게 할당된 이슈
                    delayIssueWidget : null,  //  지연중인 이슈
                    registerIssueWidget : null,   //  내가 등록한 이슈
                    memberProgressWidget : null, //  멤버별 진행률
                    myIssueWidget : null, //  나의 이슈 현황
                    riskIssueWidget : null,   //  위험 관리 이슈
                    issueCompleteWidget : null,   //  전체 이슈 처리 현황
                    issueStatusWidget : [], //  상태별 이슈 현황
                    workflowWidget : null,  //  워크플로우
                    issueTypeWidget : null, //  이슈 유형별 이슈 현황
                    severityIssueWidget: null, // 중요도 별 이슈 현황
                };
 
                //  대시보드 위젯 전체 조회
                function findAllWidget() {
                    Widget.findAllWidget($resourceProvider.getContent({},
                        $resourceProvider.getPageContent(0, 0))).then(function (result) {
 
                        if (result.data.message.status === "success") {
                            $scope.vm.issueStatisticsWidget = result.data.issueStatisticsWidget;
                            //  진행중인 프로젝트 현황 정보를 저장한다.
                            $scope.vm.projectProgressWidget = result.data.projectProgressWidget;
                            //  나에게 할당된 이슈 정보를 저장한다.
                            $scope.vm.myAssigneeIssueWidget = result.data.myAssigneeIssueWidget;
                            //  지연중인 이슈 정보를 저장한다.
                            $scope.vm.delayIssueWidget = result.data.delayIssueWidget;
                            //  내가 등록한 이슈 정보를 저장한다.
                            $scope.vm.registerIssueWidget = result.data.registerIssueWidget;
                            //  위험 관리 이슈 정보를 저장한다.
                            $scope.vm.riskIssueWidget = result.data.riskIssueWidget;
                            //  나의 이슈 현황 정보를 저장한다.
                            $scope.vm.myIssueWidget = result.data.myIssueWidget;
 
                            const members = result.data.memberProgressWidget.members;
                            var filterMembers = members.filter(function(item, idx){
                                return members.findIndex(function(item2, idx2){
                                    return item.departmentName === item2.departmentName
                                }) == idx;
                            });
 
                            var departmentNames = [];
                            angular.forEach(filterMembers, function (member) {
                                departmentNames.push(member.departmentName);
                            });
                            var completeCounts = [];
                            var delayCounts = [];
                            var remainCounts = [];
 
                            for(var j=0; j<departmentNames.length; j++){ //배열 초기값 선언
                                completeCounts[j] = 0;
                                delayCounts[j] = 0;
                                remainCounts[j] = 0;
                            }
 
                            for(var i=0; i<members.length; i++){
                                for(var j=0; j<departmentNames.length; j++){
                                    if(members[i].departmentName === departmentNames[j]){
                                        completeCounts[j] += members[i].completeCount;
                                        delayCounts[j] += members[i].delayCount;
                                        remainCounts[j] += members[i].remainCount;
                                    }
                                }
                            }
                            for(var i=0; i<filterMembers.length; i++){
                                filterMembers[i].completeCount = completeCounts[i]
                                filterMembers[i].delayCount = delayCounts[i]
                                filterMembers[i].remainCount = remainCounts[i]
                            }
                            result.data.memberProgressWidget.members = filterMembers;
 
                            //  멤버별 진행률을 저장한다.
                            $scope.vm.memberProgressWidget = result.data.memberProgressWidget;
                            //  전체 이슈 처리 현황 정보를 저장한다.
                            $scope.vm.issueCompleteWidget = result.data.issueCompleteWidget;
                            //  상태별 이슈 현황 정보를 저장한다.
                            $scope.vm.issueStatusWidget = result.data.issueStatusWidget;
                            //  워크플로우 정보를 저장한다.
                            $scope.vm.workflowWidget = result.data.workflowWidget;
                            //  이슈 유형별 이슈 현황 정보를 저장한다.
                            $scope.vm.issueTypeWidget = result.data.issueTypeWidget;
                            // 중요도 별 이슈 현황 정보를 저장한다.
                            $scope.vm.severityIssueWidget = result.data.severityIssueWidget;
 
                            $rootScope.dashboard = result.data.dashboardType;
                        }
                        else {
                            SweetAlert.swal($filter("translate")("dashboard.failedDashboardWidgetLookup"), result.data.message.message, "error"); // "대시보드 위젯 조회 실패"
                        }
                    });
                }
 
                //  전체 이슈 위젯 정보 조회
                $scope.fn.findAllWidget();
            }
        ]);
    }
);