1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-10 01:19:53 +01:00
unleash.unleash/frontend/src/component/admin/network/Network.tsx
David Leek e0994b088a
feat: traffic visibility UI and store (#6659)
Provides store method for retrieving traffic usage data based on
period parameter, and UI + ui hook with the new chart for displaying
traffic usage data spread out over selectable month.

![Skjermbilde 2024-03-21 kl 12 40
38](https://github.com/Unleash/unleash/assets/707867/539c6c98-b6f6-488a-97fb-baf4fccec687)

In this PR we copied and adapted a plugin written by DX for highlighting
a column in the chart:


![image](https://github.com/Unleash/unleash/assets/707867/70532b22-44ed-44c0-a9b4-75f65ed6a63d)

There are some minor improvements planned which will come in a separate
PR, reversing the order in legend and tooltip so the colors go from
light to dark, and adding a month -sum below the legend

## Discussion points

- Should any of this be extracted as a separate reusable component?

---------

Co-authored-by: Nuno Góis <github@nunogois.com>
2024-03-22 11:54:33 +01:00

71 lines
2.2 KiB
TypeScript

import { lazy } from 'react';
import { Tab, Tabs } from '@mui/material';
import { Route, Routes, useLocation } from 'react-router-dom';
import { TabLink } from 'component/common/TabNav/TabLink';
import { PageContent } from 'component/common/PageContent/PageContent';
const NetworkOverview = lazy(() => import('./NetworkOverview/NetworkOverview'));
const NetworkTraffic = lazy(() => import('./NetworkTraffic/NetworkTraffic'));
const NetworkTrafficUsage = lazy(
() => import('./NetworkTrafficUsage/NetworkTrafficUsage'),
);
const tabs = [
{
label: 'Overview',
path: '/admin/network',
},
{
label: 'Traffic',
path: '/admin/network/traffic',
},
{
label: 'Data Usage',
path: '/admin/network/data-usage',
},
];
export const Network = () => {
const { pathname } = useLocation();
return (
<div>
<PageContent
withTabs
header={
<Tabs
value={pathname}
indicatorColor='primary'
textColor='primary'
variant='scrollable'
allowScrollButtonsMobile
>
{tabs.map(({ label, path }) => (
<Tab
key={label}
value={path}
label={
<TabLink to={path}>
<span>{label}</span>
</TabLink>
}
sx={{ padding: 0 }}
/>
))}
</Tabs>
}
>
<Routes>
<Route path='traffic' element={<NetworkTraffic />} />
<Route path='*' element={<NetworkOverview />} />
<Route
path='data-usage'
element={<NetworkTrafficUsage />}
/>
</Routes>
</PageContent>
</div>
);
};