OWL ITS + 탐지시스템(인터넷 진흥원)
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,8 +20,11 @@
                    changePageRowCount : changePageRowCount,    //  페이지 변경
                    makeTableConfigs : makeTableConfigs, //  테이블 설정
                    setTableColumn : setTableColumn,    //  테이블의 컬럼을 만들어준다.
                    setTreeColumn : setTreeColumn,
                    add : add,   //  이슈 생성
                    modify : modify,    //  이슈 수정
                    addRelationIssueForm : addRelationIssueForm,    //  연관 이슈 추가
                    addDownIssueForm : addDownIssueForm,    //  하위 이슈 추가
                    modifyMultiIssueStatus : modifyMultiIssueStatus,    //  이슈 다중 상태 변경
                    removes : removes,  //  이슈 삭제
                    addIssueTableConfig : addIssueTableConfig,    //  이슈 목록 테이블 설정
@@ -37,17 +40,23 @@
                    getVmSearchObject : getVmSearchObject,  //  저장한 검색 조건을 가져와서 vm 에 셋팅한다.
                    makeSearchConditions : makeSearchConditions,    //  검색 조건을 만든다.
                    getIssueTableConfigs : getIssueTableConfigs,  //  사용자 이슈 목록 테이블 설정 값을 가져와서 적용한다.
                    startExecute : startExecute //  컨트롤 로딩시 처음으로 시작되는 함수
                    startExecute : startExecute, //  컨트롤 로딩시 처음으로 시작되는 함수
                    getResponseData : getResponseData, //  컨트롤 로딩시 처음으로 시작되는 함수
                    onClickListMode : onClickListMode,   // 리스트 모드 변경시 실행되는 함수
                    setDefaultTableConfig : setDefaultTableConfig // 기본 테이블 설정 세팅
                };
                //  변수
                $scope.vm = {
                    projectId : "",
                    issueTypeId : "",
                    partnerVos : "",
                    search : {
                        keyWord : "", //  검색
                        title : "", //  제목
                        description : "",   //  내용
                        combinationIssueNumber : "",   //  이슈 번호
                        issueNumber : "",
                        projectType : "BTS_PROJECT",    //  프로젝트 유형
                        registerDateRange : "", //  등록일 기간 검색
                        startDateRange : "",    //  시작일 기간 검색
@@ -57,6 +66,9 @@
                        issueStatusIds : [],    //  이슈 상태 검색
                        issueTypeIds : []   //  이슈 유형 검색
                    },
                    searchAll : {
                        keyWord : "", //  전체 검색
                    },
                    searchView : false, //  상세 검색 조건 표시 여부
                    detailView : false, //  상세 모드 변경 값
                    page : {
@@ -64,6 +76,7 @@
                        selectedPageRowCount : String(10)
                    },
                    tableConfigs : [],  //  테이블 셋팅 정보
                    treeConfigs : [], // 트리 셋팅 정보
                    responseData : {
                        data : []
                    },
@@ -81,7 +94,11 @@
                    registers : [], //  등록자
                    customFields : [],  //  사용자 정의 필드
                    issueTableConfigs : [],  //  이슈 테이블 설정
                    parentIssueId : ""
                    issueTreeConfigs : [],  //  이슈 테이블 설정
                    parentIssueId : "",
                    hideCompleteIssue : false,
                    hideDownIssue : true,
                    listMode : 0, // 목록 모드 0:기본 리스트 1:트리구조 리스트
                };
                //  테이블 이벤트
