/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; import { Badge } from "@plane/propel/badge"; import type { TExternalContourRequest } from "@plane/types"; import { Avatar } from "@plane/ui"; import { renderFormattedDate } from "@plane/utils"; import { ExternalContourStatePill } from "./state-pill"; type Props = { contourRequest: TExternalContourRequest; }; export const ExternalContoursRequestTraceability = observer(function ExternalContoursRequestTraceability(props: Props) { const { contourRequest } = props; const { t } = useTranslation(); const issue = contourRequest.issue; const requestedByName = contourRequest.requested_by_name || issue.created_by_detail?.display_name || t("common.none"); const requestedAt = contourRequest.requested_at || contourRequest.created_at; const lastUpdatedAt = issue.updated_at || contourRequest.updated_at; const targetProjectName = contourRequest.target_project_name || issue.project_detail?.name || t("common.none"); const sourceDecision = contourRequest.source_decision === "accepted" ? t("external_contours_page.traceability.source_decision_accepted") : t("external_contours_page.traceability.source_decision_pending"); const targetIssueKey = issue.project_detail?.identifier && issue.sequence_id ? `${issue.project_detail.identifier}-${issue.sequence_id}` : issue.sequence_id ? `#${issue.sequence_id}` : t("common.none"); return (
{t("external_contours_page.traceability.title")}

{t("external_contours_page.traceability.description")}

{t("external_contours_page.traceability.source_contour")}
{contourRequest.source_project_name || t("common.none")}
{t("external_contours_page.traceability.target_contour")}
{targetProjectName}
{t("external_contours_page.traceability.status")}
{t("external_contours_page.traceability.source_decision")}
{sourceDecision}
{t("external_contours_page.traceability.requested_by")}
{requestedByName}
{t("external_contours_page.traceability.requested_at")}
{requestedAt ? renderFormattedDate(requestedAt) : t("common.none")}
{t("external_contours_page.traceability.last_updated")}
{lastUpdatedAt ? renderFormattedDate(lastUpdatedAt) : t("common.none")}
{t("external_contours_page.traceability.linked_item")}
{targetIssueKey}
); });