Sha256: 1cb8145322320a8fb98c334571ff7f91c7e25db080dda231c916917ac5fe77c5

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

angular.module('EssayApp.directives').directive "ngCheckItem", ['$timeout', ($timeout) ->
  restrict: 'A'
  scope: true
  require: "ngModel"
  link: (scope, element, attrs, ngModel) ->
    item = scope.$eval(attrs.ngCheckItem)
    return unless item
    scope.value = $.extend { selected: false }, item, true

    activateCell = (cell) ->
      # element.addClass('active')

    clearCell = (cell) ->
      # element.removeClass('active')

    checkCell = () ->
      if isSelected(scope.value)
        scope.value.selected = true
        activateCell(element)
      else
        scope.value.selected = false
        clearCell(element)

    isSelected = (record) ->
      if ngModel?.$modelValue?.length > 0
        ngModel?.$modelValue?.filter( (x) ->
          x.id == scope.value?.id
        ).length > 0
      else
        return false

    unSelect = (value, items) ->
      # value.selected = false
      for x in items
        if x.id == value.id
          x.selected = false

    fn = () ->
      ngModel?.$modelValue?.length

    toggle = (value = undefined)->
      active = scope.value.selected
      if value?
        active = !active
      else
        active = value

      items = ngModel?.$modelValue
      return unless items?

      unSelect(scope.value, items) if scope.value && items?.length > 0
      scope.value.selected = active

      items.push(scope.value) if active

      items = items.filter (i)->
        i.selected

      ngModel?.$setViewValue(items)

      if attrs?.ngCheckCallback?
        scope.$eval(attrs.ngCheckCallback)

      scope.$apply()

    $timeout (->
      element.find('a, [clickable]').off('click.check-item').on 'click.check-item', (e)->
        e.preventDefault()
        toggle()
        return false

      element.find('input[type="checkbox"]').off('change.check-item').on 'change.check-item', (e)->
        toggle(this.checked)
        return false

      return
    ), 0, false

    scope.$watch fn, () ->
      checkCell()

    checkCell()
]

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_cms-0.1.5 app/assets/javascripts/app/directives/ng-check-item.js.coffee