1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-30 00:14:19 +00:00
pds-2021-g2-nest/nest_frontend/components/interactive/SummaryRepository.js

115 lines
3.8 KiB
JavaScript
Raw Normal View History

2021-05-18 00:04:06 +00:00
import React, { useContext } from "react"
2021-05-24 01:42:30 +00:00
import {
faArchive,
faBell,
faFolder,
faFolderOpen,
faPencilAlt,
faShare,
faTrash,
} from "@fortawesome/free-solid-svg-icons"
2021-05-18 00:04:06 +00:00
import ContextLanguage from "../../contexts/ContextLanguage"
import SummaryBase from "../base/summary/SummaryBase"
import SummaryLeft from "../base/summary/SummaryLeft"
import SummaryLabels from "../base/summary/SummaryLabels"
import SummaryButton from "../base/summary/SummaryButton"
import SummaryRight from "../base/summary/SummaryRight"
/**
* A {@link SummaryBase} representing a repository.
*
* @param repo - The repository to display.
* @param view - Function with no parameters to call when the view repository button is clicked.
2021-05-24 01:42:30 +00:00
* @param alerts - Function with no parameters to call when the alerts button is clicked.
* @param share - Function with no parameters to call when the share repository button is clicked.
* @param archive - Function with no parameters to call when the archive repository button is clicked.
* @param edit - Function with no parameters to call when the edit repository button is clicked.
* @param destroy - Function with no parameters to call when the delete repository button is clicked.
* @param running - If an action is running on the viewset.
* @param className - Additional class(es) to append to the summary.
* @param props - Additional props to pass to the summary.
* @returns {JSX.Element}
* @constructor
*/
2021-05-11 16:24:51 +00:00
export default function SummaryRepository(
2021-05-24 01:42:30 +00:00
{ repo, view, alerts, share, archive, edit, destroy, running, className, ...props },
) {
2021-05-18 00:48:34 +00:00
const { strings } = useContext(ContextLanguage)
2021-05-10 13:22:07 +00:00
return (
2021-05-18 17:15:53 +00:00
<SummaryBase {...props}>
<SummaryLeft
icon={repo.is_active ? faFolderOpen : faFolder}
title={repo.name}
subtitle={repo.owner ? repo.owner.username : null}
onClick={view}
disabled={running}
/>
<SummaryLabels
upperLabel={strings.created}
upperValue={repo.start ? new Date(repo.start).toLocaleString() : null}
lowerLabel={strings.archived}
lowerValue={repo.end ? new Date(repo.end).toLocaleString() : null}
/>
{share ?
<SummaryButton
2021-05-24 01:42:30 +00:00
color={"Grey"}
icon={faShare}
onClick={() => share()}
disabled={running}
>
{strings.share}
</SummaryButton>
: null}
2021-05-24 01:42:30 +00:00
{alerts ?
2021-05-20 10:16:01 +00:00
<SummaryButton
2021-05-24 01:42:30 +00:00
color={"Green"}
icon={faBell}
onClick={() => alerts()}
2021-05-20 10:16:01 +00:00
disabled={running}
>
2021-05-24 01:42:30 +00:00
{strings.alerts}
2021-05-20 10:16:01 +00:00
</SummaryButton>
2021-05-24 01:42:30 +00:00
: null}
{edit ?
<SummaryButton
color={"Yellow"}
icon={faPencilAlt}
onClick={() => edit()}
disabled={running}
>
{strings.edit}
</SummaryButton>
: null}
{archive ?
2021-05-20 10:16:01 +00:00
<SummaryButton
color={"Grey"}
icon={faArchive}
onClick={() => archive()}
2021-05-20 10:16:01 +00:00
disabled={running}
>
{strings.archive}
</SummaryButton>
: null}
2021-05-24 01:42:30 +00:00
{destroy ?
2021-05-20 10:16:01 +00:00
<SummaryButton
2021-05-24 01:42:30 +00:00
color={"Red"}
icon={faTrash}
onClick={() => destroy()}
2021-05-20 10:16:01 +00:00
disabled={running}
>
2021-05-24 01:42:30 +00:00
{strings.delete}
2021-05-20 10:16:01 +00:00
</SummaryButton>
2021-05-24 01:42:30 +00:00
: null}
<SummaryRight/>
</SummaryBase>
)
}