OWL ITS + 탐지시스템(인터넷 진흥원)
jhjang
2021-12-12 5d6ea07024b475d94b997ad5972f433cf0b5aae4
src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -8,9 +8,9 @@
        'angular'
    ],
    function (app, angular) {
        app.controller('issueListController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', '$q',
        app.controller('issueListController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$treeProvider', '$state', '$uibModal', '$q',
            '$controller', '$injector', 'SweetAlert', 'Issue', 'IssueType', 'Priority', 'Severity', 'IssueStatus', 'CustomField', 'IssueSearch', 'IssueTableConfig', '$timeout', '$filter',
            function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, $q, $controller, $injector, SweetAlert, Issue, IssueType, Priority, Severity, IssueStatus, CustomField,
            function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $treeProvider, $state, $uibModal, $q, $controller, $injector, SweetAlert, Issue, IssueType, Priority, Severity, IssueStatus, CustomField,
                      IssueSearch, IssueTableConfig, $timeout, $filter) {
                //  함수
@@ -20,6 +20,7 @@
                    changePageRowCount : changePageRowCount,    //  페이지 변경
                    makeTableConfigs : makeTableConfigs, //  테이블 설정
                    setTableColumn : setTableColumn,    //  테이블의 컬럼을 만들어준다.
                    setTreeColumn : setTreeColumn,
                    add : add,   //  이슈 생성
                    modify : modify,    //  이슈 수정
                    addRelationIssueForm : addRelationIssueForm,    //  연관 이슈 추가
@@ -39,7 +40,9 @@
                    makeSearchConditions : makeSearchConditions,    //  검색 조건을 만든다.
                    getIssueTableConfigs : getIssueTableConfigs,  //  사용자 이슈 목록 테이블 설정 값을 가져와서 적용한다.
                    startExecute : startExecute, //  컨트롤 로딩시 처음으로 시작되는 함수
                    getResponseData : getResponseData //  컨트롤 로딩시 처음으로 시작되는 함수
                    getResponseData : getResponseData, //  컨트롤 로딩시 처음으로 시작되는 함수
                    onClickListMode : onClickListMode,   // 리스트 모드 변경시 실행되는 함수
                    setDefaultTableConfig : setDefaultTableConfig // 기본 테이블 설정 세팅
                };
                //  변수
@@ -67,6 +70,7 @@
                        selectedPageRowCount : String(10)
                    },
                    tableConfigs : [],  //  테이블 셋팅 정보
                    treeConfigs : [], // 트리 셋팅 정보
                    responseData : {
                        data : []
                    },
@@ -84,8 +88,10 @@
                    registers : [], //  등록자
                    customFields : [],  //  사용자 정의 필드
                    issueTableConfigs : [],  //  이슈 테이블 설정
                    issueTreeConfigs : [],  //  이슈 테이블 설정
                    parentIssueId : "",
                    hideIssue : false
                    hideIssue : false,
                    listMode : 0, // 목록 모드 0:기본 리스트 1:트리구조 리스트
                };
                //  테이블 이벤트
@@ -107,6 +113,13 @@
                $scope.$on("changedIssueListMenu", function (event, args) {
                    $scope.fn.getPageList($scope.vm.page.selectedPage - 1);
                });
                // 상단 검색시
                $scope.$on("searchIssueList", function (event, args) {
                    $scope.vm.search.keyWord = args.keyWord;
                    $scope.fn.getPageList(0);
                    $rootScope.isMainSearch = false;
                });
                //  검색 조건을 기억한다. - 적용 보류
