diff --git a/services/web/app/views/project/editor/review-panel.jade b/services/web/app/views/project/editor/review-panel.jade index e8bddadf49..40c54b6888 100644 --- a/services/web/app/views/project/editor/review-panel.jade +++ b/services/web/app/views/project/editor/review-panel.jade @@ -4,6 +4,8 @@ entries="reviewPanel.entries" threads="reviewPanel.commentThreads" docs="docs" + on-open="refreshResolvedCommentsDropdown();" + is-loading="reviewPanel.dropdown.loading" ) span.review-panel-toolbar-label(ng-click="editor.wantTrackChanges = true;", ng-if="editor.wantTrackChanges === false") Track Changes is strong off @@ -50,7 +52,7 @@ .rp-entry-list( ng-if="reviewPanel.subView === SubViews.OVERVIEW" ) - .rp-overview-loading(ng-if="reviewPanel.overview.loading") + .rp-loading(ng-if="reviewPanel.overview.loading") i.fa.fa-spinner.fa-spin .rp-overview-file( ng-repeat="doc in docs" @@ -249,13 +251,16 @@ script(type='text/ng-template', id='resolvedCommentsDropdownTemplate') //- ) a.resolved-comments-toggle( href - ng-click="state.isOpen = !state.isOpen" + ng-click="toggleOpenState();" ) i.fa.fa-inbox .resolved-comments-dropdown( ng-class="{ 'resolved-comments-dropdown-open' : state.isOpen }" ) + .rp-loading(ng-if="isLoading") + i.fa.fa-spinner.fa-spin div( + ng-if="!isLoading" ng-repeat="doc in docs" ) resolved-comment-entry( 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 4bc7266feb..8de7822ecd 100644 --- a/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee +++ b/services/web/public/coffee/ide/review-panel/controllers/ReviewPanelController.coffee @@ -18,6 +18,8 @@ define [ openSubView: $scope.SubViews.CUR_FILE overview: loading: false + dropdown: + loading: false commentThreads: {} $scope.commentState = @@ -70,11 +72,7 @@ define [ $reviewPanelEl.css "right", "#{ scrollbar.scrollbarWidth }px" else $reviewPanelEl.css "right", "0" - - $scope.$watch "reviewPanel.subView", (subView) -> - return if !subView? - updateScrollbar() - + $scope.$watch "ui.reviewPanelOpen", (open) -> return if !open? if !open @@ -87,6 +85,7 @@ define [ $scope.$watch "reviewPanel.subView", (view) -> return if !view? + updateScrollbar() if view == $scope.SubViews.OVERVIEW refreshOverviewPanel() @@ -133,8 +132,7 @@ define [ getChangeTracker(doc.doc_id).setIdSeed(new_id) doc.setTrackChangesIdSeeds({pending: new_id, inflight: old_id}) - refreshOverviewPanel = () -> - $scope.reviewPanel.overview.loading = true + refreshRanges = () -> $http.get "/project/#{$scope.project_id}/ranges" .success (docs) -> for doc in docs @@ -143,10 +141,23 @@ define [ rangesTracker.comments = doc.ranges?.comments or [] rangesTracker.changes = doc.ranges?.changes or [] updateEntries(doc.id) + + refreshOverviewPanel = () -> + $scope.reviewPanel.overview.loading = true + refreshRanges() + .then () -> $scope.reviewPanel.overview.loading = false - .error (error) -> + .catch () -> $scope.reviewPanel.overview.loading = false - + + $scope.refreshResolvedCommentsDropdown = () -> + $scope.reviewPanel.dropdown.loading = true + refreshRanges() + .then () -> + $scope.reviewPanel.dropdown.loading = false + .catch () -> + $scope.reviewPanel.dropdown.loading = false + updateEntries = (doc_id) -> rangesTracker = getChangeTracker(doc_id) entries = getDocEntries(doc_id) diff --git a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee index 7f9457bcdf..b909948d55 100644 --- a/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee +++ b/services/web/public/coffee/ide/review-panel/directives/resolvedCommentsDropdown.coffee @@ -5,13 +5,22 @@ define [ restrict: "E" templateUrl: "resolvedCommentsDropdownTemplate" scope: - entries : "=" - threads : "=" - docs : "=" + entries : "=" + threads : "=" + docs : "=" + onOpen : "&" + isLoading : "=" + link: (scope, element, attrs) -> scope.state = isOpen: false + scope.toggleOpenState = () -> + scope.state.isOpen = !scope.state.isOpen + if (scope.state.isOpen) + console.log('will call stuff') + scope.onOpen() + scope.resolvedCommentsPerFile = {} filterResolvedComments = () -> diff --git a/services/web/public/stylesheets/app/editor/review-panel.less b/services/web/public/stylesheets/app/editor/review-panel.less index 204191f418..2d02361b54 100644 --- a/services/web/public/stylesheets/app/editor/review-panel.less +++ b/services/web/public/stylesheets/app/editor/review-panel.less @@ -137,7 +137,6 @@ bottom: 0; } - .rp-state-overview & { flex-grow: 2; overflow-y: auto; @@ -314,7 +313,7 @@ .rp-entry-actions { display: flex; - .rp-state-overview & { + .rp-state-overview .rp-entry-list & { display: none; } } @@ -336,14 +335,12 @@ line-height: 1.4; border-bottom: solid 1px @rp-border-grey; - - &:last-child { margin-bottom: 2px; border-bottom-width: 0; } - .rp-state-overview & { + .rp-state-overview .rp-entry-list & { margin: 4px 5px; &:first-child { @@ -501,6 +498,11 @@ text-align: center; } +.rp-loading { + text-align: center; + padding: 5px; +} + .rp-nav { display: flex; flex-shrink: 0;