/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React, { useMemo, useState } from "react"; import { useColors } from "../hooks"; import TickFormatter from "../services/TickFormatter"; import MarkdownRender from "./MarkdownRender"; import DataTable from "./DataTable"; import ShareButton from "./ShareButton"; import BarChart from "@cloudscape-design/components/bar-chart"; import { useTranslation } from "react-i18next"; type Props = { id: string; title: string; downloadTitle: string; summary: string; parts: Array; data?: Array; summaryBelow: boolean; significantDigitLabels: boolean; columnsMetadata: Array; colors?: { primary: string | undefined; secondary: string | undefined; }; showMobilePreview?: boolean; }; const PartWholeChartWidget = (props: Props) => { const { t } = useTranslation(); const [xAxisLargestValue, setXAxisLargestValue] = useState(0); const { data, parts, showMobilePreview } = props; useMemo(() => { if (data && data.length > 0) { let maxTick = -Infinity; for (let dataItem of data) { const value = dataItem[parts[1] as keyof object]; maxTick = Math.max(maxTick, value); } setXAxisLargestValue(maxTick); } }, [data, parts]); const colors = useColors(data?.length ?? 0, props.colors?.primary, props.colors?.secondary); const dataSeries = (data: object[]): any[] => { const result = data.map((dataItem, index) => { return { data: [{ x: "", y: dataItem[parts[1] as keyof object] }], title: dataItem[parts[0] as keyof object], type: "bar", color: colors[index], valueFormatter: (tick: any) => { return TickFormatter.format( Number(tick), xAxisLargestValue, props.significantDigitLabels, "", "", ); }, }; }); return result; }; return (
{props.title && (

{props.title}

)} {!props.summaryBelow && ( )} {data && data.length > 0 && (
{ return TickFormatter.format( Number(tick), xAxisLargestValue, props.significantDigitLabels, "", "", ); }, }} ariaLabel={props.title} height={80} hideFilter horizontalBars stackedBars xScaleType="categorical" />
)}
{props.summaryBelow && (
)}
); }; export default PartWholeChartWidget;