@@ -197,6 +210,7 @@
                //  이슈 테이블 설정
                function makeTableConfigs() {
                    $scope.vm.tableConfigs = [];
                    $scope.vm.treeConfigs = [];
                    $scope.vm.tableConfigs.push($tableProvider.config()
                        .setDType("checkbox")
@@ -233,8 +247,69 @@
                        if (issueTableConfig.display) {
                            //  테이블의 컬럼을 만들어준다.
                            $scope.fn.setTableColumn(issueTableConfig);
                            $scope.fn.setTreeColumn(issueTableConfig);
                        }
                    });
                }
                //  트리 컬럼을 만들어준다.
                function setTreeColumn(issueTableConfig) {
                    //  일반 컬럼
                    switch(issueTableConfig.key) {
                        case "ISSUE_TITLE" :   //  이슈 제목
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("title"));
                            break;
                        case "PRIORITY" :   //  우선순위
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("priorityName"));
                            break;
                        case "SEVERITY" :   //  중요도
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("severityName"));
                            break;
                        case "ISSUE_TYPE" : //  이슈 타입
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("issueTypeName"));
                            break;
                        case "ASSIGNEE_TEAM" :   //  담당부서
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("assigneeTeam"));
                            break;
                        case "REGISTER" :   //  등록자
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("register"));
                            break;
                        case "PERIOD" : //  기간
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("period"));
                            break;
                        case "MODIFY_DATE" : //  최근 변경일
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("modifyDate"));
                            break;
                        case "COUNT_DOWN_ISSUE" : //  하위 이슈 개수
                            $scope.vm.treeConfigs.push($treeProvider.config()
                                .setDName("countDownIssue"));
                            break;
                    }
                    //  사용자 정의 필드 컬럼
                    if (issueTableConfig.key.indexOf("CUSTOM_FIELD_") !== -1) {
                        //  만약 이슈 테이블 컬럼명이 표시되지 않으면 이쪽이 문제
                        for (var count in $scope.vm.customFields) {
                            var customField = $scope.vm.customFields[count];
                            if (customField.id === Number(issueTableConfig.key.substring(13))) {
                                $scope.vm.treeConfigs.push($treeProvider.config()
                                    .setDType("CUSTOM_FIELD")
                                    .setDName(customField.id)
                                    .setColumnHint(customField));
                                break;
                            }
                        }
                    }
                }
                //  테이블의 컬럼을 만들어준다.
@@ -367,6 +442,7 @@
                        beginCompleteDate : "",
                        endCompleteDate : "",
                        hideIssue : $scope.vm.hideIssue,
                        isTree : $scope.vm.listMode === 1,
                        projectIds : (function () {
                            var projectIds = [];
@@ -487,8 +563,13 @@
                    return conditions;
                }
                function getTreeList() {
                }
                //  이슈 목록을 조회한다.
                function getPageList(selectedPage, detail = false) {
                    $rootScope.spinner = true;  //  프로그래스 바
                    if (selectedPage < 0) {
                        selectedPage = 0;
                    }
@@ -507,26 +588,31 @@
                        currentPage = selectedPage;
                    }
                    // 메뉴에서 선택된 이슈 유형을 기본으로 추가
                    if ($rootScope.issueTypeMenu != null) {
                        // $scope.vm.pageTitle = $rootScope.issueTypeMenu.name;
                        $scope.vm.search.issueTypeIds = [];
                        $scope.vm.search.issueTypeIds.push({
                            fieldKey : $rootScope.issueTypeMenu.id,
                            fieldValue : $rootScope.issueTypeMenu.name
                        });
                    }
                    //  검색 조건을 저장한다.
                    //$scope.fn.makeVmSearchObject();
                    // 현재 선택된 프로젝트를 검색 기본으로 추가
                    if ($rootScope.workProject != null && $rootScope.workProject.id > -1) {
                        var find = findProjectSearch($rootScope.workProject.id);
                        if (!find) {
                            $scope.vm.projects = [];
                            $scope.vm.projects.push($rootScope.workProject);
                    // 검색 기본값 세팅
                    $scope.vm.search.issueTypeIds = [];
                    $scope.vm.projects = [];
                    if (!$rootScope.isMainSearch) {
                        // 메뉴에서 선택된 이슈 유형을 기본으로 추가
                        if ($rootScope.issueTypeMenu != null) {
                            // $scope.vm.pageTitle = $rootScope.issueTypeMenu.name;
                            $scope.vm.search.issueTypeIds.push({
                                fieldKey: $rootScope.issueTypeMenu.id,
                                fieldValue: $rootScope.issueTypeMenu.name
                            });
                        }
                        //  검색 조건을 저장한다.
                        //$scope.fn.makeVmSearchObject();
                        // 현재 선택된 프로젝트를 검색 기본으로 추가
                        if ($rootScope.workProject != null && $rootScope.workProject.id > -1) {
                            var find = findProjectSearch($rootScope.workProject.id);
                            if (!find) {
                                $scope.vm.projects.push($rootScope.workProject);
                            }
                        }
                    }
@@ -556,6 +642,7 @@
                        else {
                            SweetAlert.error($filter("translate")("issue.failedIssueLookup"), result.data.message.message); // 이슈 조회 실패
                        }
                        $rootScope.spinner = false;  //  프로그래스 바
                    });
                }
