提交 fcba2551 编写于 作者: P Phil Hughes

Commit SHA comes from JSON

Removed page refresh - instead clicking takes to the builds tab
上级 b0e2e2e0
((w) ->
notifyMe = (message,body, icon) ->
notifyPermissions = ->
if 'Notification' of window
Notification.requestPermission()
notifyMe = (message, body, icon, onclick) ->
notification = undefined
opts =
opts =
body: body
icon: icon
# Let's check if the browser supports notifications
......@@ -10,17 +14,21 @@
else if Notification.permission == 'granted'
# If it's okay let's create a notification
notification = new Notification(message, opts)
if onclick
notification.onclick = onclick
else if Notification.permission != 'denied'
Notification.requestPermission (permission) ->
# If the user accepts, let's create a notification
if permission == 'granted'
notification = new Notification(message, opts)
if onclick
notification.onclick = onclick
return
return
w.notify = notifyMe
w.notifyPermissions = notifyPermissions
return
) window
if 'Notification' of window
Notification.requestPermission()
\ No newline at end of file
......@@ -7,9 +7,10 @@ class @MergeRequestWidget
#
constructor: (@opts) ->
@first = true
@firstCICheck = true
modal = $('#modal_merge_info').modal(show: false)
@getBuildStatus()
@getCIStatus()
notifyPermissions()
@readyForCICheck = true
# clear the build poller
......@@ -39,31 +40,34 @@ class @MergeRequestWidget
else
status
getBuildStatus: ->
urlToCiCheck = @opts.url_to_ci_check
_this = @
@fetchBuildStatusInterval = setInterval (->
if not _this.readyForCICheck
return;
$.getJSON urlToCiCheck, (data) ->
_this.readyForCICheck = true
if _this.first
_this.first = false
_this.opts.current_status = data.status
if data.status isnt _this.opts.current_status
notify("Build #{_this.ciLabelForStatus(data.status)}",
_this.opts.ci_message.replace('{{status}}',
_this.ciLabelForStatus(data.status)),
_this.opts.gitlab_icon)
setTimeout (->
Turbolinks.visit(location.href)
return
), 2000
_this.opts.current_status = data.status
return
_this.readyForCICheck = false
return
getCIStatus: ->
urlToCICheck = @opts.url_to_ci_check
@fetchBuildStatusInterval = setInterval ( =>
return if not @readyForCICheck
$.getJSON urlToCICheck, (data) =>
@readyForCICheck = true
if @firstCICheck
@firstCICheck = false
@opts.current_status = data.status
if data.status isnt @opts.current_status
message = @opts.ci_message.replace('{{status}}', @ciLabelForStatus(data.status))
message = message.replace('{{sha}}', data.sha)
notify(
"Build #{_this.ciLabelForStatus(data.status)}",
message,
@opts.gitlab_icon,
->
@close()
Turbolinks.visit "#{window.location.pathname}/builds"
)
@opts.current_status = data.status
@readyForCICheck = false
), 5000
getCiStatus: ->
......
......@@ -221,7 +221,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
def ci_status
ci_commit = @merge_request.ci_commit
if ci_commit
status = ci_commit.try(:status)
status = ci_commit.status
coverage = ci_commit.try(:coverage)
else
ci_service = @merge_request.source_project.ci_service
......@@ -233,6 +233,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
response = {
sha: merge_request.last_commit.sha,
status: status,
coverage: coverage
}
......
......@@ -14,17 +14,10 @@
check_enable: #{@merge_request.unchecked? ? "true" : "false"},
url_to_ci_check: "#{ci_status_namespace_project_merge_request_path(@project.namespace, @project, @merge_request)}",
gitlab_icon: "#{asset_path 'gitlab_logo.png'}",
current_status: ""
current_status: "",
ci_message: "Build {{status}} for {{sha}}"
};
- if @merge_request.ci_commit
:javascript
opts.ci_message = "Build {{status}} for #{@merge_request.ci_commit.sha}";
- else
:javascript
opts.ci_message = "Build {{status}} for #{@merge_request.last_commit.sha}";
:javascript
if(typeof merge_request_widget === 'undefined') {
merge_request_widget = new MergeRequestWidget(opts);
}
\ No newline at end of file
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册