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/webapp/scripts/app/issue/issueDetail.controller.js | 284 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 255 insertions(+), 29 deletions(-) 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); }); -- Gitblit v1.8.0