mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-10 21:26:07 +10:00
It is same search like we have at issues page. It allows to quickly filter merge requests based on title or desription. I copy-pasted some js code from Issues.js. In future search (filtering) logic should be refactoed into one class for merge requests and issues
86 lines
2.7 KiB
CoffeeScript
86 lines
2.7 KiB
CoffeeScript
@Issues =
|
|
init: ->
|
|
Issues.initSearch()
|
|
Issues.initSelects()
|
|
Issues.initChecks()
|
|
|
|
$("body").on "ajax:success", ".close_issue, .reopen_issue", ->
|
|
t = $(this)
|
|
totalIssues = undefined
|
|
reopen = t.hasClass("reopen_issue")
|
|
$(".issue_counter").each ->
|
|
issue = $(this)
|
|
totalIssues = parseInt($(this).html(), 10)
|
|
if reopen and issue.closest(".main_menu").length
|
|
$(this).html totalIssues + 1
|
|
else
|
|
$(this).html totalIssues - 1
|
|
$("body").on "click", ".issues-other-filters .dropdown-menu a", ->
|
|
$('.issues-list').block(
|
|
message: null,
|
|
overlayCSS:
|
|
backgroundColor: '#DDD'
|
|
opacity: .4
|
|
)
|
|
|
|
reload: ->
|
|
Issues.initSelects()
|
|
Issues.initChecks()
|
|
$('#filter_issue_search').val($('#issue_search').val())
|
|
|
|
initSelects: ->
|
|
$("select#update_status").select2(width: 'resolve', dropdownAutoWidth: true)
|
|
$("select#update_assignee_id").select2(width: 'resolve', dropdownAutoWidth: true)
|
|
$("select#update_milestone_id").select2(width: 'resolve', dropdownAutoWidth: true)
|
|
$("select#label_name").select2(width: 'resolve', dropdownAutoWidth: true)
|
|
$("#milestone_id, #assignee_id, #label_name").on "change", ->
|
|
$(this).closest("form").submit()
|
|
|
|
initChecks: ->
|
|
$(".check_all_issues").click ->
|
|
$(".selected_issue").prop("checked", @checked)
|
|
Issues.checkChanged()
|
|
|
|
$(".selected_issue").bind "change", Issues.checkChanged
|
|
|
|
# Make sure we trigger ajax request only after user stop typing
|
|
initSearch: ->
|
|
@timer = null
|
|
$("#issue_search").keyup ->
|
|
clearTimeout(@timer)
|
|
@timer = setTimeout(Issues.filterResults, 500)
|
|
|
|
filterResults: =>
|
|
form = $("#issue_search_form")
|
|
search = $("#issue_search").val()
|
|
$('.issues-holder').css("opacity", '0.5')
|
|
issues_url = form.attr('action') + '? '+ form.serialize()
|
|
|
|
$.ajax
|
|
type: "GET"
|
|
url: form.attr('action')
|
|
data: form.serialize()
|
|
complete: ->
|
|
$('.issues-holder').css("opacity", '1.0')
|
|
success: (data) ->
|
|
$('.issues-holder').html(data.html)
|
|
# Change url so if user reload a page - search results are saved
|
|
History.replaceState {page: issues_url}, document.title, issues_url
|
|
Issues.reload()
|
|
dataType: "json"
|
|
|
|
checkChanged: ->
|
|
checked_issues = $(".selected_issue:checked")
|
|
if checked_issues.length > 0
|
|
ids = []
|
|
$.each checked_issues, (index, value) ->
|
|
ids.push $(value).attr("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()
|