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