@@ -91,17 +108,38 @@
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                // 이슈목록 새로고침 목록 갱신
                $scope.$on("findIssueListOK", function (event, args) {
                    if (args != null) {
                        $scope.fn.startExecute();
                    }
                });
                //  이슈 목록 데이터 갱신
                $scope.$on("getIssueList", function () {
                    $scope.fn.getPageList($scope.vm.page.selectedPage - 1);
                });
                // 이슈 목록 새로고침
                $rootScope.$on("getIssueList", function (event, args) {})
                //  이슈 테이블 설정 정보 갱신
                $scope.$on("getIssueTableConfigs", function () {
                    $scope.fn.startExecute();
                });
                $scope.$on("changedIssueListMenu", function (event, args) {
                    $scope.fn.getPageList($scope.vm.page.selectedPage - 1);
                });
                // 상단 검색시
                $rootScope.$on("searchIssueList", function (event, args) {
                    $scope.vm.searchAll.keyWord = args.keyWord;
                    $scope.fn.getPageList(0);
                });
                //  검색 조건을 기억한다. - 적용 보류
                //  검색 조건을 기억해서 이슈 상세 페이지로 이동
                function makeVmSearchObject() {
                    var content = {
                        conditions : JSON.stringify({
@@ -136,10 +174,10 @@
                                var issueListSearchObject = JSON.parse(result.data.data);
                                //  이슈 번호만 적용한다. - 삭제시 처리방법때문에 다른 속성은 적용 보류
                                $scope.vm.search = issueListSearchObject.search;
                                $scope.vm.users = issueListSearchObject.users;
                                $scope.vm.departments = issueListSearchObject.departments;
                                $scope.vm.projects = issueListSearchObject.projects;
                                $scope.vm.registers = issueListSearchObject.registers;
                                // $scope.vm.users = issueListSearchObject.users;
                                // $scope.vm.departments = issueListSearchObject.departments;
                                // $scope.vm.projects = issueListSearchObject.projects;
                                // $scope.vm.registers = issueListSearchObject.registers;
                                $scope.fn.getPageList(0, true);
                            } else {
@@ -167,10 +205,11 @@
                    //  현재 상세화면으로 보려고하는 이슈 id를 기억한다.
                    $rootScope.currentDetailIssueId = id;
                    //  이슈 상세 화면 요청
                    $rootScope.$broadcast("getIssueDetail", {
                        id : id
                    });
                    // $scope.$broadcast("getIssueDetail", {
                    //     id : id
                    // });
                }
                //  목록 화면으로 변경한다.
                function listView() {
@@ -181,11 +220,13 @@
                    $scope.vm.responseData.data = angular.copy(temp);
                    //  마지막으로 보고있던 이슈 id를 초기화한다.
                    $rootScope.currentDetailIssueId = null;
                    $scope.$broadcast("getIssueList", {id: $rootScope.currentDetailIssueId});
                }
                //  이슈 테이블 설정
                function makeTableConfigs() {
                    $scope.vm.tableConfigs = [];
                    $scope.vm.treeConfigs = [];
                    $scope.vm.tableConfigs.push($tableProvider.config()
                        .setDType("checkbox")
@@ -193,29 +234,97 @@
                        .setDAlign("text-center"));
                    //  상세형 일때때
                   if ($scope.vm.detailView) {
                        $scope.vm.tableConfigs.push($tableProvider.config()
                            .setHName("issue.issueTitle")
                            .setDName("title")
                            .setDType("renderer")
                            .setHWidth("width-100 bold")
                            .setDRenderer("ISSUE_DETAIL_FLOATING"));
                    }
                    else {
                       $scope.vm.tableConfigs.push($tableProvider.config()
                           .setHName("issue.issueTitle")
                           .setDName("title")
                           .setDType("renderer")
                           .setHWidth("bold")
                           .setDRenderer("ISSUE_DETAIL_FLOATING"));
                   // if ($scope.vm.detailView) {
                   //      $scope.vm.tableConfigs.push($tableProvider.config()
                   //          .setHName("issue.issueTitle")
                   //          .setDName("title")
                   //          .setDType("renderer")
                   //          .setHWidth("bold")
                   //          .setDRenderer("ISSUE_DETAIL_FLOATING"));
                   //  }
                   //  else {
                   //     $scope.vm.tableConfigs.push($tableProvider.config()
                   //         .setHName("issue.issueTitle")
                   //         .setDName("title")
                   //         .setDType("renderer")
                   //         .setHWidth("bold")
                   //         .setDRenderer("ISSUE_DETAIL_FLOATING"));
                   //
                   //      angular.forEach($scope.vm.issueTableConfigs, function (issueTableConfig) {
                   //          //  표시 대상인 컬럼만 화면에 그려준다.
                   //          if (issueTableConfig.display) {
                   //              //  테이블의 컬럼을 만들어준다.
                   //              $scope.fn.setTableColumn(issueTableConfig);
                   //          }
                   //      });
                   //  }
                    angular.forEach($scope.vm.issueTableConfigs, function (issueTableConfig) {
                        //  표시 대상인 컬럼만 화면에 그려준다.
                        if (issueTableConfig.display) {
                            //  테이블의 컬럼을 만들어준다.
                            $scope.fn.setTableColumn(issueTableConfig);
                            $scope.fn.setTreeColumn(issueTableConfig);
                        }
                    });
                }
                        angular.forEach($scope.vm.issueTableConfigs, function (issueTableConfig) {
                            //  표시 대상인 컬럼만 화면에 그려준다.
                            if (issueTableConfig.display) {
                                //  테이블의 컬럼을 만들어준다.
                                $scope.fn.setTableColumn(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;
                            }
                        });
                        }
                    }
                }
@@ -224,10 +333,20 @@
                    //  일반 컬럼
                    switch(issueTableConfig.key) {
                        case "ISSUE_TITLE" :   //  이슈 제목
                            $scope.vm.tableConfigs.push($tableProvider.config()
                                .setHName("issue.issueTitle")
                                .setDName("issueTitle")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDRenderer("ISSUE_TITLE"));
                            break;
                        case "PRIORITY" :   //  우선순위
                            $scope.vm.tableConfigs.push($tableProvider.config()
                                .setHName("common.priority")
                                .setDName("priorityName")
                                .setDName("priority")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
@@ -236,22 +355,25 @@
                        case "SEVERITY" :   //  중요도
                            $scope.vm.tableConfigs.push($tableProvider.config()
                                .setHName("common.importance")
                                .setDName("severityName")
                                .setDName("severity")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDRenderer("COMMON_SEVERITY"));
                            break;
                        case "ISSUE_TYPE" : //  이슈 타입
                        case "ISSUE_TYPE" : //  이슈 유형
                            $scope.vm.tableConfigs.push($tableProvider.config()
                                .setHName("issue.issueType")
                                .setDName("issueType")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDName("issueTypeName"));
                                .setDRenderer("COMMON_ISSUE_TYPE"));
                            break;
                        case "ASSIGNEE_TEAM" :   //  담당부서
                            $scope.vm.tableConfigs.push($tableProvider.config()
                                .setHName("common.assigneeTeam")
                                .setDName("assigneeTeam")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
@@ -260,6 +382,7 @@
                        case "REGISTER" :   //  등록자
                            $scope.vm.tableConfigs.push($tableProvider.config()
                                .setHName("common.register")
                                .setDName("register")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
@@ -268,6 +391,7 @@
                        case "PERIOD" : //  기간
                            $scope.vm.tableConfigs.push($tableProvider.config()
                                .setHName("common.period")
                                .setDName("period")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
@@ -279,6 +403,15 @@
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDName("modifyDate"));
                            break;
                        case "COUNT_DOWN_ISSUE" : //  하위 이슈 개수
                            $scope.vm.tableConfigs.push($tableProvider.config()
                                .setHName("common.countDownIssue")
                                .setDName("countDownIssue")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDRenderer("DOWN_ISSUE_COUNT"));
                            break;
                    }
@@ -292,6 +425,7 @@
                                $scope.vm.tableConfigs.push($tableProvider.config()
                                    .setHName(customField.name)
                                    .setDType("renderer")
                                    .setDName("customFieldName" + [count])
                                    .setHWidth("bold " + issueTableConfig.width)
                                    .setDAlign("text-center")
                                    .setColumnHint(customField)
@@ -320,8 +454,10 @@
                //  이슈 검색 조건을 만든다.
                function makeSearchConditions() {
                    var conditions = {
                        keyWord : $scope.vm.search.keyWord,
                        title : $scope.vm.search.title,
                        description : $scope.vm.search.description,
                        issueNumber : $scope.vm.search.issueNumber,
                        projectType : $scope.vm.search.projectType,
                        combinationIssueNumber : $scope.vm.search.combinationIssueNumber.trim(),
                        beginRegisterDate : "",
@@ -330,6 +466,9 @@
                        endStartDate : "",
                        beginCompleteDate : "",
                        endCompleteDate : "",
                        hideCompleteIssue: $scope.vm.hideCompleteIssue,
                        hideDownIssue : $scope.vm.hideDownIssue,
                        isTree : $scope.vm.listMode === 1,
                        projectIds : (function () {
                            var projectIds = [];
@@ -450,10 +589,27 @@
                    return conditions;
                }
                function getTreeList() {
                }
                //  이슈 목록을 조회한다.
                function getPageList(selectedPage, detail = false) {
                function getPageList(selectedPage, detail = false, keyWord = "") {
                    $rootScope.spinner = true;  //  프로그래스 바
                    if (selectedPage < 0) {
                        selectedPage = 0;
                    }
                    if (keyWord !== "") {
                        $scope.vm.search.keyWord = keyWord;
                    }
                    if ($scope.vm.hideCompleteIssue) {
                        $scope.vm.hideCompleteIssue = true;
                    }
                    if ($scope.vm.hideDownIssue) {
                        $scope.vm.hideDownIssue = true;
                    }
                    //  현재 페이지 정보
                    var currentPage = 0;
@@ -466,26 +622,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.vm.search.issueTypeIds = [];
                    $scope.vm.projects = [];
                    if ($scope.vm.searchAll.keyWord == null || $scope.vm.searchAll.keyWord === "") {
                        // 메뉴에서 선택된 이슈 유형을 기본으로 추가
                        if ($rootScope.issueTypeMenu != null) {
                            //$scope.vm.pageTitle = $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);
                            $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);
                            }
                        }
                        //$scope.vm.searchAll.keyWord = "";
                    }
                    //  이슈 검색 조건을 만든다.
@@ -496,13 +657,64 @@
                        if (result.data.message.status === "success") {
                            if (result.data.data !=  null && result.data.data.length > 0) {
                                //var resultSize = result.data.data.length;
                                for (var i = 0; i < result.data.data.length; i++) {
                                    /*if (result.data.data[i].parentIssueId != null) {//하위이슈는 리스트에서 삭제
                                        result.data.data.splice(i, 1);
                                        i--;
                                    }else*/
                                    if ($scope.vm.search.issueTypeIds !== null && $scope.vm.search.issueTypeIds.length > 0
                                                && result.data.data[i].issueTypeId !== $scope.vm.search.issueTypeIds[0].fieldKey) { //이슈타입 체크
                                        result.data.data.splice(i, 1);
                                        i--;
                                    }
                                }
                            }
                            if (result.data.data !=  null && result.data.data.length > 0) {
                                $scope.vm.issueTypeId = result.data.data[0].issueTypeId;
                                $scope.vm.projectKey = result.data.data[0].projectKey;
                                $scope.vm.issueNumber = result.data.data[0].issueNumber;
                                $scope.vm.projectName = result.data.data[0].projectName;
                                $scope.vm.page.selectedPage = currentPage + 1;
                                $scope.vm.responseData = result.data;
                                if (detail) {
                                    changeDetailView(result.data.data[0].id);
                                }
                            } else {
                                $scope.vm.responseData = result.data;
                            }
                        }
                        else {
                            SweetAlert.error($filter("translate")("issue.failedIssueLookup"), result.data.message.message); // 이슈 조회 실패
                        }
                        $rootScope.spinner = false;  //  프로그래스 바
                    });
                }
                function getResponseData() {
                    return $scope.data;
                }
                // 이메일 프로젝트 경로로 이동 후 상세 진입시 조회
                function getDetailList(projectKey, number) {
                    var conditions = {
                        projectKey : projectKey,
                        combinationIssueNumber : number
                    };
                    Issue.find($resourceProvider.getContent(conditions,
                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
                        if (result.data.message.status === "success") {
                            if (result.data.data !=  null && result.data.data.length > 0) {
                                $scope.vm.projectKey = result.data.data[0].projectKey;
                                $scope.vm.issueNumber = result.data.data[0].issueNumber;
                                $scope.vm.responseData = result.data;
                                changeDetailView(result.data.data[0].id);
                            }
                        }
                        else {
@@ -557,6 +769,7 @@
                    angular.forEach($scope.vm.responseData.data, function (data) {
                        if (data.checked) {
                            issueIds.push(data.id);
                            $scope.vm.projectId = data.projectId;
                        }
                    });
@@ -573,7 +786,8 @@
                        resolve : {
                            parameter : function () {
                                return {
                                    issueIds : issueIds
                                    issueIds : issueIds,
                                    projectId : $scope.vm.projectId
                                };
                            }
                        }
@@ -590,7 +804,39 @@
                        resolve : {
                            parameter : function () {
                                return {
                                    id : id
                                    id : id,
                                };
                            }
                        }
                    });
                }
                function addRelationIssueForm(id) {
                    $uibModal.open({
                        templateUrl : 'views/issue/issueAddRelation.html',
                        size : "lg",
                        controller : 'issueAddRelationController',
                        backdrop : 'static',
                        resolve : {
                            parameter : function () {
                                return {
                                    id : id,
                                };
                            }
                        }
                    });
                }
                function addDownIssueForm(id) {
                    $uibModal.open({
                        templateUrl : 'views/issue/issueAddDown.html',
                        size : "lg",
                        controller : 'issueAddDownController',
                        backdrop : 'static',
                        resolve : {
                            parameter : function () {
                                return {
                                    id : id,
                                };
                            }
                        }
@@ -601,6 +847,7 @@
                function removes() {
                    var removeIds = [];
                    var removePermission = true;
                    var downIssueIds = false;
                    angular.forEach($scope.vm.responseData.data, function (data) {
                        if (data.checked && data.modifyPermissionCheck) {
@@ -609,6 +856,10 @@
                        if (data.checked && !data.modifyPermissionCheck) {
                            removePermission = false;
                        }
                        if (data.downIssueAllCount > 0){
                            downIssueIds = true;
                        }
                    });
@@ -631,25 +882,23 @@
                        return;
                    }
                    //  삭제 알림
                    SweetAlert.swal({
                            title : $filter("translate")("issue.deleteIssue"), // 이슈 삭제
                            text : $filter("translate")("issue.wantToDeleteSelectIssue"), // 선택한 이슈을 삭제하겠습니까? 삭제된 이슈은 복구할 수 없습니다.
                    if (downIssueIds) {
                        SweetAlert.swal({
                            title : $filter("translate")("common.deleteIssue"), // 이슈 삭제
                            text : $filter("translate")("issue.wantToDeleteSelectDownIssue"), // 하위 이슈가 존재 합니다. 선택한 이슈와 하위 이슈 모두 삭제하겠습니까? 삭제된 이슈는 복구할 수 없습니다.
                            type : "warning",
                            showCancelButton : true,
                            confirmButtonColor : "#DD6B55",
                            confirmButtonText : $filter("translate")("common.delete"), // 삭제
                            cancelButtonText : $filter("translate")("common.cancel"), // 취소
                            closeOnConfirm : false,
                            closeOnCancel : true
                            closeOnCancel : false
                        },
                        function (isConfirm) {
                            SweetAlert.close();
                            if (isConfirm) {
                            if (isConfirm) { //이슈 + 하위 삭제
                                $rootScope.spinner = true;
                                Issue.remove($resourceProvider.getContent(
                                Issue.removeAllIssues($resourceProvider.getContent(
                                    { removeIds : removeIds },
                                    $resourceProvider.getPageContent(0, 0))).then(function (result) {
@@ -657,9 +906,7 @@
                                        $timeout(function () {
                                            SweetAlert.success($filter("translate")("common.deleteSucceeded"), result.data.message.message); // 삭제 성공
                                        }, 100);
                                        $scope.fn.listView();
                                        $scope.fn.getPageList(0);
                                    }
                                    else {
@@ -667,11 +914,96 @@
                                            SweetAlert.error($filter("translate")("common.deleteFailed"), result.data.message.message); // 삭제 실패
                                        }, 100);
                                    }
                                    $rootScope.spinner = false;
                                });
                            } else {//  선택 한 이슈만 삭제
                                //  삭제 알림
                                SweetAlert.swal({
                                        title : $filter("translate")("issue.deleteIssue"), // 이슈 삭제
                                        text : $filter("translate")("issue.wantToDeleteOnlySelectIssue"), // 선택한 이슈만 삭제하겠습니까? 삭제된 이슈은 복구할 수 없습니다.
                                        type : "warning",
                                        showCancelButton : true,
                                        confirmButtonColor : "#DD6B55",
                                        confirmButtonText : $filter("translate")("common.delete"), // 삭제
                                        cancelButtonText : $filter("translate")("common.cancel"), // 취소
                                        closeOnConfirm : false,
                                        closeOnCancel : true
                                    },
                                    function (isConfirm) {
                                        SweetAlert.close();
                                        if (isConfirm) {
                                            $rootScope.spinner = true;
                                            Issue.remove($resourceProvider.getContent(
                                                { removeIds : removeIds },
                                                $resourceProvider.getPageContent(0, 0))).then(function (result) {
                                                if (result.data.message.status === "success") {
                                                    $timeout(function () {
                                                        SweetAlert.success($filter("translate")("common.deleteSucceeded"), result.data.message.message); // 삭제 성공
                                                    }, 100);
                                                    $scope.fn.listView();
                                                    $scope.fn.getPageList(0);
                                                }
                                                else {
                                                    $timeout(function () {
                                                        SweetAlert.error($filter("translate")("common.deleteFailed"), result.data.message.message); // 삭제 실패
                                                    }, 100);
                                                }
                                                $rootScope.spinner = false;
                                            });
                                        }
                                    });
                            }
                        });
                    } else {
                        //  삭제 알림
                        SweetAlert.swal({
                                title : $filter("translate")("issue.deleteIssue"), // 이슈 삭제
                                text : $filter("translate")("issue.wantToDeleteSelectIssue"), // 선택한 이슈을 삭제하겠습니까? 삭제된 이슈은 복구할 수 없습니다.
                                type : "warning",
                                showCancelButton : true,
                                confirmButtonColor : "#DD6B55",
                                confirmButtonText : $filter("translate")("common.delete"), // 삭제
                                cancelButtonText : $filter("translate")("common.cancel"), // 취소
                                closeOnConfirm : false,
                                closeOnCancel : true
                            },
                            function (isConfirm) {
                                SweetAlert.close();
                                if (isConfirm) {
                                    $rootScope.spinner = true;
                                    Issue.remove($resourceProvider.getContent(
                                        { removeIds : removeIds },
                                        $resourceProvider.getPageContent(0, 0))).then(function (result) {
                                        if (result.data.message.status === "success") {
                                            $timeout(function () {
                                                SweetAlert.success($filter("translate")("common.deleteSucceeded"), result.data.message.message); // 삭제 성공
                                            }, 100);
                                            $scope.fn.listView();
                                            $scope.fn.getPageList(0);
                                        }
                                        else {
                                            $timeout(function () {
                                                SweetAlert.error($filter("translate")("common.deleteFailed"), result.data.message.message); // 삭제 실패
                                            }, 100);
                                        }
                                        $rootScope.spinner = false;
                                    });
                                }
                            });
                    }
                }
                //  이슈 목록 테이블 설정
@@ -823,6 +1155,12 @@
                            angular.forEach(result.data.data, function (customField) {
                                switch (customField.customFieldType) {
                                    case "INPUT" :
                                    case "NUMBER" :
                                    case "DATETIME" :
                                    case "IP_ADDRESS" :
                                    case "EMAIL" :
                                    case "SITE" :
                                    case "TEL" :
                                        customField.useValues = "";
                                        break;
@@ -831,29 +1169,6 @@
                                        customField.useValues = [];
                                        break;
                                    case "NUMBER" :
                                        customField.useValues = "";
                                        break;
                                    case "DATETIME" :
                                        customField.useValues = "";
                                        break;
                                    case "IP_ADDRESS" :
                                        customField.useValues = "";
                                        break;
                                    case "EMAIL" :
                                        customField.useValues = "";
                                        break;
                                    case "SITE" :
                                        customField.useValues = "";
                                        break;
                                    case "TEL" :
                                        customField.useValues = "";
                                        break;
                                }
                                $scope.vm.customFields.push(customField);
@@ -891,15 +1206,69 @@
                    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() {
                    // 파라미터 읽기
                    var params = $rootScope.previousGetParams;
                    if ($rootScope.isDefined(params)) {
                        $rootScope.$broadcast("makeIssueSearch", {  projectKey : params.projectKey, issueNumber : params.issueNumber });
                        $rootScope.previousGetParams = null;
                        $rootScope.issueTypeId = $rootScope.issueTypeMenu.id;
                        return;
                        // $rootScope.$broadcast("makeIssueSearch", {  projectKey : params.projectKey, issueNumber : params.issueNumber });
                         if (params.keyWord != null) {
                             $scope.vm.searchAll.keyWord = params.keyWord;
                             getPageList(0,false, params.keyWord);
                         }else {
                            getDetailList(params.projectKey, params.issueNumber);
                            return;
                        }
                        // $rootScope.issueTypeId = $rootScope.issueTypeMenu.id;
                    }
                    var promises = {
@@ -926,32 +1295,7 @@
                                });
                            }
                            else {
                                //  최초 업무 공간에 들어왔을 경우
                                $scope.vm.issueTableConfigs = [{
                                    name : $filter("translate")("common.priority"), // 우선순위
                                    key : "PRIORITY",
                                    width : "width-80-p",
                                    position : 1,
                                    display : true
                                }, {
                                    name : $filter("translate")("common.importance"), // 중요도
                                    key : "SEVERITY",
                                    width : "width-80-p",
                                    position : 2,
                                    display : true
                                }, {
                                    name : $filter("translate")("issue.issueType"), // 이슈 타입
                                    key : "ISSUE_TYPE",
                                    width : "width-140-p",
                                    position : 3,
                                    display : true
                                }, {
                                    name : $filter("translate")("common.assigneeTeam"), // 담당부서
                                    key : "ASSIGNEE_TEAM",
                                    width : "width-140-p",
                                    position : 4,
                                    display : true
                                }];
                                $scope.fn.setDefaultTableConfig();
                            }
                            //  이슈 테이블 설정
@@ -962,6 +1306,12 @@
                    });
                }
                // this.router.navigate(['path/to'])
                //     .then(() => {
                //         window.location.reload();
                //     });
                $scope.fn.startExecute();
            }