From abb4ef14d866bb091ba312579e11eb7841bd9a2a Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 26 Jan 2017 15:08:30 +0100 Subject: [PATCH] Streamline the update/rendering process to not do extra work --- .../views/project/editor/review-panel.jade | 1 - .../track-changes/TrackChangesManager.coffee | 55 ++++++++++++------- .../controllers/ReviewPanelController.coffee | 6 +- 3 files changed, 39 insertions(+), 23 deletions(-) diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index 9b31516b3f..590c1a6776 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -41,7 +41,6 @@ .rp-entry-list-inner .rp-entry-wrapper( ng-repeat="(entry_id, entry) in reviewPanel.entries[editor.open_doc_id]" - ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)" ) div(ng-if="entry.type === 'insert' || entry.type === 'delete'") change-entry( diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee index 2d57100cc5..ed15da2958 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/track-changes/TrackChangesManager.coffee @@ -35,8 +35,8 @@ define [ @$scope.$on "comment:remove", (e, comment_id) => @removeCommentId(comment_id) - @$scope.$on "comment:resolve_thread", (e, thread_id) => - @resolveCommentByThreadId(thread_id) + @$scope.$on "comment:resolve_threads", (e, thread_ids) => + @resolveCommentByThreadIds(thread_ids) @$scope.$on "comment:unresolve_thread", (e, thread_id) => @unresolveCommentByThreadId(thread_id) @@ -105,29 +105,45 @@ define [ # ace has updated @rangesTracker.on "insert:added", (change) => sl_console.log "[insert:added]", change - setTimeout () => @_onInsertAdded(change) + setTimeout () => + @_onInsertAdded(change) + @broadcastChange() @rangesTracker.on "insert:removed", (change) => sl_console.log "[insert:removed]", change - setTimeout () => @_onInsertRemoved(change) + setTimeout () => + @_onInsertRemoved(change) + @broadcastChange() @rangesTracker.on "delete:added", (change) => sl_console.log "[delete:added]", change - setTimeout () => @_onDeleteAdded(change) + setTimeout () => + @_onDeleteAdded(change) + @broadcastChange() @rangesTracker.on "delete:removed", (change) => sl_console.log "[delete:removed]", change - setTimeout () => @_onDeleteRemoved(change) + setTimeout () => + @_onDeleteRemoved(change) + @broadcastChange() @rangesTracker.on "changes:moved", (changes) => sl_console.log "[changes:moved]", changes - setTimeout () => @_onChangesMoved(changes) + setTimeout () => + @_onChangesMoved(changes) + @broadcastChange() @rangesTracker.on "comment:added", (comment) => sl_console.log "[comment:added]", comment - setTimeout () => @_onCommentAdded(comment) + setTimeout () => + @_onCommentAdded(comment) + @broadcastChange() @rangesTracker.on "comment:moved", (comment) => sl_console.log "[comment:moved]", comment - setTimeout () => @_onCommentMoved(comment) + setTimeout () => + @_onCommentMoved(comment) + @broadcastChange() @rangesTracker.on "comment:removed", (comment) => sl_console.log "[comment:removed]", comment - setTimeout () => @_onCommentRemoved(comment) + setTimeout () => + @_onCommentRemoved(comment) + @broadcastChange() @rangesTracker.on "clear", () => @clearAnnotations() @@ -150,6 +166,8 @@ define [ for comment in @rangesTracker.comments @_onCommentAdded(comment) + + @broadcastChange() addComment: (offset, content, thread_id) -> op = { c: content, p: offset, t: thread_id } @@ -190,15 +208,20 @@ define [ removeCommentId: (comment_id) -> @rangesTracker.removeCommentId(comment_id) - resolveCommentByThreadId: (thread_id) -> + resolveCommentByThreadIds: (thread_ids) -> + resolve_ids = {} + for id in thread_ids + resolve_ids[id] = true for comment in @rangesTracker?.comments or [] - if comment.op.t == thread_id + if resolve_ids[comment.op.t] @_onCommentRemoved(comment) + @broadcastChange() unresolveCommentByThreadId: (thread_id) -> for comment in @rangesTracker?.comments or [] if comment.op.t == thread_id @_onCommentAdded(comment) + @broadcastChange() checkMapping: () -> # TODO: reintroduce this check @@ -303,7 +326,6 @@ define [ background_marker_id = session.addMarker background_range, "track-changes-marker track-changes-added-marker", "text" callout_marker_id = @_createCalloutMarker(start, "track-changes-added-marker-callout") @changeIdToMarkerIdMap[change.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onDeleteAdded: (change) -> position = @_shareJsOffsetToAcePosition(change.op.p) @@ -318,7 +340,6 @@ define [ callout_marker_id = @_createCalloutMarker(position, "track-changes-deleted-marker-callout") @changeIdToMarkerIdMap[change.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onInsertRemoved: (change) -> {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[change.id] @@ -326,7 +347,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _onDeleteRemoved: (change) -> {background_marker_id, callout_marker_id} = @changeIdToMarkerIdMap[change.id] @@ -334,7 +354,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _onCommentAdded: (comment) -> if @rangesTracker.resolvedThreadIds[comment.op.t] @@ -350,7 +369,6 @@ define [ background_marker_id = session.addMarker background_range, "track-changes-marker track-changes-comment-marker", "text" callout_marker_id = @_createCalloutMarker(start, "track-changes-comment-marker-callout") @changeIdToMarkerIdMap[comment.id] = { background_marker_id, callout_marker_id } - @broadcastChange() _onCommentRemoved: (comment) -> if @changeIdToMarkerIdMap[comment.id]? @@ -360,7 +378,6 @@ define [ session = @editor.getSession() session.removeMarker background_marker_id session.removeMarker callout_marker_id - @broadcastChange() _aceRangeToShareJs: (range) -> lines = @editor.getSession().getDocument().getLines 0, range.row @@ -385,14 +402,12 @@ define [ end = start @_updateMarker(change.id, start, end) @editor.renderer.updateBackMarkers() - @broadcastChange() _onCommentMoved: (comment) -> start = @_shareJsOffsetToAcePosition(comment.op.p) end = @_shareJsOffsetToAcePosition(comment.op.p + comment.op.c.length) @_updateMarker(comment.id, start, end) @editor.renderer.updateBackMarkers() - @broadcastChange() _updateMarker: (change_id, start, end) -> return if !@changeIdToMarkerIdMap[change_id]? 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 5dc2cd3715..45b2e7294e 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -222,8 +222,10 @@ define [ delete delete_changes[comment.id] if $scope.reviewPanel.resolvedThreadIds[comment.op.t] new_comment = resolvedComments[comment.id] ?= {} + delete entries[comment.id] else new_comment = entries[comment.id] ?= {} + delete resolvedComments[comment.id] new_entry = { type: "comment" thread_id: comment.op.t @@ -356,7 +358,7 @@ define [ thread.resolved_by_user = formatUser(user) thread.resolved_at = new Date() $scope.reviewPanel.resolvedThreadIds[thread_id] = true - $scope.$broadcast "comment:resolve_thread", thread_id + $scope.$broadcast "comment:resolve_threads", [thread_id] _onCommentReopened = (thread_id) -> thread = getThread(thread_id) @@ -477,9 +479,9 @@ define [ for comment in thread.messages formatComment(comment) if thread.resolved_by_user? - $scope.$broadcast "comment:resolve_thread", thread_id thread.resolved_by_user = formatUser(thread.resolved_by_user) $scope.reviewPanel.resolvedThreadIds[thread_id] = true + $scope.$broadcast "comment:resolve_threads", [thread_id] $scope.reviewPanel.commentThreads = threads $timeout () -> $scope.$broadcast "review-panel:layout"