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){ %> <%= _.escape(label.title) %> <% }); %>' ) 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 "" 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: -> $('.check_all_issues').off('click').on('click', -> $('.selected_issue').prop('checked', @checked) Issuable.checkChanged() ) $('.selected_issue').off('change').on('change', Issuable.checkChanged) 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()