From 145928e42a8ae18129fcbc720824a9e4f78999bd Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 금, 17 12월 2021 17:23:03 +0900
Subject: [PATCH] 상위이슈의 상세페이지에서 하위이슈에 대한 활동내역 보여주기

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java        |    8 
 src/main/java/kr/wisestone/owl/service/IssueHistoryService.java          |    2 
 src/main/java/kr/wisestone/owl/vo/IssueHistoryVo.java                    |    9 +
 src/main/java/kr/wisestone/owl/vo/IssueCommentVo.java                    |    9 +
 src/main/webapp/i18n/ko/global.json                                      |    8 +
 src/main/webapp/views/issue/issueDetail.html                             |  196 ++++++++++++++++++++++++++------
 src/main/webapp/scripts/app/issue/issueDetail.controller.js              |   42 ++++++
 src/main/webapp/assets/styles/main.css                                   |   11 +
 src/main/java/kr/wisestone/owl/service/impl/IssueCommentServiceImpl.java |    9 +
 src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java |   10 +
 10 files changed, 257 insertions(+), 47 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/IssueHistoryService.java b/src/main/java/kr/wisestone/owl/service/IssueHistoryService.java
index a3083e0..4c1cc74 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueHistoryService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueHistoryService.java
@@ -27,7 +27,7 @@
 
     void findIssueHistory(Map<String, Object> resJsonData, IssueHistoryCondition issueHistoryCondition);
 
-    List<IssueHistoryVo> findIssueHistory(Long issueId);
+    List<IssueHistoryVo> findIssueHistory(Issue issue);
 
     StringBuilder detectIssueChange(Issue issue, IssueForm issueForm, Project project, IssueStatus oldIssueStatus, IssueStatus issueStatus, IssueType issueType, Priority priority, Severity severity, List<MultipartFile> files);
     StringBuilder detectIssueChange(IssueForm issueForm, CheckIssueData data, List<MultipartFile> files);
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueCommentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueCommentServiceImpl.java
index 832585a..ad166cc 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueCommentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueCommentServiceImpl.java
@@ -133,7 +133,14 @@
     @Override
     @Transactional(readOnly = true)
     public List<IssueCommentVo> findIssueComment(Long issueId) {
-        return this.issueCommentRepository.findByIssueId(issueId);
+        List<IssueCommentVo> issueCommentVos = this.issueCommentRepository.findByIssueId(issueId);
+        Issue issue = this.issueService.getIssue(issueId);
+        if (issueCommentVos != null && issueCommentVos.size() > 0) {
+            for (IssueCommentVo issueCommentVo : issueCommentVos) {
+                issueCommentVo.setTitle(issue.getTitle());
+            }
+        }
+        return issueCommentVos;
     }
 
 }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
index 53cab64..3a5ad54 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
@@ -312,8 +312,14 @@
     //  �씠�뒋 �븘�씠�뵒�뿉 �빐�떦�븯�뒗 湲곕줉 �젙蹂대�� 媛��졇�삩�떎.
     @Override
     @Transactional(readOnly = true)
-    public List<IssueHistoryVo> findIssueHistory(Long issueId) {
-        return this.issueHistoryRepository.findByIssueId(issueId);
+    public List<IssueHistoryVo> findIssueHistory(Issue issue) {
+        List<IssueHistoryVo> issueHistoryVos = this.issueHistoryRepository.findByIssueId(issue.getId());
+        if (issueHistoryVos != null && issueHistoryVos.size() > 0) {
+            for (IssueHistoryVo issueHistoryVo : issueHistoryVos) {
+                issueHistoryVo.setTitle(issue.getTitle());
+            }
+        }
+        return issueHistoryVos;
     }
 
     //  �씠�뒋 蹂�寃� �궡�뿭�쓣 異붿텧�븳�떎.
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 be9364c..96d90c3 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -1522,6 +1522,8 @@
                 this.setRegister(downIssue, downIssueVo); // �벑濡앹옄
                 this.setIssueDepartment(downIssue, downIssueVo);  //  �떞�떦遺��꽌 �젙蹂� �뀑�똿
                 this.setIssueCustomFields(downIssue, downIssueVo);   // �궗�슜�옄�젙�쓽�븘�뱶 �젙蹂� �꽭�똿
+                this.setIssueHistory(downIssue, downIssueVo);   //  �씠�뒋 湲곕줉 �젙蹂� �뀑�똿
+                this.setIssueComments(downIssue, downIssueVo);  //  �뙎湲� �젙蹂� �뀑�똿
 
                 resultList.add(downIssueVo);
             }
