From b3a7a4881324b803fb49338ecdd6ab10e88d9c01 Mon Sep 17 00:00:00 2001 From: "aishwarya.srivastava" Date: Tue, 6 May 2025 12:32:33 +0530 Subject: [PATCH] NTP-59601 | Anomaly card changes --- src/assets/icons/AnomalyIcon.tsx | 19 +++--- .../AnomalyTracker/AnomalyCardHeader.tsx | 25 ++++++-- .../DaysTillEscalationComponent.tsx | 59 +++++++++++++++++++ .../AnomalyTracker/SingleAnomalyDetails.tsx | 5 +- .../Dashboard/AnomalyTracker/constants.ts | 14 +++++ 5 files changed, 104 insertions(+), 18 deletions(-) create mode 100644 src/screens/Dashboard/AnomalyTracker/DaysTillEscalationComponent.tsx diff --git a/src/assets/icons/AnomalyIcon.tsx b/src/assets/icons/AnomalyIcon.tsx index 9cf73a97..9dadb80f 100644 --- a/src/assets/icons/AnomalyIcon.tsx +++ b/src/assets/icons/AnomalyIcon.tsx @@ -2,30 +2,29 @@ import * as React from 'react'; import Svg, { Path, Rect } from 'react-native-svg'; const AnomalyTrackerIcon = () => ( - - + diff --git a/src/screens/Dashboard/AnomalyTracker/AnomalyCardHeader.tsx b/src/screens/Dashboard/AnomalyTracker/AnomalyCardHeader.tsx index 699b568c..63c603cb 100644 --- a/src/screens/Dashboard/AnomalyTracker/AnomalyCardHeader.tsx +++ b/src/screens/Dashboard/AnomalyTracker/AnomalyCardHeader.tsx @@ -4,15 +4,29 @@ import Text from '@rn-ui-lib/components/Text'; import React from 'react'; import { View, StyleSheet } from 'react-native'; +import Tag, { TagVariant } from '@rn-ui-lib/components/Tag'; +import { AnomalyCardHeaderColor, AnomalyPriorityColor } from './constants'; const AnomalyCardHeader = (props: any) => { const { item } = props; - + const headerColor = + AnomalyCardHeaderColor[item?.priority as keyof typeof AnomalyCardHeaderColor] || + COLORS.BACKGROUND.YELLOW_LIGHT; + const labelColor = + AnomalyPriorityColor[item?.priority as keyof typeof AnomalyPriorityColor] || + COLORS.TEXT.YELLOW_LIGHT; return ( - + {item?.type} - + {item?.priority} @@ -23,15 +37,14 @@ const styles = StyleSheet.create({ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', - backgroundColor: COLORS.BACKGROUND.RED, - borderTopRadius: 6, + borderTopLeftRadius: 8, + borderTopRightRadius: 8, paddingHorizontal: 16, paddingVertical: 12, alignItems: 'center', }, priorityLabel: { borderRadius: 4, - backgroundColor: COLORS.TEXT.RED, paddingHorizontal: 8, paddingVertical: 1, }, diff --git a/src/screens/Dashboard/AnomalyTracker/DaysTillEscalationComponent.tsx b/src/screens/Dashboard/AnomalyTracker/DaysTillEscalationComponent.tsx new file mode 100644 index 00000000..f2472b89 --- /dev/null +++ b/src/screens/Dashboard/AnomalyTracker/DaysTillEscalationComponent.tsx @@ -0,0 +1,59 @@ +import React, { useEffect } from 'react'; +import { View } from 'react-native'; +import Animated, { useAnimatedProps, useSharedValue, withTiming } from 'react-native-reanimated'; +import Svg, { Circle } from 'react-native-svg'; +import Text from '@rn-ui-lib/components/Text'; +import { COLORS } from '@rn-ui-lib/colors'; +const AnimatedCircle = Animated.createAnimatedComponent(Circle); + +const DaysTillEscalationComponent = (props: { + dayTillEscalation: number; + progressPercent: number; +}) => { + const { dayTillEscalation, progressPercent } = props; + const progress = useSharedValue(0); + useEffect(() => { + const normalizedProgress = progressPercent / 100; + progress.value = withTiming(normalizedProgress, { duration: 400 }); + }, []); + const radius = 18; + const circumference = 2 * Math.PI * radius; + const circleAnimatedProps = useAnimatedProps(() => ({ + strokeDashoffset: circumference * (1 - progress.value), + })); + + return ( + <> + + + + + + {dayTillEscalation > 0 ? ( + + {dayTillEscalation} + + ) : ( + 0 + )} + + + ); +}; + +export default DaysTillEscalationComponent; diff --git a/src/screens/Dashboard/AnomalyTracker/SingleAnomalyDetails.tsx b/src/screens/Dashboard/AnomalyTracker/SingleAnomalyDetails.tsx index 16ed2b48..b0b5605d 100644 --- a/src/screens/Dashboard/AnomalyTracker/SingleAnomalyDetails.tsx +++ b/src/screens/Dashboard/AnomalyTracker/SingleAnomalyDetails.tsx @@ -7,6 +7,7 @@ import { sanitizeString } from '@components/utlis/commonFunctions'; import { BUSINESS_DATE_FORMAT, dateFormat } from '@rn-ui-lib/utils/dates'; import { AnomalyType } from './constants'; import DaysTillEscalationComponent from './DaysTillEscalationComponent'; +import { GenericStyles } from '@rn-ui-lib/styles'; interface ISingleAnomalyDetailsProps { item: any; @@ -26,7 +27,7 @@ const SingleAnomalyDetails = (props: ISingleAnomalyDetailsProps) => { {anomalyType === AnomalyType.OPEN ? ( - Days till Escalation + Days till Escalation