| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- define [
- "base"
- ], (App) ->
- App.directive "selectAllList", () ->
- return {
- controller: ["$scope", ($scope) ->
- # Selecting or deselecting all should apply to all projects
- @selectAll = () ->
- $scope.$broadcast "select-all:select"
- @deselectAll = () ->
- $scope.$broadcast "select-all:deselect"
- @clearSelectAllState = () ->
- $scope.$broadcast "select-all:clear"
- return
- ]
- link: (scope, element, attrs) ->
- }
- App.directive "selectAll", () ->
- return {
- require: "^selectAllList"
- link: (scope, element, attrs, selectAllListController) ->
- scope.$on "select-all:clear", () ->
- element.prop("checked", false)
- element.change () ->
- if element.is(":checked")
- selectAllListController.selectAll()
- else
- selectAllListController.deselectAll()
- return true
- }
- App.directive "selectIndividual", () ->
- return {
- require: "^selectAllList"
- scope: {
- ngModel: "="
- }
- link: (scope, element, attrs, selectAllListController) ->
- ignoreChanges = false
- scope.$watch "ngModel", (value) ->
- if value? and !ignoreChanges
- selectAllListController.clearSelectAllState()
- scope.$on "select-all:select", () ->
- ignoreChanges = true
- scope.$apply () ->
- scope.ngModel = true
- ignoreChanges = false
- scope.$on "select-all:deselect", () ->
- ignoreChanges = true
- scope.$apply () ->
- scope.ngModel = false
- ignoreChanges = false
- scope.$on "select-all:row-clicked", () ->
- ignoreChanges = true
- scope.$apply () ->
- scope.ngModel = !scope.ngModel
- if !scope.ngModel
- selectAllListController.clearSelectAllState()
- ignoreChanges = false
- }
- App.directive "selectRow", () ->
- return {
- scope: true
- link: (scope, element, attrs) ->
- element.on "click", (e) ->
- scope.$broadcast "select-all:row-clicked"
- }
|