2017-09-10 17:25:29 +05:30
< script >
2020-03-13 15:44:24 +05:30
import { GlLoadingIcon , GlModal , GlModalDirective } from '@gitlab/ui' ;
import ciHeader from '~/vue_shared/components/header_ci_component.vue' ;
import LoadingButton from '~/vue_shared/components/loading_button.vue' ;
2018-11-08 19:23:39 +05:30
import eventHub from '../event_hub' ;
2019-09-30 21:07:59 +05:30
import { _ _ } from '~/locale' ;
2017-09-10 17:25:29 +05:30
2020-03-13 15:44:24 +05:30
const DELETE _MODAL _ID = 'pipeline-delete-modal' ;
2018-11-08 19:23:39 +05:30
export default {
name : 'PipelineHeaderSection' ,
components : {
ciHeader ,
2018-12-13 13:39:08 +05:30
GlLoadingIcon ,
2020-03-13 15:44:24 +05:30
GlModal ,
LoadingButton ,
} ,
directives : {
GlModal : GlModalDirective ,
2018-11-08 19:23:39 +05:30
} ,
props : {
pipeline : {
type : Object ,
required : true ,
2017-09-10 17:25:29 +05:30
} ,
2018-11-08 19:23:39 +05:30
isLoading : {
type : Boolean ,
required : true ,
2017-09-10 17:25:29 +05:30
} ,
2018-11-08 19:23:39 +05:30
} ,
data ( ) {
return {
2020-03-13 15:44:24 +05:30
isCanceling : false ,
isRetrying : false ,
isDeleting : false ,
2018-11-08 19:23:39 +05:30
} ;
} ,
2018-03-17 18:26:18 +05:30
2018-11-08 19:23:39 +05:30
computed : {
status ( ) {
return this . pipeline . details && this . pipeline . details . status ;
} ,
shouldRenderContent ( ) {
return ! this . isLoading && Object . keys ( this . pipeline ) . length ;
2017-09-10 17:25:29 +05:30
} ,
2020-03-13 15:44:24 +05:30
deleteModalConfirmationText ( ) {
return _ _ (
'Are you sure you want to delete this pipeline? Doing so will expire all pipeline caches and delete all related objects, such as builds, logs, artifacts, and triggers. This action cannot be undone.' ,
) ;
2018-03-17 18:26:18 +05:30
} ,
2018-11-08 19:23:39 +05:30
} ,
2017-09-10 17:25:29 +05:30
2018-11-08 19:23:39 +05:30
methods : {
2020-03-13 15:44:24 +05:30
cancelPipeline ( ) {
this . isCanceling = true ;
eventHub . $emit ( 'headerPostAction' , this . pipeline . cancel _path ) ;
2018-11-08 19:23:39 +05:30
} ,
2020-03-13 15:44:24 +05:30
retryPipeline ( ) {
this . isRetrying = true ;
eventHub . $emit ( 'headerPostAction' , this . pipeline . retry _path ) ;
} ,
deletePipeline ( ) {
this . isDeleting = true ;
eventHub . $emit ( 'headerDeleteAction' , this . pipeline . delete _path ) ;
2017-09-10 17:25:29 +05:30
} ,
2018-11-08 19:23:39 +05:30
} ,
2020-03-13 15:44:24 +05:30
DELETE _MODAL _ID ,
2018-11-08 19:23:39 +05:30
} ;
2017-09-10 17:25:29 +05:30
< / script >
< template >
< div class = "pipeline-header-container" >
< ci-header
v - if = "shouldRenderContent"
: status = "status"
: item - id = "pipeline.id"
: time = "pipeline.created_at"
: user = "pipeline.user"
2018-11-08 19:23:39 +05:30
item - name = "Pipeline"
2020-03-13 15:44:24 +05:30
>
< loading-button
v - if = "pipeline.retry_path"
: loading = "isRetrying"
: disabled = "isRetrying"
class = "js-retry-button btn btn-inverted-secondary"
container - class = "d-inline"
: label = "__('Retry')"
@ click = "retryPipeline()"
/ >
< loading-button
v - if = "pipeline.cancel_path"
: loading = "isCanceling"
: disabled = "isCanceling"
class = "js-btn-cancel-pipeline btn btn-danger"
container - class = "d-inline"
: label = "__('Cancel running')"
@ click = "cancelPipeline()"
/ >
< loading-button
v - if = "pipeline.delete_path"
v - gl - modal = "$options.DELETE_MODAL_ID"
: loading = "isDeleting"
: disabled = "isDeleting"
class = "js-btn-delete-pipeline btn btn-danger btn-inverted"
container - class = "d-inline"
: label = "__('Delete')"
/ >
< / ci-header >
2020-07-28 23:09:34 +05:30
< gl-loading-icon v-if = "isLoading" size="lg" class="gl-mt-3 gl-mb-3" / >
2020-03-13 15:44:24 +05:30
< gl-modal
: modal - id = "$options.DELETE_MODAL_ID"
: title = "__('Delete pipeline')"
: ok - title = "__('Delete pipeline')"
ok - variant = "danger"
@ ok = "deletePipeline()"
>
< p >
{ { deleteModalConfirmationText } }
< / p >
< / gl-modal >
2017-09-10 17:25:29 +05:30
< / div >
< / template >