diff --git a/services/web/app/views/project/list/project-list.pug b/services/web/app/views/project/list/project-list.pug index eae31a4316..629c3dc62d 100644 --- a/services/web/app/views/project/list/project-list.pug +++ b/services/web/app/views/project/list/project-list.pug @@ -140,20 +140,25 @@ ng-repeat="project in visibleProjects | orderBy:predicate:reverse", ng-controller="ProjectListItemController" ) - .row + .row(select-row) .col-xs-6 input.select-item( select-individual, type="checkbox", ng-model="project.selected" + stop-propagation="click" ) span - a.projectName(href="/project/{{project.id}}") {{project.name}} + a.projectName( + href="/project/{{project.id}}" + stop-propagation="click" + ) {{project.name}} span( ng-controller="TagListController" ) .tag-label( ng-repeat='tag in project.tags' + stop-propagation="click" ) a.label.label-default.tag-label-name( href, diff --git a/services/web/public/coffee/directives/selectAll.coffee b/services/web/public/coffee/directives/selectAll.coffee index d5be2639e6..6400d2d0ad 100644 --- a/services/web/public/coffee/directives/selectAll.coffee +++ b/services/web/public/coffee/directives/selectAll.coffee @@ -58,4 +58,18 @@ define [ scope.$apply () -> scope.ngModel = false ignoreChanges = false + + scope.$on "select-all:row-clicked", () -> + ignoreChanges = true + scope.$apply () -> + scope.ngModel = !scope.ngModel + ignoreChanges = false + } + + App.directive "selectRow", () -> + return { + scope: true + link: (scope, element, attrs) -> + element.on "click", (e) -> + scope.$broadcast "select-all:row-clicked" } \ No newline at end of file