Sha256: f773fb86c69a01cc934c3d899b5cbe782404d5b17e1eefefc40114f4ba5ab3ee

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 KB

Contents

class @TicketsView extends Backbone.View
  supportsSorting: true

  initialize: ->
    @tickets = @options.tickets
    @project = @options.project
    
    if @supportsSorting
      @$el.on 'click', 'th', (e)=>
        @toggleSort $(e.target).closest('th')
    
    mouseDownPosition = {}
    @$el.on 'mousedown', '[rel="ticket"]', (e)->
      mouseDownPosition = {x: e.screenX, y: e.screenY}
    
    @$el.on 'click', '[rel="ticket"]', (e)=>
      return if $(e.target).closest('a').length > 0
      
      e.preventDefault()
      e.stopImmediatePropagation()
      
      # If a person is trying to highlight the text
      # of this ticket, don't treat that as a click
      dx = e.screenX - mouseDownPosition.x
      dy = e.screenY - mouseDownPosition.y
      d = Math.sqrt(Math.pow(dx, 2), Math.pow(dy, 2))
      return if d > 12
      
      number = +$(e.target).closest('[rel="ticket"]').attr('data-number')
      App.showTicket number, @project, @showTicketModal(number)
    
    if @options.infiniteScroll
      new InfiniteScroll
        load: ($what)=>
          promise = new $.Deferred()
          @offset += 50
          promise.resolve @template
            tickets: (ticket.toJSON() for ticket in @tickets.slice(@offset, @offset + 50))
          promise

  renderTickets: ->
    @render()

  showTicketModal: (number)->
    {}

  toggleSort: ($th)->
    if $th.hasClass('sort-asc')
      $th.removeClass('sort-asc').addClass('sort-desc')
    else if $th.hasClass('sort-desc')
      $th.removeClass('sort-desc').addClass('sort-asc')
    else
      @$el.find('.sort-asc, .sort-desc').removeClass('sort-asc sort-desc')
      $th.addClass('sort-desc')
    
    attribute = $th.attr('data-attribute')
    order = if $th.hasClass('sort-desc') then 'desc' else 'asc'
    @performSort attribute, order

  performSort: (attribute, order)->
    @tickets = @tickets.orderBy(attribute, order)
    @renderTickets()

Version data entries

1 entries across 1 versions & 1 rubygems

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