Path: blob/master/src/packages/frontend/course/compute/index.tsx
1697 views
import { Button } from "antd";1import { useMemo, useState } from "react";2import { Icon } from "@cocalc/frontend/components/icon";3import type { ComputeServerConfig } from "../types";4import type { CourseActions } from "../actions";5import type { Unit } from "../store";6import ComputeServer from "@cocalc/frontend/compute/inline";7import ComputeServerModal from "./modal";89interface Props {10style?;11actions: CourseActions;12unit: Unit;13}1415export function ComputeServerButton({ style, actions, unit }: Props) {16const [open, setOpen] = useState<boolean>(false);17const config: ComputeServerConfig = useMemo(() => {18return unit.get("compute_server")?.toJS() ?? {};19}, [unit]);2021return (22<>23<Button24style={style}25onClick={() => {26setOpen(!open);27}}28>29<Icon name="server" />30{!!config.server_id ? (31<ComputeServer id={config.server_id} titleOnly />32) : (33"Compute Server..."34)}35</Button>36{open && (37<ComputeServerModal38unit={unit}39onClose={() => setOpen(false)}40actions={actions}41/>42)}43</>44);45}464748