OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-23 b6be6b9f2d2bfaa73e5ead9f1e6c198a6811399a
이슈 상세 연관,하위 테이블 표시 설정 - [프론트]
7개 파일 변경됨
260 ■■■■■ 파일 변경됨
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js 7 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueDetail.controller.js 204 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueDownTableConfig.html 16 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueRelationTableConfig.html 18 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
@@ -266,10 +266,10 @@
                                            makeTag += '<div owl-profile-over class="" table-user-image="data" target="userVos"></div>';
                                            break;
                                        // case "ISSUE_DEPARTMENT" :
                                        //     scope.data.registsrVos = [scope.data.registerVo];
                                        //     makeTag += '<div owl-profile-over class="" table-user-image="data" target="departmentVos"></div>';
                                        //     break;
                                        case "ISSUE_DEPARTMENT" :
                                            scope.data.registsrVos = [scope.data.registerVo];
                                            makeTag += '<div owl-profile-over class="" table-user-image="data" target="departmentVos"></div>';
                                            break;
                                        case "REGISTER" :
                                            scope.data.registsrVos = [scope.data.registerVo];
src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js
@@ -99,10 +99,11 @@
                        if (result.data.message.status === "success") {
                            SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "이슈 테이블 설정 저장 완료", "이슈 테이블 설정 정보가 저장되었습니다."
                            //  변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다.
                            $rootScope.$broadcast("getDownIssueTableConfigs", {});
                            swal.close();
                            $scope.fn.cancel();
                            //  변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다.
                            $rootScope.$broadcast("getDownIssueTableConfigs", {});
                        }
                        else {
                            SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패
src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js
@@ -11,6 +11,7 @@
        app.controller('issueAddRelationTableConfigController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', 'IssueTableConfig', 'CustomField', '$q', '$filter',
            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, IssueTableConfig, CustomField, $q, $filter) {
                //  함수 모음
                $scope.fn = {
                    cancel : cancel,    //  팝업 창 닫기
@@ -105,10 +106,12 @@
                        if (result.data.message.status === "success") {
                            SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "이슈 테이블 설정 저장 완료", "이슈 테이블 설정 정보가 저장되었습니다."
                            //  변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다.
                            $rootScope.$broadcast("getRelIssueTableConfigs", {});
                            swal.close();
                            $scope.fn.cancel();
                            //  변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다.
                            $rootScope.$broadcast("getRelIssueTableConfigs", {});
                        }
                        else {
                            SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패
src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
@@ -93,9 +93,9 @@
                            SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "이슈 테이블 설정 저장 완료", "이슈 테이블 설정 정보가 저장되었습니다."
                            //  변경된 이슈 테이블 정보를 이슈 목록 테이블에 갱신한다.
                            $rootScope.$broadcast("getIssueTableConfigs", {});
                            swal.close();
                            $scope.fn.cancel();
                            $rootScope.$broadcast("getIssueTableConfigs", {});
                        }
                        else {
                            SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // 이슈 테이블 설정 저장 실패
src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -15,7 +15,7 @@
                $scope.fn.getIssueDetail = getIssueDetail;  //  이슈 상세 정보 가져오기
                $scope.fn.setRelTableColumn = setRelTableColumn;
                $scope.fn.setTableColumnDown = setTableColumnDown;
                $scope.fn.setDownTableColumn = setDownTableColumn;
                $scope.fn.addComment = addComment;  //  댓글 등록
                $scope.fn.removeComment = removeComment;    //  댓글 삭제
                $scope.fn.getCommentList = getCommentList;  //  댓글 목록 가져오기
@@ -39,6 +39,7 @@
                $scope.fn.addRelationIssueTableConfig = addRelationIssueTableConfig;      // 연관 이슈 목록 테이블 설정
                $scope.fn.addDownIssueTableConfig = addDownIssueTableConfig;      // 하위 이슈 목록 테이블 설정
                $scope.fn.getRelTableConfigs = getRelTableConfigs;
                $scope.fn.getDownTableConfigs = getDownTableConfigs;
                //  이슈 목록 컨트롤러 vm, fn 상속 중
                $scope.vm.viewer = {};
@@ -299,39 +300,23 @@
                    }
                }
                //  하위 이슈 테이블 설정
                function makeTableConfigsDown() {
                    $scope.vm.downTableConfigs = [];
                    $scope.vm.downTableConfigs.push($tableProvider.config()
                        .setHName("issue.downIssueTitle")
                        .setDType("renderer")
                        .setHWidth("width-60 bold")
                        .setHSort(false)
                        .setDRenderer("ISSUE_DOWN_MOVE"))
                    $scope.vm.downTableConfigs.push($tableProvider.config()
                        .setHName("issue.relationIssueDelete")
                        .setDType("renderer")
                        .setHWidth("width-10 bold")
                        .setDRenderer("ISSUE_DOWN_DELETE")
                        .setHSort(false)
                        .setDAlign("text-center"))
                    angular.forEach($scope.vm.relTableConfigs, function (issueTableConfig) {
                        //  표시 대상인 컬럼만 화면에 그려준다.
                        if (issueTableConfig.display) {
                            //  테이블의 컬럼을 만들어준다.
                            $scope.fn.setTableColumnDown(issueTableConfig);
                        }
                    });
                }
                //  테이블의 컬럼을 만들어준다.
                function setTableColumnDown(issueTableConfig) {
                    if (issueTableConfig == null) return;
                //  테이블의 하위 이슈 컬럼을 만들어준다.
                function setDownTableColumn(issueTableConfig) {
                    // if (issueTableConfig == null) return;
                    //  일반 컬럼
                    //  하위 이슈 컬럼
                    switch(issueTableConfig.key) {
                        case "DOWN_ISSUE_TITLE" :   //  우선순위
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("issue.downIssueTitle")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDRenderer("ISSUE_DOWN_MOVE"));
                            break;
                        case "PRIORITY" :   //  우선순위
                            $scope.vm.tableConfigs.push($tableProvider.config()
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("common.priority")
                                .setDName("priorityName")
                                .setDType("renderer")
@@ -340,7 +325,7 @@
                                .setDRenderer("COMMON_PRIORITY"));
                            break;
                        case "SEVERITY" :   //  중요도
                            $scope.vm.tableConfigs.push($tableProvider.config()
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("common.importance")
                                .setDName("severityName")
                                .setDType("renderer")
@@ -349,14 +334,14 @@
                                .setDRenderer("COMMON_SEVERITY"));
                            break;
                        case "ISSUE_TYPE" : //  이슈 타입
                            $scope.vm.tableConfigs.push($tableProvider.config()
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("issue.issueType")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDName("issueTypeName"));
                            break;
                        case "ASSIGNEE_TEAM" :   //  담당부서
                            $scope.vm.tableConfigs.push($tableProvider.config()
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("common.assigneeTeam")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
@@ -364,7 +349,7 @@
                                .setDRenderer("ISSUE_DEPARTMENT"));
                            break;
                        case "REGISTER" :   //  등록자
                            $scope.vm.tableConfigs.push($tableProvider.config()
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("common.register")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
@@ -372,7 +357,7 @@
                                .setDRenderer("REGISTER"));
                            break;
                        case "PERIOD" : //  기간
                            $scope.vm.tableConfigs.push($tableProvider.config()
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("common.period")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
@@ -380,7 +365,7 @@
                                .setDRenderer("ISSUE_DUE_DATE"));
                            break;
                        case "MODIFY_DATE" : //  최근 변경일
                            $scope.vm.tableConfigs.push($tableProvider.config()
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("common.lastChangeDate")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
@@ -395,7 +380,7 @@
                            var customField = $scope.vm.customFields[count];
                            if (customField.id === Number(issueTableConfig.key.substring(13))) {
                                $scope.vm.tableConfigs.push($tableProvider.config()
                                $scope.vm.downTableConfigs.push($tableProvider.config()
                                    .setHName(customField.name)
                                    .setDType("renderer")
                                    .setHWidth("bold " + issueTableConfig.width)
@@ -408,8 +393,11 @@
                    }
                }
                //  연관 이슈 테이블 설정
                function makeTableConfigs() {
                function makeRelTableConfigs() {
                    $scope.vm.relTableConfigs = [];
                    $scope.vm.relTableConfigs.push($tableProvider.config()
                        .setHName("issue.relationIssueType")
@@ -424,7 +412,7 @@
                        .setHSort(false)
                        .setDRenderer("ISSUE_RELATION_MOVE"))
                    angular.forEach($scope.vm.issueTableConfigs, function (issueTableConfig) {
                    angular.forEach($scope.vm.relTableConfigs, function (issueTableConfig) {
                        //  표시 대상인 컬럼만 화면에 그려준다.
                        if (issueTableConfig.display) {
                            //  테이블의 컬럼을 만들어준다.
@@ -433,9 +421,32 @@
                    });
                }
                //  하위 이슈 테이블 설정
                function makeDownTableConfigs() {
                    $scope.vm.downTableConfigs = [];
                    $scope.vm.downTableConfigs.push($tableProvider.config()
                        .setHName("issue.downIssueTitle")
                        .setDType("renderer")
                        .setHWidth("width-60 bold")
                        .setHSort(false)
                        .setDRenderer("ISSUE_DOWN_MOVE"))
                    $scope.vm.downTableConfigs.push($tableProvider.config()
                        .setHName("issue.relationIssueDelete")
                        .setDType("renderer")
                        .setHWidth("width-10 bold")
                        .setDRenderer("ISSUE_DOWN_DELETE")
                        .setHSort(false)
                        .setDAlign("text-center"))
                    angular.forEach($scope.vm.downTableConfigs, function (issueTableConfig) {
                        //  표시 대상인 컬럼만 화면에 그려준다.
                        if (issueTableConfig.display) {
                            //  테이블의 컬럼을 만들어준다.
                            $scope.fn.setDownTableColumn(issueTableConfig);
                        }
                    });
                }
                // 연관 이슈 상세 조회
                function getRelTableConfigs() {
                    var content = {
                        issueId : $scope.vm.viewer.id
@@ -466,7 +477,47 @@
                                });
                            } else {
                               makeTableConfigs();
                                makeRelTableConfigs();
                            }
                        } else {
                            SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "이동 가능한 이슈 상태 목록 조회 오류"
                        }
                    });
                }
                // 하위 이슈 상세 조회
                function getDownTableConfigs() {
                    var content = {
                        issueId : $scope.vm.viewer.id
                    };
                    IssueTableConfig.downDetail($resourceProvider.getContent(
                        content,
                        $resourceProvider.getPageContent(0, 0))).then(function (result) {
                        if (result.data.message.status === "success") {
                            var issueTableConfigs = result.data.data;
                            //  연관 슈 목록 테이블 설정 값을 가져와서 적용한다.
                            if ($rootScope.isDefined(issueTableConfigs)) {
                                //  이슈 테이블 설정 정보를 저장 한다.
                                $scope.vm.issueDownTableConfigs = [];
                                $scope.vm.issueDownTableConfigs = JSON.parse(issueTableConfigs);
                                $scope.vm.issueDownTableConfigs.sort(function (a, b) {
                                    return a.position < b.position ? -1 : a.position > b.position ? 1 : 0;
                                });
                                angular.forEach($scope.vm.issueDownTableConfigs, function (issueTableConfig) {
                                    //  표시 대상인 컬럼만 화면에 그려준다.
                                    if (issueTableConfig.display) {
                                        //  테이블의 컬럼을 만들어준다.
                                        $scope.fn.setDownTableColumn(issueTableConfig);
                                    }
                                });
                            } else {
                                makeDownTableConfigs();
                            }
                        }
@@ -474,10 +525,37 @@
                            SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "이동 가능한 이슈 상태 목록 조회 오류"
                        }
                    });
                }
                // 연관 이슈 추가
                function addRelationIssue() {
                    if ($scope.vm.issueName.length == 0 || $scope.vm.form.issues.length == 0
                        || $scope.vm.issueName != $scope.vm.form.issues[0].title) {
                        SweetAlert.error($filter("translate")("issue.errorSelectRelationIssue"), "");
                        return;
                    }
                    var contents = {
                        relationIssueType : $scope.vm.relationIssueType.id,
                        issueId : $rootScope.currentDetailIssueId,
                        relationIssueId : $scope.vm.form.issues[0].id
                    };
                    IssueRelation.add($resourceProvider.getContent(
                        contents,
                        $resourceProvider.getPageContent(0, 10))).then(function (result) {
                        if (result.data.message.status === "success") {
                            $scope.fn.getIssueDetail();
                        }
                        else {
                            SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueRelation"), result.data.message.message); // "연관일감 생성 실패"
                        }
                    });
                }
                // 하위 이슈 추가
                function addDownIssue() {
@@ -505,35 +583,6 @@
                        }
                    });
                }
                // 연관 이슈 추가
                function addRelationIssue() {
                    if ($scope.vm.issueName.length == 0 || $scope.vm.form.issues.length == 0
                    || $scope.vm.issueName != $scope.vm.form.issues[0].title) {
                        SweetAlert.error($filter("translate")("issue.errorSelectRelationIssue"), "");
                        return;
                    }
                    var contents = {
                        relationIssueType : $scope.vm.relationIssueType.id,
                        issueId : $rootScope.currentDetailIssueId,
                        relationIssueId : $scope.vm.form.issues[0].id
                    };
                    IssueRelation.add($resourceProvider.getContent(
                        contents,
                        $resourceProvider.getPageContent(0, 10))).then(function (result) {
                        if (result.data.message.status === "success") {
                            $scope.fn.getIssueDetail();
                        }
                        else {
                            SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueRelation"), result.data.message.message); // "연관일감 생성 실패"
                        }
                    });
                }
                //  이슈명을 클릭하면 이슈 상세 정보를 조회한다.
                $scope.$on("getIssueDetail", function (event, args) {
@@ -664,6 +713,7 @@
                    $scope.fn.initReload();
                    $scope.fn.getRelTableConfigs();
                    $scope.fn.getDownTableConfigs();
                    Issue.detail($resourceProvider.getContent(
                        {id : $scope.vm.viewer.id, deep : "02"},
@@ -693,22 +743,20 @@
                                $scope.vm.form.issuesDown = [];
                                $scope.vm.form.issuesDown.push(result.data.data);
                                // makeTableConfigs();
                                // $scope.vm.relTableConfigs = result.data.relTableConfigs;
                                // 연관 이슈 반복문
                                angular.forEach(result.data.data.issueRelationVos, function (issueRelationVo){
                                    issueRelationVo.relationIssueTypeName = $scope.vm.relationIssueTypes[issueRelationVo.relationIssueType].name;
                                    $scope.vm.form.issues.push(issueRelationVo.issueRelation);
                                });
                                // makeTableConfigsDown();
                                // $scope.vm.downTableConfigs = result.data.downTableConfigs;
                                // 하위 이슈 반목문
                                angular.forEach(result.data.data.issueDownVos, function (issueDownVo){
                                    $scope.vm.form.issuesDown.push(issueDownVo.issue);
                                });
                                $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos;
                                $scope.vm.viewer.issueDownVos = result.data.data.issueDownVos;
                            }
                        }
                        else {
src/main/webapp/views/issue/issueDownTableConfig.html
@@ -28,14 +28,14 @@
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td class="text-center">
                        <span class="bold" translate="issue.issueTitle">이슈 제목</span>
                    </td>
                    <td class="text-center" colspan="3">
                        <span class="text-danger bold" translate="issue.cannotChangedIssueTitle">이슈 제목은 변경할 수 없습니다.</span>
                    </td>
                </tr>
<!--                <tr>-->
<!--                    <td class="text-center">-->
<!--                        <span class="bold" translate="issue.issueTitle">이슈 제목</span>-->
<!--                    </td>-->
<!--                    <td class="text-center" colspan="3">-->
<!--                        <span class="text-danger bold" translate="issue.cannotChangedIssueTitle">이슈 제목은 변경할 수 없습니다.</span>-->
<!--                    </td>-->
<!--                </tr>-->
                <tr ng-repeat="issueTableConfig in vm.issueTableConfigs">
                    <td class="text-center">
                        <span class="bold">{{issueTableConfig.name}}</span>
src/main/webapp/views/issue/issueRelationTableConfig.html
@@ -28,14 +28,14 @@
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td class="text-center">
                        <span class="bold" translate="issue.issueTitle">이슈 제목</span>
                    </td>
                    <td class="text-center" colspan="3">
                        <span class="text-danger bold" translate="issue.cannotChangedIssueTitle">이슈 제목은 변경할 수 없습니다.</span>
                    </td>
                </tr>
<!--                <tr>-->
<!--                    <td class="text-center">-->
<!--                        <span class="bold" translate="issue.issueTitle">이슈 제목</span>-->
<!--                    </td>-->
<!--                    <td class="text-center" colspan="3">-->
<!--                        <span class="text-danger bold" translate="issue.cannotChangedIssueTitle">이슈 제목은 변경할 수 없습니다.</span>-->
<!--                    </td>-->
<!--                </tr>-->
                <tr ng-repeat="issueTableConfig in vm.issueTableConfigs">
                    <td class="text-center">
                        <span class="bold">{{issueTableConfig.name}}</span>
@@ -89,7 +89,7 @@
        <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span translate="common.close">닫기</span></button>
        <button type="button" class="btn btn-md btn-primary bold"
                ng-disabled="fn.formCheck(issueTableConfigForm.$invalid)"
                ng-click="fn.formSubmit()"><span translate="common.save">저장</span>
                ng-click="fn.formSubmit()"><span translate="common.save"><a href="issueListNormal.html">저장</a></span>
        </button>
    </div>
</div>