render()

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>
    )
  }