From 8aace7f93f221dca694cc26a56ca3292f00a0a14 Mon Sep 17 00:00:00 2001
From: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com>
Date: Mon, 4 Sep 2023 13:10:23 +0200
Subject: [PATCH] refactor: instance health cleanup (#4602)
## About the changes
Cleanup after hackathon. Discovered project on:
https://linear.app/unleash/project/active-users-and-instance-dashboard-67352abadf49
---
frontend/src/component/admin/Admin.tsx | 2 -
frontend/src/component/admin/adminRoutes.ts | 7 -
.../InstanceStats/InstanceStats.tsx | 43 +---
.../admin/instance-health/InstanceHealth.tsx | 220 ------------------
frontend/src/interfaces/uiConfig.ts | 1 -
src/lib/types/experimental.ts | 3 +-
src/server-dev.ts | 1 -
7 files changed, 12 insertions(+), 265 deletions(-)
delete mode 100644 frontend/src/component/admin/instance-health/InstanceHealth.tsx
diff --git a/frontend/src/component/admin/Admin.tsx b/frontend/src/component/admin/Admin.tsx
index 0dc7730e4d..50be47aa0b 100644
--- a/frontend/src/component/admin/Admin.tsx
+++ b/frontend/src/component/admin/Admin.tsx
@@ -18,7 +18,6 @@ import UsersAdmin from './users/UsersAdmin';
import NotFound from 'component/common/NotFound/NotFound';
import { AdminIndex } from './AdminIndex';
import { AdminTabsMenu } from './menu/AdminTabsMenu';
-import { InstanceHealth } from './instance-health/InstanceHealth';
export const Admin = () => {
return (
@@ -35,7 +34,6 @@ export const Admin = () => {
} />
} />
} />
- } />
} />
} />
} />
diff --git a/frontend/src/component/admin/adminRoutes.ts b/frontend/src/component/admin/adminRoutes.ts
index d7b6f080f7..6cb2cbabb7 100644
--- a/frontend/src/component/admin/adminRoutes.ts
+++ b/frontend/src/component/admin/adminRoutes.ts
@@ -80,13 +80,6 @@ export const adminRoutes: INavigationMenuItem[] = [
menu: { adminSettings: true },
group: 'instance',
},
- {
- path: '/admin/instance-health',
- title: 'Instance health',
- menu: { adminSettings: true },
- group: 'instance',
- flag: 'instanceHealthDashboard',
- },
{
path: '/admin/instance-privacy',
title: 'Instance privacy',
diff --git a/frontend/src/component/admin/instance-admin/InstanceStats/InstanceStats.tsx b/frontend/src/component/admin/instance-admin/InstanceStats/InstanceStats.tsx
index 029aba1282..3584c1f30a 100644
--- a/frontend/src/component/admin/instance-admin/InstanceStats/InstanceStats.tsx
+++ b/frontend/src/component/admin/instance-admin/InstanceStats/InstanceStats.tsx
@@ -30,24 +30,9 @@ export const InstanceStats: VFC = () => {
}
const rows = [
- { title: 'Instance Id', value: stats?.instanceId },
+ { title: 'Instance Id', value: stats?.instanceId, offset: false },
{ title: versionTitle, value: version },
{ title: 'Users', value: stats?.users },
- {
- title: 'Active past 7 days',
- value: stats?.activeUsers?.last7,
- offset: true,
- },
- {
- title: 'Active past 30 days',
- value: stats?.activeUsers?.last30,
- offset: true,
- },
- {
- title: 'Active past 90 days',
- value: stats?.activeUsers?.last90,
- offset: true,
- },
{ title: 'Feature toggles', value: stats?.featureToggles },
{ title: 'Projects', value: stats?.projects },
{ title: 'Environments', value: stats?.environments },
@@ -80,22 +65,16 @@ export const InstanceStats: VFC = () => {
{rows.map(row => (
- ({
- marginLeft: row.offset
- ? theme.spacing(2)
- : 0,
- })}
- >
- {row.title}
-
- }
- elseShow={row.title}
- />
+ ({
+ marginLeft: row.offset
+ ? theme.spacing(2)
+ : 0,
+ })}
+ >
+ {row.title}
+
{row.value}
diff --git a/frontend/src/component/admin/instance-health/InstanceHealth.tsx b/frontend/src/component/admin/instance-health/InstanceHealth.tsx
deleted file mode 100644
index 4470f8e6f8..0000000000
--- a/frontend/src/component/admin/instance-health/InstanceHealth.tsx
+++ /dev/null
@@ -1,220 +0,0 @@
-import { VFC, useMemo } from 'react';
-import { useSortBy, useTable } from 'react-table';
-import { styled, Typography, Box } from '@mui/material';
-import { PageContent } from 'component/common/PageContent/PageContent';
-import { PageHeader } from 'component/common/PageHeader/PageHeader';
-import { useInstanceStats } from 'hooks/api/getters/useInstanceStats/useInstanceStats';
-import useProjects from 'hooks/api/getters/useProjects/useProjects';
-import { sortTypes } from 'utils/sortTypes';
-import {
- SortableTableHeader,
- Table,
- TableBody,
- TableRow,
- TableCell,
-} from 'component/common/Table';
-import { TextCell } from 'component/common/Table/cells/TextCell/TextCell';
-import { HelpPopper } from 'component/project/Project/ProjectStats/HelpPopper';
-import { StatusBox } from 'component/project/Project/ProjectStats/StatusBox';
-import { DateCell } from 'component/common/Table/cells/DateCell/DateCell';
-
-interface IInstanceHealthProps {}
-
-const CardsGrid = styled('div')(({ theme }) => ({
- display: 'grid',
- gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',
- gap: theme.spacing(2),
- paddingBottom: theme.spacing(2),
-}));
-
-const Card = styled('div')(({ theme }) => ({
- padding: theme.spacing(2.5),
- borderRadius: `${theme.shape.borderRadiusLarge}px`,
- backgroundColor: `${theme.palette.background.paper}`,
- border: `1px solid ${theme.palette.divider}`,
- // boxShadow: theme.boxShadows.card,
- display: 'flex',
- flexDirection: 'column',
-}));
-
-/**
- * @deprecated unify with project widget
- */
-const StyledWidget = styled(Box)(({ theme }) => ({
- position: 'relative',
- padding: theme.spacing(3),
- backgroundColor: theme.palette.background.paper,
- flex: 1,
- display: 'flex',
- flexDirection: 'column',
- alignItems: 'center',
- justifyContent: 'center',
- borderRadius: `${theme.shape.borderRadiusLarge}px`,
- [theme.breakpoints.down('lg')]: {
- padding: theme.spacing(2),
- },
-}));
-
-export const InstanceHealth: VFC = () => {
- const { stats } = useInstanceStats();
- const { projects } = useProjects();
- // FIXME: loading state
-
- const initialState = useMemo(
- () => ({
- hiddenColumns: [],
- sortBy: [{ id: 'createdAt' }],
- }),
- []
- );
-
- const data = useMemo(() => projects, [projects]);
-
- const dormantUsersPercentage =
- (1 - stats?.activeUsers?.last90! / stats?.users!) * 100;
-
- const dormantUsersColor =
- dormantUsersPercentage < 30
- ? 'success.main'
- : dormantUsersPercentage < 50
- ? 'warning.main'
- : 'error.main';
-
- const COLUMNS = useMemo(
- () => [
- {
- accessor: 'name',
- Header: 'Project name',
- Cell: TextCell,
- width: '80%',
- },
- {
- Header: 'Feature toggles',
- accessor: 'featureCount',
- Cell: TextCell,
- },
- {
- Header: 'Created at',
- accessor: 'createdAt',
- Cell: DateCell,
- },
- {
- Header: 'Members',
- accessor: 'memberCount',
- Cell: TextCell,
- },
- {
- Header: 'Health',
- accessor: 'health',
- Cell: ({ value }: { value: number }) => {
- const healthRatingColor =
- value < 50
- ? 'error.main'
- : value < 75
- ? 'warning.main'
- : 'success.main';
- return (
-
-
- {value}%
-
-
- );
- },
- },
- ],
- []
- );
-
- const { headerGroups, rows, prepareRow, getTableProps, getTableBodyProps } =
- useTable(
- {
- columns: COLUMNS as any,
- data: data as any,
- initialState,
- sortTypes,
- autoResetGlobalFilter: false,
- autoResetHiddenColumns: false,
- autoResetSortBy: false,
- disableSortRemove: true,
- },
- useSortBy
- );
-
- return (
- <>
-
-
- >}
- >
- {/*
- Sum of all configuration and state modifications in
- the project.
- */}
- {/* FIXME: tooltip */}
-
-
-
-
- ({dormantUsersPercentage.toFixed(1)}%)
-
- }
- >
- {/*
- Sum of all configuration and state modifications in
- the project.
- */}
-
-
-
- >}
- >
-
-
- >}
- >
-
-
- }>
-
-
-
- {rows.map(row => {
- prepareRow(row);
- return (
-
- {row.cells.map(cell => (
-
- {cell.render('Cell')}
-
- ))}
-
- );
- })}
-
-
-
- >
- );
-};
diff --git a/frontend/src/interfaces/uiConfig.ts b/frontend/src/interfaces/uiConfig.ts
index 7538d8fbdc..1ed61760d6 100644
--- a/frontend/src/interfaces/uiConfig.ts
+++ b/frontend/src/interfaces/uiConfig.ts
@@ -57,7 +57,6 @@ export interface IFlags {
integrationsRework?: boolean;
multipleRoles?: boolean;
doraMetrics?: boolean;
- instanceHealthDashboard?: boolean;
[key: string]: boolean | Variant | undefined;
}
diff --git a/src/lib/types/experimental.ts b/src/lib/types/experimental.ts
index 5324a958cc..830780b5ae 100644
--- a/src/lib/types/experimental.ts
+++ b/src/lib/types/experimental.ts
@@ -28,8 +28,7 @@ export type IFlagKey =
| 'newApplicationList'
| 'integrationsRework'
| 'multipleRoles'
- | 'doraMetrics'
- | 'instanceHealthDashboard';
+ | 'doraMetrics';
export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;
diff --git a/src/server-dev.ts b/src/server-dev.ts
index 844251eb38..237baa38cc 100644
--- a/src/server-dev.ts
+++ b/src/server-dev.ts
@@ -42,7 +42,6 @@ process.nextTick(async () => {
lastSeenByEnvironment: true,
newApplicationList: true,
doraMetrics: true,
- instanceHealthDashboard: true,
},
},
authentication: {