diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataInsightDetail/KPIChart.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataInsightDetail/KPIChart.tsx index bd6cab51c56..e6c86758bee 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataInsightDetail/KPIChart.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataInsightDetail/KPIChart.tsx @@ -205,12 +205,12 @@ const KPIChart: FC = ({ chartFilter }) => { {kpiList.length ? ( {!isUndefined(kpiLatestResults) && !isEmpty(kpiLatestResults) && ( - + )} - + diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataInsightDetail/KPILatestResults.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataInsightDetail/KPILatestResults.tsx index cef8caa88e9..35ef3d6ee00 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataInsightDetail/KPILatestResults.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataInsightDetail/KPILatestResults.tsx @@ -4,7 +4,7 @@ import { toNumber, uniqueId } from 'lodash'; import React, { FC, useMemo } from 'react'; import { KpiTargetType } from '../../generated/api/dataInsight/kpi/createKpiRequest'; import { UIKpiResult } from '../../interface/data-insight.interface'; -import { pluralize } from '../../utils/CommonUtils'; +import { getKpiResultFeedback } from '../../utils/DataInsightUtils'; import { getNumberOfDaysForTimestamp } from '../../utils/TimeUtils'; interface Props { @@ -46,6 +46,10 @@ const KPILatestResults: FC = ({ kpiLatestResultsRecord }) => { // value for number metric const calculatedNumberValue = (targetValue / targetMetValue) * 100; + const daysLeft = getNumberOfDaysForTimestamp(resultData.endDate); + + const isTargetMet = targetResult.targetMet; + return ( @@ -63,14 +67,10 @@ const KPILatestResults: FC = ({ kpiLatestResultsRecord }) => { percent={ isPercentage ? calculatedPercentage : calculatedNumberValue } - showInfo={false} + showInfo={isTargetMet} /> - - {pluralize( - getNumberOfDaysForTimestamp(resultData.endDate), - 'day' - )}{' '} - left + + {getKpiResultFeedback(daysLeft, Boolean(isTargetMet))} ); diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json index b38406db03f..b0198433ff4 100644 --- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json +++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json @@ -282,6 +282,10 @@ "insights": "Insights", "govern": "Govern", "usage": "Usage", + "kpi-target-achieved": "Congratulations on achieving your goals!", + "kpi-target-achieved-before-time": "Awesome! You’ve reached your target well before time.", + "kpi-target-overdue": "Never mind. It’s time to restructure your goals and progress faster.", + "day-left": "{{day}} left", "edit-connection": "Edit Connection", "test-connection": "Test Connection", "database-name": "Database Name", diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/DataInsightUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/DataInsightUtils.tsx index 7c61cb7f498..ab065f47039 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/DataInsightUtils.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/DataInsightUtils.tsx @@ -13,6 +13,7 @@ import { Card, Typography } from 'antd'; import { RangePickerProps } from 'antd/lib/date-picker'; +import { t } from 'i18next'; import { groupBy, isEmpty, @@ -44,6 +45,7 @@ import { ChartValue, DataInsightChartTooltipProps, } from '../interface/data-insight.interface'; +import { pluralize } from './CommonUtils'; import { getFormattedDateFromMilliSeconds } from './TimeUtils'; const checkIsPercentageGraph = (dataInsightChartType: DataInsightChartType) => @@ -505,3 +507,15 @@ export const getKpiTargetValueByMetricType = ( return metricValue; }; + +export const getKpiResultFeedback = (day: number, isTargetMet: boolean) => { + if (day > 0 && isTargetMet) { + return t('label.kpi-target-achieved-before-time'); + } else if (day <= 0 && !isTargetMet) { + return t('label.kpi-target-overdue'); + } else if (isTargetMet) { + return t('label.kpi-target-achieved'); + } else { + return t('label.day-left', { day: pluralize(day, 'day') }); + } +};