diff --git a/packages/console-app/src/components/AppLink.js b/packages/console-app/src/components/AppLink.js index 4ea92be..3fd2705 100644 --- a/packages/console-app/src/components/AppLink.js +++ b/packages/console-app/src/components/AppLink.js @@ -7,7 +7,7 @@ import Link from '@material-ui/core/Link'; import { getServiceUrl } from '../util/config'; -const getAppUrl = (config, { name, version, text }) => { +const getAppUrl = (config, { name, version }) => { const base = getServiceUrl(config, 'app.server'); const pathComponents = [base]; diff --git a/packages/console-app/src/containers/Main.js b/packages/console-app/src/containers/Main.js index d98ee58..688d7d1 100644 --- a/packages/console-app/src/containers/Main.js +++ b/packages/console-app/src/containers/Main.js @@ -24,7 +24,7 @@ import Bots from './panels/bots/Bots'; import Config from './panels/Config'; import IPFS from './panels/ipfs/IPFS'; import Metadata from './panels/Metadata'; -import Signaling from './panels/Signaling'; +import Signaling from './panels/signal/Signaling'; import Status from './panels/Status'; import WNS from './panels/wns/WNS'; diff --git a/packages/console-app/src/containers/panels/Signaling.js b/packages/console-app/src/containers/panels/Signaling.js deleted file mode 100644 index 94dd924..0000000 --- a/packages/console-app/src/containers/panels/Signaling.js +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright 2020 DxOS.org -// - -import React from 'react'; -import { makeStyles } from '@material-ui/core'; - -const useStyles = makeStyles(theme => ({ - root: {} -})); - -const Signaling = () => { - const classes = useStyles(); - - return ( -
- ); -}; - -export default Signaling; diff --git a/packages/console-app/src/containers/panels/ipfs/IPFS.js b/packages/console-app/src/containers/panels/ipfs/IPFS.js index 827c410..8334560 100644 --- a/packages/console-app/src/containers/panels/ipfs/IPFS.js +++ b/packages/console-app/src/containers/panels/ipfs/IPFS.js @@ -2,11 +2,13 @@ // Copyright 2020 DxOS.org // -import React from 'react'; +import React, { useState } from 'react'; import get from 'lodash.get'; import { useQuery } from '@apollo/react-hooks'; import { makeStyles } from '@material-ui/core'; +import Tab from '@material-ui/core/Tab'; +import Tabs from '@material-ui/core/Tabs'; import TableBody from '@material-ui/core/TableBody'; import TableHead from '@material-ui/core/TableHead'; import TableRow from '@material-ui/core/TableRow'; @@ -68,8 +70,13 @@ const useStyles = makeStyles((theme) => ({ } })); +const TAB_STATUS = 'status'; +const TAB_LOG = 'log'; + const IPFS = () => { const classes = useStyles(); + const [tab, setTab] = useState(TAB_STATUS); + const ipfsResponse = useQueryStatusReducer(useQuery(IPFS_STATUS)); const wnsResponse = useQueryStatusReducer(useQuery(WNS_RECORDS, { variables: { attributes: { type: RECORD_TYPE, service: SERVICE_TYPE } } @@ -115,7 +122,12 @@ const IPFS = () => { return ( + + setTab(value)}> + + + + } >

WNS-registered IPFS Servers

