58 lines
1.9 KiB
CoffeeScript
58 lines
1.9 KiB
CoffeeScript
class @MergeRequestWidget
|
|
# Initialize MergeRequestWidget behavior
|
|
#
|
|
# check_enable - Boolean, whether to check automerge status
|
|
# url_to_automerge_check - String, URL to use to check automerge status
|
|
# current_status - String, current automerge status
|
|
# ci_enable - Boolean, whether a CI service is enabled
|
|
# url_to_ci_check - String, URL to use to check CI status
|
|
#
|
|
constructor: (@opts) ->
|
|
modal = $('#modal_merge_info').modal(show: false)
|
|
|
|
mergeInProgress: ->
|
|
$.ajax
|
|
type: 'GET'
|
|
url: $('.merge-request').data('url')
|
|
success: (data) =>
|
|
switch data.state
|
|
when 'merged'
|
|
location.reload()
|
|
else
|
|
setTimeout(merge_request_widget.mergeInProgress, 3000)
|
|
dataType: 'json'
|
|
|
|
getMergeStatus: ->
|
|
$.get @opts.url_to_automerge_check, (data) ->
|
|
$('.mr-state-widget').replaceWith(data)
|
|
|
|
getCiStatus: ->
|
|
if @opts.ci_enable
|
|
$.get @opts.url_to_ci_check, (data) =>
|
|
this.showCiState data.status
|
|
if data.coverage
|
|
this.showCiCoverage data.coverage
|
|
, 'json'
|
|
|
|
showCiState: (state) ->
|
|
$('.ci_widget').hide()
|
|
allowed_states = ["failed", "canceled", "running", "pending", "success", "not_found"]
|
|
if state in allowed_states
|
|
$('.ci_widget.ci-' + state).show()
|
|
switch state
|
|
when "failed", "canceled", "not_found"
|
|
@setMergeButtonClass('btn-danger')
|
|
when "running", "pending"
|
|
@setMergeButtonClass('btn-warning')
|
|
else
|
|
$('.ci_widget.ci-error').show()
|
|
@setMergeButtonClass('btn-danger')
|
|
|
|
showCiCoverage: (coverage) ->
|
|
cov_html = $('<span>')
|
|
cov_html.addClass('ci-coverage')
|
|
cov_html.text('Coverage ' + coverage + '%')
|
|
$('.ci_widget:visible').append(cov_html)
|
|
|
|
setMergeButtonClass: (css_class) ->
|
|
$('.accept_merge_request').removeClass("btn-create").addClass(css_class)
|