From e35b0c987bac49abbb77d4b31e41270cc566e54d Mon Sep 17 00:00:00 2001 From: wyu <kknd09321@nate.com> Date: 화, 23 11월 2021 09:03:02 +0900 Subject: [PATCH] 이슈 상세 연관,하위 테이블 표시 설정 - [프론트] --- src/main/java/kr/wisestone/owl/domain/enumType/IssueModifyType.java | 3 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 5 src/main/java/kr/wisestone/owl/vo/IssueVo.java | 20 ++ src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js | 44 +++- src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js | 41 ++--- src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java | 9 src/main/webapp/views/issue/issueListNormal.html | 2 src/main/webapp/scripts/app/issue/issueList.controller.js | 22 ++ src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js | 14 + src/main/webapp/scripts/app/issue/issueDetail.controller.js | 284 +++++++++++++++++++++++++++++++--- src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java | 14 + src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js | 5 12 files changed, 374 insertions(+), 89 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/domain/enumType/IssueModifyType.java b/src/main/java/kr/wisestone/owl/domain/enumType/IssueModifyType.java index 5d3027e..5fb0739 100644 --- a/src/main/java/kr/wisestone/owl/domain/enumType/IssueModifyType.java +++ b/src/main/java/kr/wisestone/owl/domain/enumType/IssueModifyType.java @@ -12,7 +12,8 @@ ISSUE_STATUS, ISSUE_TYPE, PERIOD, - ASSIGNEE, +// ASSIGNEE, + ASSIGNEE_TEAM, CUSTOM_FIELD, TITLE, DESCRIPTION diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java index 15062d7..1bb3151 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -54,6 +54,9 @@ private IssueRepository issueRepository; @Autowired + private IssueTableConfigService issueTableConfigService; + + @Autowired private ProjectService projectService; @Autowired @@ -859,8 +862,10 @@ this.setIssueIspField(issue, issueVo); //ISP �젙蹂� �꽭�똿 this.setIssueHostingField(issue, issueVo); //HOSTING �젙蹂� �꽭�똿 this.setParentIssue(issue,issueVo); //�긽�쐞 �씠�뒋 �젙蹂� �꽭�똿 + } + // �긽�쐞�씪媛� �젙蹂� 異붽� private void setParentIssue(Issue issue, IssueVo issueVo) { if(issue.getParentIssue() != null){ diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java index e777d90..7712b2d 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java @@ -113,10 +113,9 @@ private void detailMultipleCode(Map<String, Object> resJsonData, Long issueId, int issueTableType) { // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 寃��깋 議곌굔�쓣 議고쉶�븳�떎. IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceIdAndIssueIdAndIssueTableType(issueId, issueTableType); - IssueTableConfig saveIssueTableType = this.findByIssueIdAndIssueTableType(issueId,issueTableType); if (issueTableConfig != null) { - resJsonData.put(Constants.RES_KEY_CONTENTS, saveIssueTableType.getIssueTableConfigs()); + resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); } else { resJsonData.put(Constants.RES_KEY_CONTENTS, ""); @@ -129,7 +128,15 @@ public void detailIssueTableConfig(Map<String, Object> resJsonData) { issueId = (long) -1; issueTableType = 1; - this.detailMultipleCode(resJsonData, issueId, issueTableType); + // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 寃��깋 議곌굔�쓣 議고쉶�븳�떎. + IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceIdAndIssueIdAndIssueTableType(issueId, issueTableType); + + if (issueTableConfig != null) { + resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); + } + else { + resJsonData.put(Constants.RES_KEY_CONTENTS, ""); + } } // ���옣�맂 �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙 議고쉶 @Override @@ -147,4 +154,5 @@ } + } diff --git a/src/main/java/kr/wisestone/owl/vo/IssueVo.java b/src/main/java/kr/wisestone/owl/vo/IssueVo.java index 170abeb..ebf9514 100644 --- a/src/main/java/kr/wisestone/owl/vo/IssueVo.java +++ b/src/main/java/kr/wisestone/owl/vo/IssueVo.java @@ -1,6 +1,7 @@ package kr.wisestone.owl.vo; import com.google.common.collect.Lists; +import kr.wisestone.owl.domain.IssueTableConfig; import java.util.ArrayList; import java.util.List; @@ -56,6 +57,9 @@ private List<IssueCompanyVo> issueCompanyVos; private List<IssueIspVo> issueIspVos; private List<IssueHostingVo> issueHostingVos; + + private IssueTableConfig issueRelTableConfig; + private IssueTableConfig issueDownTableConfig; public IssueVo(){} @@ -426,4 +430,20 @@ public void setParentIssueVo(IssueVo parentIssueVo) { this.parentIssueVo = parentIssueVo; } + + public IssueTableConfig getIssueRelTableConfig() { + return issueRelTableConfig; + } + + public void setIssueRelTableConfig(IssueTableConfig issueRelTableConfig) { + this.issueRelTableConfig = issueRelTableConfig; + } + + public IssueTableConfig getIssueDownTableConfig() { + return issueDownTableConfig; + } + + public void setIssueDownTableConfig(IssueTableConfig issueDownTableConfig) { + this.issueDownTableConfig = issueDownTableConfig; + } } diff --git a/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java b/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java index 638d2a2..0189993 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java @@ -63,6 +63,7 @@ @ResponseBody Map<String, Object> detail() { Map<String, Object> resJsonData = new HashMap<>(); + this.issueTableConfigService.detailIssueTableConfig(resJsonData); return this.setSuccessMessage(resJsonData); @@ -72,9 +73,9 @@ @RequestMapping(value = "/issueTableConfig/relationDetail", produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody - Map<String, Object> relationDetail(@RequestBody Map<String, Object> params) { + Map<String, Object> relationDetail(@RequestBody Map<String, Map<String, Object>> params) { Map<String, Object> resJsonData = new HashMap<>(); - this.issueTableConfigService.detailRelationIssueTableConfig(params,resJsonData); + this.issueTableConfigService.detailRelationIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT), resJsonData); return this.setSuccessMessage(resJsonData); } @@ -83,9 +84,9 @@ @RequestMapping(value = "/issueTableConfig/downDetail", produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody - Map<String, Object> downDetail(@RequestBody Map<String, Object> params) { + Map<String, Object> downDetail(@RequestBody Map<String, Map<String, Object>> params) { Map<String, Object> resJsonData = new HashMap<>(); - this.issueTableConfigService.detailDownIssueTableConfig(params,resJsonData); + this.issueTableConfigService.detailDownIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT),resJsonData); return this.setSuccessMessage(resJsonData); } diff --git a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js index f29a5e2..a23128e 100644 --- a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js +++ b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js @@ -266,6 +266,11 @@ 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 "REGISTER" : scope.data.registsrVos = [scope.data.registerVo]; makeTag += '<div owl-profile-over class="" table-user-image="data" target="registsrVos"></div>'; diff --git a/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js index 99b95fa..ab50ce1 100644 --- a/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js @@ -17,7 +17,7 @@ formSubmit : formSubmit, // �뤌 �쟾�넚 formCheck : formCheck, // �뤌 泥댄겕 getCustomFields : getCustomFields, // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉�쓣 媛��졇�삩�떎. - getIssueTableConfigs : getIssueTableConfigs // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. + getDownIssueTableConfigs : getDownIssueTableConfigs // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. }; // 蹂��닔 紐⑥쓬 @@ -48,8 +48,8 @@ position : 4, display : true }, { - name : $filter("translate")("common.assignee"), // �떞�떦�옄 - key : "ASSIGNEE", + name : $filter("translate")("common.assigneeTeam"), // �떞�떦遺��꽌 + key : "ASSIGNEE_TEAM", width : "width-100-p", position : 5, display : true @@ -100,7 +100,9 @@ if (result.data.message.status === "success") { SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �셿猷�", "�씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂닿� ���옣�릺�뿀�뒿�땲�떎." // 蹂�寃쎈맂 �씠�뒋 �뀒�씠釉� �젙蹂대�� �씠�뒋 紐⑸줉 �뀒�씠釉붿뿉 媛깆떊�븳�떎. - $rootScope.$broadcast("getIssueTableConfigs", {}); + $rootScope.$broadcast("getDownIssueTableConfigs", {}); + swal.close(); + $scope.fn.cancel(); } else { SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �떎�뙣 @@ -135,7 +137,7 @@ } // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. - function getIssueTableConfigs() { + function getDownIssueTableConfigs() { var deferred = $q.defer(); var content = { issueId : $rootScope.currentDetailIssueId, @@ -170,7 +172,7 @@ }); // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. - $scope.fn.getIssueTableConfigs().then(function (issueTableConfigs) { + $scope.fn.getDownIssueTableConfigs().then(function (issueTableConfigs) { if ($rootScope.isDefined(issueTableConfigs)) { $rootScope.spinner = true; diff --git a/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js index ff5f903..0b291cb 100644 --- a/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js @@ -17,53 +17,65 @@ formSubmit : formSubmit, // �뤌 �쟾�넚 formCheck : formCheck, // �뤌 泥댄겕 getCustomFields : getCustomFields, // �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉�쓣 媛��졇�삩�떎. - getIssueTableConfigs : getIssueTableConfigs // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. + getRelIssueTableConfigs : getRelIssueTableConfigs // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. }; // 蹂��닔 紐⑥쓬 $scope.vm = { issueId: "", issueTableConfigs : [{ - name : $filter("translate")("common.priority"), // �슦�꽑�닚�쐞 - key : "PRIORITY", + name : $filter("translate")("issue.relationIssueType"), // + key : "RELATION_ISSUE_TYPE", width : "width-100-p", position : 1, + display : true + }, { + name : $filter("translate")("issue.relationIssueTitle"), // + key : "RELATION_ISSUE_TITLE", + width : "width-80-p", + position : 2, + display : true + },{ + name : $filter("translate")("common.priority"), // �슦�꽑�닚�쐞 + key : "PRIORITY", + width : "width-80-p", + position : 3, display : true }, { name : $filter("translate")("common.importance"), // 以묒슂�룄 key : "SEVERITY", width : "width-80-p", - position : 2, + position : 4, display : true }, { name : $filter("translate")("issue.issueType"), // �씠�뒋 ���엯 key : "ISSUE_TYPE", width : "width-140-p", - position : 3, + position : 5, display : true }, { - name : $filter("translate")("common.assignee"), // �떞�떦�옄 - key : "ASSIGNEE", + name : $filter("translate")("common.assigneeTeam"), // �떞�떦遺��꽌 + key : "ASSIGNEE_TEAM", width : "width-100-p", - position : 4, + position : 6, display : true }, { name : $filter("translate")("common.register"), // �벑濡앹옄 key : "REGISTER", width : "width-100-p", - position : 5, + position : 7, display : false }, { name : $filter("translate")("common.period"), // 湲곌컙 key : "PERIOD", width : "width-140-p", - position : 6, + position : 8, display : false }, { name : $filter("translate")("common.lastChangeDate"), // 理쒓렐 蹂�寃쎌씪 key : "MODIFY_DATE", width : "width-100-p", - position : 7, + position : 9, display : false }, { }] @@ -94,7 +106,9 @@ if (result.data.message.status === "success") { SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �셿猷�", "�씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂닿� ���옣�릺�뿀�뒿�땲�떎." // 蹂�寃쎈맂 �씠�뒋 �뀒�씠釉� �젙蹂대�� �씠�뒋 紐⑸줉 �뀒�씠釉붿뿉 媛깆떊�븳�떎. - $rootScope.$broadcast("getIssueTableConfigs", {}); + $rootScope.$broadcast("getRelIssueTableConfigs", {}); + swal.close(); + $scope.fn.cancel(); } else { SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �떎�뙣 @@ -129,7 +143,7 @@ } // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. - function getIssueTableConfigs() { + function getRelIssueTableConfigs() { var deferred = $q.defer(); var content = { @@ -151,7 +165,7 @@ // �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 議고쉶�븳 �썑 �몴�떆�븷 �씠�뒋 �뀒�씠釉� 而щ읆�쓣 以�鍮꾪븳�떎. $scope.fn.getCustomFields().then(function (result) { - var count = 7; + var count = 8; angular.forEach(result, function (customField) { $scope.vm.issueTableConfigs.push({ name : customField.name, @@ -165,7 +179,7 @@ }); // �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 �젙蹂대�� 媛��졇�삩�떎. - $scope.fn.getIssueTableConfigs().then(function (issueTableConfigs) { + $scope.fn.getRelIssueTableConfigs().then(function (issueTableConfigs) { if ($rootScope.isDefined(issueTableConfigs)) { $rootScope.spinner = true; diff --git a/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js b/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js index cdddd59..37e33ef 100644 --- a/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js @@ -23,59 +23,47 @@ // 蹂��닔 紐⑥쓬 $scope.vm = { issueTableConfigs : [{ - name : $filter("translate")("issue.relationIssueType"), // �뿰愿� �씠�뒋 援щ텇 - key : "RELATION_ISSUE_TYPE", - width : "width-100-p", - position : 1, - display : true - }, { - name : $filter("translate")("issue.relationIssueTitle"), // �뿰愿� �씠�뒋 �젣紐� - key : "RELATION_ISSUE_TITLE", - width : "width-80-p", - position : 2, - display : true - }, { name : $filter("translate")("common.importance"), // �슦�꽑�닚�쐞 key : "PRIORITY", width : "width-80-p", - position : 3, + position : 1, display : true }, { name : $filter("translate")("common.importance"), // 以묒슂�룄 key : "SEVERITY", width : "width-80-p", - position : 4, + position : 2, display : true }, { name : $filter("translate")("issue.issueType"), // �씠�뒋 ���엯 key : "ISSUE_TYPE", width : "width-140-p", - position : 5, + position : 3, display : true }, { - name : $filter("translate")("common.assignee"), // �떞�떦�옄 - key : "ASSIGNEE", + name : $filter("translate")("common.assigneeTeam"), // �떞�떦遺��꽌 + key : "ASSIGNEE_TEAM", width : "width-100-p", - position : 6, + position : 4, display : true }, { name : $filter("translate")("common.register"), // �벑濡앹옄 key : "REGISTER", width : "width-100-p", - position : 7, - display : false + position : 5, + display : true }, { name : $filter("translate")("common.period"), // 湲곌컙 key : "PERIOD", width : "width-140-p", - position : 8, - display : false + position : 6, + display : true }, { name : $filter("translate")("common.lastChangeDate"), // 理쒓렐 蹂�寃쎌씪 key : "MODIFY_DATE", width : "width-100-p", - position : 9, - display : false + position : 7, + display : true }, { }] }; @@ -103,8 +91,11 @@ if (result.data.message.status === "success") { SweetAlert.success($filter("translate")("issue.completedSavingIssueTable"), $filter("translate")("issue.saveIssueTableSettingsInformation")); // "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �셿猷�", "�씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂닿� ���옣�릺�뿀�뒿�땲�떎." + // 蹂�寃쎈맂 �씠�뒋 �뀒�씠釉� �젙蹂대�� �씠�뒋 紐⑸줉 �뀒�씠釉붿뿉 媛깆떊�븳�떎. $rootScope.$broadcast("getIssueTableConfigs", {}); + swal.close(); + $scope.fn.cancel(); } else { SweetAlert.error($filter("translate")("issue.failedToSaveIssueTableSetting"), result.data.message.message); // �씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �떎�뙣 @@ -156,7 +147,7 @@ // �궗�슜�옄 �젙�쓽 �븘�뱶瑜� 議고쉶�븳 �썑 �몴�떆�븷 �씠�뒋 �뀒�씠釉� 而щ읆�쓣 以�鍮꾪븳�떎. $scope.fn.getCustomFields().then(function (result) { - var count = 9; + var count = 7; angular.forEach(result, function (customField) { $scope.vm.issueTableConfigs.push({ name : customField.name, diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js index 7230150..de8343e 100644 --- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js +++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js @@ -8,12 +8,14 @@ 'angular' ], function (app, angular) { - app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', 'SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile', 'IssueStatus', '$filter', - function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, IssueStatus, $filter) { + app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', 'SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile', 'IssueStatus', 'IssueTableConfig', '$filter', + function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, IssueStatus, IssueTableConfig, $filter) { // IssueListController vm, fn 蹂��닔 �긽�냽. $scope.fn.getIssueDetail = getIssueDetail; // �씠�뒋 �긽�꽭 �젙蹂� 媛��졇�삤湲� + $scope.fn.setRelTableColumn = setRelTableColumn; + $scope.fn.setTableColumnDown = setTableColumnDown; $scope.fn.addComment = addComment; // �뙎湲� �벑濡� $scope.fn.removeComment = removeComment; // �뙎湲� �궘�젣 $scope.fn.getCommentList = getCommentList; // �뙎湲� 紐⑸줉 媛��졇�삤湲� @@ -36,6 +38,7 @@ $scope.fn.addDownIssue = addDownIssue; // �븯�쐞 �씠�뒋 異붽� $scope.fn.addRelationIssueTableConfig = addRelationIssueTableConfig; // �뿰愿� �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 $scope.fn.addDownIssueTableConfig = addDownIssueTableConfig; // �븯�쐞 �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 + $scope.fn.getRelTableConfigs = getRelTableConfigs; // �씠�뒋 紐⑸줉 而⑦듃濡ㅻ윭 vm, fn �긽�냽 以� $scope.vm.viewer = {}; @@ -197,6 +200,105 @@ $scope.vm.autoCompletePage.issue.totalPage = result.data.page.totalPage; } + // �뀒�씠釉붿쓽 �뿰愿� �씠�뒋 而щ읆�쓣 留뚮뱾�뼱以��떎. + function setRelTableColumn(issueTableConfig) { + + // �뿰愿� �씠�뒋 而щ읆 + switch(issueTableConfig.key) { + case "RELATION_ISSUE_TYPE" : + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("issue.relationIssueType") + .setDType("renderer") + .setHWidth("width-30 bold") + .setHSort(false) + .setDRenderer("ISSUE_RELATION_TYPE")) + break; + case "RELATION_ISSUE_TITLE" : + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("issue.relationIssueTitle") + .setDType("renderer") + .setHWidth("width-60 bold") + .setHSort(false) + .setDRenderer("ISSUE_RELATION_MOVE")) + break; + case "PRIORITY" : // �슦�꽑�닚�쐞 + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("common.priority") + .setDName("priorityName") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("COMMON_PRIORITY")); + break; + case "SEVERITY" : // 以묒슂�룄 + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("common.importance") + .setDName("severityName") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("COMMON_SEVERITY")); + break; + case "ISSUE_TYPE" : // �씠�뒋 ���엯 + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("issue.issueType") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDName("issueTypeName")); + break; + case "ASSIGNEE_TEAM" : // �떞�떦遺��꽌 + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("common.assigneeTeam") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("ISSUE_DEPARTMENT")); + break; + case "REGISTER" : // �벑濡앹옄 + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("common.register") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("REGISTER")); + break; + case "PERIOD" : // 湲곌컙 + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("common.period") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("ISSUE_DUE_DATE")); + break; + case "MODIFY_DATE" : // 理쒓렐 蹂�寃쎌씪 + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("common.lastChangeDate") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDName("modifyDate")); + 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.relTableConfigs.push($tableProvider.config() + .setHName(customField.name) + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setColumnHint(customField) + .setDRenderer("ISSUE_CUSTOM_FIELD_VALUE_VIEW")); + break; + } + } + } + } + // �븯�쐞 �씠�뒋 �뀒�씠釉� �꽕�젙 function makeTableConfigsDown() { $scope.vm.downTableConfigs = []; @@ -213,6 +315,97 @@ .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; + + // �씪諛� 而щ읆 + switch(issueTableConfig.key) { + case "PRIORITY" : // �슦�꽑�닚�쐞 + $scope.vm.tableConfigs.push($tableProvider.config() + .setHName("common.priority") + .setDName("priorityName") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("COMMON_PRIORITY")); + break; + case "SEVERITY" : // 以묒슂�룄 + $scope.vm.tableConfigs.push($tableProvider.config() + .setHName("common.importance") + .setDName("severityName") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("COMMON_SEVERITY")); + break; + case "ISSUE_TYPE" : // �씠�뒋 ���엯 + $scope.vm.tableConfigs.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() + .setHName("common.assigneeTeam") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("ISSUE_DEPARTMENT")); + break; + case "REGISTER" : // �벑濡앹옄 + $scope.vm.tableConfigs.push($tableProvider.config() + .setHName("common.register") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("REGISTER")); + break; + case "PERIOD" : // 湲곌컙 + $scope.vm.tableConfigs.push($tableProvider.config() + .setHName("common.period") + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDRenderer("ISSUE_DUE_DATE")); + break; + case "MODIFY_DATE" : // 理쒓렐 蹂�寃쎌씪 + $scope.vm.tableConfigs.push($tableProvider.config() + .setHName("common.lastChangeDate") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setDName("modifyDate")); + 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.tableConfigs.push($tableProvider.config() + .setHName(customField.name) + .setDType("renderer") + .setHWidth("bold " + issueTableConfig.width) + .setDAlign("text-center") + .setColumnHint(customField) + .setDRenderer("ISSUE_CUSTOM_FIELD_VALUE_VIEW")); + break; + } + } + } } // �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙 @@ -230,33 +423,61 @@ .setHWidth("width-60 bold") .setHSort(false) .setDRenderer("ISSUE_RELATION_MOVE")) - $scope.vm.relTableConfigs.push($tableProvider.config() - .setHName("issue.relationIssueDelete") - .setDType("renderer") - .setHWidth("width-10 bold") - .setDRenderer("ISSUE_RELATION_DELETE") - .setHSort(false) - .setDAlign("text-center")) + + angular.forEach($scope.vm.issueTableConfigs, function (issueTableConfig) { + // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. + if (issueTableConfig.display) { + // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. + $scope.fn.setRelTableColumn(issueTableConfig); + } + }); } - // �뿰愿� �씪媛� 紐⑸줉 媛��졇�삤湲� - // function getRelationIssueList() { - // var contents = { - // issueId : $rootScope.currentDetailIssueId, - // }; - // - // IssueRelation.find($resourceProvider.getContent( - // contents, - // $resourceProvider.getPageContent(0, 10))).then(function (result) { - // - // if (result.data.message.status === "success") { - // $scope.vm.relResponseData = result.data; - // } - // else { - // SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueRelation"), result.data.message.message); // "�뿰愿��씪媛� �깮�꽦 �떎�뙣" - // } - // }); - // } + + + + function getRelTableConfigs() { + var content = { + issueId : $scope.vm.viewer.id + }; + + IssueTableConfig.relationDetail($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.issueRelTableConfigs = []; + $scope.vm.issueRelTableConfigs = JSON.parse(issueTableConfigs); + $scope.vm.issueRelTableConfigs.sort(function (a, b) { + return a.position < b.position ? -1 : a.position > b.position ? 1 : 0; + }); + + angular.forEach($scope.vm.issueRelTableConfigs, function (issueTableConfig) { + // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. + if (issueTableConfig.display) { + // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. + $scope.fn.setRelTableColumn(issueTableConfig); + } + }); + + } else { + makeTableConfigs(); + } + + } + else { + SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "�씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 紐⑸줉 議고쉶 �삤瑜�" + } + }); + + + } + // �븯�쐞 �씠�뒋 異붽� function addDownIssue() { @@ -442,6 +663,8 @@ // 珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎. $scope.fn.initReload(); + $scope.fn.getRelTableConfigs(); + Issue.detail($resourceProvider.getContent( {id : $scope.vm.viewer.id, deep : "02"}, $resourceProvider.getPageContent(0, 1))).then(function (result) { @@ -470,13 +693,16 @@ $scope.vm.form.issuesDown = []; $scope.vm.form.issuesDown.push(result.data.data); - makeTableConfigs(); + // 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(); + // makeTableConfigsDown(); + // $scope.vm.downTableConfigs = result.data.downTableConfigs; angular.forEach(result.data.data.issueDownVos, function (issueDownVo){ $scope.vm.form.issuesDown.push(issueDownVo.issue); }); diff --git a/src/main/webapp/scripts/app/issue/issueList.controller.js b/src/main/webapp/scripts/app/issue/issueList.controller.js index 3b68c16..7a8041e 100644 --- a/src/main/webapp/scripts/app/issue/issueList.controller.js +++ b/src/main/webapp/scripts/app/issue/issueList.controller.js @@ -73,6 +73,7 @@ priorities : [], // �슦�꽑 �닚�쐞 severities : [], // 以묒슂�룄 users : [], // �떞�떦�옄 + departments : [], // �떞�떦遺��꽌 registers : [], // �벑濡앹옄 customFields : [], // �궗�슜�옄 �젙�쓽 �븘�뱶 issueTableConfigs : [], // �씠�뒋 �뀒�씠釉� �꽕�젙 @@ -103,6 +104,7 @@ search : $scope.vm.search, projects : $scope.vm.projects, users : $scope.vm.users, + departments : $scope.vm.departments, registers : $scope.vm.registers, parentIssueId : $scope.vm.parentIssueId }) @@ -130,9 +132,10 @@ var issueListSearchObject = JSON.parse(result.data.data); // �씠�뒋 踰덊샇留� �쟻�슜�븳�떎. - �궘�젣�떆 泥섎━諛⑸쾿�븣臾몄뿉 �떎瑜� �냽�꽦�� �쟻�슜 蹂대쪟 $scope.vm.search = issueListSearchObject.search; - /*$scope.vm.users = issueListSearchObject.users; + $scope.vm.users = issueListSearchObject.users; + $scope.vm.departments = issueListSearchObject.departments; $scope.vm.projects = issueListSearchObject.projects; - $scope.vm.registers = issueListSearchObject.registers;*/ + $scope.vm.registers = issueListSearchObject.registers; $scope.fn.getPageList(0, true); } else { @@ -242,13 +245,13 @@ .setDAlign("text-center") .setDName("issueTypeName")); break; - case "ASSIGNEETEAM" : // �떞�떦遺��꽌 + case "ASSIGNEE_TEAM" : // �떞�떦遺��꽌 $scope.vm.tableConfigs.push($tableProvider.config() .setHName("common.assigneeTeam") .setDType("renderer") .setHWidth("bold " + issueTableConfig.width) .setDAlign("text-center") - .setDRenderer("ISSUE_USER")); + .setDRenderer("ISSUE_DEPARTMENT")); break; case "REGISTER" : // �벑濡앹옄 $scope.vm.tableConfigs.push($tableProvider.config() @@ -376,6 +379,15 @@ }); return userIds; + })(), + departmentIds : (function () { + var departmentIds = []; + + angular.forEach($scope.vm.departments, function (department) { + departmentIds.push(department.id); + }); + + return departmentIds; })(), registerIds : (function () { var registerIds = []; @@ -869,7 +881,7 @@ display : true }, { name : $filter("translate")("common.assigneeTeam"), // �떞�떦遺��꽌 - key : "ASSIGNEETEAM", + key : "ASSIGNEE_TEAM", width : "width-140-p", position : 4, display : true diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html index a85a020..f11e161 100644 --- a/src/main/webapp/views/issue/issueListNormal.html +++ b/src/main/webapp/views/issue/issueListNormal.html @@ -192,7 +192,7 @@ input-disabled="false" source="fn.getUserDepartmentList(vm.departmentName, vm.departments)" translation-texts="{ count : 'common.userNum', empty : 'common.emptyDepartment' }" - extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'user', maxlength : 100 }"> + extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }"> </js-autocomplete-multi> </div> </div> -- Gitblit v1.8.0