@@ -1545,10 +1547,10 @@
         this.setIssueDepartment(issue, issueVo);  //  �떞�떦遺��꽌 �젙蹂� �뀑�똿
         this.setAttachedFiles(issue, issueVo);  //  泥⑤� �뙆�씪 �젙蹂� �뀑�똿
         this.setIssueCustomFields(issue, issueVo);  //  �궗�슜�옄 �젙�쓽 �븘�뱶 媛� �젙蹂� �뀑�똿
-        this.setIssueComments(issue, issueVo);  //  �뙎湲� �젙蹂� �뀑�똿
-        this.setIssueHistory(issue, issueVo);   //  �씠�뒋 湲곕줉 �젙蹂� �뀑�똿
         this.setRelationIssue(issue, issueVo);        //�뿰愿� �씪媛� �뀑�똿
         this.setDownIssues(issue, issueVo); //�븯�쐞 �씪媛� �꽭�똿
+        this.setIssueComments(issue, issueVo);  //  �뙎湲� �젙蹂� �뀑�똿
+        this.setIssueHistory(issue, issueVo);   //  �씠�뒋 湲곕줉 �젙蹂� �뀑�똿
 
         IssueType issueType = this.issueTypeService.getIssueType(issueVo.getIssueTypeVo().getId()); // �씠�뒋�쓽 �씠�뒋�쑀�삎 媛앹껜
         Integer using = issueType.getUsePartner() != null ? issueType.getUsePartner().intValue() : 0; // �씠�뒋�쑀�삎蹂꾨줈 �궗�슜以묒씤 �뾽泥�/ISP/�샇�뒪�똿 媛�
@@ -1730,7 +1732,7 @@
 
     //  �씠�뒋 湲곕줉 �젙蹂대�� �뀑�똿�븳�떎.
     private void setIssueHistory(Issue issue, IssueVo issueVo) {
-        issueVo.setIssueHistoryVos(this.issueHistoryService.findIssueHistory(issue.getId()));
+        issueVo.setIssueHistoryVos(this.issueHistoryService.findIssueHistory(issue));
     }
 
     // �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪씠 媛숈� �씠�뒋 李얘린
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueCommentVo.java b/src/main/java/kr/wisestone/owl/vo/IssueCommentVo.java
index 2418595..5c8fbfd 100644
--- a/src/main/java/kr/wisestone/owl/vo/IssueCommentVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/IssueCommentVo.java
@@ -9,6 +9,7 @@
 public class IssueCommentVo extends BaseVo {
 
     private Long id;
+    private String title;
     private String description;
     private IssueVo issueVo;
     private String registerName;
@@ -34,6 +35,14 @@
         this.id = id;
     }
 
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
     public String getDescription() {
         return description;
     }
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueHistoryVo.java b/src/main/java/kr/wisestone/owl/vo/IssueHistoryVo.java
index c15083f..b8aa587 100644
--- a/src/main/java/kr/wisestone/owl/vo/IssueHistoryVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/IssueHistoryVo.java
@@ -10,6 +10,7 @@
  */
 public class IssueHistoryVo extends BaseVo{
     private Long id;
+    private String title;
     private String description;
     private String registerName;
     private String profile;
@@ -40,6 +41,14 @@
         this.id = id;
     }
 
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
     public String getDescription() {
         return description;
     }
