/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React 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 styles from "./BarChartWidget.module.scss"; import { useTranslation } from "react-i18next"; type Props = { id: string; title: string; downloadTitle: string; summary: string; bars: Array; data?: Array; summaryBelow: boolean; hideLegend?: boolean; significantDigitLabels: boolean; colors?: { primary: string | undefined; secondary: string | undefined; }; columnsMetadata: Array; showMobilePreview?: boolean; stackedChart?: boolean; height?: number; }; const BarChartWidget = (props: Props) => { const { t } = useTranslation(); const colors = useColors(props.bars.length, props.colors?.primary, props.colors?.secondary); const { data, bars, showMobilePreview } = props; const columnsMetadataDict = new Map(); props.columnsMetadata.forEach((el) => columnsMetadataDict.set(el.columnName, el)); let xAxisLargestValue = 0; const dataSeries = (data: any[]): any[] => { const result = props.bars.slice(1).map((bar, index) => { return { data: data.map((row) => { xAxisLargestValue = Math.max(xAxisLargestValue, row[bar]); return { x: row[bars[0]], y: row[bar], }; }), title: bar, type: "bar", color: colors[index], valueFormatter: (tick: any) => { return TickFormatter.format( Number(tick), xAxisLargestValue, props.significantDigitLabels, "", "", columnsMetadataDict.get(bar), ); }, }; }); return result; }; return (
{props.title && (

{props.title}

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