From 00a6df156bc1128d47b7156413ade6e056322560 Mon Sep 17 00:00:00 2001 From: Paulo Reis Date: Wed, 16 Nov 2016 15:12:58 +0000 Subject: [PATCH] Wrap comment entries in a directive --- .../views/project/editor/review-panel.jade | 66 ++++++++++--------- .../controllers/ReviewPanelController.coffee | 10 +-- .../directives/changeEntry.coffee | 2 +- .../directives/commentEntry.coffee | 18 +++++ 4 files changed, 60 insertions(+), 36 deletions(-) create mode 100644 services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 8f11625421..ad56f1b449 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -31,41 +31,23 @@ .rp-entry( ng-class="[ 'rp-entry-' + entry.type, (commentState.adding ? 'rp-entry-adding-comment' : ''), (entry.focused ? 'rp-entry-focused' : '')]" ) - div(ng-if="entry.type == 'insert' || entry.type == 'delete'") + div(ng-if="entry.type === 'insert' || entry.type === 'delete'") change-entry( entry="entry" - author="users[entry.metadata.user_id]" + user="users[entry.metadata.user_id]" on-reject="rejectChange(entry_id);" on-accept="acceptChange(entry_id);" ) - div(ng-if="entry.type == 'comment'") - .rp-comment( - ng-repeat="comment in entry.thread" - ng-class="users[comment.user_id].isSelf ? 'rp-comment-self' : '';" + div(ng-if="entry.type === 'comment'") + comment-entry( + entry="entry" + users="users" + on-resolve="" + on-reply="submitReply(entry);" ) - .rp-avatar( - ng-if="!users[comment.user_id].isSelf;" - style="background-color: hsl({{ users[comment.user_id].hue }}, 70%, 50%);" - ) {{ users[comment.user_id].avatar_text }} - .rp-comment-body(style="color: hsl({{ users[comment.user_id].hue }}, 70%, 90%);") - p.rp-comment-content {{ comment.content }} - p.rp-comment-metadata - | {{ comment.ts | date : 'MMM d, y h:mm a' }} - |  •  - span(style="color: hsl({{ users[comment.user_id].hue }}, 70%, 40%);") {{ users[comment.user_id].name }} - .rp-comment-reply - textarea.rp-comment-input( - ng-model="entry.replyContent" - ng-keypress="handleCommentReplyKeyPress($event, entry);" - placeholder="Hit \"Enter\" to reply" - ) - .rp-entry-actions - a.rp-entry-button(href) - i.fa.fa-check - |  Mark as resolved - div(ng-if="entry.type == 'add-comment'") + div(ng-if="entry.type === 'add-comment'") a.rp-add-comment-btn( href ng-if="!commentState.adding" @@ -212,9 +194,9 @@ script(type='text/ng-template', id='changeEntryTemplate') i.fa.fa-pencil(ng-switch-when="insert") i.rp-icon-delete(ng-switch-when="delete") .rp-entry-metadata - p.rp-entry-metadata-line(style="color: hsl({{ author.hue }}, 70%, 50%);") {{ author.name }} + p.rp-entry-metadata-line(style="color: hsl({{ user.hue }}, 70%, 50%);") {{ user.name }} p.rp-entry-metadata-line {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }} - .rp-avatar(style="background-color: hsl({{ author.hue }}, 70%, 50%);") {{ author.avatar_text }} + .rp-avatar(style="background-color: hsl({{ user.hue }}, 70%, 50%);") {{ user.avatar_text }} .rp-entry-body(ng-switch="entry.type") span(ng-switch-when="insert") Added  ins.rp-content-highlight {{ entry.content }} @@ -228,4 +210,28 @@ script(type='text/ng-template', id='changeEntryTemplate') i.fa.fa-check |  Accept -script(type='text/ng-template', id='commentEntryTemplate') \ No newline at end of file +script(type='text/ng-template', id='commentEntryTemplate') + .rp-comment( + ng-repeat="comment in entry.thread" + ng-class="users[comment.user_id].isSelf ? 'rp-comment-self' : '';" + ) + .rp-avatar( + ng-if="!users[comment.user_id].isSelf;" + style="background-color: hsl({{ users[comment.user_id].hue }}, 70%, 50%);" + ) {{ users[comment.user_id].avatar_text }} + .rp-comment-body(style="color: hsl({{ users[comment.user_id].hue }}, 70%, 90%);") + p.rp-comment-content {{ comment.content }} + p.rp-comment-metadata + | {{ comment.ts | date : 'MMM d, y h:mm a' }} + |  •  + span(style="color: hsl({{ users[comment.user_id].hue }}, 70%, 40%);") {{ users[comment.user_id].name }} + .rp-comment-reply + textarea.rp-comment-input( + ng-model="entry.replyContent" + ng-keypress="handleCommentReplyKeyPress($event);" + placeholder="Hit \"Enter\" to reply" + ) + .rp-entry-actions + a.rp-entry-button(href, ng-click="onResolve();") + i.fa.fa-check + |  Mark as resolved \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee index 4b08118879..b3dac6a139 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -108,11 +108,11 @@ define [ entry.replying = true $scope.$broadcast "review-panel:layout" - $scope.handleCommentReplyKeyPress = (ev, entry) -> - if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey - ev.preventDefault() - ev.target.blur() - $scope.submitReply(entry) + # $scope.handleCommentReplyKeyPress = (ev, entry) -> + # if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey + # ev.preventDefault() + # ev.target.blur() + # $scope.submitReply(entry) $scope.submitReply = (entry) -> entry.thread.push { diff --git a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee index cd424f7036..adf474a6bd 100644 --- a/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/changeEntry.coffee @@ -6,7 +6,7 @@ define [ templateUrl: "changeEntryTemplate" scope: entry: "=" - author: "=" + user: "=" onAccept: "&" onReject: "&" \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee new file mode 100644 index 0000000000..32efcbbe39 --- /dev/null +++ b/services/web/public/coffee/ide/review-panel/directives/commentEntry.coffee @@ -0,0 +1,18 @@ +define [ + "base" +], (App) -> + App.directive "commentEntry", () -> + restrict: "E" + templateUrl: "commentEntryTemplate" + scope: + entry: "=" + users: "=" + onResolve: "&" + onReply: "&" + link: (scope, element, attrs) -> + scope.handleCommentReplyKeyPress = (ev) -> + if ev.keyCode == 13 and !ev.shiftKey and !ev.ctrlKey and !ev.metaKey + ev.preventDefault() + ev.target.blur() + scope.onReply() + \ No newline at end of file