issues.js.coffee 2.72 KB
Newer Older
1 2 3 4
@Issues =
  init: ->
    Issues.initSearch()
    Issues.initSelects()
5
    Issues.initChecks()
6 7 8 9 10 11 12 13 14 15 16 17

    $("body").on "ajax:success", ".close_issue, .reopen_issue", ->
      t = $(this)
      totalIssues = undefined
      reopen = t.hasClass("reopen_issue")
      $(".issue_counter").each ->
        issue = $(this)
        totalIssues = parseInt($(this).html(), 10)
        if reopen and issue.closest(".main_menu").length
          $(this).html totalIssues + 1
        else
          $(this).html totalIssues - 1
18
    $("body").on "click", ".issues-other-filters .dropdown-menu a", ->
19 20 21 22 23 24
      $('.issues-list').block(
        message: null,
        overlayCSS:
          backgroundColor: '#DDD'
          opacity: .4
      )
25

26 27 28 29 30 31
  reload: ->
    Issues.initSelects()
    Issues.initChecks()
    $('#filter_issue_search').val($('#issue_search').val())

  initSelects: ->
32
    $("select#update_state_event").select2(width: 'resolve', dropdownAutoWidth: true)
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
33 34 35
    $("select#update_assignee_id").select2(width: 'resolve', dropdownAutoWidth: true)
    $("select#update_milestone_id").select2(width: 'resolve', dropdownAutoWidth: true)
    $("select#label_name").select2(width: 'resolve', dropdownAutoWidth: true)
36 37 38 39 40
    $("#milestone_id, #assignee_id, #label_name").on "change", ->
      $(this).closest("form").submit()

  initChecks: ->
    $(".check_all_issues").click ->
41
      $(".selected_issue").prop("checked", @checked)
42 43 44 45
      Issues.checkChanged()

    $(".selected_issue").bind "change", Issues.checkChanged

46
  # Make sure we trigger ajax request only after user stop typing
47
  initSearch: ->
48
    @timer = null
49
    $("#issue_search").keyup ->
50
      clearTimeout(@timer)
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
      @timer = setTimeout(Issues.filterResults, 500)

  filterResults: =>
    form = $("#issue_search_form")
    search = $("#issue_search").val()
    $('.issues-holder').css("opacity", '0.5')
    issues_url = form.attr('action') + '? '+ form.serialize()

    $.ajax
      type: "GET"
      url: form.attr('action')
      data: form.serialize()
      complete: ->
        $('.issues-holder').css("opacity", '1.0')
      success: (data) ->
        $('.issues-holder').html(data.html)
        # Change url so if user reload a page - search results are saved
        History.replaceState {page: issues_url}, document.title, issues_url
        Issues.reload()
      dataType: "json"
71 72 73 74 75 76 77 78 79

  checkChanged: ->
    checked_issues = $(".selected_issue:checked")
    if checked_issues.length > 0
      ids = []
      $.each checked_issues, (index, value) ->
        ids.push $(value).attr("data-id")

      $("#update_issues_ids").val ids
80
      $(".issues-other-filters").hide()
81 82 83 84
      $(".issues_bulk_update").show()
    else
      $("#update_issues_ids").val []
      $(".issues_bulk_update").hide()
85
      $(".issues-other-filters").show()