1
Fork 0
mirror of https://github.com/Steffo99/sophon.git synced 2024-12-23 07:14:21 +00:00
sophon/frontend/src/components/notebook/NotebookResourcePanel.tsx

55 lines
2 KiB
TypeScript
Raw Normal View History

import {faBook} from "@fortawesome/free-solid-svg-icons"
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"
import * as React from "react"
2021-10-14 03:05:01 +00:00
import {useCacheContext} from "../../contexts/cache"
import {ManagedResource} from "../../hooks/useManagedViewSet"
import {SophonNotebook} from "../../types/SophonTypes"
import {Link} from "../elements/Link"
import {ResourcePanel} from "../elements/ResourcePanel"
2021-10-14 03:05:01 +00:00
import {NotebookDeleteButton} from "./NotebookDeleteButton"
import {NotebookLockButton} from "./NotebookLockButton"
import {NotebookStartButton} from "./NotebookStartButton"
import {NotebookStopButton} from "./NotebookStopButton"
import {NotebookUnlockButton} from "./NotebookUnlockButton"
export interface NotebookResourcePanelProps {
resource: ManagedResource<SophonNotebook>,
}
export function NotebookResourcePanel({resource}: NotebookResourcePanelProps): JSX.Element {
2021-10-14 03:05:01 +00:00
const cache = useCacheContext()
const locked_by = cache?.getUserById(resource.value.locked_by)?.value.username
return (
<ResourcePanel builtinColor={locked_by ? "blue" : undefined}>
<ResourcePanel.Icon>
<FontAwesomeIcon icon={faBook}/>
</ResourcePanel.Icon>
<ResourcePanel.Name>
<Link href={`n/${resource.value.slug}/`}>
{resource.value.name}
</Link>
</ResourcePanel.Name>
<ResourcePanel.Text>
2021-10-14 03:05:01 +00:00
{
resource.value.locked_by
?
`Locked by ${locked_by}`
:
null
}
</ResourcePanel.Text>
<ResourcePanel.Buttons>
<NotebookDeleteButton resource={resource}/>
2021-10-14 03:05:01 +00:00
<NotebookStopButton resource={resource}/>
<NotebookStartButton resource={resource}/>
<NotebookUnlockButton resource={resource}/>
<NotebookLockButton resource={resource}/>
</ResourcePanel.Buttons>
</ResourcePanel>
)
}