TP-31863 |performance level dynamic| Aman Singh (#466)

* TP-31863 | initial commit | Aman Singh

* TP-0000 | Level icon with level number within it and color as prop | Herik

* TP-31863 | second commit | Aman Singh

* TP-0000 | Level icon implemented in the list with colors | Herik

* TP-31863 | third commit | Aman Singh

* TP-31863 | forth commit | Aman Singh

* TP-31863 | integration done | Aman Singh

* TP-31863 | design review done | Aman Singh

* TP-31863 | design review done -1 | Aman Singh

* TP-31863 | EM review done| Aman Singh

* TP-31863 | EM review done -1| Aman Singh

* TP-31863 | EM review done| Aman Singh

* TP-0000 | maxLevel after UAT | Herik

* TP-31863 |removed tooltip sachin suggestion| Aman Singh

Co-authored-by: Herik Modi <herik.modi@navi.com>
This commit is contained in:
Aman Singh
2023-07-05 20:46:16 +05:30
committed by GitHub Enterprise
parent 8fd5e424fe
commit a7b475d190
14 changed files with 516 additions and 70 deletions

View File

@@ -1,91 +1,139 @@
{
"agentReferenceId": "4b6cbe75-59f9-4375-89fd-080b26d21b03",
"agentLevelRanking": 5,
"maxLevel": 7,
"cashCollectedInLast30Days": 1117146.44,
"firstAllocationDate": "2022-05-03T00:00:00",
"cashRequiredToReachNextLevel": 70274.98,
"agentReferenceId": "6fb98fe3-db72-41b6-9fe3-58969e19d986",
"agentLevelRanking": 9,
"maxLevel": 9,
"cashCollectedInLast30Days": 4720122.37,
"firstAllocationDate": "2022-07-25T00:00:00",
"cashRequiredToReachNextLevel": 199513.06,
"levelConstructList": [
{
"level": 1,
"levelLowerLimit": 25676.6,
"levelUpperLimit": 554464.91
"levelLowerLimit": 10263.0,
"levelUpperLimit": 600844.86
},
{
"level": 2,
"levelLowerLimit": 555717.36,
"levelUpperLimit": 876699.78
"levelLowerLimit": 601023.92,
"levelUpperLimit": 868522.89
},
{
"level": 3,
"levelLowerLimit": 882595.22,
"levelUpperLimit": 993750.74
"levelLowerLimit": 868647.89,
"levelUpperLimit": 975410.37
},
{
"level": 4,
"levelLowerLimit": 994443.69,
"levelUpperLimit": 1094499.45
"levelLowerLimit": 975488.35,
"levelUpperLimit": 1081223.36
},
{
"level": 5,
"levelLowerLimit": 1098591.56,
"levelUpperLimit": 1187158.21
"levelLowerLimit": 1086032.59,
"levelUpperLimit": 1161649.97
},
{
"level": 6,
"levelLowerLimit": 1187421.42,
"levelUpperLimit": 1301905.05
"levelLowerLimit": 1164180.72,
"levelUpperLimit": 1295784.61
},
{
"level": 7,
"levelLowerLimit": 1302165.74,
"levelUpperLimit": 1923532.05
"levelLowerLimit": 1298859.54,
"levelUpperLimit": 1940339.37
},
{
"level": 8,
"levelLowerLimit": 1940344.54,
"levelUpperLimit": 2631379.37
},
{
"level": 9,
"levelLowerLimit": 2631382.54,
"levelUpperLimit": 4720122.37
}
],
"currentMonthCashCollected": [
{
"label": "EMIs",
"value": 893868.68,
"valuePercent": 89.95521132199717
"value": 383003.99,
"valuePercent": 95.3908184628774
},
{
"label": "Fees",
"value": 41930.079999999994,
"valuePercent": 4.219668158804094
"value": 17800.0,
"valuePercent": 4.433260783103638
},
{
"label": "Foreclosures",
"value": 30392.04,
"valuePercent": 3.0585279939628163
"value": 0.0,
"valuePercent": 0.0
},
{
"label": "Others",
"value": 27491.129999999997,
"valuePercent": 2.7665925252359167
"value": 706.87,
"valuePercent": 0.17605275560407127
}
],
"prevMonthCashCollected": [
{
"label": "EMIs",
"value": 810255.89,
"valuePercent": 72.28522338317956
"value": 0.0,
"valuePercent": "NaN"
},
{
"label": "Fees",
"value": 56414.66,
"valuePercent": 5.032911640032785
"value": 0.0,
"valuePercent": "NaN"
},
{
"label": "Foreclosures",
"value": 184438.37,
"valuePercent": 16.454269497355362
"value": 0.0,
"valuePercent": "NaN"
},
{
"label": "Others",
"value": 69806.05,
"valuePercent": 6.227595479432307
"value": 0.0,
"valuePercent": "NaN"
}
],
"totalCurrentMonthCashCollected": 993681.9300000002,
"totalPrevMonthCashCollected": 1120914.97
"totalCurrentMonthCashCollected": 401510.33,
"totalPrevMonthCashCollected": 0.0,
"todaysCashCollected": 24344.0,
"noOfDaysCashCollected": 30,
"dateWhenRankingVisible": "2022-08-23",
"monthlyCashCollectedBreakupDropdownOptions": [
{
"value": "JULY",
"label": "July"
},
{
"value": "JUNE",
"label": "June"
}
],
"monthlyCashCollected": {
"monthlyCashCollectedBreakup": [
{
"label": "EMIs",
"value": 383003.99,
"valuePercent": 95.3908184628774
},
{
"label": "Fees",
"value": 17800.0,
"valuePercent": 4.433260783103638
},
{
"label": "Foreclosures",
"value": 0.0,
"valuePercent": 0.0
},
{
"label": "Others",
"value": 706.87,
"valuePercent": 0.17605275560407127
}
],
"totalMonthlyCashCollected": 401510.33
}
}

View File

@@ -0,0 +1,43 @@
interface LevelIconProps {
level: number;
color?: string;
fontColor?: string;
fontClassName?: string;
}
export const LevelIcon = ({ level = 1, color = '#F3D260', fontColor = '#000', fontClassName }: LevelIconProps) => {
return (
<div className={fontClassName} style={{ position: 'relative', height: 26, width: 26, cursor: 'default' }}>
<span
style={{
position: 'absolute',
top: '50%',
left: '50%',
fontSize: 14,
fontWeight: 500,
transform: 'translate(-50%, -50%)',
display: 'inline-block',
color: fontColor
}}
>
{level}
</span>
<svg
width="26"
height="26"
viewBox="0 0 26 26"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M11.6438 1.65171C11.8064 1.44835 12.0129 1.28419 12.2477 1.17138C12.4823 1.05857 12.7396 1 13 1C13.2605 1 13.5177 1.05857 13.7524 1.17138C13.9871 1.28419 14.1936 1.44835 14.3562 1.65171L15.9682 3.65785C16.151 3.88532 16.3883 4.06307 16.6579 4.17465C16.9276 4.28624 17.2211 4.32809 17.5112 4.29631L20.0694 4.01777C20.3276 3.99024 20.5888 4.02092 20.8336 4.10754C21.0786 4.19416 21.3009 4.33453 21.4844 4.51834C21.6679 4.70215 21.8079 4.92473 21.8942 5.16974C21.9805 5.41475 22.0106 5.67597 21.9828 5.93419L21.7042 8.49116C21.6726 8.78135 21.7147 9.07482 21.8264 9.34448C21.9382 9.61415 22.1161 9.85131 22.3437 10.0341L24.3489 11.6449C24.552 11.8077 24.7161 12.0141 24.8287 12.2488C24.9415 12.4836 25 12.7407 25 13.001C25 13.2615 24.9415 13.5185 24.8287 13.7533C24.7161 13.988 24.552 14.1944 24.3489 14.3573L22.3437 15.9691C22.1161 16.1516 21.9382 16.3886 21.8264 16.6581C21.7147 16.9276 21.6726 17.2209 21.7042 17.5109L21.9828 20.069C22.011 20.3274 21.9808 20.5889 21.8945 20.8342C21.8083 21.0793 21.668 21.3021 21.4842 21.4859C21.3003 21.6698 21.0776 21.81 20.8324 21.8962C20.5871 21.9825 20.3256 22.0126 20.0673 21.9844L17.5091 21.7058C17.2189 21.6745 16.9255 21.7166 16.6558 21.8283C16.3862 21.9402 16.149 22.1179 15.9661 22.3453L14.3562 24.3483C14.1936 24.5516 13.9871 24.7159 13.7524 24.8286C13.5177 24.9415 13.2605 25 13 25C12.7396 25 12.4823 24.9415 12.2477 24.8286C12.0129 24.7159 11.8064 24.5516 11.6438 24.3483L10.0339 22.3432C9.851 22.1158 9.61381 21.9381 9.34417 21.8262C9.07453 21.7145 8.7811 21.6724 8.49091 21.7037L5.93277 21.9823C5.67434 22.0105 5.41286 21.9804 5.16762 21.8941C4.92237 21.8079 4.69962 21.6677 4.51579 21.4838C4.33196 21.3 4.19174 21.0773 4.10546 20.8321C4.01918 20.5868 3.98906 20.3253 4.0173 20.0669L4.29585 17.5088C4.32741 17.2188 4.28536 16.9255 4.17359 16.6561C4.06181 16.3865 3.8839 16.1495 3.65631 15.967L1.65112 14.3573C1.44792 14.1944 1.28391 13.988 1.17121 13.7533C1.05851 13.5185 1 13.2615 1 13.001C1 12.7407 1.05851 12.4836 1.17121 12.2488C1.28391 12.0141 1.44792 11.8077 1.65112 11.6449L3.65631 10.0341C3.88392 9.85131 4.06181 9.61415 4.17359 9.34448C4.28535 9.07482 4.3274 8.78135 4.29585 8.49116L4.0173 5.93419C3.98929 5.67577 4.01957 5.41435 4.10591 5.16918C4.19225 4.924 4.33247 4.70129 4.51622 4.51744C4.69998 4.33359 4.92262 4.19327 5.16776 4.10679C5.41291 4.02033 5.67431 3.9899 5.93277 4.01777L8.49091 4.29631C8.78104 4.32809 9.0745 4.28624 9.34418 4.17465C9.61386 4.06307 9.85109 3.88532 10.0339 3.65785L11.6438 1.65171Z"
fill={color}
stroke="white"
strokeWidth="0.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
</div>
);
};

View File

@@ -0,0 +1,24 @@
import React from 'react';
import { IconProps } from './types';
const PerformanceArrow: React.FC<IconProps> = props => {
const { className, style, title } = props;
return (
// TODO: Use tooltip component instead of title.
<svg
style={style}
className={className}
width="21"
height="9"
viewBox="0 0 21 9"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path d="M9 4.5L2.25 8.39711L2.25 0.602885L9 4.5Z" fill="#0094FF" />
<path d="M20 4.49805L8 4.50179" stroke="#3591FE" strokeLinecap="round" />
</svg>
);
};
export default PerformanceArrow;

View File

@@ -5,4 +5,7 @@ export interface IconProps {
onClick?: () => void;
size?: number;
opacity?: string;
className?: string;
style?: React.CSSProperties;
title?: string;
}

View File

@@ -0,0 +1,75 @@
.parent {
width: 5px;
flex-shrink: 0;
border-radius: 1px 1px 0px 0px;
background: linear-gradient(
180deg,
#65e64c 0%,
#8ef682 12.5%,
#1ddae4 27.08%,
#d2e555 38.77%,
#f2f57b 46.35%,
#fff04f 59.9%,
#fec786 69.27%,
#f8ada9 84.38%,
#f96c6c 100%
);
display: flex;
flex-direction: column-reverse;
position: relative;
> div:last-child {
.levelLine {
display: none;
}
.maxLimitText {
display: none;
}
}
.level {
width: 5px;
position: relative;
.levelIcon {
position: absolute;
left: -40px;
top: 50%;
transform: translateY(-50%);
}
.maxLimitText {
position: absolute;
top: -9px;
right: -73px;
font-size: 12px;
color: #97a1ac;
width: 60px;
}
}
.performanceArrow {
position: absolute;
left: -11px;
transform: translateY(50%);
}
.levelLine {
position: absolute;
background: #97a1ac;
width: 7px;
height: 1px;
border-radius: 2px;
left: -1px;
top: -1px;
}
.active {
opacity: 1;
}
.inActive {
opacity: 0.5;
}
}

View File

@@ -0,0 +1,114 @@
import { Typography } from '@navi/web-ui/lib/primitives';
import cx from 'classnames';
import { LevelIcon } from 'src/assets/icons/LevelIcon';
import PerformanceArrow from 'src/assets/icons/PerformanceArrow';
import { formatAmount, shortNumberNotation } from 'src/utils/commonUtils';
import styles from './AgentProgressMeter.module.scss';
import { LEVEL_HEIGHT, MAX_LEVEL_GUARD_PERCENTAGE, MIN_LEVEL_GUARD_PERCENTAGE, PARENT_HEIGHT, levelColorsList, levelConstructList, levelConstructListBEType, levelConstructListType } from './constant';
// const normaliseValues = (levelConstructList: Array<levelConstructListType>, currentLevel: number) => {
// if (!currentLevel) return 1;
// if (currentLevel > MAX_NUMBER_OF_LEVELS) return MAX_NUMBER_OF_LEVELS;
// if (currentLevel < 1) return 1;
// return false;
// };
const getPercentageValue = (
levelConstruct: levelConstructListType,
currentCashCollected: number,
maxLevel: number
) => {
if (!levelConstruct || !currentCashCollected) return 0;
const percentage = Math.round(
(Math.abs(currentCashCollected - levelConstruct.levelLowerLimit) /
(levelConstruct.levelUpperLimit - levelConstruct.levelLowerLimit)) *
100
)
if (maxLevel === levelConstruct.level && percentage > MAX_LEVEL_GUARD_PERCENTAGE) return MAX_LEVEL_GUARD_PERCENTAGE;
if (1 === levelConstruct.level && percentage < MIN_LEVEL_GUARD_PERCENTAGE) return MIN_LEVEL_GUARD_PERCENTAGE;
if (percentage > 100) return 100;
if (percentage < 0) return 0;
if (isNaN(percentage)) return 0;
return percentage;
};
const generateDivForLevels = (
levelConstructList: Array<levelConstructListType>,
currentLevel: number,
cashCollected: number,
maxLevel: number,
fontStyle?: string,
iconStyle?: string,
parentStyle?: string,
) => {
// if (hasNullIssues(levelConstructList, currentLevel)) return null;
const div = [];
for (let i = 0; i < maxLevel; i++) {
div.push(
<div style={{ height: LEVEL_HEIGHT }} className={cx(styles.level, parentStyle)} key={i}>
<div className={styles.levelIcon}>
<LevelIcon fontClassName={iconStyle} level={i + 1} color={levelConstructList[i]?.color} />
</div>
<div className={styles.levelLine} />
<span className={cx(styles.maxLimitText, fontStyle)}>
<Typography variant="p3" style={{ cursor: 'default' }}>
<span title={`${formatAmount(levelConstructList[i].levelUpperLimit)}`}>{`${shortNumberNotation(levelConstructList[i].levelUpperLimit)}`}</span>
</Typography>
</span>
{i === currentLevel - 1 ? (
<PerformanceArrow
style={{
bottom: `${getPercentageValue(
levelConstructList[currentLevel - 1],
cashCollected,
maxLevel
)}%`
}}
className={cx(styles.performanceArrow)}
/>
) : null}
</div>
);
}
return div;
};
interface AgentProgressMeterProps {
currentLevel: number;
cashCollected: number;
levelConstructList: Array<levelConstructListBEType>;
fontStyle?: string;
iconStyle?: string;
parentStyle?: string;
maxLevel: number;
}
const AgentProgressMeter: React.FC<AgentProgressMeterProps> = (props) => {
const { currentLevel, levelConstructList, cashCollected, fontStyle, iconStyle, parentStyle, maxLevel } = props;
const PARENT_HEIGHT = `${maxLevel * parseInt(LEVEL_HEIGHT)}px`;
const levelInfusedWithColors = levelConstructList?.map((levelConstruct, index) => {
const level = levelConstruct.level;
const levelLowerLimit = levelConstruct.levelLowerLimit;
const levelUpperLimit = levelConstruct.levelUpperLimit;
const color = levelColorsList[index];
return {
level,
levelLowerLimit,
levelUpperLimit,
color
};
}
);
const renderDiv = generateDivForLevels(levelInfusedWithColors, currentLevel, cashCollected, maxLevel, fontStyle, iconStyle, parentStyle);
return (
<div style={{ height: PARENT_HEIGHT }} className={styles.parent}>
{renderDiv}
</div>
);
};
export default AgentProgressMeter;

View File

@@ -0,0 +1,78 @@
export const levelColorsList = [
'#F97474',
'#FBB9A6',
'#FEBA65',
'#F3D260',
'#FFEA06',
'#E6EB00',
'#47E1DC',
'#5AE9B1',
'#70EB5A'
];
export const LEVEL_HEIGHT = '40px';
export const MAX_LEVEL_GUARD_PERCENTAGE = 75;
export const MIN_LEVEL_GUARD_PERCENTAGE = 25;
export const MIN_LEVEL = 1;
export const levelConstructList = [
{
level: 1,
levelLowerLimit: 25676.6,
levelUpperLimit: 554464.91,
},
{
level: 2,
levelLowerLimit: 555717.36,
levelUpperLimit: 876699.78,
},
{
level: 3,
levelLowerLimit: 882595.22,
levelUpperLimit: 993750.74,
},
{
level: 4,
levelLowerLimit: 994443.69,
levelUpperLimit: 1094499.45,
},
{
level: 5,
levelLowerLimit: 1098591.56,
levelUpperLimit: 1187158.21,
},
{
level: 6,
levelLowerLimit: 1187421.42,
levelUpperLimit: 1301905.05,
},
{
level: 7,
levelLowerLimit: 1302165.74,
levelUpperLimit: 1923532.05,
},
{
level: 8,
levelLowerLimit: 1923532.74,
levelUpperLimit: 3223532.05,
},
{
level: 9,
levelLowerLimit: 3223532.74,
levelUpperLimit: 5223532.05,
}
];
export interface levelConstructListType {
level: number;
levelLowerLimit: number;
levelUpperLimit: number;
color: string;
}
export interface levelConstructListBEType {
level: number;
levelLowerLimit: number;
levelUpperLimit: number;
}

View File

@@ -239,25 +239,30 @@ const CashEarnedChartHC: React.FC<CashEarnedChartHCProps> = props => {
size="h6"
/>
)}
<div>
{!showDropdown ? (
<span className={styles.titleWithDropdown}>
{view === 'curr' ? (
<span className={styles.darkGray}>
Last {getDayofMonth()} day(s) cash collected
</span>
) : (
<span className={styles.darkGray}>Cash collected last month</span>
)}
<b>
{' '}
{getFirstDate()} - {getLastDate(view)}
</b>
</span>
) : null}
</div>
</div>
<div className={cx(styles.titleContainer, titleContainerClass)}>
{showDropdown ? (
<>
<span className={styles.titleWithDropdown}>Cash Collection Breakup</span>
</>
) : (
<span className={styles.monthTitle}>
{view === 'curr' ? (
<span className={styles.darkGray}>Last {getDayofMonth()} days cash collected</span>
) : (
<span className={styles.darkGray}>Cash collected last month</span>
)}
<b>
{' '}
{getFirstDate()} - {getLastDate(view)}
</b>
</span>
)}
) : null}
</div>
<div className={cx(styles.pieChart, pieChartContainerClass)}>
<HighchartsReact highcharts={Highcharts} options={options} />

