summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/milestone_select.js.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/milestone_select.js.coffee')
-rw-r--r--app/assets/javascripts/milestone_select.js.coffee73
1 files changed, 45 insertions, 28 deletions
diff --git a/app/assets/javascripts/milestone_select.js.coffee b/app/assets/javascripts/milestone_select.js.coffee
index d1746c38e74..f73127f49f0 100644
--- a/app/assets/javascripts/milestone_select.js.coffee
+++ b/app/assets/javascripts/milestone_select.js.coffee
@@ -11,12 +11,14 @@ class @MilestoneSelect
selectedMilestone = $dropdown.data('selected')
showNo = $dropdown.data('show-no')
showAny = $dropdown.data('show-any')
+ showUpcoming = $dropdown.data('show-upcoming')
useId = $dropdown.data('use-id')
defaultLabel = $dropdown.data('default-label')
issuableId = $dropdown.data('issuable-id')
abilityName = $dropdown.data('ability-name')
$selectbox = $dropdown.closest('.selectbox')
$block = $selectbox.closest('.block')
+ $sidebarCollapsedValue = $block.find('.sidebar-collapsed-icon')
$value = $block.find('.value')
$loading = $block.find('.block-loading').fadeOut()
@@ -32,22 +34,32 @@ class @MilestoneSelect
$.ajax(
url: milestonesUrl
).done (data) ->
- if $dropdown.hasClass "js-extra-options"
- if showNo
- data.unshift(
- id: '0'
- title: 'No Milestone'
- )
+ extraOptions = []
+ if showAny
+ extraOptions.push(
+ id: 0
+ name: ''
+ title: 'Any Milestone'
+ )
- if showAny
- data.unshift(
- isAny: true
- title: 'Any Milestone'
- )
+ if showNo
+ extraOptions.push(
+ id: -1
+ name: 'No Milestone'
+ title: 'No Milestone'
+ )
- if data.length > 2
- data.splice 2, 0, 'divider'
- callback(data)
+ if showUpcoming
+ extraOptions.push(
+ id: -2
+ name: '#upcoming'
+ title: 'Upcoming'
+ )
+
+ if extraOptions.length > 2
+ extraOptions.push 'divider'
+
+ callback(extraOptions.concat(data))
filterable: true
search:
fields: ['title']
@@ -62,23 +74,26 @@ class @MilestoneSelect
milestone.title
id: (milestone) ->
if !useId
- if !milestone.isAny?
- milestone.title
- else
- ''
+ milestone.name
else
milestone.id
isSelected: (milestone) ->
- milestone.title is selectedMilestone
+ milestone.name is selectedMilestone
hidden: ->
$selectbox.hide()
- $value.show()
- clicked: (e) ->
+
+ # display:block overrides the hide-collapse rule
+ $value.removeAttr('style')
+ clicked: (selected) ->
if $dropdown.hasClass 'js-filter-bulk-update'
return
-
- if $dropdown.hasClass 'js-filter-submit'
- $dropdown.parents('form').submit()
+
+ if $dropdown.hasClass('js-filter-submit')
+ if selected.name?
+ selectedMilestone = selected.name
+ else
+ selectedMilestone = ''
+ Issues.filterResults $dropdown.closest('form')
else
selected = $selectbox
.find('input[type="hidden"]')
@@ -88,20 +103,22 @@ class @MilestoneSelect
data[abilityName].milestone_id = selected
$loading
.fadeIn()
+ $dropdown.trigger('loading.gl.dropdown')
$.ajax(
type: 'PUT'
url: issueUpdateURL
data: data
).done (data) ->
+ $dropdown.trigger('loaded.gl.dropdown')
$loading.fadeOut()
$selectbox.hide()
- $milestoneLink = $value
- .show()
- .find('a')
+ $value.removeAttr('style')
if data.milestone?
data.milestone.namespace = _this.currentProject.namespace
data.milestone.path = _this.currentProject.path
$value.html(milestoneLinkTemplate(data.milestone))
+ $sidebarCollapsedValue.find('span').text(data.milestone.title)
else
$value.html(milestoneLinkNoneTemplate)
- ) \ No newline at end of file
+ $sidebarCollapsedValue.find('span').text('No')
+ )