From 257766aa7e8a88b2b371fc6f8f52751af7d84eda Mon Sep 17 00:00:00 2001 From: wyu <kknd09321@nate.com> Date: 수, 08 12월 2021 21:54:40 +0900 Subject: [PATCH] 연관 ,하위 이슈 요청 횟수 수정 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 24 +++ src/main/java/kr/wisestone/owl/vo/IssueVo.java | 16 ++ src/main/java/kr/wisestone/owl/vo/IssueTableConfigVo.java | 52 ++++++ src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java | 17 + src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java | 6 src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java | 4 src/main/webapp/views/issue/issueDetail.html | 10 src/main/webapp/scripts/app/issue/issueDetail.controller.js | 228 +++++++++++++--------------- src/main/webapp/scripts/app/project/projectList.controller.js | 19 ++ src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java | 40 ---- src/main/webapp/assets/styles/main.css | 3 src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js | 12 + 12 files changed, 253 insertions(+), 178 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java b/src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java index c623106..eb97a52 100644 --- a/src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java +++ b/src/main/java/kr/wisestone/owl/domain/IssueTableConfig.java @@ -10,6 +10,12 @@ public class IssueTableConfig extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; + public static final int ISSUE_TABLE_TYPE_MAIN = 1; + public static final int ISSUE_TABLE_TYPE_REL = 2; + public static final int ISSUE_TABLE_TYPE_DOWN = 3; + + public static int[] IssueTableTypes = {ISSUE_TABLE_TYPE_MAIN, ISSUE_TABLE_TYPE_REL, ISSUE_TABLE_TYPE_DOWN}; + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; diff --git a/src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java b/src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java index 4c62f9a..174ac36 100644 --- a/src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java +++ b/src/main/java/kr/wisestone/owl/service/IssueTableConfigService.java @@ -14,10 +14,6 @@ void detailIssueTableConfig(Map<String, Object> params, Map<String, Object> resJsonData); - void detailRelationIssueTableConfig(Map<String, Object> params, Map<String, Object> resJsonData); - - void detailDownIssueTableConfig(Map<String, Object> params, Map<String, Object> resJsonData); - IssueTableConfig findByUserIdAndWorkspaceIdAndIssueTypeIdAndIssueTableType(Long issueId, int issueTableType); IssueTableConfig findByIssueTypeIdAndIssueTableType(Long issueTypeId, int issueTableType); 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 554e8bd..8e77478 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -60,6 +60,9 @@ private ProjectService projectService; @Autowired + private IssueTableConfigService issueTableConfigService; + + @Autowired private IssueStatusService issueStatusService; @Autowired @@ -1226,6 +1229,7 @@ case "02": // �봽濡쒖젥�듃, �씠�뒋 �쑀�삎, �씠�뒋 �긽�깭, �슦�꽑�닚�쐞, 以묒슂�룄, �떞�떦�옄, 泥⑤��뙆�씪, �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂�, �뙎湲�, 湲곕줉�쓣 �뀑�똿�븳�떎. this.setIssueDetail(issueVo, issue); // �씠�뒋 �긽�꽭 �젙蹂대�� �뀑�똿�븳�떎. + this.setIssueTableConfigs(issue, issueVo); issueVo.setProjectVo(ConvertUtil.copyProperties(issue.getProject(), ProjectVo.class)); break; } @@ -1237,6 +1241,26 @@ resJsonData.put(Constants.RES_KEY_CONTENTS, issueVo); } + // �뀒�씠釉� �꽕�젙 �뀑�똿 + private void setIssueTableConfigs(Issue issue, IssueVo issueVo) { + Long IssueTypeId = issue.getIssueType().getId(); + + for (int tableConfigType : IssueTableConfig.IssueTableTypes) { + if (tableConfigType != IssueTableConfig.ISSUE_TABLE_TYPE_MAIN) { + issueVo.addIssueTableConfigVo(createIssueTableConfigVo(IssueTypeId, tableConfigType)); + } + } + } + + private IssueTableConfigVo createIssueTableConfigVo(Long issueTypeId, int tableConfigType) { + IssueTableConfig issueTableConfig = this.issueTableConfigService.findByUserIdAndWorkspaceIdAndIssueTypeIdAndIssueTableType(issueTypeId, tableConfigType); + if (issueTableConfig != null) { + return ConvertUtil.copyProperties(issueTableConfig, IssueTableConfigVo.class); + } + return new IssueTableConfigVo(); + } + + // �븯�쐞 �씠�뒋 �젙蹂대�� �뀑�똿�븳�떎 private void setDownIssues(Issue issue, IssueVo issueVo) { List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId()); 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 4a8da1d..dcdbf65 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTableConfigServiceImpl.java @@ -85,6 +85,7 @@ return this.addIssueTableConfig(params, issueTypeId, issueTableType); } + // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 �뀒�씠釉� �꽕�젙�쓣 議고쉶�븳�떎. @Override @Transactional(readOnly = true) @@ -109,29 +110,11 @@ return null; } - // detail 以묐났 肄붾뱶 �젣嫄� - private void detailIssueTableConfig(Map<String, Object> resJsonData, Long issueTypeId, int issueTableType) { - // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 寃��깋 議곌굔�쓣 議고쉶�븳�떎. - IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceIdAndIssueTypeIdAndIssueTableType(issueTypeId, issueTableType); - - if (issueTableConfig != null && issueTableConfig.getIssueTableType() == 2) { - resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); - } else if (issueTableConfig != null && issueTableConfig.getIssueTableType() == 3) { - resJsonData.put(Constants.RES_KEY_CONTENTS, issueTableConfig.getIssueTableConfigs()); - } - else { - resJsonData.put(Constants.RES_KEY_CONTENTS, ""); - } - } - - // ���옣�맂 �씠�뒋 �뀒�씠釉� �꽕�젙�쓣 議고쉶�븳�떎. @Override - @Transactional(readOnly = true) public void detailIssueTableConfig(Map<String, Object> params, Map<String, Object> resJsonData) { - issueTypeId = MapUtil.getLong(params, "issueTypeId"); + Long issueTypeId = MapUtil.getLong(params,"issueTypeId"); + int issueTableType = MapUtil.getInteger(params,"issueTableType"); - issueTableType = 1; - // �빐�떦 �뾽臾� 怨듦컙�뿉�꽌 �궗�슜�옄�쓽 �씠�뒋 寃��깋 議곌굔�쓣 議고쉶�븳�떎. IssueTableConfig issueTableConfig = this.findByUserIdAndWorkspaceIdAndIssueTypeIdAndIssueTableType(issueTypeId, issueTableType); if (issueTableConfig != null) { @@ -141,21 +124,4 @@ resJsonData.put(Constants.RES_KEY_CONTENTS, ""); } } - // ���옣�맂 �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙 議고쉶 - @Override - public void detailRelationIssueTableConfig(Map<String, Object> params, Map<String, Object> resJsonData) { - issueTableType = 2; - issueTypeId = MapUtil.getLong(params, "issueTypeId"); - this.detailIssueTableConfig(resJsonData, issueTypeId, issueTableType); - } - // ���옣�맂 �븯�쐞 �씠�뒋 �뀒�씠釉� �꽕�젙 議고쉶 - @Override - public void detailDownIssueTableConfig(Map<String, Object> params, Map<String, Object> resJsonData) { - issueTableType = 3; - issueTypeId = MapUtil.getLong(params, "issueTypeId"); - this.detailIssueTableConfig(resJsonData, issueTypeId, issueTableType); - } - - - } diff --git a/src/main/java/kr/wisestone/owl/vo/IssueTableConfigVo.java b/src/main/java/kr/wisestone/owl/vo/IssueTableConfigVo.java new file mode 100644 index 0000000..0cc533d --- /dev/null +++ b/src/main/java/kr/wisestone/owl/vo/IssueTableConfigVo.java @@ -0,0 +1,52 @@ +package kr.wisestone.owl.vo; + +import com.google.common.collect.Lists; +import kr.wisestone.owl.domain.User; +import kr.wisestone.owl.domain.Workspace; + +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import java.util.ArrayList; +import java.util.List; + +public class IssueTableConfigVo extends BaseVo{ + private Long id; + private String issueTableConfigs; + private int issueTableType; + private Long issueTypeId; + + public IssueTableConfigVo() {} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getIssueTableConfigs() { + return issueTableConfigs; + } + + public void setIssueTableConfigs(String issueTableConfigs) { + this.issueTableConfigs = issueTableConfigs; + } + + public int getIssueTableType() { + return issueTableType; + } + + public void setIssueTableType(int issueTableType) { + this.issueTableType = issueTableType; + } + + public Long getIssueTypeId() { + return issueTypeId; + } + + public void setIssueTypeId(Long issueTypeId) { + this.issueTypeId = issueTypeId; + } +} diff --git a/src/main/java/kr/wisestone/owl/vo/IssueVo.java b/src/main/java/kr/wisestone/owl/vo/IssueVo.java index 7a64cb4..5ac8406 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; @@ -48,6 +49,7 @@ //private List<IssueDownVo> issueDownVos = Lists.newArrayList(); private List<IssueVo> issueDownVos = Lists.newArrayList(); private List<IssueVo> issueRelationVos = Lists.newArrayList(); + private List<IssueTableConfigVo> issueTableConfigVos = Lists.newArrayList(); private Long attachedFileCount; private Long issueCommentCount; private String modifyByName; // 蹂�寃쎌옄 �젙蹂� - �씠�뒋 蹂�寃� �젙蹂� �긽�꽭 �솗�씤�뿉�꽌 �궗�슜 @@ -484,4 +486,18 @@ public void setWorkflowDepartmentIds(List<Long> workflowDepartmentIds) { this.workflowDepartmentIds = workflowDepartmentIds; } + + public List<IssueTableConfigVo> getIssueTableConfigVos() { + return issueTableConfigVos; + } + + public void setIssueTableConfigVos(List<IssueTableConfigVo> issueTableConfigVos) { + this.issueTableConfigVos = issueTableConfigVos; + } + + public void addIssueTableConfigVo(IssueTableConfigVo issueTableConfigVo) { + if (this.issueTableConfigVos != null) { + this.issueTableConfigVos.add(issueTableConfigVo); + } + } } 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 8fa676f..2d0f926 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/IssueTableConfigController.java @@ -1,6 +1,7 @@ package kr.wisestone.owl.web.controller; import kr.wisestone.owl.constant.Constants; +import kr.wisestone.owl.domain.IssueTableConfig; import kr.wisestone.owl.service.IssueTableConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; @@ -64,7 +65,10 @@ Map<String, Object> detail(@RequestBody Map<String, Map<String, Object>> params) { Map<String, Object> resJsonData = new HashMap<>(); - this.issueTableConfigService.detailIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT), resJsonData); + Map<String, Object> param = params.get(Constants.REQ_KEY_CONTENT); + param.put("issueTableType", IssueTableConfig.ISSUE_TABLE_TYPE_MAIN); + + this.issueTableConfigService.detailIssueTableConfig(param, resJsonData); return this.setSuccessMessage(resJsonData); } @@ -75,7 +79,11 @@ @ResponseBody Map<String, Object> relationDetail(@RequestBody Map<String, Map<String, Object>> params) { Map<String, Object> resJsonData = new HashMap<>(); - this.issueTableConfigService.detailRelationIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT), resJsonData); + + Map<String, Object> param = params.get(Constants.REQ_KEY_CONTENT); + param.put("issueTableType", IssueTableConfig.ISSUE_TABLE_TYPE_REL); + + this.issueTableConfigService.detailIssueTableConfig(param, resJsonData); return this.setSuccessMessage(resJsonData); } @@ -86,7 +94,10 @@ @ResponseBody Map<String, Object> downDetail(@RequestBody Map<String, Map<String, Object>> params) { Map<String, Object> resJsonData = new HashMap<>(); - this.issueTableConfigService.detailDownIssueTableConfig(params.get(Constants.REQ_KEY_CONTENT),resJsonData); + Map<String, Object> param = params.get(Constants.REQ_KEY_CONTENT); + param.put("issueTableType", IssueTableConfig.ISSUE_TABLE_TYPE_DOWN); + + this.issueTableConfigService.detailIssueTableConfig(param, resJsonData); return this.setSuccessMessage(resJsonData); } diff --git a/src/main/webapp/assets/styles/main.css b/src/main/webapp/assets/styles/main.css index ad1020d..ab8dc34 100644 --- a/src/main/webapp/assets/styles/main.css +++ b/src/main/webapp/assets/styles/main.css @@ -14271,7 +14271,7 @@ } .menu-position-side.menu-w.color-scheme-dark .logo-w { - background-color:#f2f4f8; + background-color:#FFFFFF; } .menu-position-side.menu-w.color-scheme-dark .element-search:before { @@ -29693,6 +29693,7 @@ overflow: hidden; margin-top: 30px; font-size: 0.69rem; + margin-left: 35rem; } .width-20-p { 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 f1ae81c..136f3c5 100644 --- a/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js +++ b/src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js @@ -75,9 +75,13 @@ // �봽濡쒖젥�듃 �씠由�(�봽濡쒖젥�듃 由ъ뒪�듃�뿉�꽌 �궗�슜) case "PROJECT_NAME" : if ($rootScope.workProject != null && $rootScope.workProject.id == scope.data.id) { - makeTag += "<span class='titlenameSelect cursor table-word-break-all sub-line' ng-click='event.changeLastProject(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>"; + // makeTag += "<span class='titlenameSelect cursor table-word-break-all sub-line' ng-click='event.changeLastProject(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>"; + makeTag += "<span class='titlenameSelect cursor table-word-break-all sub-line' ng-click='event.moveIssue(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>"; + // makeTag += "<span class='titlenameSelect cursor table-word-break-all sub-line' ng-click='event.changeDetailView(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>"; } else { - makeTag += "<span class='titlename cursor table-word-break-all sub-line' ng-click='event.changeLastProject(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>"; + // makeTag += "<span class='titlename cursor table-word-break-all sub-line' ng-click='event.changeLastProject(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>"; + makeTag += "<span class='titlename cursor table-word-break-all sub-line' ng-click='event.moveIssue(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>"; + // makeTag += "<span class='titlename cursor table-word-break-all sub-line' ng-click='event.changeDetailView(data.id)'>" + myToken + scope.data.name.replace(/</gi, '<') + "</span>"; } break; @@ -425,8 +429,8 @@ makeTag += '<span class="number-tag">' + scope.data.projectKey + ' - ' + scope.data.issueNumber + '</span>'; makeTag += ' <span class="tag"> / </span> '; makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.issueStatusColor + "\"," + "\"border-color\"" + " : \"" + scope.data.issueStatusColor + "\", \"color\": \"#FFFFFF\" }'>" + scope.data.issueStatusName + "</span>"; - makeTag += ' <span class="tag"> / </span> '; - makeTag += '<span class="tag">' + scope.data.projectName + '</span>'; + // makeTag += ' <span class="tag"> / </span> '; + // makeTag += '<span class="tag">' + scope.data.projectName + '</span>'; makeTag += '</div>'; makeTag += '<div class="titlename cursor text-left" ng-click="event.changeDetailView(data.id)">' + scope.data.title.replace(/</gi, '<') + '</div>'; makeTag += '<div class="extra-infodiv text-left">'; diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js index cba9d5e..4c97ae7 100644 --- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js +++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js @@ -46,8 +46,8 @@ $scope.fn.addDownIssue = addDownIssue; // �븯�쐞 �씠�뒋 異붽� $scope.fn.addRelationIssueTableConfig = addRelationIssueTableConfig; // �뿰愿� �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 $scope.fn.addDownIssueTableConfig = addDownIssueTableConfig; // �븯�쐞 �씠�뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 - $scope.fn.getRelTableConfigs = getRelTableConfigs; - $scope.fn.getDownTableConfigs = getDownTableConfigs; + $scope.fn.setRelTableConfigs = setRelTableConfigs; + $scope.fn.setDownTableConfigs = setDownTableConfigs; $scope.fn.containsPartner = containsPartner; $scope.fn.onActivate = onActivate; @@ -137,8 +137,6 @@ $scope.$on("getIssueList", function () { $scope.fn.getIssueDetail(); }); - - // �븯�쐞 �씠�뒋 �궘�젣 function removeDownIssue(id) { @@ -490,125 +488,95 @@ }); } - // �뿰愿� �씠�뒋 �긽�꽭 議고쉶 - function getRelTableConfigs() { - var content = { - issueId : $scope.vm.viewer.id, - issueTypeId : $rootScope.getCurrentIssueTypeId() - }; + // �뿰愿� �씠�뒋 �뀒�씠釉� �꽕�젙 + function setRelTableConfigs(issueTableConfigVo) { + var issueTableConfigs = issueTableConfigVo.issueTableConfigs; - IssueTableConfig.relationDetail($resourceProvider.getContent( - content, - $resourceProvider.getPageContent(0, 0))).then(function (result) { + // �뿰愿� �뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎. + if ($rootScope.isDefined(issueTableConfigs)) { + // �씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂대�� ���옣 �븳�떎. - if (result.data.message.status === "success") { - var issueTableConfigs = result.data.data; + $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; + }); - // �뿰愿� �뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎. - if ($rootScope.isDefined(issueTableConfigs)) { - // �씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂대�� ���옣 �븳�떎. + $scope.vm.relTableConfigs = []; + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("issue.relationIssueType") + .setDType("renderer") + .setDAlign("text-center") + .setHWidth("width-30-p bold") + .setHSort(false) + .setDRenderer("ISSUE_RELATION_TYPE")) + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("issue.relationIssueTitle") + .setDType("renderer") + .setDAlign("text-center") + .setHWidth("width-60-p bold") + .setHSort(false) + .setDRenderer("ISSUE_RELATION_MOVE")) + angular.forEach($scope.vm.issueRelTableConfigs, function (Rel_issueTableConfig) { + // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. + if (Rel_issueTableConfig.display) { + // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. + $scope.fn.setRelTableColumn(Rel_issueTableConfig); - $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; - }); - - $scope.vm.relTableConfigs = []; - $scope.vm.relTableConfigs.push($tableProvider.config() - .setHName("issue.relationIssueType") - .setDType("renderer") - .setDAlign("text-center") - .setHWidth("width-30-p bold") - .setHSort(false) - .setDRenderer("ISSUE_RELATION_TYPE")) - $scope.vm.relTableConfigs.push($tableProvider.config() - .setHName("issue.relationIssueTitle") - .setDType("renderer") - .setDAlign("text-center") - .setHWidth("width-60-p bold") - .setHSort(false) - .setDRenderer("ISSUE_RELATION_MOVE")) - angular.forEach($scope.vm.issueRelTableConfigs, function (Rel_issueTableConfig) { - // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. - if (Rel_issueTableConfig.display) { - // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. - $scope.fn.setRelTableColumn(Rel_issueTableConfig); - - } - }); - $scope.vm.relTableConfigs.push($tableProvider.config() - .setHName("issue.relationIssueDelete") - .setDType("renderer") - .setHWidth("width-20-p bold") - .setDRenderer("ISSUE_RELATION_DELETE") - .setHSort(false) - .setDAlign("text-center")) - - } else { - makeRelTableConfigs(); } + }); + $scope.vm.relTableConfigs.push($tableProvider.config() + .setHName("issue.relationIssueDelete") + .setDType("renderer") + .setHWidth("width-20-p bold") + .setDRenderer("ISSUE_RELATION_DELETE") + .setHSort(false) + .setDAlign("text-center")) - } else { - SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "�씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 紐⑸줉 議고쉶 �삤瑜�" - } - }); + } else { + makeRelTableConfigs(); + } + } - // �븯�쐞 �씠�뒋 �긽�꽭 議고쉶 - function getDownTableConfigs() { - var content = { - issueId : $scope.vm.viewer.id, - issueTypeId : $rootScope.getCurrentIssueTypeId() - }; + // �븯�쐞 �씠�뒋 �긽�꽭 議고쉶 寃곌낵 �꽕�젙 + function setDownTableConfigs(issueTableConfigVo) { + var issueTableConfigs = issueTableConfigVo.issueTableConfigs; - 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; - }); - $scope.vm.downTableConfigs = []; - $scope.vm.downTableConfigs.push($tableProvider.config() - .setHName("issue.downIssueTitle") - .setDType("renderer") - .setDAlign("text-center") - .setHWidth("width-60-p bold") - .setHSort(false) - .setDRenderer("ISSUE_DOWN_MOVE")) - angular.forEach($scope.vm.issueDownTableConfigs, function (Down_issueTableConfig) { - // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. - if (Down_issueTableConfig.display) { - // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. - $scope.fn.setDownTableColumn(Down_issueTableConfig); - } - }); - $scope.vm.downTableConfigs.push($tableProvider.config() - .setHName("issue.relationIssueDelete") - .setDType("renderer") - .setHWidth("width-20-p bold") - .setDRenderer("ISSUE_DOWN_DELETE") - .setHSort(false) - .setDAlign("text-center")) - - } else { - makeDownTableConfigs(); + // �뿰愿� �뒋 紐⑸줉 �뀒�씠釉� �꽕�젙 媛믪쓣 媛��졇���꽌 �쟻�슜�븳�떎. + 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; + }); + $scope.vm.downTableConfigs = []; + $scope.vm.downTableConfigs.push($tableProvider.config() + .setHName("issue.downIssueTitle") + .setDType("renderer") + .setDAlign("text-center") + .setHWidth("width-60-p bold") + .setHSort(false) + .setDRenderer("ISSUE_DOWN_MOVE")) + angular.forEach($scope.vm.issueDownTableConfigs, function (Down_issueTableConfig) { + // �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎. + if (Down_issueTableConfig.display) { + // �뀒�씠釉붿쓽 而щ읆�쓣 留뚮뱾�뼱以��떎. + $scope.fn.setDownTableColumn(Down_issueTableConfig); } + }); + $scope.vm.downTableConfigs.push($tableProvider.config() + .setHName("issue.relationIssueDelete") + .setDType("renderer") + .setHWidth("width-20-p bold") + .setDRenderer("ISSUE_DOWN_DELETE") + .setHSort(false) + .setDAlign("text-center")) - } - else { - SweetAlert.swal($filter("translate")("issue.errorRemovableIssueStatusList"), result.data.message.message, "error"); // "�씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 紐⑸줉 議고쉶 �삤瑜�" - } - }); + } else { + makeDownTableConfigs(); + } } // �뿰愿� �씠�뒋 異붽� @@ -665,17 +633,22 @@ } }); } - - // �씠�뒋紐낆쓣 �겢由��븯硫� �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎. - // $rootScope.$on("getIssueDetail", function (event, args) { - // $scope.vm.viewer.id = args["id"]; - // $scope.fn.getIssueDetail(); - // }); + // todo 紐⑤Ⅴ寃좊떎..... + // �씠�뒋紐낆쓣 �겢由��븯硫� �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎. + // $rootScope.$on("getIssueDetail", function (event, args) { + // $scope.vm.viewer.id = args["id"]; + // $scope.fn.getIssueDetail(); + // }); // �씠硫붿씪 蹂대궦�썑 �긽�꽭�솕硫� 媛깆떊 - $rootScope.$on("getIssueDetail", function (event, args) { - $scope.fn.getIssueDetail(); - }); + // todo �씠嫄� 萸먯�... + // $rootScope.$on("getIssueDetail", function (event, args) { + // $scope.fn.getIssueDetail(); + // }); + + $scope.$on("getIssueDetail", function (event, args) { + $scope.fn.getIssueDetail(); + }); // �씠�뒋紐낆쓣 �겢由��븯硫� �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎. // $scope.$on("getIssueDetail", function (event, args) { @@ -683,6 +656,7 @@ // $scope.fn.getIssueDetail(); // }); + // todo �씠嫄� �삉 萸먯� $scope.$watch(function() { return $rootScope.currentDetailIssueId; }, function() { @@ -691,6 +665,8 @@ $scope.fn.getIssueDetail(); } }, true); + + // 珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎. function initReload() { @@ -865,8 +841,8 @@ // 珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎. $scope.fn.initReload(); - $scope.fn.getRelTableConfigs(); - $scope.fn.getDownTableConfigs(); + // $scope.fn.getRelTableConfigs(); + // $scope.fn.getDownTableConfigs(); Issue.detail($resourceProvider.getContent( {id : $scope.vm.viewer.id, deep : "02"}, @@ -874,6 +850,7 @@ if (result.data.message.status === "success") { if (angular.isDefined(result.data.data)) { + $scope.vm.viewer = angular.copy(result.data.data); // �씠�뒋 �씠誘몄� 誘몃━ 蹂닿린 留뚮뱾湲� $scope.fn.makePreviewImages(result.data.data.attachedFileVos); @@ -894,6 +871,10 @@ $scope.vm.form.issues.push(result.data.data); $scope.vm.form.issuesDown = []; $scope.vm.form.issuesDown.push(result.data.data); + + var issueTableConfigVos = result.data.data.issueTableConfigVos; + $scope.fn.setRelTableConfigs(issueTableConfigVos[0]); + $scope.fn.setDownTableConfigs(issueTableConfigVos[1]); // �뿰愿� �씠�뒋 諛섎났臾� if (result.data.data.issueRelationVos !== null) { @@ -917,7 +898,6 @@ } $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos; $scope.vm.viewer.issueDownVos = result.data.data.issueDownVos; - if ($rootScope.workProject.id > -1 && result.data.data.projectVo !== null) { $rootScope.changeLastProject(result.data.data.projectVo.id); diff --git a/src/main/webapp/scripts/app/project/projectList.controller.js b/src/main/webapp/scripts/app/project/projectList.controller.js index 0e62c35..9fb34d2 100644 --- a/src/main/webapp/scripts/app/project/projectList.controller.js +++ b/src/main/webapp/scripts/app/project/projectList.controller.js @@ -69,7 +69,9 @@ $scope.tableEvent = { modify : modify, projectCustomFieldConfig : projectCustomFieldConfig, - changeLastProject : changeLastProject + changeLastProject : changeLastProject, + moveIssue : moveIssue, + changeDetailView : changeDetailView }; angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); @@ -364,6 +366,21 @@ $rootScope.changeLastProject(projectId); } + function moveIssue(projectId) { + // $rootScope.currentDetailIssueId = null; + // �씠�뒋 踰덊샇瑜� ���옣�븳 �썑 �씠�뒋 紐⑸줉�쑝濡� �씠�룞�븳�떎. + // $rootScope.$broadcast("makeIssueSearch", {id :$rootScope.currentDetailIssueId}); + //$rootScope.$broadcast("makeIssueSearch", {id :$rootScope.issueTypeMenu.id}); + $rootScope.$broadcast("makeIssueSearch",projectId); + } + + function changeDetailView() { + // $rootScope.$broadcast("getIssueDetail", {id: $rootScope.currentDetailIssueId}); + //$scope.$broadcast("getIssueDetail", {id: $rootScope.currentDetailIssueId}); + // $rootScope.$broadcast("getIssueDetail", {id :$rootScope.currentDetailIssueId}); + //$rootScope.$broadcast("getIssueList", {id :$rootScope.issueTypeMenu.id}); + } + $scope.fn.makeTableConfigs(); $scope.fn.getPageList(0); } diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html index 2eabc4c..538bf7a 100644 --- a/src/main/webapp/views/issue/issueDetail.html +++ b/src/main/webapp/views/issue/issueDetail.html @@ -493,7 +493,7 @@ type : '', maxlength : 200, autoResize : true, stopRemoveBodyEvent : true }"></js-autocomplete-single> </div> <div class="col-auto vertical-middle" style="display: flex"> - <button type="button" class="btn btn-primary form-control input-sm" + <button type="button" class="btn btn-primary" ng-click="fn.addRelationIssue()" translate="issue.addRelationIssue">�뿰愿� �씠�뒋 異붽�</button> <button type="button" class="btn btn-sm btn-primary btn-roundRel offset-1" @@ -510,8 +510,10 @@ <span class="info_detail_font h3" translate="issue.downIssue">�븯�쐞 �씠�뒋</span> </div> <div class="col-sm-2"> - <button type="button" class="btn btn-darkgrey form-control input-sm offset-5" ng-click="fn.modifyDownIssueStatus()" - translate="common.updateDownIssueAllStatus">�븯�쐞�씠�뒋 �긽�깭 �쟾泥� 蹂�寃�</button> + <a><button type="button" class="btn btn-darkgrey offset-7" + ng-click="fn.modifyDownIssueStatus()"> + <span translate="common.updateDownIssueAllStatus">�븯�쐞�씠�뒋 �긽�깭 �쟾泥� 蹂�寃�</span> + </button></a> </div> <div class="col-sm-1"> <button class="btn btn-darkgrey offset-10" ng-click="fn.addDownIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button> @@ -538,7 +540,7 @@ type : '', maxlength : 200, autoResize : true, stopRemoveBodyEvent : true }"></js-autocomplete-single> </div> <div class="col-auto vertical-middle" style="display: flex"> - <button type="button" class="btn btn-primary form-control input-sm" + <button type="button" class="btn btn-primary" ng-click="fn.addDownIssue()" translate="issue.addDownIssue">異붽�</button> </div> -- Gitblit v1.8.0