function JobActions()

in frontend/src/old-pages/Clusters/Scheduling.tsx [78:129]


function JobActions({
  job,
  disabled,
  cancelCallback,
}: {
  job: JobSummary
  disabled: boolean
  cancelCallback?: () => void
}) {
  let pendingPath = [
    'app',
    'clusters',
    'queue',
    'action',
    job.job_id,
    'pending',
  ]
  const pending = useState(pendingPath)

  const cancelJob = (jobId: any, cancelCallback: any) => {
    const clusterName = getState(['app', 'clusters', 'selected'])
    const clusterPath = ['clusters', 'index', clusterName]
    const cluster = getState(clusterPath)
    let user = clusterDefaultUser(cluster)
    const headNode = getState([...clusterPath, 'headNode'])
    setState(pendingPath, true)
    CancelJob(headNode.instanceId, user, jobId, () =>
      refreshQueues(() => {
        clearState(pendingPath)
        cancelCallback && cancelCallback()
      }),
    )
  }

  return (
    <div>
      {job.job_state !== 'COMPLETED' && job.job_state !== 'CANCELLED' && (
        <div>
          <Button
            loading={pending}
            disabled={disabled}
            onClick={() => {
              cancelJob(job.job_id, cancelCallback)
            }}
          >
            Stop Job
          </Button>
        </div>
      )}
    </div>
  )
}