due_date_select.js.coffee 2.0 KB
Newer Older
P
Phil Hughes 已提交
1 2
class @DueDateSelect
  constructor: ->
3 4 5
    $loading = $('.js-issuable-update .due_date')
      .find('.block-loading')
      .hide()
6

P
Phil Hughes 已提交
7 8 9 10 11 12 13
    $('.js-due-date-select').each (i, dropdown) ->
      $dropdown = $(dropdown)
      $dropdownParent = $dropdown.closest('.dropdown')
      $datePicker = $dropdownParent.find('.js-due-date-calendar')
      $block = $dropdown.closest('.block')
      $selectbox = $dropdown.closest('.selectbox')
      $value = $block.find('.value')
P
Phil Hughes 已提交
14
      $sidebarValue = $('.js-due-date-sidebar-value', $block)
P
Phil Hughes 已提交
15 16 17 18 19

      fieldName = $dropdown.data('field-name')
      abilityName = $dropdown.data('ability-name')
      issueUpdateURL = $dropdown.data('issue-update')

20 21 22 23 24 25
      $dropdown.glDropdown(
        hidden: ->
          $selectbox.hide()
          $value.removeAttr('style')
      )

26
      addDueDate = ->
P
Phil Hughes 已提交
27 28
        # Create the post date
        value = $("input[name='#{fieldName}']").val()
P
Phil Hughes 已提交
29 30 31
        valueSplit = value.split '-'
        date = new Date(valueSplit[0], parseInt(valueSplit[1]) - 1, valueSplit[2])
        mediumDate = $.datepicker.formatDate 'M d, yy', date
P
Phil Hughes 已提交
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

        data = {}
        data[abilityName] = {}
        data[abilityName].due_date = value

        $.ajax(
          type: 'PUT'
          url: issueUpdateURL
          data: data
          beforeSend: ->
            $loading.fadeIn()
            $dropdown.trigger('loading.gl.dropdown')
            $selectbox.hide()
            $value.removeAttr('style')

            $value.html(mediumDate)
P
Phil Hughes 已提交
48
            $sidebarValue.html(mediumDate)
P
Phil Hughes 已提交
49 50
        ).done (data) ->
          $dropdown.trigger('loaded.gl.dropdown')
51
          $dropdown.dropdown('toggle')
P
Phil Hughes 已提交
52 53 54
          $loading.fadeOut()

      $datePicker.datepicker(
55
        dateFormat: 'yy-mm-dd',
P
Phil Hughes 已提交
56 57
        defaultDate: $("input[name='#{fieldName}']").val()
        altField: "input[name='#{fieldName}']"
58 59
        onSelect: ->
          addDueDate()
P
Phil Hughes 已提交
60
      )
61 62 63 64 65

    $(document)
      .off 'click', '.ui-datepicker-header a'
      .on 'click', '.ui-datepicker-header a', (e) ->
        e.stopImmediatePropagation()