diff options
Diffstat (limited to 'app/assets/javascripts/issuable.js.coffee')
-rw-r--r-- | app/assets/javascripts/issuable.js.coffee | 57 |
1 files changed, 53 insertions, 4 deletions
diff --git a/app/assets/javascripts/issuable.js.coffee b/app/assets/javascripts/issuable.js.coffee index d0901be1509..c2447120033 100644 --- a/app/assets/javascripts/issuable.js.coffee +++ b/app/assets/javascripts/issuable.js.coffee @@ -56,6 +56,13 @@ issuable_created = false Issuable.filterResults $('.filter-form') $('.js-label-select').trigger('update.label') + toggleLabelFilters: -> + $filteredLabels = $('.filtered-labels') + if $filteredLabels.find('.label-row').length > 0 + $filteredLabels.removeClass('hidden') + else + $filteredLabels.addClass('hidden') + filterResults: (form) => formData = form.serialize() @@ -64,16 +71,58 @@ issuable_created = false issuesUrl = formAction issuesUrl += ("#{if formAction.indexOf('?') < 0 then '?' else '&'}") issuesUrl += formData + $.ajax + type: 'GET' + url: formAction + data: formData + complete: -> + $('.issues-holder, .merge-requests-holder').css('opacity', '1.0') + success: (data) -> + $('.issues-holder, .merge-requests-holder').html(data.html) + # Change url so if user reload a page - search results are saved + history.replaceState {page: issuesUrl}, document.title, issuesUrl + Issuable.reload() + Issuable.updateStateFilters() + $filteredLabels = $('.filtered-labels') + + if typeof Issuable.labelRow is 'function' + $filteredLabels.html(Issuable.labelRow(data)) - Turbolinks.visit(issuesUrl); + Issuable.toggleLabelFilters() + + dataType: "json" + + reload: -> + if Issuable.created + Issuable.initChecks() + + $('#filter_issue_search').val($('#issue_search').val()) initChecks: -> - $('.check_all_issues').off('click').on('click', -> + $('.check_all_issues').on 'click', -> $('.selected_issue').prop('checked', @checked) Issuable.checkChanged() - ) - $('.selected_issue').off('change').on('change', Issuable.checkChanged) + $('.selected_issue').on 'change', Issuable.checkChanged + + updateStateFilters: -> + stateFilters = $('.issues-state-filters, .dropdown-menu-sort') + newParams = {} + paramKeys = ['author_id', 'milestone_title', 'assignee_id', 'issue_search', 'issue_search'] + + for paramKey in paramKeys + newParams[paramKey] = gl.utils.getParameterValues(paramKey)[0] or '' + + if stateFilters.length + stateFilters.find('a').each -> + initialUrl = gl.utils.removeParamQueryString($(this).attr('href'), 'label_name[]') + labelNameValues = gl.utils.getParameterValues('label_name[]') + if labelNameValues + labelNameQueryString = ("label_name[]=#{value}" for value in labelNameValues).join('&') + newUrl = "#{gl.utils.mergeUrlParams(newParams, initialUrl)}&#{labelNameQueryString}" + else + newUrl = gl.utils.mergeUrlParams(newParams, initialUrl) + $(this).attr 'href', newUrl checkChanged: -> checked_issues = $('.selected_issue:checked') |