Skip to content

Commit 0460f6f

Browse files
authored
Merge pull request #2454 from JohnDuprey/dev
Dashboard - Clickable user chart
2 parents a9effcd + 5e4d872 commit 0460f6f

File tree

1 file changed

+60
-7
lines changed

1 file changed

+60
-7
lines changed

src/views/home/Home.jsx

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ import React, { useState } from 'react'
22
import {
33
faBook,
44
faCog,
5-
faEllipsisH,
65
faLaptopCode,
76
faMailBulk,
8-
faSearch,
97
faUser,
108
faUserFriends,
119
faUserPlus,
@@ -16,19 +14,15 @@ import {
1614
CCol,
1715
CCollapse,
1816
CDropdown,
19-
CDropdownHeader,
20-
CDropdownItem,
2117
CDropdownMenu,
2218
CDropdownToggle,
2319
CLink,
24-
CNav,
2520
CRow,
2621
} from '@coreui/react'
2722
import { useGenericGetRequestQuery } from 'src/store/api/app'
2823
import { CippContentCard } from 'src/components/layout'
2924
import Skeleton from 'react-loading-skeleton'
3025
import { UniversalSearch } from 'src/components/utilities/UniversalSearch'
31-
import { ActionContentCard } from 'src/components/contentcards'
3226
import { useSelector } from 'react-redux'
3327
import allStandardsList from 'src/data/standards'
3428
import Portals from 'src/data/portals'
@@ -37,11 +31,14 @@ import { CChart } from '@coreui/react-chartjs'
3731
import { getStyle } from '@coreui/utils'
3832
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
3933
import { Link } from 'react-router-dom'
40-
import CippPrettyCard from 'src/components/contentcards/CippPrettyCard'
34+
import { useNavigate } from 'react-router-dom'
35+
import { cellGenericFormatter } from 'src/components/tables/CellGenericFormat'
36+
import { ModalService } from 'src/components/utilities'
4137

4238
const TenantDashboard = () => {
4339
const [visible, setVisible] = useState(false)
4440
const [domainVisible, setDomainVisible] = useState(false)
41+
const navigate = useNavigate()
4542

4643
const currentTenant = useSelector((state) => state.app.currentTenant)
4744
const theme = useSelector((state) => state.app.currentTheme)
@@ -174,6 +171,55 @@ const TenantDashboard = () => {
174171
)
175172
})
176173
}
174+
175+
const handleTable = (data, title) => {
176+
const QueryColumns = []
177+
const columns = Object.keys(data[0]).map((key) => {
178+
QueryColumns.push({
179+
name: key,
180+
selector: (row) => row[key], // Accessing the property using the key
181+
sortable: true,
182+
exportSelector: key,
183+
cell: cellGenericFormatter(),
184+
})
185+
})
186+
ModalService.open({
187+
data: data,
188+
componentType: 'table',
189+
componentProps: {
190+
columns: QueryColumns,
191+
keyField: 'id',
192+
},
193+
title: title,
194+
size: 'lg',
195+
})
196+
}
197+
198+
const userChartLegendClickHandler = function (e, legendItem, legend) {
199+
switch (legendItem.text) {
200+
case 'Total Users':
201+
navigate('/identity/administration/users?customerId=' + currentTenant.customerId)
202+
break
203+
case 'Licensed Users':
204+
navigate(
205+
'/identity/administration/users?customerId=' +
206+
currentTenant.customerId +
207+
'&tableFilter=Graph%3A+assignedLicenses%2F%24count+ne+0',
208+
)
209+
break
210+
case 'Guests':
211+
navigate(
212+
'/identity/administration/users?customerId=' +
213+
currentTenant.customerId +
214+
'&tableFilter=Graph%3A+usertype+eq+%27guest%27',
215+
)
216+
break
217+
case 'Global Admins':
218+
handleTable(GlobalAdminList.data?.Results, 'Global Admins')
219+
break
220+
}
221+
}
222+
177223
return (
178224
<>
179225
<CRow className="mb-3">
@@ -337,6 +383,13 @@ const TenantDashboard = () => {
337383
labels: {
338384
color: getStyle('--cui-body-color'),
339385
},
386+
onClick: userChartLegendClickHandler,
387+
onHover: (event) => {
388+
event.native.target.style.cursor = 'pointer'
389+
},
390+
onLeave: (event) => {
391+
event.native.target.style.cursor = 'default'
392+
},
340393
},
341394
},
342395
}}

0 commit comments

Comments
 (0)