From 47c5ce77b114324effdce5b3735ed0e661846108 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 06 1월 2022 10:58:23 +0900
Subject: [PATCH] - 이슈 상세페이지 연관,하위 이슈 페이징 처리

---
 src/main/webapp/scripts/app/issue/issueDetail.controller.js |  210 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 182 insertions(+), 28 deletions(-)

diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
index 5ea1f0a..e07ca8d 100644
--- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -51,6 +51,9 @@
                 $scope.fn.containsPartner = containsPartner;
                 $scope.fn.onActivate = onActivate;
                 $scope.fn.issueBack = issueBack;
+                $scope.fn.removeRelationIssue = removeRelationIssue;
+                $scope.fn.removeDownIssue = removeDownIssue;
+                $scope.fn.changeDetailPageRowCount = changeDetailPageRowCount;    //  �럹�씠吏� 蹂�寃�
 
                 //  �씠�뒋 紐⑸줉 而⑦듃濡ㅻ윭 vm, fn �긽�냽 以�
                 $scope.vm.viewer = {};      // �쁽�옱 �씠�뒋
@@ -87,6 +90,18 @@
                     issueHostingVos : []
                 };
 
+                $scope.vm.responseData = {
+                    data : []
+                };
+
+                $scope.vm.page = {
+                    selectedPage : 0,
+                    selectedPageRowCount : String(10),
+                    selectedRelPage : 0,
+                    selectedRelPageRowCount : String(10),
+                    selectedDownPage : 0,
+                    selectedDownPageRowCount : String(10)
+                };
 
                 $scope.vm.issueNameDown = "";       // �꽑�깮�맂 �븯�쐞 �씪媛� �씠由�
                 $scope.vm.autoCompletePageDown = {
@@ -110,7 +125,7 @@
                 $scope.vm.relTableConfigs = [];
                 //  �뀒�씠釉� �씠踰ㅽ듃
                 $scope.relTableEvent = {
-                    removeRelationIssue : removeRelationIssue,   // �뿰愿� �씪媛� �궘�젣
+                    //removeRelationIssue : removeRelationIssue,   // �뿰愿� �씪媛� �궘�젣
                     changeDetailView : changeDetailView
                 };
 
@@ -118,7 +133,7 @@
                 $scope.vm.downTableConfigs = [];
                 //  �뀒�씠釉� �씠踰ㅽ듃
                 $scope.downTableEvent = {
-                    removeDownIssue : removeDownIssue,   // �뿰愿� �씪媛� �궘�젣
+                    //removeDownIssue : removeDownIssue,   // �뿰愿� �씪媛� �궘�젣
                     changeDetailView : changeDetailView
                 };
 
@@ -126,13 +141,23 @@
                     //  �씠�뒋 踰덊샇瑜� ���옣�븳 �썑 �씠�뒋 紐⑸줉�쑝濡� �씠�룞�븳�떎.
                     //$rootScope.$broadcast("makeIssueSearch",issue);
                     $scope.$parent.tableEvent.changeDetailView(issue.id);
+
                     $scope.fn.onActivate();
                 }
 
                 // �긽�쐞 �씠�뒋 �겢由��떆 �긽�쐞 �씠�뒋濡� �씠�룞
                 function issueBack() {
-                    $rootScope.currentDetailIssueId = $scope.vm.viewer.parentIssueVo.id
-                    $rootScope.$broadcast("getIssueDetail", {id: $rootScope.currentDetailIssueId});
+                    var index = $scope.$parent.vm.issueIds.length -2;
+                    if (index > -1) {
+                        var preIssueId = $scope.$parent.vm.issueIds[index];
+                        $scope.$parent.vm.issueIds.splice(index + 1, 1);
+                        $scope.$parent.tableEvent.changeDetailView(preIssueId, true);
+                    }
+                }
+
+                //  �럹�씠吏� 蹂�寃�
+                function changeDetailPageRowCount() {
+                    $scope.fn.getIssueDetail(0,0);
                 }
 
                 function onActivate() {
@@ -143,15 +168,46 @@
 
                  // �씠�뒋 紐⑸줉 �뜲�씠�꽣 媛깆떊
                 $scope.$on("getIssueList", function () {
-                    $scope.fn.getIssueDetail();
+                    $scope.fn.getIssueDetail(0,0);
                 });
 
                 // �븯�쐞 �씠�뒋 �궘�젣
-                function removeDownIssue(id) {
+                function removeDownIssue() {
+                    var removeIds = [];
+                    var removePermission = true;
+
+                    angular.forEach($scope.vm.viewer.issueDownVos, function (data) {
+                        if (data.checked && data.modifyPermissionCheck) {
+                            removeIds.push(data.id);
+                        }
+
+                        if (data.checked && !data.modifyPermissionCheck) {
+                            removePermission = false;
+                        }
+                    });
+
+                    if (!removePermission) {
+                        SweetAlert.swal({
+                            html : true,
+                            title : $filter("translate")("common.deleteFailed"), // �궘�젣 �떎�뙣
+                            text : $filter("translate")("project.notHaveDeletePermissionExistsProject"), // "�궘�젣 沅뚰븳�씠 �뾾�뒗 �봽濡쒖젥�듃媛� 議댁옱�빀�땲�떎."
+                            type : "error"
+                        });
+                        return;
+                    }
+
+                    if (removeIds.length < 1) {
+                        SweetAlert.swal({
+                            title : $filter("translate")("common.checkPurgingTargets"), // �궘�젣 ���긽 �솗�씤
+                            text : $filter("translate")("common.selectDestinationDeletion"), // �궘�젣 ���긽�쓣 �꽑�깮�븯�꽭�슂.
+                            type : "warning"
+                        });
+                        return;
+                    }
                     //  �궘�젣 �븣由�
                     SweetAlert.swal({
                             title : $filter("translate")("issue.downIssueRemove"), // �븯�쐞 �씠�뒋 �궘�젣
-                            text : $filter("translate")("issue.wantToDeleteSelectIssue"),
+                            text : $filter("translate")("issue.wantToDeleteSelectDownIssueInList"),
                             type : "warning",
                             showCancelButton : true,
                             confirmButtonColor : "#DD6B55",
@@ -167,7 +223,7 @@
                                 $rootScope.spinner = true;
 
                                 var contents = {
-                                    id : id
+                                    ids : removeIds
                                 };
 
                                 Issue.modifyParentIssue($resourceProvider.getContent(
@@ -175,7 +231,7 @@
                                     $resourceProvider.getPageContent(0, 10))).then(function (result) {
 
                                     if (result.data.message.status === "success") {
-                                        $scope.fn.getIssueDetail();
+                                        $scope.fn.getIssueDetail(0,0);
                                     }
                                     else {
                                         SweetAlert.error($filter("translate")("issue.failedToIssueDeleteIssueDown"), result.data.message.message); // "�뿰愿��씪媛� �궘�젣 �떎�뙣"
@@ -189,7 +245,38 @@
                 }
 
                 // �뿰愿� �씠�뒋 �궘�젣
-                function removeRelationIssue(id) {
+                function removeRelationIssue() {
+                    var removeIds = [];
+                    var removePermission = true;
+
+                    angular.forEach($scope.vm.viewer.issueRelationVos, function (data) {
+                        if (data.checked && data.modifyPermissionCheck) {
+                            removeIds.push(data.id);
+                        }
+
+                        if (data.checked && !data.modifyPermissionCheck) {
+                            removePermission = false;
+                        }
+                    });
+
+                    if (!removePermission) {
+                        SweetAlert.swal({
+                            html : true,
+                            title : $filter("translate")("common.deleteFailed"), // �궘�젣 �떎�뙣
+                            text : $filter("translate")("issue.notHaveDeletePermissionExistsAnIssue"), // �궘�젣 沅뚰븳�씠 �뾾�뒗 �씠�뒋媛� 議댁옱�빀�땲�떎.
+                            type : "error"
+                        });
+                        return;
+                    }
+
+                    if (removeIds.length < 1) {
+                        SweetAlert.swal({
+                            title : $filter("translate")("common.checkPurgingTargets"), // �궘�젣 ���긽 �솗�씤
+                            text : $filter("translate")("common.selectDestinationDeletion"), // �궘�젣 ���긽�쓣 �꽑�깮�븯�꽭�슂.
+                            type : "warning"
+                        });
+                        return;
+                    }
                     //  �궘�젣 �븣由�
                     SweetAlert.swal({
                             title : $filter("translate")("issue.relationIssueRemove"), // �뿰愿� �씠�뒋 �궘�젣
@@ -209,7 +296,7 @@
                                 $rootScope.spinner = true;
 
                                 var contents = {
-                                    id : id
+                                    removeIds : removeIds
                                 };
 
                                 IssueRelation.delete($resourceProvider.getContent(
@@ -217,7 +304,7 @@
                                     $resourceProvider.getPageContent(0, 10))).then(function (result) {
 
                                     if (result.data.message.status === "success") {
-                                        $scope.fn.getIssueDetail();
+                                        $scope.fn.getIssueDetail(0,0);
                                     }
                                     else {
                                         SweetAlert.error($filter("translate")("issue.failedToIssueDeleteIssueRelation"), result.data.message.message); // "�뿰愿��씪媛� �궘�젣 �떎�뙣"
@@ -431,6 +518,10 @@
                 function makeRelTableConfigs() {
                     $scope.vm.relTableConfigs = [];
                     $scope.vm.relTableConfigs.push($tableProvider.config()
+                        .setDType("checkbox")
+                        .setHWidth("width-20-p")
+                        .setDAlign("text-center"))
+                    $scope.vm.relTableConfigs.push($tableProvider.config()
                         .setHName("issue.relationIssueType")
                         .setDType("renderer")
                         .setDAlign("text-center")
@@ -444,7 +535,7 @@
                         .setHWidth("width-60-p bold")
                         .setHSort(false)
                         .setDRenderer("ISSUE_RELATION_MOVE"))
-                    if($scope.vm.viewer.modifyPermissionCheck) {
+                    /*if($scope.vm.viewer.modifyPermissionCheck) {
                         $scope.vm.relTableConfigs.push($tableProvider.config()
                             .setHName("issue.relationIssueDelete")
                             .setDType("renderer")
@@ -453,7 +544,7 @@
                             .setDRenderer("ISSUE_RELATION_DELETE")
                             .setHSort(false)
                             .setDAlign("text-center"))
-                    }
+                    }*/
                     angular.forEach($scope.vm.relTableConfigs, function (Rel_issueTableConfig) {
                         //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
                         if (Rel_issueTableConfig.display) {
@@ -467,13 +558,17 @@
                 function makeDownTableConfigs() {
                     $scope.vm.downTableConfigs = [];
                     $scope.vm.downTableConfigs.push($tableProvider.config()
+                        .setDType("checkbox")
+                        .setHWidth("width-20-p")
+                        .setDAlign("text-center"))
+                    $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"))
-                    if($scope.vm.viewer.modifyPermissionCheck){
+                    /*if($scope.vm.viewer.modifyPermissionCheck){
                         $scope.vm.downTableConfigs.push($tableProvider.config()
                             .setHName("issue.relationIssueDelete")
                             .setDType("renderer")
@@ -482,7 +577,7 @@
                             .setDRenderer("ISSUE_DOWN_DELETE")
                             .setHSort(false)
                             .setDAlign("text-center"))
-                    }
+                    }*/
 
                     angular.forEach($scope.vm.downTableConfigs, function (Down_issueTableConfig) {
                         //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
@@ -526,6 +621,10 @@
                            .setHWidth("width-60-p bold")
                            .setHSort(false)
                            .setDRenderer("ISSUE_RELATION_MOVE"))*/
+                        $scope.vm.relTableConfigs.push($tableProvider.config()
+                            .setDType("checkbox")
+                            .setHWidth("width-20-p")
+                            .setDAlign("text-center"))
                         angular.forEach($scope.vm.issueRelTableConfigs, function (Rel_issueTableConfig) {
                             //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
                             if (Rel_issueTableConfig.display) {
@@ -534,7 +633,7 @@
 
                             }
                         });
-                        if($scope.vm.viewer.modifyPermissionCheck) {
+                        /*if($scope.vm.viewer.modifyPermissionCheck) {
                             $scope.vm.relTableConfigs.push($tableProvider.config()
                                 .setHName("issue.relationIssueDelete")
                                 .setDType("renderer")
@@ -542,7 +641,7 @@
                                 .setDRenderer("ISSUE_RELATION_DELETE")
                                 .setHSort(false)
                                 .setDAlign("text-center"))
-                        }
+                        }*/
                     } else {
                         makeRelTableConfigs();
                     }
@@ -570,6 +669,10 @@
                             .setHWidth("width-60-p bold")
                             .setHSort(false)
                             .setDRenderer("ISSUE_DOWN_MOVE"))*/
+                        $scope.vm.downTableConfigs.push($tableProvider.config()
+                            .setDType("checkbox")
+                            .setHWidth("width-20-p")
+                            .setDAlign("text-center"))
                         angular.forEach($scope.vm.issueDownTableConfigs, function (Down_issueTableConfig) {
                             //  �몴�떆 ���긽�씤 而щ읆留� �솕硫댁뿉 洹몃젮以��떎.
                             if (Down_issueTableConfig.display) {
@@ -577,7 +680,7 @@
                                 $scope.fn.setDownTableColumn(Down_issueTableConfig);
                             }
                         });
-                        if($scope.vm.viewer.modifyPermissionCheck) {
+                        /*if($scope.vm.viewer.modifyPermissionCheck) {
                             $scope.vm.downTableConfigs.push($tableProvider.config()
                                 .setHName("issue.relationIssueDelete")
                                 .setDType("renderer")
@@ -585,7 +688,7 @@
                                 .setDRenderer("ISSUE_DOWN_DELETE")
                                 .setHSort(false)
                                 .setDAlign("text-center"))
-                        }
+                        }*/
                     } else {
                         makeDownTableConfigs();
                     }
@@ -611,7 +714,7 @@
                         $resourceProvider.getPageContent(0, 10))).then(function (result) {
 
                         if (result.data.message.status === "success") {
-                            $scope.fn.getIssueDetail();
+                            $scope.fn.getIssueDetail(0,0);
                         }
                         else {
                             SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueRelation"), result.data.message.message); // "�뿰愿��씪媛� �깮�꽦 �떎�뙣"
@@ -627,9 +730,14 @@
                         return;
                     }
 
+                    var ids = [];
+                    if ($scope.vm.form.issuesDown[0].id != null) {
+                        ids.push($scope.vm.form.issuesDown[0].id);
+                    }
+
                     var contents = {
                         issueId : $rootScope.currentDetailIssueId,
-                        id : $scope.vm.form.issuesDown[0].id,
+                        ids : ids,
                         parentIssueId : $rootScope.currentDetailIssueId
                     };
 
@@ -638,7 +746,7 @@
                         $resourceProvider.getPageContent(0, 10))).then(function (result) {
 
                         if (result.data.message.status === "success") {
-                            $scope.fn.getIssueDetail();
+                            $scope.fn.getIssueDetail(0,0);
                         }
                         else {
                             SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueDown"), result.data.message.message); // "�뿰愿��씪媛� �깮�꽦 �떎�뙣"
@@ -664,7 +772,7 @@
                 //  });
 
                 $scope.$on("getIssueDetail", function (event, args) {
-                    $scope.fn.getIssueDetail();
+                    $scope.fn.getIssueDetail(0,0);
                 });
 
                 $scope.$watch(function() {
@@ -672,7 +780,7 @@
                 }, function() {
                     if ($rootScope.currentDetailIssueId != null) {
                         $scope.vm.viewer.id = $rootScope.currentDetailIssueId;
-                        $scope.fn.getIssueDetail();
+                        $scope.fn.getIssueDetail(0,0);
                     }
                 }, true);
 
@@ -707,6 +815,20 @@
                 }
 
                 function modifyDownIssueStatus() {
+                    var issueIds = [];
+
+                    angular.forEach($scope.vm.viewer.issueDownVos, function (data) {
+                        if (data.checked) {
+                            issueIds.push(data.id);
+                            //$scope.vm.projectId = data.projectId;
+                        }
+                    });
+
+                    if (issueIds.length < 1) {
+                        SweetAlert.warning($filter("translate")("issue.selectionCheck"), $filter("translate")("issue.selectIssueToChangeStatus")); // �꽑�깮 ���긽 �솗�씤, �긽�깭 蹂�寃쏀븷 �씠�뒋瑜� �꽑�깮�븯�꽭�슂.
+                        return;
+                    }
+
                     $uibModal.open({
                         templateUrl : 'views/issue/downIssueModifyStatus.html',
                         size : "md",
@@ -717,7 +839,8 @@
                                 return {
                                     issueTypeId : $scope.vm.viewer.issueTypeVo.id,
                                     issueIds : [$scope.vm.viewer.id],
-                                    downIssues : $scope.vm.viewer.issueDownVos,
+                                    //downIssues : $scope.vm.viewer.issueDownVos,
+                                    downIssues : issueIds,
                                     projectId : $scope.vm.viewer.projectVo.id
                                 };
                             }
@@ -847,19 +970,50 @@
                 }
 
                 //  �씠�뒋 �긽�꽭 �젙蹂� 議고쉶
-                function getIssueDetail() {
+                function getIssueDetail(selectedRelPage, selectedDownPage) {
                     $rootScope.spinner = true;
+                    if (selectedRelPage < 0) {
+                        selectedRelPage = 0;
+                    }
+                    if (selectedDownPage < 0) {
+                        selectedDownPage = 0;
+                    }
+                    //  �쁽�옱 �럹�씠吏� �젙蹂�
+                    var currentRelPage = 0;
+                    var currentDownPage = 0;
+
+                    //  荑좏궎�뿉 �꽑�깮�븳 �럹�씠吏� �젙蹂닿� �뾾�쑝硫� 湲곕낯 �럹�씠吏� �젙蹂� 0 �쓣 ���옣
+                    if (angular.isUndefined(selectedRelPage) || selectedRelPage === "") {
+                        currentRelPage = $scope.vm.page.selectedRelPage;
+                    }
+                    else {
+                        currentRelPage = selectedRelPage;
+                    }
+
+                    if (angular.isUndefined(selectedDownPage) || selectedDownPage === "") {
+                        currentDownPage = $scope.vm.page.selectedDownPage;
+                    }
+                    else {
+                        currentDownPage = selectedDownPage;
+                    }
+
                     //  珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎.
                     $scope.fn.initReload();
                     // $scope.fn.getRelTableConfigs();
                     // $scope.fn.getDownTableConfigs();
                     Issue.detail($resourceProvider.getContent(
                         {id : $scope.vm.viewer.id, deep : "02"},
-                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
+                        $resourceProvider.getSubPageContent(currentRelPage, $scope.vm.page.selectedRelPageRowCount
+                            , currentDownPage, $scope.vm.page.selectedDownPageRowCount))
+                        ).then(function (result) {
 
                         if (result.data.message.status === "success") {
                             if (angular.isDefined(result.data.data)) {
 
+                                $scope.vm.page.selectedRelPage = currentRelPage + 1;
+                                $scope.vm.page.selectedDownPage = currentDownPage + 1;
+                                $scope.vm.responseData = result.data;
+
                                 $scope.vm.viewer = angular.copy(result.data.data);
                                 //  �씠�뒋 �씠誘몄� 誘몃━ 蹂닿린 留뚮뱾湲�
                                 $scope.fn.makePreviewImages(result.data.data.attachedFileVos);

--
Gitblit v1.8.0