in dolphinscheduler-ui/src/views/projects/workflow/definition/components/table-action.tsx [114:357]
render() {
const { t } = useI18n()
const releaseState = this.row?.releaseState
const scheduleReleaseState = this.row?.scheduleReleaseState
const schedule = this.row?.schedule
return (
<NSpace>
<NTooltip trigger={'hover'}>
{{
default: () => t('project.workflow.edit'),
trigger: () => (
<NButton
size='small'
type='info'
tag='div'
circle
onClick={this.handleEditWorkflow}
disabled={releaseState === 'ONLINE'}
class='btn-edit'
/* TODO: Edit workflow */
>
<NIcon>
<FormOutlined />
</NIcon>
</NButton>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () => t('project.workflow.start'),
trigger: () => (
<NButton
size='small'
type='primary'
tag='div'
circle
onClick={this.handleStartWorkflow}
disabled={releaseState === 'OFFLINE'}
class='btn-run'
>
<NIcon>
<PlayCircleOutlined />
</NIcon>
</NButton>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () =>
releaseState === 'ONLINE'
? t('project.workflow.down_line')
: t('project.workflow.up_line'),
trigger: () => (
<NPopconfirm onPositiveClick={this.handleReleaseWorkflow}>
{{
default: () =>
releaseState === 'OFFLINE'
? t('project.workflow.confirm_to_online')
: t('project.workflow.confirm_to_offline'),
trigger: () => (
<NButton
size='small'
type={releaseState === 'ONLINE' ? 'warning' : 'error'}
tag='div'
circle
class='btn-publish'
>
<NIcon>
{releaseState === 'ONLINE' ? (
<DownloadOutlined />
) : (
<UploadOutlined />
)}
</NIcon>
</NButton>
)
}}
</NPopconfirm>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () => t('project.workflow.timing'),
trigger: () => (
<NButton
size='small'
type='info'
tag='div'
circle
onClick={this.handleTimingWorkflow}
>
<NIcon>
<ClockCircleOutlined />
</NIcon>
</NButton>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () =>
scheduleReleaseState === 'ONLINE'
? t('project.workflow.time_down_line')
: t('project.workflow.time_up_line'),
trigger: () => (
<NPopconfirm onPositiveClick={this.handleReleaseScheduler}>
{{
default: () =>
scheduleReleaseState === 'OFFLINE'
? t('project.workflow.time_to_online')
: t('project.workflow.time_to_offline'),
trigger: () => (
<NButton
size='small'
type={
scheduleReleaseState === 'ONLINE' ? 'warning' : 'error'
}
tag='div'
circle
class='btn-publish'
disabled={!schedule || releaseState !== 'ONLINE'}
>
<NIcon>
{scheduleReleaseState === 'ONLINE' ? (
<ArrowDownOutlined />
) : (
<ArrowUpOutlined />
)}
</NIcon>
</NButton>
)
}}
</NPopconfirm>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () => t('project.workflow.copy_workflow'),
trigger: () => (
<NButton
size='small'
type='info'
tag='div'
circle
onClick={this.handleCopyWorkflow}
>
<NIcon>
<CopyOutlined />
</NIcon>
</NButton>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () => t('project.workflow.delete'),
trigger: () => (
<NPopconfirm
disabled={releaseState === 'ONLINE'}
onPositiveClick={this.handleDeleteWorkflow}
>
{{
default: () => t('project.workflow.delete_confirm'),
trigger: () => (
<NButton
size='small'
type='error'
tag='div'
circle
disabled={releaseState === 'ONLINE'}
class='btn-delete'
>
<NIcon>
<DeleteOutlined />
</NIcon>
</NButton>
)
}}
</NPopconfirm>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () => t('project.workflow.tree_view'),
trigger: () => (
<NButton
size='small'
type='info'
tag='div'
circle
onClick={this.handleGotoWorkflowTree}
>
<NIcon>
<ApartmentOutlined />
</NIcon>
</NButton>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () => t('project.workflow.export'),
trigger: () => (
<NButton
size='small'
type='info'
tag='div'
circle
onClick={this.handleExportWorkflow}
>
<NIcon>
<ExportOutlined />
</NIcon>
</NButton>
)
}}
</NTooltip>
<NTooltip trigger={'hover'}>
{{
default: () => t('project.workflow.version_info'),
trigger: () => (
<NButton
size='small'
type='info'
tag='div'
circle
onClick={this.handleVersionWorkflow}
>
<NIcon>
<InfoCircleFilled />
</NIcon>
</NButton>
)
}}
</NTooltip>
</NSpace>
)
}