Sha256: 1f665c9b0e762ab0a0c9eb0859111fda1445b6eec17430c2a694ad5630e4929c

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

class @TableRowExpander
  
  setupForViews: (views)->
    @expandedView = null
    views.each (view)=>
      view.on 'expanding', => @onViewExpanding(view)
      
      view.expand = _.bind ->
          @trigger('expanding')
          @$el.addClass('expanded in-transition')
          @$expandedRow = @renderExpandedRow()
          @$expandedRow.slideDown =>
            @$el.removeClass('in-transition')
            @trigger('expanded')
        , view
      
      view.collapse = _.bind (speed)->
          return unless @$expandedRow
          
          finish = =>
            @$el.removeClass('expanded in-transition')
            @$expandedRow.closest('tr').remove()
            @$expandedRow = null
          
          if speed == 'fast'
            finish()
          else
            @$el.addClass('in-transition')
            @$expandedRow.slideUp(finish)
        , view
      
      view.$el.click (e)=>
        return if $(e.target).is('button, a, input')
        @expandOrCollapseView(view)
    
    $('.table-sortable').bind 'sortStart', => @collapseExpandedView('fast')
  
  expandOrCollapseView: (view)->
    return if view.$el.hasClass('in-transition')
    return if view.$el.hasClass('deleting')

    if view.$el.hasClass('expanded')
      view.collapse()
    else
      view.expand()
  
  onViewExpanding: (view)->
    @collapseExpandedView()
    @expandedView = view
  
  collapseExpandedView: (speed)->
    @expandedView.collapse(speed) if @expandedView

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
houston-core-0.5.0.beta1 app/assets/javascripts/app/table_row_expander.coffee