function ComputeResources()

in frontend/src/old-pages/Configure/Queues/Queues.tsx [280:349]


function ComputeResources({queue, index, canUseEFA}: any) {
  const {t} = useTranslation()
  const {ViewComponent} = useComputeResourceAdapter()
  const computeResourceAdapter = useComputeResourceAdapter()

  const {maxCRPerCluster, maxCRPerQueue} = useClusterResourcesLimits()
  const queues = useState([...queuesPath])
  const currentComputeResources = React.useMemo(
    () =>
      queues
        .map((queue: Queue) => queue.ComputeResources.length)
        .reduce(
          (total: number, computeResources: number) => total + computeResources,
          0,
        ),
    [queues],
  )

  const addComputeResource = () => {
    const existingCRs = queue.ComputeResources || []
    setState([...queuesPath, index], {
      ...queue,
      ComputeResources: [
        ...existingCRs,
        computeResourceAdapter.createComputeResource(
          queue.Name,
          existingCRs.length,
        ),
      ],
    })
  }

  return (
    <>
      <Header
        variant="h3"
        actions={
          <SpaceBetween direction="horizontal" size="xs">
            <Button
              disabled={
                queue.ComputeResources.length >= maxCRPerQueue ||
                currentComputeResources >= maxCRPerCluster
              }
              onClick={addComputeResource}
            >
              {t('wizard.queues.computeResource.addComputeResource')}
            </Button>
          </SpaceBetween>
        }
        description={t('wizard.queues.computeResource.header.description', {
          limit: maxCRPerQueue,
        })}
      >
        {t('wizard.queues.computeResource.header.title')}
      </Header>
      <ColumnLayout borders="horizontal">
        {queue.ComputeResources.map((computeResource: any, i: any) => (
          <ViewComponent
            queue={queue}
            computeResource={computeResource}
            index={i}
            queueIndex={index}
            key={i}
            canUseEFA={canUseEFA}
          />
        ))}
      </ColumnLayout>
    </>
  )
}