diff --git a/packages/console-app/src/containers/panels/signal/SignalLog.js b/packages/console-app/src/containers/panels/signal/SignalLog.js new file mode 100644 index 0000000..77a84ea --- /dev/null +++ b/packages/console-app/src/containers/panels/signal/SignalLog.js @@ -0,0 +1,26 @@ +// +// Copyright 2020 DxOS.org +// + +import React, { useContext } from 'react'; +import { useQuery } from '@apollo/react-hooks'; + +import SIGNAL_LOG from '../../../gql/signal_log.graphql'; + +import { ConsoleContext, useQueryStatusReducer } from '../../../hooks'; + +import Log from '../../../components/Log'; + +const SignalLog = () => { + const { config } = useContext(ConsoleContext); + const data = useQueryStatusReducer(useQuery(SIGNAL_LOG, { pollInterval: config.api.intervalLog })); + if (!data) { + return null; + } + + return ( + + ); +}; + +export default SignalLog; diff --git a/packages/console-app/src/containers/panels/signal/SignalStatus.js b/packages/console-app/src/containers/panels/signal/SignalStatus.js new file mode 100644 index 0000000..23f7146 --- /dev/null +++ b/packages/console-app/src/containers/panels/signal/SignalStatus.js @@ -0,0 +1,26 @@ +// +// Copyright 2020 DxOS.org +// + +import React, { useContext } from 'react'; +import { useQuery } from '@apollo/react-hooks'; + +import SIGNAL_STATUS from '../../../gql/signal_status.graphql'; + +import { ConsoleContext, useQueryStatusReducer } from '../../../hooks'; + +import Json from '../../../components/Json'; + +const SignalStatus = () => { + const { config } = useContext(ConsoleContext); + const data = useQueryStatusReducer(useQuery(SIGNAL_STATUS, { pollInterval: config.api.intervalQuery })); + if (!data) { + return null; + } + + return ( + + ); +}; + +export default SignalStatus; diff --git a/packages/console-app/src/containers/panels/signal/Signaling.js b/packages/console-app/src/containers/panels/signal/Signaling.js new file mode 100644 index 0000000..bfe9fa4 --- /dev/null +++ b/packages/console-app/src/containers/panels/signal/Signaling.js @@ -0,0 +1,74 @@ +// +// Copyright 2020 DxOS.org +// + +import React, { useState } from 'react'; +import { makeStyles } from '@material-ui/core'; +import Paper from '@material-ui/core/Paper'; +import Tab from '@material-ui/core/Tab'; +import Tabs from '@material-ui/core/Tabs'; +import TabContext from '@material-ui/lab/TabContext'; + +import Panel from '../../../components/Panel'; +import Toolbar from '../../../components/Toolbar'; + +import SignalLog from './SignalLog'; +import SignalStatus from './SignalStatus'; + +const TAB_STATUS = 'status'; +const TAB_LOG = 'log'; + +const useStyles = makeStyles(() => ({ + expand: { + flex: 1 + }, + + panel: { + display: 'flex', + overflow: 'hidden', + flex: 1 + }, + + paper: { + display: 'flex', + overflow: 'hidden', + flex: 1 + } +})); + +const Signal = () => { + const classes = useStyles(); + const [tab, setTab] = useState(TAB_STATUS); + const [type, setType] = useState(); + + return ( + + setTab(value)}> + + + + + } + > + + {tab === TAB_STATUS && ( +
+ + + +
+ )} + + {tab === TAB_LOG && ( +
+ +
+ )} +
+
+ ); +}; + +export default Signal; diff --git a/packages/console-app/src/containers/panels/wns/WNSRecords.js b/packages/console-app/src/containers/panels/wns/WNSRecords.js index a62b832..9e59bd4 100644 --- a/packages/console-app/src/containers/panels/wns/WNSRecords.js +++ b/packages/console-app/src/containers/panels/wns/WNSRecords.js @@ -84,7 +84,7 @@ const WNSRecords = ({ type }) => { Type Identifier - Query + GraphQL Name Version Created diff --git a/packages/console-app/src/gql/signal_log.graphql b/packages/console-app/src/gql/signal_log.graphql new file mode 100644 index 0000000..9e8194d --- /dev/null +++ b/packages/console-app/src/gql/signal_log.graphql @@ -0,0 +1,10 @@ +# +# Copyright 2020 DxOS.org +# + +query { + signal_log @client { + timestamp + log + } +} diff --git a/packages/console-app/src/gql/signal_status.graphql b/packages/console-app/src/gql/signal_status.graphql new file mode 100644 index 0000000..2a76b39 --- /dev/null +++ b/packages/console-app/src/gql/signal_status.graphql @@ -0,0 +1,10 @@ +# +# Copyright 2020 DxOS.org +# + +query { + signal_status @client { + timestamp + json + } +} diff --git a/packages/console-app/src/resolvers.js b/packages/console-app/src/resolvers.js index 1a646a2..019c0f4 100644 --- a/packages/console-app/src/resolvers.js +++ b/packages/console-app/src/resolvers.js @@ -80,7 +80,32 @@ export const createResolvers = config => { timestamp: timestamp(), log: [...cachedLog].reverse() }; - } + }, + + signal_status: async () => { + log('Signal status...'); + + const url = getServiceUrl(config, 'signal.api', { path: 'status' }); + const res = await fetch(url); + + return { + __typename: 'JSONResult', + timestamp: timestamp(), + + // NOTE: Hack since this should be a string according to the schema. + json: res.json() + }; + }, + + signal_log: async () => { + log('Signal log...'); + + return { + __typename: 'JSONLog', + timestamp: timestamp(), + log: [] + }; + }, } }; };