96 lines
3.1 KiB
CoffeeScript
96 lines
3.1 KiB
CoffeeScript
issuable_created = false
|
|
@Issuable =
|
|
init: ->
|
|
unless issuable_created
|
|
issuable_created = true
|
|
Issuable.initTemplates()
|
|
Issuable.initSearch()
|
|
Issuable.initChecks()
|
|
Issuable.initLabelFilterRemove()
|
|
|
|
initTemplates: ->
|
|
Issuable.labelRow = _.template(
|
|
'<% _.each(labels, function(label){ %>
|
|
<span class="label-row btn-group" role="group" aria-label="<%= _.escape(label.title) %>" style="color: <%= label.text_color %>;">
|
|
<a href="#" class="btn btn-transparent has-tooltip" style="background-color: <%= label.color %>;" title="<%= _.escape(label.description) %>" data-container="body">
|
|
<%= _.escape(label.title) %>
|
|
</a>
|
|
<button type="button" class="btn btn-transparent label-remove js-label-filter-remove" style="background-color: <%= label.color %>;" data-label="<%= _.escape(label.title) %>">
|
|
<i class="fa fa-times"></i>
|
|
</button>
|
|
</span>
|
|
<% }); %>'
|
|
)
|
|
|
|
initSearch: ->
|
|
@timer = null
|
|
$('#issue_search')
|
|
.off 'keyup'
|
|
.on 'keyup', ->
|
|
clearTimeout(@timer)
|
|
@timer = setTimeout( ->
|
|
$search = $('#issue_search')
|
|
$form = $('.js-filter-form')
|
|
$input = $("input[name='#{$search.attr('name')}']", $form)
|
|
|
|
if $input.length is 0
|
|
$form.append "<input type='hidden' name='#{$search.attr('name')}' value='#{_.escape($search.val())}'/>"
|
|
else
|
|
$input.val $search.val()
|
|
|
|
Issuable.filterResults $form
|
|
, 500)
|
|
|
|
initLabelFilterRemove: ->
|
|
$(document)
|
|
.off 'click', '.js-label-filter-remove'
|
|
.on 'click', '.js-label-filter-remove', (e) ->
|
|
$button = $(@)
|
|
|
|
# Remove the label input box
|
|
$('input[name="label_name[]"]')
|
|
.filter -> @value is $button.data('label')
|
|
.remove()
|
|
|
|
# Submit the form to get new data
|
|
Issuable.filterResults $('.filter-form')
|
|
$('.js-label-select').trigger('update.label')
|
|
|
|
filterResults: (form) =>
|
|
formData = form.serialize()
|
|
|
|
$('.issues-holder, .merge-requests-holder').css('opacity', '0.5')
|
|
formAction = form.attr('action')
|
|
issuesUrl = formAction
|
|
issuesUrl += ("#{if formAction.indexOf('?') < 0 then '?' else '&'}")
|
|
issuesUrl += formData
|
|
|
|
Turbolinks.visit(issuesUrl);
|
|
|
|
initChecks: ->
|
|
@issuableBulkActions = $('.bulk-update').data('bulkActions')
|
|
|
|
$('.check_all_issues').off('click').on('click', ->
|
|
$('.selected_issue').prop('checked', @checked)
|
|
Issuable.checkChanged()
|
|
)
|
|
|
|
$('.selected_issue').off('change').on('change', Issuable.checkChanged.bind(@))
|
|
|
|
|
|
checkChanged: ->
|
|
checked_issues = $('.selected_issue:checked')
|
|
if checked_issues.length > 0
|
|
ids = $.map checked_issues, (value) ->
|
|
$(value).data('id')
|
|
|
|
$('#update_issues_ids').val ids
|
|
$('.issues-other-filters').hide()
|
|
$('.issues_bulk_update').show()
|
|
else
|
|
$('#update_issues_ids').val []
|
|
$('.issues_bulk_update').hide()
|
|
$('.issues-other-filters').show()
|
|
@issuableBulkActions.willUpdateLabels = false
|
|
|
|
return true
|