diff --git a/src/main/webapp/assets/styles/main.css b/src/main/webapp/assets/styles/main.css
index e21105b..9f6259f 100644
--- a/src/main/webapp/assets/styles/main.css
+++ b/src/main/webapp/assets/styles/main.css
@@ -19392,6 +19392,11 @@
     position: relative;
 }
 
+.re-title {
+    margin-top: 11px;
+    margin-left: 18px;
+}
+
 .ae-item {
     display: -webkit-box;
     display: -ms-flexbox;
@@ -29030,6 +29035,12 @@
     font-weight: bold;
 }
 
+.dot {
+    color: #161617;
+    font-size: 0.9rem;
+    font-weight: bold;
+}
+
 .activity-text h6.creat .dot {
     width: 5px;
     height: 5px;
diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json
index f9d846b..89bc71d 100644
--- a/src/main/webapp/i18n/ko/global.json
+++ b/src/main/webapp/i18n/ko/global.json
@@ -201,6 +201,7 @@
         "requireIssueTitle": "�씠�뒋 �젣紐⑹쓣 �엯�젰�븯�꽭�슂.",
         "issueList": "�씠�뒋 紐⑸줉",
         "summaryIssueActivity": "�씠�뒋 �솢�룞 �궡�뿭 �슂�빟",
+        "summaryDownIssueActivity": "�븯�쐞 �씠�뒋 �솢�룞 �궡�뿭 �슂�빟",
         "modifyIssues": "�씠�뒋 �닔�젙",
         "continueCreateIssue": "�씠 �솕硫댁뿉�꽌 �씠�뒋瑜� 怨꾩냽 �깮�꽦�빀�땲�떎.",
         "initializedAssigneeCustomField": "�봽濡쒖젥�듃瑜� 蹂�寃쏀븯硫� �떞�떦�옄, �궗�슜�옄 �젙�쓽 �븘�뱶 媛믪씠 珥덇린�솕 �맗�땲�떎.",
@@ -259,7 +260,7 @@
         "issueContentIsWrittenApplyTheTemplate": "�씠�뒋 �궡�슜�씠 �옉�꽦�릺�뼱 �엳�뒿�땲�떎. �뀥�뵆由우쓣 �쟻�슜�븯寃좎뒿�땲源�? �뀥�뵆由우씠 �쟻�슜�릺硫� �씠誘� �옉�꽦�맂 �궡�슜�씠 �궗�씪吏묐땲�떎.",
         "failedIssueStatusCheck": "�씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 議고쉶 �떎�뙣",
         "failedIssueStatusWorkflowDepartmentCheck": "�씠�뒋 �긽�깭 �떞�떦 遺��꽌 議고쉶 �떎�뙣",
-        "failedToChangeMultipleIssueStatus": "�떎以� �씠�뒋 �긽�깭 蹂�寃� �떎�뙣",
+        "failedToChangeMultipleIssueStatus": "�씠�뒋 �긽�깭 蹂�寃� �떎�뙣",
         "completedSavingIssueTable": "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �셿猷�",
         "saveIssueTableSettingsInformation": "�씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂닿� ���옣�릺�뿀�뒿�땲�떎.",
         "failedToSaveIssueTableSetting": "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �떎�뙣",
@@ -726,6 +727,8 @@
         "fullView": "�쟾泥대낫湲�",
         "comments": "�뙎湲�",
         "record": "湲곕줉",
+        "recordDown": "�븯�쐞�씠�뒋 湲곕줉",
+        "downComments": "�븯�쐞�씠�뒋 �뙎湲�",
         "noAssignee": "�떞�떦�옄媛� �뾾�뒿�땲�떎.",
         "noContent": "�궡�슜�씠 �뾾�뒿�땲�떎.",
         "noRecord": "湲곕줉�씠 �뾾�뒿�땲�떎.",
@@ -736,6 +739,7 @@
         "writeWaring2": "<li>�젣紐� 而щ읆�� 理쒕� 300湲��옄源뚯� �엯�젰�븷 �닔 �엳�뒿�땲�떎.</li><li>�궡�슜 而щ읆�� 理쒕� 5000湲��옄源뚯� �엯�젰�븷 �닔 �엳�뒿�땲�떎.</li><li>�봽濡쒖젥�듃 而щ읆�� �봽濡쒖젥�듃 �궎瑜� �엯�젰�빐�빞 �빀�땲�떎.<dl><dt>�봽濡쒖젥�듃 �궎�뒗 �봽濡쒖젥�듃 紐⑸줉�뿉�꽌 �솗�씤�븷 �닔 �엳�뒿�땲�떎.</dt></dl></li><li>�쑀�삎 而щ읆�� �씠�뒋 而щ읆 紐낆쓣 �엯�젰�빐�빞 �빀�땲�떎.<dl><dt>�쑀�삎 紐낆� �쑀�삎 紐⑸줉�뿉�꽌 �솗�씤�븷 �닔 �엳�뒿�땲�떎.</dt></dl></li><li>�슦�꽑�닚�쐞 而щ읆�� �궙�쓬, 蹂댄넻, �넂�쓬 以묒뿉�꽌 1媛쒕쭔 �엯�젰�빐�빞 �빀�땲�떎.</li><li>以묒슂�룄 而щ읆�� �궙�쓬, 蹂댄넻, �떖媛� 以묒뿉�꽌 1媛쒕쭔 �엯�젰�빐�빞 �빀�땲�떎.</li><li>�떞�떦�옄�뒗 �씠硫붿씪濡� 吏��젙�븷 �닔 �엳�뒿�땲�떎.<dl><dt>�뿬�윭 �떞�떦�옄瑜� 吏��젙�븯�젮硫� #�쑝濡� 援щ텇�븯�뿬 �벑濡앺븷 �닔 �엳�뒿�땲�떎.</dt><dt>ex) wisestoneowl@gmail.com#support@wisestone.kr </dt><dt>�빐�떦 �떞�떦�옄媛� �벑濡앺븯�젮�뒗 �씠�뒋�쓽 �봽濡쒖젥�듃�뿉 李몄뿬�븯怨� �엳�뼱�빞 �빀�땲�떎.</dt></dl></li><li>�떆�옉�씪�� �떎�쓬怨� 媛숈� �삎�떇�쑝濡� �엯�젰�빐�빞 �빀�땲�떎.<dl><dt>�궇吏� �엯�젰 媛� 寃곌낵 2018-11-22  10:30:00 AM O </dt></dl></li><li>J 而щ읆遺��꽣�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶 �엯�땲�떎. �썝�븯�뒗 �븘�뱶 媛믪쓣 �엯�젰�빐�빞 �빀�땲�떎.<dl><dt>�빐�떦 �궗�슜�옄 �젙�쓽 �븘�뱶媛� 臾몄옄�뿴 �엯�젰 �븘�뱶�씪 寃쎌슦 理쒕� 100湲��옄源뚯� �엯�젰 媛��뒫�빀�땲�떎.</dt><dt>�빐�떦 �궗�슜�옄 �젙�쓽 �븘�뱶媛� �떎以� �꽑�깮 �븘�뱶硫� #瑜� �궗�슜�븯�뿬 �뿬�윭 媛믪쓣 �엯�젰�븷 �닔 �엳�뒿�땲�떎.</dt><dt>ex) �샃�뀡 媛믪씠 怨좎뼇�씠, 媛뺤븘吏�, �넗�겮�씪 寃쎌슦 怨좎뼇�씠�� �넗�겮瑜� 媛믪쑝濡� �젙�븯湲� �쐞�빐�꽌�뒗 <span class=\"fc-blue\">怨좎뼇�씠#�넗�겮</span>�� 媛숈씠 �엯�젰�빐�빞 �빀�땲�떎. </dt></dl></li>",
         "color": "�깋�긽",
         "activityLogs": "�솢�룞 �궡�뿭",
+        "writeComment": "�뙎湲� �벐湲�",
         "updatableStatus": "蹂�寃� 媛��뒫�븳 �긽�깭",
         "testCase": "�뀒�뒪�듃 耳��씠�뒪",
         "updateStatus": "�긽�깭 蹂�寃�",
@@ -792,6 +796,8 @@
         "createIssue": "�씠�뒋 �깮�꽦",
         "updateIssue": "�씠�뒋 蹂�寃�",
         "deleteIssue": "�씠�뒋 �궘�젣",
+        "createDownIssue": "�븯�쐞 �씠�뒋 �깮�꽦",
+        "updateDownIssue": "�븯�쐞 �씠�뒋 蹂�寃�",
         "deleteDownIssue": "�븯�쐞 �씠�뒋 �궘�젣",
         "sendMailIssue": "�씠�뒋 硫붿씪 �쟾�넚",
         "updateTitle": "�젣紐⑹씠 蹂�寃쎈릺�뿀�뒿�땲�떎.",
diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
index ad81f3a..c763d1a 100644
--- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -995,8 +995,45 @@
 
                 //  �솢�룞 �씠�젰 留뚮뱾湲�
                 function makeActiveHistory() {
-                    $scope.vm.viewer.activeHistory = $scope.vm.viewer.issueCommentVos.concat($scope.vm.viewer.issueHistoryVos);
-                    $scope.vm.viewer.activeHistory.sort(function (a, b) {
+                    if ($scope.vm.viewer.issueDownVos != null && $scope.vm.viewer.issueDownVos.length > 0) {
+                        $scope.vm.viewer.activeHistory = "";
+                        $scope.vm.viewer.activeParentHistory = "";
+                        $scope.vm.viewer.activeDownHistory = "";
+                        $scope.vm.viewer.activeDownAllHistory = "";
+                        // �븯�쐞�씠�뒋 �엳�뒪�넗由�
+                        for (var i=0; i<$scope.vm.viewer.issueDownVos.length; i++){
+                            $scope.vm.viewer.activeDownHistory = $scope.vm.viewer.issueDownVos[i].issueHistoryVos.concat($scope.vm.viewer.issueDownVos[i+1].issueHistoryVos);
+                            i++;
+                        }
+                        for (var i=0; i<$scope.vm.viewer.activeDownHistory.length; i++){
+                            $scope.vm.viewer.activeDownHistory[i].description
+                                = "<div class='dot'>�븯�쐞�씠�뒋 : "+$scope.vm.viewer.activeDownHistory[i].title+"</div>" + $scope.vm.viewer.activeDownHistory[i].description;
+                        }
+                        $scope.vm.viewer.activeDownHistory.sort(function (a, b) {   //�궡由쇱감�닚
+                            return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0;
+                        });
+
+                        // �븯�쐞�씠�뒋 �뙎湲� �엳�뒪�넗由�
+                       for (var i=0; i<$scope.vm.viewer.issueDownVos.length; i++) {
+                            $scope.vm.viewer.downComment = $scope.vm.viewer.issueDownVos[i].issueCommentVos.concat($scope.vm.viewer.issueDownVos[i+1].issueCommentVos);
+                            i++;
+                       }
+                       /*for (var i=0; i<$scope.vm.viewer.downComment.length; i++){
+                           $scope.vm.viewer.downComment[i].description
+                               = $scope.vm.viewer.downComment[i].title +"�쓽 �뙎湲� : "+ $scope.vm.viewer.downComment[i].description;
+                       }*/
+                       $scope.vm.viewer.issueDownVos.sort(function (a, b) {   //�궡由쇱감�닚
+                           return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0;
+                       });
+
+                       $scope.vm.viewer.activeDownAllHistory = $scope.vm.viewer.downComment.concat($scope.vm.viewer.activeDownHistory);
+                       $scope.vm.viewer.activeParentHistory = $scope.vm.viewer.issueCommentVos.concat($scope.vm.viewer.issueHistoryVos);
+                       $scope.vm.viewer.activeHistory = $scope.vm.viewer.activeParentHistory.concat($scope.vm.viewer.activeDownAllHistory);
+
+                    }else {
+                        $scope.vm.viewer.activeHistory = $scope.vm.viewer.issueCommentVos.concat($scope.vm.viewer.issueHistoryVos);
+                    }
+                    $scope.vm.viewer.activeHistory.sort(function (a, b) {   //�궡由쇱감�닚
                         return a.registerDate > b.registerDate ? -1 : a.registerDate < b.registerDate ? 1 : 0;
                     });
                 }
@@ -1073,6 +1110,7 @@
 
                         if (result.data.message.status === "success") {
                             $scope.vm.viewer.issueCommentVos = result.data.data;
+                            $scope.fn.updateActiveHistory();
                         }
                         else {
                             SweetAlert.swal({
diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html
index 3e26ae3..6afd634 100644
--- a/src/main/webapp/views/issue/issueDetail.html
+++ b/src/main/webapp/views/issue/issueDetail.html
@@ -631,6 +631,32 @@
                         <span translate="common.noAttachedFile">泥⑤��맂 �뙆�씪�씠 �뾾�뒿�땲�떎.</span>
                     </div>
                 </div>
+                <div class="row">
+                    <div class="col-sm-12">
+                        <h6 class="todo-content-subheader mt-20" translate="common.writeComment">�뙎湲� �벐湲�</h6>
+                        <form name="commentForm" ng-enter="fn.addComment()">
+                            <div class="form-group row ">
+                                <div class="col-sm-12">
+                                    <div class="input-group">
+                                        <input class="form-control"
+                                               kr-input
+                                               maxlength="300"
+                                               placeholder="{{'common.pleaseEnterComments' | translate}}"
+                                               ng-model="vm.viewer.comment"
+                                               type="text">
+                                        <div class="input-group-prepend">
+                                            <div class="input-group-text2"
+                                                 ng-class="{ 'disable' : !$root.isDefined(vm.viewer.comment) }"
+                                                 ng-click="fn.addComment()">
+                                                <i class="os-icon os-icon-mail-18"></i>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </form>
+                    </div>
+                </div>
 
                 <!--    �솢�룞 �궡�뿭   -->
                 <div class="row">
@@ -644,14 +670,22 @@
                                            ng-click="fn.updateActiveHistory()"><span
                                                 translate="common.fullView">�쟾泥대낫湲�</span></a>
                                     </li>
-                                    <li class="nav-item cursor">
+                                    <!--<li class="nav-item cursor">
                                         <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'REPLY' }"
                                            ng-click="vm.activeTab = 'REPLY'"><span translate="common.comments">�뙎湲�</span></a>
-                                    </li>
+                                    </li>-->
                                     <li class="nav-item cursor">
                                         <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'RECODE' }"
                                            ng-click="vm.activeTab = 'RECODE'"><span translate="common.record">湲곕줉</span></a>
                                     </li>
+                                    <li class="nav-item cursor">
+                                        <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'RECODE_DOWN' }"
+                                           ng-click="vm.activeTab = 'RECODE_DOWN'"><span translate="common.recordDown">�븯�쐞�씠�뒋 湲곕줉</span></a>
+                                    </li>
+                                    <!--<li class="nav-item cursor">
+                                        <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'REPLY_DOWN' }"
+                                           ng-click="vm.activeTab = 'REPLY_DOWN'"><span translate="common.downComments">�븯�쐞�씠�뒋 �뙎湲�</span></a>
+                                    </li>-->
                                 </ul>
                             </div>
 
@@ -662,12 +696,18 @@
                                         <!--    湲곕줉�씤 寃쎌슦  -->
                                         <div class="aei-content"
                                              ng-if="$root.isDefined(activeHistory.issueHistoryType)">
-                                            <h6 ng-if="activeHistory.issueHistoryType == 'TOTAL'"
+                                            <!--<h6 ng-if="activeHistory.issueHistoryType == 'TOTAL'"
                                                 translate="issue.summaryIssueActivity">�씠�뒋 �솢�룞 �궡�뿭 �슂�빟 <i
-                                                    class="os-icon os-icon-arrow-down"></i></h6>
+                                                    class="os-icon os-icon-arrow-down"></i></h6>-->
                                             <div dom-append dom="activeHistory.description"></div>
                                         </div>
                                         <!--    �뙎湲��씤 寃쎌슦  -->
+                                        <div ng-if="!$root.isDefined(activeHistory.issueHistoryType)"
+                                             ng-show="vm.viewer.title !== activeHistory.title">
+                                            <div>
+                                                �븯�쐞�씠�뒋 : {{::activeHistory.title}}
+                                            </div>
+                                        </div>
                                         <div class="aei-image" ng-if="!$root.isDefined(activeHistory.issueHistoryType)">
                                             <div class="user-avatar-w">
                                                 <img alt="image" ng-src="{{::activeHistory.profile}}">
@@ -728,53 +768,135 @@
                                                         <span class="issue-detail-word-break">{{::comment.description}}</span>
                                                     </div>
                                                 </div>
-
                                             </div>
                                         </div>
                                     </div>
-                                    <form name="commentForm" ng-enter="fn.addComment()">
-                                        <div class="form-group row ">
-                                            <div class="col-sm-12">
-                                                <div class="input-group">
-                                                    <input class="form-control"
-                                                           kr-input
-                                                           maxlength="300"
-                                                           placeholder="{{'common.pleaseEnterComments' | translate}}"
-                                                           ng-model="vm.viewer.comment"
-                                                           type="text">
-                                                    <div class="input-group-prepend">
-                                                        <div class="input-group-text2"
-                                                             ng-class="{ 'disable' : !$root.isDefined(vm.viewer.comment) }"
-                                                             ng-click="fn.addComment()">
-                                                            <i class="os-icon os-icon-mail-18"></i>
-                                                        </div>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </form>
                                 </div>
 
                                 <!--    湲곕줉 蹂닿린    -->
                                 <div ng-if="vm.activeTab == 'RECODE'">
-                                    <div class="no-cont2"
-                                         ng-if="vm.viewer.issueHistoryVos.length < 1"
-                                         translate="common.noRecord">
+                                    <div class="no-cont2" ng-if="vm.viewer.activeParentHistory.length < 1" translate="common.noRecord">
                                         湲곕줉�씠 �뾾�뒿�땲�떎.
                                     </div>
-                                <!--<div>
-                                        {{vm.viewer.issueHistoryVos}}
-                                    </div>-->
 
-                                    <div class="activity-item"
-                                         ng-repeat="issueHistory in vm.viewer.issueHistoryVos">
-                                        <h6 ng-if="issueHistory.issueHistoryType == 'TOTAL'"
+                                    <div class="activity-item" ng-repeat="issueHistory in vm.viewer.activeParentHistory">
+                                        <!--<h6 ng-if="issueHistory.issueHistoryType == 'TOTAL'"
                                             translate="issue.summaryIssueActivity">�씠�뒋 �솢�룞 �궡�뿭 �슂�빟
                                             <i class="os-icon os-icon-arrow-down"></i>
-                                        </h6>
-                                        <div class="activity-content">
+                                        </h6>-->
+                                        <div class="activity-content" ng-if="$root.isDefined(issueHistory.issueHistoryType)">
                                             <div dom-append dom="issueHistory.description"></div>
                                         </div>
+                                        <!--    �뙎湲��씤 寃쎌슦  -->
+                                        <div class="aei-image" ng-if="!$root.isDefined(issueHistory.issueHistoryType)">
+                                            <div class="user-avatar-w">
+                                                <img alt="image" ng-src="{{::issueHistory.profile}}">
+                                            </div>
+                                        </div>
+                                        <div class="aei-content"
+                                             ng-if="!$root.isDefined(issueHistory.issueHistoryType)">
+                                            <h6 class="aei-title">
+                                                {{::issueHistory.registerName}}
+                                            </h6>
+                                            <div class="date-break">
+                                                <span>{{::issueHistory.registerDate}}</span>
+                                            </div>
+                                            <div class="aei-delete"
+                                                 ng-click="fn.removeComment(comment)"
+                                                 ng-show="$root.user.id == comment.registerId">
+                                                <i class="os-icon os-icon-close"></i>
+                                            </div>
+                                            <div class="chat-messages">
+                                                <div class="message">
+                                                    <div class="message-content">
+                                                        <span class="issue-detail-word-break">{{::issueHistory.description}}</span>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <!--    �븯�쐞�씠�뒋 湲곕줉 蹂닿린    -->
+                                <div ng-if="vm.activeTab == 'RECODE_DOWN'">
+                                    <div class="no-cont2" ng-if="vm.viewer.activeDownAllHistory.length < 1" translate="common.noRecord">
+                                        湲곕줉�씠 �뾾�뒿�땲�떎.
+                                    </div>
+                                    <div class="activity-item" ng-repeat="issueDownHistory in vm.viewer.activeDownAllHistory">
+                                        <!--    湲곕줉�씤 寃쎌슦  -->
+                                        <div class="activity-content" ng-if="$root.isDefined(issueDownHistory.issueHistoryType)">
+                                            <div dom-append dom="issueDownHistory.description"></div>
+                                        </div>
+                                        <!--    �뙎湲��씤 寃쎌슦  -->
+                                        <div class="aei-content" ng-if="!$root.isDefined(issueDownHistory.issueHistoryType)">
+                                            <div class="aei-title">
+                                                �븯�쐞�씠�뒋 : {{::issueDownHistory.title}}
+                                            </div>
+                                        </div>
+                                        <div class="aei-image" ng-if="!$root.isDefined(issueDownHistory.issueHistoryType)">
+                                            <div class="user-avatar-w">
+                                                <img alt="image" ng-src="{{::issueDownHistory.profile}}">
+                                            </div>
+                                        </div>
+                                        <div class="aei-content" ng-if="!$root.isDefined(issueDownHistory.issueHistoryType)">
+                                            <h6 class="aei-title">
+                                                {{::issueDownHistory.registerName}}
+                                            </h6>
+                                            <div class="date-break">
+                                                <span>{{::issueDownHistory.registerDate}}</span>
+                                            </div>
+                                            <div class="aei-delete"
+                                                 ng-click="fn.removeComment(comment)"
+                                                 ng-show="$root.user.id == comment.registerId">
+                                                <i class="os-icon os-icon-close"></i>
+                                            </div>
+                                            <div class="chat-messages">
+                                                <div class="message">
+                                                    <div class="message-content">
+                                                        <span class="issue-detail-word-break">{{::issueDownHistory.description}}</span>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+
+                                <!--    �븯�쐞�씠�뒋 �뙎湲� 蹂닿린    -->
+                                <div ng-if="vm.activeTab == 'REPLY_DOWN'">
+                                    <div class="no-cont2" ng-if="$scope.vm.viewer.downComment.length < 1"
+                                         translate="common.noComments">
+                                        �뙎湲��씠 �뾾�뒿�땲�떎.
+                                    </div>
+                                    <div class="ae-item" ng-repeat="comment in vm.viewer.downComment">
+                                        <div class="re-title">
+                                            <div class='dot'>
+                                                �븯�쐞�씠�뒋: {{::comment.title}}
+                                            </div>
+                                        </div>
+                                        <div class="aei-image">
+                                            <div class="user-avatar-w">
+                                                <img alt="image" ng-src="{{::comment.profile}}">
+                                            </div>
+                                        </div>
+                                        <div class="aei-content">
+                                            <h6 class="aei-title">
+                                                {{::comment.registerName}}
+                                            </h6>
+                                            <div class="date-break">
+                                                <span>{{::comment.registerDate}}</span>
+                                            </div>
+                                            <div class="aei-delete"
+                                                 ng-click="fn.removeComment(comment)"
+                                                 ng-show="$root.user.id == comment.registerId">
+                                                <i class="os-icon os-icon-close"></i>
+                                            </div>
+                                            <div class="chat-messages">
+                                                <div class="message">
+                                                    <div class="message-content">
+                                                        <span class="issue-detail-word-break">{{::comment.description}}</span>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
                                     </div>
                                 </div>
                             </div>

--
Gitblit v1.8.0