@@ -1055,6 +1142,54 @@
                    return deferred.promise;
                }
                // 리스트 모드 변경시 실행
                function onClickListMode(listMode) {
                    if ($scope.vm.listMode !== listMode) {
                        $scope.vm.listMode = listMode;
                        if ($scope.vm.listMode === 0) {
                            $scope.fn.getPageList(0);
                        } else {
                            $scope.fn.getPageList(0);
                        }
                    }
                }
                function setDefaultTableConfig() {
                    //  최초 업무 공간에 들어왔을 경우
                    $scope.vm.issueTableConfigs = [{
                        name : $filter("translate")("issue.issueTitle"), // 이슈 제목
                        key : "ISSUE_TITLE",
                        width : "width-140-p",
                        position : 1,
                        display : true
                    }, {
                        name : $filter("translate")("common.priority"), // 우선순위
                        key : "PRIORITY",
                        width : "width-80-p",
                        position : 2,
                        display : true
                    }, {
                        name : $filter("translate")("common.importance"), // 중요도
                        key : "SEVERITY",
                        width : "width-80-p",
                        position : 3,
                        display : true
                    }, {
                        name : $filter("translate")("issue.issueType"), // 이슈 타입
                        key : "ISSUE_TYPE",
                        width : "width-140-p",
                        position : 4,
                        display : true
                    }, {
                        name : $filter("translate")("common.assigneeTeam"), // 담당부서
                        key : "ASSIGNEE_TEAM",
                        width : "width-140-p",
                        position : 5,
                        display : true
                    }];
                }
                //  최초 실행
                function startExecute() {
                    // 파라미터 읽기
@@ -1091,38 +1226,7 @@
                                });
                            }
                            else {
                                //  최초 업무 공간에 들어왔을 경우
                                $scope.vm.issueTableConfigs = [{
                                    name : $filter("translate")("issue.issueTitle"), // 이슈 제목
                                    key : "ISSUE_TITLE",
                                    width : "width-140-p",
                                    position : 1,
                                    display : true
                                }, {
                                    name : $filter("translate")("common.priority"), // 우선순위
                                    key : "PRIORITY",
                                    width : "width-80-p",
                                    position : 2,
                                    display : true
                                }, {
                                    name : $filter("translate")("common.importance"), // 중요도
                                    key : "SEVERITY",
                                    width : "width-80-p",
                                    position : 3,
                                    display : true
                                }, {
                                    name : $filter("translate")("issue.issueType"), // 이슈 타입
                                    key : "ISSUE_TYPE",
                                    width : "width-140-p",
                                    position : 4,
                                    display : true
                                }, {
                                    name : $filter("translate")("common.assigneeTeam"), // 담당부서
                                    key : "ASSIGNEE_TEAM",
                                    width : "width-140-p",
                                    position : 5,
                                    display : true
                                }];
                                $scope.fn.setDefaultTableConfig();
                            }
                            //  이슈 테이블 설정