milestone_select.js.coffee 2.0 KB
Newer Older
P
Phil Hughes 已提交
1
class @MilestoneSelect
2 3
  constructor: (@opts) ->
    opts = @opts
P
Phil Hughes 已提交
4
    $('.js-milestone-select').each (i, dropdown) ->
P
Phil Hughes 已提交
5 6 7 8 9 10 11
      $dropdown = $(dropdown)
      projectId = $dropdown.data('project-id')
      milestonesUrl = $dropdown.data('milestones')
      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 60 61 62 63 64 65 66 67
        clicked: (e) ->
          if $(dropdown).hasClass "js-filter-submit" && opts.submitForm
            $(dropdown).parents('form').submit()
          else
            milestoneVal = $(@)
              .closest('.selectbox')
              .find('input[type="hidden"]')
              .val()
              Api.issues.update(projectId, issuableId, milestone_id: milestoneVal, (data) => console.log 'data', data)
P
Phil Hughes 已提交
68
      )