View File

@@ -90,7 +90,7 @@ const CumulativeCashCollected: React.FC<ICumulativeCashCollected> = props => {
const {
data,
width = 350,
height = 133,
height = 150,
legendWrapperStyle,
graphWrapperContainerClass = '',
isWeekData = false

View File

@@ -558,7 +558,11 @@
display: flex;
flex-direction: row-reverse;
padding-right: 5px;
justify-content: space-between;
align-items: center;
padding-left: 24px;
}
.dropdown {
width: 130px;
}

View File

@@ -25,6 +25,9 @@ import { Pie, PieChart, ResponsiveContainer, Sector, Tooltip } from 'recharts';
import { PERFORMANCE_CHART_TYPE } from './leaderboardConstant';
import { addClickstreamEvent } from '../../service/clickStreamEventService';
import { CLICKSTREAM_EVENT_NAMES } from '../../service/clickStream.constant';
import AgentProgressMeter from '../AgentprogressMeter/AgentProgressMeter';
import { LevelIcon } from 'src/assets/icons/LevelIcon';
import { levelColorsList } from '../AgentprogressMeter/constant';
export const LEVEL_ICONS = [
<StarLevelOneIcon key={1} />,
@@ -121,7 +124,11 @@ const Leaderboard = () => {
</Typography>
{leaderboard?.agentLevelRanking ? (
<Typography variant="p5">
{LEVEL_ICONS[leaderboard?.agentLevelRanking - 1]}
<LevelIcon
level={leaderboard?.agentLevelRanking}
color={levelColorsList[leaderboard?.agentLevelRanking - 1]}
/>
{/* {LEVEL_ICONS[leaderboard?.agentLevelRanking - 1]} */}
</Typography>
) : (
<Typography variant="p5">-</Typography>
@@ -172,14 +179,18 @@ const Leaderboard = () => {
</Typography>
<GridRow
style={{
padding: '0 32px 0 0',
margin: 0,
padding: '8px 32px 0 0',
width: '100%',
justifyContent: 'center',
marginTop: '20px'
justifyContent: 'center'
}}
>
<GridColumn sm={4}>
<AgentProgressMeter
cashCollected={leaderboard.cashCollectedInLast30Days}
currentLevel={leaderboard.agentLevelRanking}
levelConstructList={leaderboard.levelConstructList}
maxLevel={leaderboard.maxLevel}
/>
{/* <GridColumn sm={4}>
<Typography style={{ marginTop: `10px` }} variant="p5">
{LEVEL_ICONS[6]}
</Typography>
@@ -201,15 +212,15 @@ const Leaderboard = () => {
<Typography style={{ marginTop: `13px` }} variant="p5">
{LEVEL_ICONS[0]}
</Typography>
</GridColumn>
<GridColumn sm={3}>
</GridColumn> */}
{/* <GridColumn sm={3}>
<RangeMeter
levelConstructList={leaderboard.levelConstructList}
agentLevelRanking={leaderboard.agentLevelRanking}
cashCollectedInLast30Days={leaderboard.cashCollectedInLast30Days}
maxLevel={leaderboard.maxLevel}
/>
</GridColumn>
</GridColumn> */}
</GridRow>
</GridColumn>
</GridRow>

View File

@@ -16,6 +16,10 @@ import { LEVEL_ICONS } from './Leaderboard';
import styles from './Leaderboard.module.scss';
import cx from 'classnames';
import { tickFormatterHandler } from 'src/utils/Chart.utils';
import { LevelIcon } from 'src/assets/icons/LevelIcon';
import { levelColorsList } from '../AgentprogressMeter/constant';
import { useSelector } from 'react-redux';
import { RootState } from 'src/store';
export enum formatYAxisTypes {
COMPACT_FORMATTED_AMOUNT
@@ -38,17 +42,25 @@ const PerformanceChart: React.FC<IPerformanceChart> = props => {
const {
data,
width = 350,
height = 133,
height = 150,
legendWrapperStyle,
graphWrapperContainerClass = '',
isWeekData = false
} = props;
const maxPerformance = useSelector((state: RootState) => state.leaderboard.maxLevel);
const newData = data?.data?.map(item => ({
...item,
level: Number(item?.level?.replace('L', ''))
}));
const yAxisLevels = [];
for (let i = 1; i <= maxPerformance; i++) {
yAxisLevels.push(i);
}
if (!newData) {
return <div className={styles.dataNotFound}>Data Not Available</div>;
}
@@ -87,7 +99,7 @@ const PerformanceChart: React.FC<IPerformanceChart> = props => {
/>
<Tooltip wrapperStyle={{ outline: 'none' }} content={<CustomTooltip />} />
<YAxis
ticks={[1, 2, 3, 4, 5, 6, 7]}
ticks={yAxisLevels}
axisLine={false}
tickLine={false}
tick={axisFontStyle}
@@ -126,7 +138,12 @@ const CustomTooltip: React.FC<TooltipProps<ValueType, NameType>> = ({ active, pa
}}
>
<p className={styles.perfLevel}>
<span>Perf Level</span> {LEVEL_ICONS[(payload[0].value as number) - 1]}
<span>Perf Level</span>{' '}
<LevelIcon
level={payload[0].value as number}
color={levelColorsList[(payload[0].value as number) - 1]}
/>
{/* {LEVEL_ICONS[(payload[0].value as number) - 1]} */}
</p>
<p className={styles.date}>{`${dateFormat(new Date(label), 'DD MMM')}`}</p>
</div>

View File

@@ -32,6 +32,9 @@ import { PERFORMANCE_CHART_TYPE } from 'src/components/leaderboard/leaderboardCo
import { FeedbackTypesCodeMap } from '../Cases/constants/CasesConstants';
import { addClickstreamEvent } from '../../service/clickStreamEventService';
import { CLICKSTREAM_EVENT_NAMES } from '../../service/clickStream.constant';
import AgentProgressMeter from 'src/components/AgentprogressMeter/AgentProgressMeter';
import { LevelIcon } from 'src/assets/icons/LevelIcon';
import { levelColorsList } from 'src/components/AgentprogressMeter/constant';
const LEVEL_ICONS = [
<StarLevelOneIcon key={1} />,
@@ -417,7 +420,11 @@ const DashBoard = () => {
<GridRow style={{ marginTop: '10px' }}>
{leaderboard?.agentLevelRanking ? (
<Typography variant="p5" className={styles.agentCurrLevelIcon}>
{LEVEL_ICONS[leaderboard?.agentLevelRanking - 1]}
<LevelIcon
level={leaderboard?.agentLevelRanking}
color={levelColorsList[leaderboard?.agentLevelRanking - 1]}
/>
{/* {LEVEL_ICONS[leaderboard?.agentLevelRanking - 1]} */}
</Typography>
) : (
<Typography variant="p5">--</Typography>
@@ -428,7 +435,15 @@ const DashBoard = () => {
{isAgentRangeMeterPresent ? (
<GridRow className={styles.agentLevelContainer}>
<GridColumn className={styles.leaderboardContainer}>
<GridColumn className={styles.leaderboardIconContainer}>
<AgentProgressMeter
levelConstructList={leaderboard.levelConstructList}
currentLevel={leaderboard.agentLevelRanking}
cashCollected={leaderboard.cashCollectedInLast30Days}
iconStyle={styles.agentLevelIcon}
fontStyle={styles.agentLevelText}
maxLevel={leaderboard.maxLevel}
/>
{/* <GridColumn className={styles.leaderboardIconContainer}>
<Typography
style={{ marginTop: `10px`, transform: 'rotate(-90deg) scale(0.6)' }}
variant="p5"
@@ -482,7 +497,7 @@ const DashBoard = () => {
leaderboardAmountTextClass={styles.leaderboardAmountTextClass}
leaderboardPointerStyle={leaderboardPointerStyle}
/>
</GridColumn>
</GridColumn> */}
</GridColumn>
</GridRow>
) : null}

View File

@@ -180,14 +180,23 @@
.leaderboardContainer {
position: absolute;
top: 25px;
top: 50px;
display: flex;
height: 100%;
width: fit-content;
transform: scale(1.8) rotate(90deg);
transform: scale(1.6) rotate(90deg);
align-items: center;
padding: 0px;
.agentLevelIcon{
transform: rotate(-90deg);
scale: 0.8;
}
.agentLevelText{
transform: rotate(-90deg) translate(4px, 0px);
scale: 0.6;
position: absolute;
left: -10px;
}
.leaderboardIconContainer {
padding: 0px;
}