edvoyui-component-library-test-flight 0.0.92 → 0.0.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/library-vue-ts.cjs.js +16 -16
- package/dist/library-vue-ts.css +1 -1
- package/dist/library-vue-ts.es.js +8874 -8519
- package/dist/library-vue-ts.umd.js +21 -21
- package/dist/table/GrowthTable.vue.d.ts +5 -0
- package/dist/table/GrowthTable.vue.d.ts.map +1 -0
- package/dist/tabs/EUITabs.vue.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/button/EUIButton.stories.ts +20 -2
- package/src/components/index.ts +1 -0
- package/src/components/table/GrowthTable.vue +563 -0
- package/src/components/table/GrowthTableView.vue +108 -0
- package/src/components/tabs/EUITabs.vue +67 -59
- package/src/data/table.ts +256 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
<!-- <template>
|
|
2
|
+
<div class="max-w-screen-xl mx-auto">
|
|
3
|
+
<pre class="text-[0.5rem] p-2 border border-gray-300 rounded-lg max-h-72 overflow-y-auto">{{ selectedRows.map(x => x?._id)}}</pre>
|
|
4
|
+
<GrowthTable
|
|
5
|
+
checkable
|
|
6
|
+
paginated
|
|
7
|
+
:checked-rows.sync="checkedRows"
|
|
8
|
+
backend-pagination
|
|
9
|
+
:per-page="limit"
|
|
10
|
+
:headers="growthTableHeaders"
|
|
11
|
+
:items="growthTableData"
|
|
12
|
+
:footers="growthTableFooter"
|
|
13
|
+
:total="totalCount"
|
|
14
|
+
:default-sort-direction="defaultSortOrder"
|
|
15
|
+
default-sort="introducer_details"
|
|
16
|
+
:current-page="offset"
|
|
17
|
+
@sort="onSort"
|
|
18
|
+
@mouseenter="select"
|
|
19
|
+
@mouseleave="(selectedIndex = null), (selected = null)"
|
|
20
|
+
>
|
|
21
|
+
|
|
22
|
+
<template #[`item.active_allagents`]="{ row, rowIndex }">
|
|
23
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-violet-50 pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
24
|
+
<span v-for="(data, idx) in row?.active_allagents" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|
|
27
|
+
<template #[`item.active_active_allagents`]="{ row, rowIndex }">
|
|
28
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-violet-50 pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
29
|
+
<span v-for="(data, idx) in row?.active_active_allagents" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
30
|
+
</div>
|
|
31
|
+
</template>
|
|
32
|
+
<template #[`item.active_dormant`]="{ row, rowIndex }">
|
|
33
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-violet-50 pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
34
|
+
<span v-for="(data, idx) in row?.active_dormant" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
35
|
+
</div>
|
|
36
|
+
</template>
|
|
37
|
+
<template #[`item.totalDepositCount`]="{ row, rowIndex }">
|
|
38
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-violet-50 pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
39
|
+
<span v-for="(data, idx) in row?.totalDepositCount" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
40
|
+
</div>
|
|
41
|
+
</template>
|
|
42
|
+
<template #[`item.totalStudentCount`]="{ row, rowIndex }">
|
|
43
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-violet-50 pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
44
|
+
<span v-for="(data, idx) in row?.totalStudentCount" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
45
|
+
</div>
|
|
46
|
+
</template>
|
|
47
|
+
|
|
48
|
+
<template #[`footer.active_allagents`]="{ row, rowIndex }">
|
|
49
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-[#FCD34D] pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
50
|
+
<span v-for="(data, idx) in row?.active_allagents" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
51
|
+
</div>
|
|
52
|
+
</template>
|
|
53
|
+
<template #[`footer.active_active_allagents`]="{ row, rowIndex }">
|
|
54
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-[#FCD34D] pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
55
|
+
<span v-for="(data, idx) in row?.active_active_allagents" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
56
|
+
</div>
|
|
57
|
+
</template>
|
|
58
|
+
<template #[`footer.active_dormant`]="{ row, rowIndex }">
|
|
59
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-[#FCD34D] pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
60
|
+
<span v-for="(data, idx) in row?.active_dormant" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
<template #[`footer.totalDepositCount`]="{ row, rowIndex }">
|
|
64
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-[#FCD34D] pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
65
|
+
<span v-for="(data, idx) in row?.totalDepositCount" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
66
|
+
</div>
|
|
67
|
+
</template>
|
|
68
|
+
<template #[`footer.totalStudentCount`]="{ row, rowIndex }">
|
|
69
|
+
<div class="flex flex-row items-center gap-4 justify-between bg-[#FCD34D] pl-2 pr-10 rounded-[0.625rem] py-2 h-full">
|
|
70
|
+
<span v-for="(data, idx) in row?.totalStudentCount" :key="`year_${idx}`">{{ data.value || '-' }}</span>
|
|
71
|
+
</div>
|
|
72
|
+
</template>
|
|
73
|
+
</GrowthTable>
|
|
74
|
+
</div>
|
|
75
|
+
</template>
|
|
76
|
+
|
|
77
|
+
<script setup lang="ts">
|
|
78
|
+
import { computed, ref } from "vue";
|
|
79
|
+
import { growthTableData, growthTableFooter, growthTableHeaders } from "../../data/table";
|
|
80
|
+
import GrowthTable from "./GrowthTable.vue";
|
|
81
|
+
|
|
82
|
+
//TODO: Dashboard Table
|
|
83
|
+
const checkedRows = ref([]);
|
|
84
|
+
const defaultSortOrder = ref("asc");
|
|
85
|
+
const limit = ref(5);
|
|
86
|
+
const offset = ref(1);
|
|
87
|
+
const selectedIndex = ref<{ index: string } | null>(null);
|
|
88
|
+
const selected = ref<{ index: string } | null>(null);
|
|
89
|
+
|
|
90
|
+
const select = (_item: any, index: any) => {
|
|
91
|
+
selectedIndex.value = index;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const onSort = (field: string, order: string) => {
|
|
95
|
+
const modifier = order === "desc" ? -1 : 1;
|
|
96
|
+
growthTableData.sort((a: any, b: any) => {
|
|
97
|
+
if (a[field] < b[field]) return -1 * modifier;
|
|
98
|
+
if (a[field] > b[field]) return 1 * modifier;
|
|
99
|
+
return 0;
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const totalCount = computed(() => {
|
|
104
|
+
return growthTableData.length;
|
|
105
|
+
});
|
|
106
|
+
</script>
|
|
107
|
+
|
|
108
|
+
<style scoped></style> -->
|
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
<div
|
|
4
|
-
|
|
3
|
+
<div class="overflow-x-scroll">
|
|
4
|
+
<div
|
|
5
|
+
v-if="tabStyle === 'design'"
|
|
5
6
|
class="flex flex-row items-center justify-between w-full p-2 bg-gray-100 rounded-xl"
|
|
6
7
|
>
|
|
7
8
|
<button
|
|
8
|
-
|
|
9
|
+
v-for="(tab, tabindex) in tabs"
|
|
9
10
|
:key="tabindex"
|
|
10
11
|
:id="`id-${tab.name}`"
|
|
11
12
|
type="button"
|
|
12
13
|
class="[&:not(:focus-visible)]:focus:outline-none relative w-full inline-flex items-center transition-colors duration-100"
|
|
13
14
|
role="tab"
|
|
14
15
|
tabindex="-1"
|
|
15
|
-
|
|
16
|
+
@click="selectTab(tabindex)"
|
|
16
17
|
>
|
|
17
18
|
<div
|
|
18
19
|
class="pointer-events-none absolute inset-0 transition-transform duration-200 transform z-[1] ease-in-out"
|
|
19
20
|
:class="{
|
|
20
|
-
'translate-x-full':
|
|
21
|
-
|
|
22
|
-
'-translate-x-full':
|
|
23
|
-
tabindex > activeTabIndex,
|
|
21
|
+
'translate-x-full': tabindex < activeTabIndex,
|
|
22
|
+
'-translate-x-full': tabindex > activeTabIndex,
|
|
24
23
|
'translate-x-0 rounded-lg bg-gray-600':
|
|
25
|
-
activeTabIndex === tabindex
|
|
24
|
+
activeTabIndex === tabindex,
|
|
26
25
|
}"
|
|
27
26
|
/>
|
|
28
27
|
<span
|
|
@@ -30,59 +29,69 @@
|
|
|
30
29
|
'w-full px-4 py-2 text-sm tracking-wide font-medium capitalize z-10',
|
|
31
30
|
activeTabIndex == tabindex
|
|
32
31
|
? ' text-white'
|
|
33
|
-
: ' text-gray-500 hover:text-gray-600 rounded-lg bg-transparent z-0 transition-colors duration-300 ease-in origin-center'
|
|
32
|
+
: ' text-gray-500 hover:text-gray-600 rounded-lg bg-transparent z-0 transition-colors duration-300 ease-in origin-center',
|
|
34
33
|
]"
|
|
35
34
|
>
|
|
35
|
+
<slot name="title" :tab="tab">
|
|
36
|
+
{{ tab?.name }}
|
|
37
|
+
</slot>
|
|
38
|
+
</span>
|
|
39
|
+
</button>
|
|
40
|
+
</div>
|
|
41
|
+
<div
|
|
42
|
+
v-else-if="tabStyle === 'border'"
|
|
43
|
+
class="flex items-center gap-1 before:bottom-0 before:left-0 before:absolute before:content-[''] before:h-px before:w-full before:bg-gray-200 relative before:-z-[1] z-0 bg-white"
|
|
44
|
+
:class="[
|
|
45
|
+
tabAlign === 'justify'
|
|
46
|
+
? 'justify-between'
|
|
47
|
+
: tabAlign === 'end'
|
|
48
|
+
? 'justify-end'
|
|
49
|
+
: 'justify-start',
|
|
50
|
+
]"
|
|
51
|
+
>
|
|
52
|
+
<button
|
|
53
|
+
v-for="(tab, tabindex) in tabs"
|
|
54
|
+
:key="tabindex"
|
|
55
|
+
role="tab"
|
|
56
|
+
:id="`id-${tab.name}`"
|
|
57
|
+
:class="[
|
|
58
|
+
'px-3 py-1 leading-5 transition-all duration-150 ease-in-out hover:text-gray-800',
|
|
59
|
+
tabSize === 'sm'
|
|
60
|
+
? 'text-sm font-semibold border-b-2'
|
|
61
|
+
: 'text-base font-bold border-b-[3px]',
|
|
62
|
+
activeTabIndex === tabindex
|
|
63
|
+
? 'border-gray-900 text-gray-900'
|
|
64
|
+
: 'border-transparent text-gray-500',
|
|
65
|
+
]"
|
|
66
|
+
@click="selectTab(tabindex)"
|
|
67
|
+
>
|
|
36
68
|
<slot name="title" :tab="tab">
|
|
37
69
|
{{ tab?.name }}
|
|
38
70
|
</slot>
|
|
39
|
-
</span>
|
|
40
71
|
</button>
|
|
41
72
|
</div>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class="flex items-center gap-1 before:bottom-0 before:left-0 before:absolute before:content-[''] before:h-px before:w-full before:bg-gray-200 relative before:-z-[1] z-0 bg-white"
|
|
46
|
-
:class="[tabAlign === 'justify' ? 'justify-between' : tabAlign === 'end' ? 'justify-end' : 'justify-start']"
|
|
47
|
-
>
|
|
48
|
-
<button
|
|
49
|
-
v-for="(tab, tabindex) in tabs"
|
|
50
|
-
:key="tabindex"
|
|
51
|
-
role="tab"
|
|
52
|
-
:id="`id-${tab.name}`"
|
|
53
|
-
:class="['px-3 py-1 leading-5 transition-all duration-150 ease-in-out hover:text-gray-800',
|
|
54
|
-
tabSize === 'sm' ? 'text-sm font-semibold border-b-2' : 'text-base font-bold border-b-[3px]',
|
|
55
|
-
activeTabIndex === tabindex
|
|
56
|
-
? 'border-gray-900 text-gray-900'
|
|
57
|
-
: 'border-transparent text-gray-500']"
|
|
58
|
-
@click="selectTab(tabindex)"
|
|
59
|
-
>
|
|
60
|
-
<slot name="title" :tab="tab">
|
|
61
|
-
{{ tab?.name }}
|
|
62
|
-
</slot>
|
|
63
|
-
</button>
|
|
64
|
-
</div>
|
|
65
|
-
<div
|
|
66
|
-
v-else
|
|
67
|
-
class="flex items-center gap-1 p-2 transition-all duration-100"
|
|
68
|
-
>
|
|
69
|
-
<button
|
|
70
|
-
v-for="(tab, tabindex) in tabs"
|
|
71
|
-
:key="tabindex"
|
|
72
|
-
role="tab"
|
|
73
|
-
:id="`id-${tab.name}`"
|
|
74
|
-
class="px-4 py-1 text-sm font-semibold transition-colors duration-150 ease-in-out border rounded-full"
|
|
75
|
-
:class="
|
|
76
|
-
activeTabIndex === tabindex
|
|
77
|
-
? 'shadow-lg shadow-gray-100 bg-white border-gray-200 focus-within:border-purple-600 text-gray-900'
|
|
78
|
-
: 'border-white hover:bg-gray-50 text-gray-700'
|
|
79
|
-
"
|
|
80
|
-
@click="selectTab(tabindex)"
|
|
73
|
+
<div
|
|
74
|
+
v-else
|
|
75
|
+
class="flex items-center gap-1 p-2 transition-all duration-100"
|
|
81
76
|
>
|
|
82
|
-
<
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
77
|
+
<button
|
|
78
|
+
v-for="(tab, tabindex) in tabs"
|
|
79
|
+
:key="tabindex"
|
|
80
|
+
role="tab"
|
|
81
|
+
:id="`id-${tab.name}`"
|
|
82
|
+
class="px-4 py-1 text-sm font-semibold transition-colors duration-150 ease-in-out border rounded-full"
|
|
83
|
+
:class="
|
|
84
|
+
activeTabIndex === tabindex
|
|
85
|
+
? 'shadow-lg shadow-gray-100 bg-white border-gray-200 focus-within:border-purple-600 text-gray-900'
|
|
86
|
+
: 'border-white hover:bg-gray-50 text-gray-700'
|
|
87
|
+
"
|
|
88
|
+
@click="selectTab(tabindex)"
|
|
89
|
+
>
|
|
90
|
+
<slot name="title" :tab="tab">
|
|
91
|
+
{{ tab?.name }}
|
|
92
|
+
</slot>
|
|
93
|
+
</button>
|
|
94
|
+
</div>
|
|
86
95
|
</div>
|
|
87
96
|
<div :class="['py-2 text-base font-normal text-gray-700', contentClass]">
|
|
88
97
|
<slot name="content" :active-tab="tabs[activeTabIndex]">
|
|
@@ -103,10 +112,10 @@ interface Tab {
|
|
|
103
112
|
const props = defineProps<{
|
|
104
113
|
tabs: Tab[];
|
|
105
114
|
defaultActiveIndex?: number;
|
|
106
|
-
tabStyle: "rounded" | "border" |
|
|
107
|
-
contentClass?: string[] | string
|
|
108
|
-
tabSize?: "sm" | "md"
|
|
109
|
-
tabAlign?:
|
|
115
|
+
tabStyle: "rounded" | "border" | "design";
|
|
116
|
+
contentClass?: string[] | string;
|
|
117
|
+
tabSize?: "sm" | "md";
|
|
118
|
+
tabAlign?: "start" | "justify" | "end";
|
|
110
119
|
}>();
|
|
111
120
|
|
|
112
121
|
const emit = defineEmits<{
|
|
@@ -124,7 +133,6 @@ watch(
|
|
|
124
133
|
() => props.defaultActiveIndex,
|
|
125
134
|
(newIndex) => {
|
|
126
135
|
activeTabIndex.value = newIndex ?? 0;
|
|
127
|
-
|
|
128
136
|
}
|
|
129
137
|
);
|
|
130
138
|
</script>
|
package/src/data/table.ts
CHANGED
|
@@ -5390,3 +5390,259 @@ export const studentData = [
|
|
|
5390
5390
|
},
|
|
5391
5391
|
},
|
|
5392
5392
|
];
|
|
5393
|
+
|
|
5394
|
+
export const growthTableHeaders = [
|
|
5395
|
+
{
|
|
5396
|
+
value: "teamName",
|
|
5397
|
+
text: "Team",
|
|
5398
|
+
width: 200,
|
|
5399
|
+
sortable: true,
|
|
5400
|
+
},
|
|
5401
|
+
{
|
|
5402
|
+
value: "totalIntroducerCount",
|
|
5403
|
+
text: "Total agent",
|
|
5404
|
+
width: 180,
|
|
5405
|
+
sortable: true,
|
|
5406
|
+
},
|
|
5407
|
+
{
|
|
5408
|
+
value: "active_allagents",
|
|
5409
|
+
text: "Active agent",
|
|
5410
|
+
width: 320,
|
|
5411
|
+
sortable: true,
|
|
5412
|
+
activeYear: [2020, 2021, 2022, 2023, 2024, 2025],
|
|
5413
|
+
},
|
|
5414
|
+
{
|
|
5415
|
+
value: "active_active_allagents",
|
|
5416
|
+
text: "Active - Active agent",
|
|
5417
|
+
width: 320,
|
|
5418
|
+
sortable: true,
|
|
5419
|
+
activeYear: [2020, 2021, 2022, 2023, 2024, 2025],
|
|
5420
|
+
},
|
|
5421
|
+
{
|
|
5422
|
+
value: "active_dormant",
|
|
5423
|
+
text: "Active - Dormant",
|
|
5424
|
+
width: 320,
|
|
5425
|
+
sortable: true,
|
|
5426
|
+
activeYear: [2020, 2021, 2022, 2023, 2024, 2025],
|
|
5427
|
+
},
|
|
5428
|
+
{
|
|
5429
|
+
value: "totalDepositCount",
|
|
5430
|
+
text: "Deposits",
|
|
5431
|
+
width: 320,
|
|
5432
|
+
sortable: true,
|
|
5433
|
+
activeYear: [2020, 2021, 2022, 2023, 2024, 2025],
|
|
5434
|
+
},
|
|
5435
|
+
{
|
|
5436
|
+
value: "totalStudentCount",
|
|
5437
|
+
text: "Enrolments",
|
|
5438
|
+
width: 320,
|
|
5439
|
+
sortable: true,
|
|
5440
|
+
activeYear: [2020, 2021, 2022, 2023, 2024, 2025],
|
|
5441
|
+
},
|
|
5442
|
+
{
|
|
5443
|
+
value: "agebtsTotalStudent",
|
|
5444
|
+
text: "Agents with students",
|
|
5445
|
+
width: 100,
|
|
5446
|
+
},
|
|
5447
|
+
{
|
|
5448
|
+
value: "agebtsTotalStudentPercentage",
|
|
5449
|
+
text: "Agents with students (%)",
|
|
5450
|
+
width: 100,
|
|
5451
|
+
},
|
|
5452
|
+
{
|
|
5453
|
+
value: "agentsTotalDepositCount",
|
|
5454
|
+
text: "Agents with deposit",
|
|
5455
|
+
width: 100,
|
|
5456
|
+
},
|
|
5457
|
+
{
|
|
5458
|
+
value: "agentsTotalDepositPercentage",
|
|
5459
|
+
text: "Agents with deposit (%)",
|
|
5460
|
+
width: 100,
|
|
5461
|
+
},
|
|
5462
|
+
];
|
|
5463
|
+
|
|
5464
|
+
export const growthTableData = [
|
|
5465
|
+
{
|
|
5466
|
+
_id: "63f832d7a7df90013cdf4b6e",
|
|
5467
|
+
teamName: "Hyderabad B2C",
|
|
5468
|
+
totalIntroducerCount: 200,
|
|
5469
|
+
active: 30,
|
|
5470
|
+
dormant: 10,
|
|
5471
|
+
active_allagents: generateYearlyData(),
|
|
5472
|
+
active_active_allagents: generateYearlyData(),
|
|
5473
|
+
active_dormant: generateYearlyData(),
|
|
5474
|
+
totalDepositCount: generateYearlyData(),
|
|
5475
|
+
totalStudentCount: generateYearlyData(),
|
|
5476
|
+
agebtsTotalStudent: 70,
|
|
5477
|
+
agebtsTotalStudentPercentage: 70,
|
|
5478
|
+
agentsTotalDepositCount: 200,
|
|
5479
|
+
agentsTotalDepositPercentage: 20,
|
|
5480
|
+
},
|
|
5481
|
+
{
|
|
5482
|
+
_id: "63f832d7a7df90013cdf4b6f",
|
|
5483
|
+
teamName: "Mumbai B2B",
|
|
5484
|
+
totalIntroducerCount: 150,
|
|
5485
|
+
active: 40,
|
|
5486
|
+
dormant: 15,
|
|
5487
|
+
active_allagents: generateYearlyData(),
|
|
5488
|
+
active_active_allagents: generateYearlyData(),
|
|
5489
|
+
active_dormant: generateYearlyData(),
|
|
5490
|
+
totalDepositCount: generateYearlyData(),
|
|
5491
|
+
totalStudentCount: generateYearlyData(),
|
|
5492
|
+
agebtsTotalStudent: 60,
|
|
5493
|
+
agebtsTotalStudentPercentage: 60,
|
|
5494
|
+
agentsTotalDepositCount: 180,
|
|
5495
|
+
agentsTotalDepositPercentage: 25,
|
|
5496
|
+
},
|
|
5497
|
+
{
|
|
5498
|
+
_id: "63f832d7a7df90013cdf4b70",
|
|
5499
|
+
teamName: "Delhi B2C",
|
|
5500
|
+
totalIntroducerCount: 180,
|
|
5501
|
+
active: 35,
|
|
5502
|
+
dormant: 12,
|
|
5503
|
+
active_allagents: generateYearlyData(),
|
|
5504
|
+
active_active_allagents: generateYearlyData(),
|
|
5505
|
+
active_dormant: generateYearlyData(),
|
|
5506
|
+
totalDepositCount: generateYearlyData(),
|
|
5507
|
+
totalStudentCount: generateYearlyData(),
|
|
5508
|
+
agebtsTotalStudent: 75,
|
|
5509
|
+
agebtsTotalStudentPercentage: 75,
|
|
5510
|
+
agentsTotalDepositCount: 190,
|
|
5511
|
+
agentsTotalDepositPercentage: 22,
|
|
5512
|
+
},
|
|
5513
|
+
{
|
|
5514
|
+
_id: "63f832d7a7df90013cdf4b71",
|
|
5515
|
+
teamName: "Bangalore B2C",
|
|
5516
|
+
totalIntroducerCount: 220,
|
|
5517
|
+
active: 50,
|
|
5518
|
+
dormant: 18,
|
|
5519
|
+
active_allagents: generateYearlyData(),
|
|
5520
|
+
active_active_allagents: generateYearlyData(),
|
|
5521
|
+
active_dormant: generateYearlyData(),
|
|
5522
|
+
totalDepositCount: generateYearlyData(),
|
|
5523
|
+
totalStudentCount: generateYearlyData(),
|
|
5524
|
+
agebtsTotalStudent: 80,
|
|
5525
|
+
agebtsTotalStudentPercentage: 80,
|
|
5526
|
+
agentsTotalDepositCount: 210,
|
|
5527
|
+
agentsTotalDepositPercentage: 30,
|
|
5528
|
+
},
|
|
5529
|
+
{
|
|
5530
|
+
_id: "63f832d7a7df90013cdf4b72",
|
|
5531
|
+
teamName: "Chennai B2C",
|
|
5532
|
+
totalIntroducerCount: 170,
|
|
5533
|
+
active: 32,
|
|
5534
|
+
dormant: 14,
|
|
5535
|
+
active_allagents: generateYearlyData(),
|
|
5536
|
+
active_active_allagents: generateYearlyData(),
|
|
5537
|
+
active_dormant: generateYearlyData(),
|
|
5538
|
+
totalDepositCount: generateYearlyData(),
|
|
5539
|
+
totalStudentCount: generateYearlyData(),
|
|
5540
|
+
agebtsTotalStudent: 65,
|
|
5541
|
+
agebtsTotalStudentPercentage: 65,
|
|
5542
|
+
agentsTotalDepositCount: 175,
|
|
5543
|
+
agentsTotalDepositPercentage: 28,
|
|
5544
|
+
},
|
|
5545
|
+
{
|
|
5546
|
+
_id: "63f832d7a7df90013cdf4b73",
|
|
5547
|
+
teamName: "Pune B2C",
|
|
5548
|
+
totalIntroducerCount: 140,
|
|
5549
|
+
active: 28,
|
|
5550
|
+
dormant: 10,
|
|
5551
|
+
active_allagents: generateYearlyData(),
|
|
5552
|
+
active_active_allagents: generateYearlyData(),
|
|
5553
|
+
active_dormant: generateYearlyData(),
|
|
5554
|
+
totalDepositCount: generateYearlyData(),
|
|
5555
|
+
totalStudentCount: generateYearlyData(),
|
|
5556
|
+
agebtsTotalStudent: 55,
|
|
5557
|
+
agebtsTotalStudentPercentage: 55,
|
|
5558
|
+
agentsTotalDepositCount: 160,
|
|
5559
|
+
agentsTotalDepositPercentage: 26,
|
|
5560
|
+
},
|
|
5561
|
+
{
|
|
5562
|
+
_id: "63f832d7a7df90013cdf4b74",
|
|
5563
|
+
teamName: "Kolkata B2B",
|
|
5564
|
+
totalIntroducerCount: 160,
|
|
5565
|
+
active: 38,
|
|
5566
|
+
dormant: 13,
|
|
5567
|
+
active_allagents: generateYearlyData(),
|
|
5568
|
+
active_active_allagents: generateYearlyData(),
|
|
5569
|
+
active_dormant: generateYearlyData(),
|
|
5570
|
+
totalDepositCount: generateYearlyData(),
|
|
5571
|
+
totalStudentCount: generateYearlyData(),
|
|
5572
|
+
agebtsTotalStudent: 68,
|
|
5573
|
+
agebtsTotalStudentPercentage: 68,
|
|
5574
|
+
agentsTotalDepositCount: 170,
|
|
5575
|
+
agentsTotalDepositPercentage: 24,
|
|
5576
|
+
},
|
|
5577
|
+
{
|
|
5578
|
+
_id: "63f832d7a7df90013cdf4b75",
|
|
5579
|
+
teamName: "Ahmedabad B2C",
|
|
5580
|
+
totalIntroducerCount: 130,
|
|
5581
|
+
active: 25,
|
|
5582
|
+
dormant: 8,
|
|
5583
|
+
active_allagents: generateYearlyData(),
|
|
5584
|
+
active_active_allagents: generateYearlyData(),
|
|
5585
|
+
active_dormant: generateYearlyData(),
|
|
5586
|
+
totalDepositCount: generateYearlyData(),
|
|
5587
|
+
totalStudentCount: generateYearlyData(),
|
|
5588
|
+
agebtsTotalStudent: 50,
|
|
5589
|
+
agebtsTotalStudentPercentage: 50,
|
|
5590
|
+
agentsTotalDepositCount: 140,
|
|
5591
|
+
agentsTotalDepositPercentage: 22,
|
|
5592
|
+
},
|
|
5593
|
+
{
|
|
5594
|
+
_id: "63f832d7a7df90013cdf4b76",
|
|
5595
|
+
teamName: "Jaipur B2B",
|
|
5596
|
+
totalIntroducerCount: 120,
|
|
5597
|
+
active: 22,
|
|
5598
|
+
dormant: 7,
|
|
5599
|
+
active_allagents: generateYearlyData(),
|
|
5600
|
+
active_active_allagents: generateYearlyData(),
|
|
5601
|
+
active_dormant: generateYearlyData(),
|
|
5602
|
+
totalDepositCount: generateYearlyData(),
|
|
5603
|
+
totalStudentCount: generateYearlyData(),
|
|
5604
|
+
agebtsTotalStudent: 45,
|
|
5605
|
+
agebtsTotalStudentPercentage: 45,
|
|
5606
|
+
agentsTotalDepositCount: 130,
|
|
5607
|
+
agentsTotalDepositPercentage: 21,
|
|
5608
|
+
},
|
|
5609
|
+
{
|
|
5610
|
+
_id: "63f832d7a7df90013cdf4b77",
|
|
5611
|
+
teamName: "Lucknow B2C",
|
|
5612
|
+
totalIntroducerCount: 110,
|
|
5613
|
+
active: 20,
|
|
5614
|
+
dormant: 5,
|
|
5615
|
+
active_allagents: generateYearlyData(),
|
|
5616
|
+
active_active_allagents: generateYearlyData(),
|
|
5617
|
+
active_dormant: generateYearlyData(),
|
|
5618
|
+
totalDepositCount: generateYearlyData(),
|
|
5619
|
+
totalStudentCount: generateYearlyData(),
|
|
5620
|
+
agebtsTotalStudent: 40,
|
|
5621
|
+
agebtsTotalStudentPercentage: 40,
|
|
5622
|
+
agentsTotalDepositCount: 120,
|
|
5623
|
+
agentsTotalDepositPercentage: 18,
|
|
5624
|
+
},
|
|
5625
|
+
];
|
|
5626
|
+
|
|
5627
|
+
function generateYearlyData() {
|
|
5628
|
+
return ["2020", "2021", "2022", "2023", "2024", "2025"].map((year) => ({
|
|
5629
|
+
year,
|
|
5630
|
+
value: Math.floor(Math.random() * 80) + 10, // Generates random values between 10 and 80
|
|
5631
|
+
}));
|
|
5632
|
+
}
|
|
5633
|
+
|
|
5634
|
+
export const growthTableFooter = [
|
|
5635
|
+
{
|
|
5636
|
+
teamName: "Consolidated",
|
|
5637
|
+
totalIntroducerCount: 2000,
|
|
5638
|
+
active_allagents: generateYearlyData(),
|
|
5639
|
+
active_active_allagents: generateYearlyData(),
|
|
5640
|
+
active_dormant: generateYearlyData(),
|
|
5641
|
+
totalDepositCount: generateYearlyData(),
|
|
5642
|
+
totalStudentCount: generateYearlyData(),
|
|
5643
|
+
agebtsTotalStudent: 40,
|
|
5644
|
+
agebtsTotalStudentPercentage: 40,
|
|
5645
|
+
agentsTotalDepositCount: 120,
|
|
5646
|
+
agentsTotalDepositPercentage: 18,
|
|
5647
|
+
},
|
|
5648
|
+
];
|