// // Copyright 2020 DXOS.org // import React, { useContext } from 'react'; import { useQuery } from '@apollo/react-hooks'; import TableBody from '@material-ui/core/TableBody'; import TableContainer from '@material-ui/core/TableContainer'; import TableHead from '@material-ui/core/TableHead'; import TableRow from '@material-ui/core/TableRow'; import Table from '../../../components/Table'; import TableCell from '../../../components/TableCell'; import { ConsoleContext, useQueryStatusReducer, useSorter } from '../../../hooks'; import SERVICE_STATUS from '../../../gql/service_status.graphql'; const format = (value, unit, symbol = '') => Math.floor(value / unit).toLocaleString() + symbol; const SignalServers = () => { const { config } = useContext(ConsoleContext); const [sorter] = useSorter('name'); const { data: serviceResponse } = useQueryStatusReducer(useQuery(SERVICE_STATUS, { pollInterval: config.api.intervalQuery })); if (!serviceResponse) { return null; } const services = JSON.parse(serviceResponse.service_status.json); const total = services.reduce((value, { memory }) => value + memory, 0); return ( Service Status Memory CPU Command {services.sort(sorter).map(({ name, memory, cpu, status, exec }) => { return ( {name} {status} {format(memory, 1000, 'K')} {cpu.toFixed(1)} {exec} ); })} Total {format(total, 1000, 'K')}
); }; export default SignalServers;