| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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 {
- clearSelectAllState: clearSelectAllState
- selectAll: selectAll
- deselectAll: deselectAll
- }
- ]
- 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
- }
|