milestone_select.js.coffee 2.1 KB
Newer Older
P
Phil Hughes 已提交
1
class @MilestoneSelect
2
  constructor: () ->
P
Phil Hughes 已提交
3
    $('.js-milestone-select').each (i, dropdown) ->
P
Phil Hughes 已提交
4 5 6
      $dropdown = $(dropdown)
      projectId = $dropdown.data('project-id')
      milestonesUrl = $dropdown.data('milestones')
7
      issueUpdateURL = $dropdown.data('issueUpdate')
P
Phil Hughes 已提交
8 9 10 11
      selectedMilestone = $dropdown.data('selected')
      showNo = $dropdown.data('show-no')
      showAny = $dropdown.data('show-any')
      useId = $dropdown.data('use-id')
12
      defaultLabel = $dropdown.data('default-label')
13
      issuableId = $dropdown.data('issuable-id')
P
Phil Hughes 已提交
14

P
Phil Hughes 已提交
15
      $dropdown.glDropdown(
P
Phil Hughes 已提交
16
        data: (term, callback) ->
17 18 19
          $.ajax(
            url: milestonesUrl
          ).done (data) ->
20 21
            if showNo
              data.unshift(
P
Phil Hughes 已提交
22
                id: '0'
P
Phil Hughes 已提交
23
                title: 'No Milestone'
24
              )
P
Phil Hughes 已提交
25

26 27
            if showAny
              data.unshift(
28
                isAny: true
P
Phil Hughes 已提交
29
                title: 'Any Milestone'
30 31 32
              )

            if data.length > 2
P
Phil Hughes 已提交
33
              data.splice 2, 0, 'divider'
34 35

            callback(data)
P
Phil Hughes 已提交
36 37
        filterable: true
        search:
P
Phil Hughes 已提交
38
          fields: ['title']
P
Phil Hughes 已提交
39
        selectable: true
40
        toggleLabel: (selected) ->
P
Phil Hughes 已提交
41
          if selected && 'id' of selected
42 43 44
            selected.title
          else
            defaultLabel
P
Phil Hughes 已提交
45
        fieldName: $dropdown.data('field-name')
P
Phil Hughes 已提交
46 47 48
        text: (milestone) ->
          milestone.title
        id: (milestone) ->
49
          if !useId
50
            if !milestone.isAny?
51 52
              milestone.title
            else
P
Phil Hughes 已提交
53
              ''
54
          else
55
            milestone.id
P
Phil Hughes 已提交
56 57
        isSelected: (milestone) ->
          milestone.title is selectedMilestone
58

59
        clicked: (e) ->
60 61
          if $dropdown.hasClass "js-filter-submit"
            $dropdown.parents('form').submit()
62
          else
63
            selected = $dropdown
64 65 66
              .closest('.selectbox')
              .find('input[type="hidden"]')
              .val()
67 68 69 70 71 72 73 74 75 76

            $.ajax(
              type: 'PUT'
              url: issueUpdateURL
              data:
                issue: 
                  milestone_id: selected
            ).done (data) ->
              console.log 'databack', data
      )