Sha256: 8873ba2cdd7b8914fe5eb60e14225fae4b6e81a841778f54f64b71025b5012cc

Contents?: true

Size: 1.38 KB

Versions: 6

Compression:

Stored size: 1.38 KB

Contents

Tao.Table.Selectable = ->

  @attribute 'selectable', type: 'boolean'

  @get 'selectedRows', ->
    @jq.find('tbody > tr.selected')

  _initSelectable: ->
    @on 'tao:change', '.td-checkbox tao-check-box', (e) =>
      cb = e.currentTarget
      $row = cb.jq.closest('tr')
      @toggleSelectRow $row, cb.checked
      @namespacedTrigger 'selectedChange', [@selectedRows]

    @on 'tao:change', '.th-checkbox tao-check-box', (e) =>
      cb = e.currentTarget
      if cb.checked
        @selectAllRows()
      else
        @unselectAllRows()
      @namespacedTrigger 'selectedChange', [@selectedRows]

  toggleSelectRow: (row, selected) ->
    return @ unless @selectable

    $row = $ row
    currentSelected = $row.hasClass('selected')
    selected = !currentSelected if _.isNil selected
    if $row.is('.disabled, .hidden, .expandable-panel')\
        || selected == currentSelected
      return @

    $row.toggleClass 'selected', selected
    cb = $row.find('.td-checkbox tao-check-box').get(0)
    cb.checked = selected if cb.checked != selected
    @

  selectRow: (row) ->
    @toggleSelectRow row, true

  unselectRow: (row) ->
    @toggleSelectRow row, false

  selectAllRows: ->
    return @ unless @selectable
    @jq.find('tbody > tr').each (i, row) => @selectRow(row)
    @

  unselectAllRows: ->
    return @ unless @selectable
    @jq.find('tbody > tr').each (i, row) => @unselectRow(row)
    @

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
tao_ui-0.3.4 lib/assets/javascripts/tao/ui/table/selectable.coffee
tao_ui-0.3.3 lib/assets/javascripts/tao/ui/table/selectable.coffee
tao_ui-0.3.2 lib/assets/javascripts/tao/ui/table/selectable.coffee
tao_ui-0.3.1 lib/assets/javascripts/tao/ui/table/selectable.coffee
tao_ui-0.3.0 lib/assets/javascripts/tao/ui/table/selectable.coffee
tao_ui-0.2.10 lib/assets/javascripts/tao/ui/table/selectable.coffee