Commit cd4a2270 authored by Kamil Trzcinski's avatar Kamil Trzcinski

Improve actions

parent 007255ed
...@@ -127,6 +127,10 @@ module Ci ...@@ -127,6 +127,10 @@ module Ci
end end
end end
def cancelable?
active?
end
def retryable? def retryable?
project.builds_enabled? && commands.present? && complete? project.builds_enabled? && commands.present? && complete?
end end
......
...@@ -13,33 +13,23 @@ module Gitlab ...@@ -13,33 +13,23 @@ module Gitlab
@subject.pipeline) @subject.pipeline)
end end
def action_type
case
when @subject.playable? then :playable
when @subject.active? then :cancel
when @subject.retryable? then :retry
end
end
def has_action?(current_user) def has_action?(current_user)
action_type && can?(current_user, :update_build, @subject) (subject.cancelable? || subject.retryable?) &&
can?(current_user, :update_build, @subject)
end end
def action_icon def action_icon
case action_type case
when :playable then 'remove' when subject.cancelable? then 'icon_play'
when :cancel then 'icon_play' when subject.retryable? then 'repeat'
when :retry then 'repeat'
end end
end end
def action_path def action_path
case action_type case
when :playable when subject.cancelable?
play_namespace_project_build_path(subject.project.namespace, subject.project, subject)
when :cancel
cancel_namespace_project_build_path(subject.project.namespace, subject.project, subject) cancel_namespace_project_build_path(subject.project.namespace, subject.project, subject)
when :retry when subject.retryable?
retry_namespace_project_build_path(subject.project.namespace, subject.project, subject) retry_namespace_project_build_path(subject.project.namespace, subject.project, subject)
end end
end end
......
...@@ -5,6 +5,10 @@ module Gitlab ...@@ -5,6 +5,10 @@ module Gitlab
class Factory < Status::Factory class Factory < Status::Factory
private private
def extended_statuses
[Stop, Play]
end
def core_status def core_status
super.extend(Status::Build::Common) super.extend(Status::Build::Common)
end end
......
module Gitlab
module Ci
module Status
module Status
class Play < SimpleDelegator
extend Status::Extended
def text
'play'
end
def label
'play'
end
def icon
'icon_status_skipped'
end
def to_s
'play'
end
def has_action?(current_user)
can?(current_user, :update_build, subject)
end
def action_icon
:play
end
def action_path
play_namespace_project_build_path(subject.project.namespace, subject.project, subject)
end
def action_method
:post
end
def self.matches?(build)
build.playable? && !build.stops_environment?
end
end
end
end
end
end
module Gitlab
module Ci
module Status
module Status
class Play < SimpleDelegator
extend Status::Extended
def text
'stop'
end
def label
'stop'
end
def icon
'icon_status_skipped'
end
def to_s
'stop'
end
def has_action?(current_user)
can?(current_user, :update_build, subject)
end
def action_icon
:play
end
def action_path
play_namespace_project_build_path(subject.project.namespace, subject.project, subject)
end
def action_method
:post
end
def self.matches?(build)
build.playable? && build.stops_environment?
end
end
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment