From 8f9a4882c8c792498ab2530599cbf59fc3b471a7 Mon Sep 17 00:00:00 2001 From: James Allen Date: Thu, 20 Oct 2016 15:04:10 +0100 Subject: [PATCH] Don't let widgets in review panel overlap --- .../web/app/views/project/editor/editor.jade | 4 +-- .../review-panel/ReviewPanelManager.coffee | 1 + .../directives/reviewPanelSorted.coffee | 26 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee diff --git a/services/web/app/views/project/editor/editor.jade b/services/web/app/views/project/editor/editor.jade index ecdc435831..f33e79ee12 100644 --- a/services/web/app/views/project/editor/editor.jade +++ b/services/web/app/views/project/editor/editor.jade @@ -44,8 +44,8 @@ div.full-size( ) #review-panel .review-panel-scroller - .review-entry-list - .review-entry(ng-repeat="(entry_id, entry) in reviewPanel.entries", ng-style="{'top': entry.screenPos.y}") + .review-entry-list(review-panel-sorted) + .review-entry(ng-repeat="(entry_id, entry) in reviewPanel.entries", ng-style="{'top': top}") {{ entry.content }} .ui-layout-east diff --git a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee index 2670310f25..6a27e13f3e 100644 --- a/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee +++ b/services/web/public/coffee/ide/review-panel/ReviewPanelManager.coffee @@ -1,3 +1,4 @@ define [ "ide/review-panel/controllers/ReviewPanelController" + "ide/review-panel/directives/reviewPanelSorted" ], () -> \ No newline at end of file diff --git a/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee new file mode 100644 index 0000000000..5d7e14365b --- /dev/null +++ b/services/web/public/coffee/ide/review-panel/directives/reviewPanelSorted.coffee @@ -0,0 +1,26 @@ +define [ + "base" +], (App) -> + console.log "Defingint", "reviePanelSorted" + App.directive "reviewPanelSorted", () -> + return { + link: (scope, element, attrs) -> + scope.$watch "reviewPanel.entries", (value) -> + return if !value? + console.log "reviewPanel.entries updates", entries + entries = [] + for el in element.find(".review-entry") + entries.push { + el: el + scope: angular.element(el).scope() + } + entries.sort (a,b) -> a.scope.entry.offset - b.scope.entry.offset + + previousBottom = 0 + for entry in entries + height = $(entry.el).height() + top = entry.scope.entry.screenPos.y + top = Math.max(top, previousBottom + 12) + previousBottom = top + height + entry.scope.top = top + } \ No newline at end of file