From 1d27cb925118ddc032ea71a0f8cdc51b2d09a8ac Mon Sep 17 00:00:00 2001 From: Chris Wiegand Date: Fri, 5 May 2023 18:25:20 +1000 Subject: [PATCH] Add a new checkbox to allow filtering active sessions on Dashboard. #3831 --- web/pgadmin/dashboard/static/js/Dashboard.jsx | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/web/pgadmin/dashboard/static/js/Dashboard.jsx b/web/pgadmin/dashboard/static/js/Dashboard.jsx index 00d7b5873..3d4dcbde9 100644 --- a/web/pgadmin/dashboard/static/js/Dashboard.jsx +++ b/web/pgadmin/dashboard/static/js/Dashboard.jsx @@ -7,11 +7,12 @@ // ////////////////////////////////////////////////////////////// // eslint-disable-next-line react/display-name -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import gettext from 'sources/gettext'; import PropTypes from 'prop-types'; import getApiInstance from 'sources/api_instance'; import PgTable from 'sources/components/PgTable'; +import { InputCheckbox } from '../../../static/js/components/FormComponents'; import { makeStyles } from '@material-ui/core/styles'; import url_for from 'sources/url_for'; import Graphs from './Graphs'; @@ -151,6 +152,7 @@ export default function Dashboard({ const [msg, setMsg] = useState(''); const [tabVal, setTabVal] = useState(0); const [refresh, setRefresh] = useState(false); + const [activeOnly, setActiveOnly] = useState(false); const [schemaDict, setSchemaDict] = React.useState({}); if (!did) { @@ -794,6 +796,14 @@ export default function Dashboard({ } }, [nodeData, tabVal, did, preferences, refresh, props.dbConnected]); + const filteredDashData = useMemo(()=>{ + if (tabVal == 0 && activeOnly) { + // we want to show 'idle in transaction', 'active', 'active in transaction', and future non-blank, non-"idle" status values + return dashData.filter((r)=>(r.state && r.state != '' && r.state != 'idle')); + } + return dashData; + }, [dashData, activeOnly, tabVal]); + const RefreshButton = () =>{ return( { + return ( + { + e.preventDefault(); + setActiveOnly(e.target.checked); + }} + value={activeOnly} + controlProps={CustomActiveOnlyHeaderLabel} + >); + }; + return ( <> {sid && props.serverConnected ? ( @@ -870,8 +899,9 @@ export default function Dashboard({