/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React from "react"; import { Metric } from "../models"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faArrowUp, faArrowDown } from "@fortawesome/free-solid-svg-icons"; import TickFormatter from "../services/TickFormatter"; import dayjs from "dayjs"; import LocalizedFormat from "dayjs/plugin/localizedFormat"; import { useTranslation } from "react-i18next"; import { useColors } from "../hooks"; dayjs.extend(LocalizedFormat); interface Props { metrics: Array; metricPerRow: number; significantDigitLabels: boolean; metricsCenterAlign: boolean; } function MetricsCardGroup(props: Props) { const { t } = useTranslation(); const primaryColor = useColors(1)[0]; let rows = []; for (let i = 0; i < props.metrics.length; i += props.metricPerRow) { let row = []; for (let j = i; j < i + props.metricPerRow && j < props.metrics.length; j++) { const metric = props.metrics[j]; row.push(metric); } rows.push(row); } if (!props.metrics.length) { return null; } return (
{rows.map((row, i) => { return (
{row.map((metric, j) => { return (

{metric.title}

{TickFormatter.formatNumber( Number(metric.value), Number(metric.value), props.significantDigitLabels, undefined, metric.percentage, metric.currency, )}
{metric.changeOverTime && (
{metric.changeOverTime.substring(1)}
)}
{metric.startDate && metric.endDate && (
{dayjs(metric.startDate) .locale( window.navigator.language.toLowerCase(), ) .format("ll")} {" "} {t("To")}{" "} {dayjs(metric.endDate) .locale( window.navigator.language.toLowerCase(), ) .format("ll")}
)}
); })}
); })}
); } export default MetricsCardGroup;