Merge branch 'master' into burdon/tables
This commit is contained in:
commit
c134a05926
@ -1,5 +1,5 @@
|
|||||||
# Console
|
# Console
|
||||||
|
|
||||||
DXOS Network GraphQL server and console application.
|
DXOS Kubenet GraphQL server and console application.
|
||||||
|
|
||||||
![Console](./docs/images/console.png)
|
![Console](./docs/images/console.png)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "1.0.0-beta.17",
|
"version": "1.0.0-beta.19",
|
||||||
"useWorkspaces": true,
|
"useWorkspaces": true,
|
||||||
"npmClient": "yarn"
|
"npmClient": "yarn"
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@dxos/console",
|
"name": "@dxos/console",
|
||||||
"version": "1.0.0-beta.0",
|
"version": "1.0.0-beta.0",
|
||||||
"description": "DXOS Console",
|
"description": "Kubenet Console",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name: dxos.network/console-app
|
name: dxos.network/console-app
|
||||||
displayName: DXOS Console Client
|
displayName: Kubenet Console Client
|
||||||
build: yarn dist
|
build: yarn dist
|
||||||
version: 0.0.6
|
version: 0.0.6
|
||||||
package: QmZpM8u7ZUfQpXLgtdB1ug7nGExUrXhebtTSfSBPrRwcLX
|
package: QmZpM8u7ZUfQpXLgtdB1ug7nGExUrXhebtTSfSBPrRwcLX
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#
|
#
|
||||||
# NODE_ENV === production
|
# NODE_ENV=development
|
||||||
# NOTE: Set CONFIG_FILE to swap out this config file.
|
# NOTE: Set CONFIG_FILE to swap out this config file.
|
||||||
#
|
#
|
||||||
|
|
||||||
app:
|
app:
|
||||||
title: 'Console'
|
title: 'Kubenet Console'
|
||||||
org': 'DXOS'
|
org': 'DXOS.org'
|
||||||
theme: 'dark'
|
theme: 'dark'
|
||||||
website: 'https://dxos.org'
|
website: 'https://dxos.org'
|
||||||
publicUrl: '/console'
|
publicUrl: '/console'
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#
|
#
|
||||||
# NODE_ENV === production
|
# NODE_ENV=development
|
||||||
# NOTE: Set CONFIG_FILE to swap out this config file.
|
# NOTE: Set CONFIG_FILE to swap out this config file.
|
||||||
#
|
#
|
||||||
|
|
||||||
app:
|
app:
|
||||||
title: 'Console'
|
title: 'Kubenet Console'
|
||||||
org': 'DXOS'
|
org': 'DXOS.org'
|
||||||
theme: 'dark'
|
theme: 'dark'
|
||||||
website: 'https://dxos.org'
|
website: 'https://dxos.org'
|
||||||
publicUrl: '/console'
|
publicUrl: '/console'
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#
|
#
|
||||||
# NODE_ENV === production
|
# NODE_ENV=production
|
||||||
# NOTE: Set CONFIG_FILE to swap out this config file.
|
# NOTE: Set CONFIG_FILE to swap out this config file.
|
||||||
#
|
#
|
||||||
|
|
||||||
app:
|
app:
|
||||||
title: 'Console'
|
title: 'Kubenet Console'
|
||||||
org': 'DXOS'
|
org': 'DXOS.org'
|
||||||
theme: 'dark'
|
theme: 'dark'
|
||||||
website: 'https://dxos.org'
|
website: 'https://dxos.org'
|
||||||
publicUrl: '/console'
|
publicUrl: '/console'
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#
|
#
|
||||||
# NODE_ENV === production
|
# NODE_ENV=development
|
||||||
# NOTE: Set CONFIG_FILE to swap out this config file.
|
# NOTE: Set CONFIG_FILE to swap out this config file.
|
||||||
#
|
#
|
||||||
|
|
||||||
app:
|
app:
|
||||||
title: 'Console'
|
title: 'Kubenet Console'
|
||||||
org': 'DXOS'
|
org': 'DXOS.org'
|
||||||
theme: 'dark'
|
theme: 'dark'
|
||||||
website: 'https://dxos.org'
|
website: 'https://dxos.org'
|
||||||
publicUrl: '/console'
|
publicUrl: '/console'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@dxos/console-app",
|
"name": "@dxos/console-app",
|
||||||
"version": "1.0.0-beta.17",
|
"version": "1.0.0-beta.19",
|
||||||
"description": "DXOS Console Client",
|
"description": "Kubenet Console Client",
|
||||||
"main": "dist/es/index.js",
|
"main": "dist/es/index.js",
|
||||||
"files": [
|
"files": [
|
||||||
"src/gql"
|
"src/gql"
|
||||||
@ -10,10 +10,10 @@
|
|||||||
"analyzer": "webpack --config webpack-analyzer.config.js",
|
"analyzer": "webpack --config webpack-analyzer.config.js",
|
||||||
"build:babel": "babel ./src --out-dir ./dist/es --ignore \"**/*.test.js\" --source-maps inline",
|
"build:babel": "babel ./src --out-dir ./dist/es --ignore \"**/*.test.js\" --source-maps inline",
|
||||||
"build": "yarn dist",
|
"build": "yarn dist",
|
||||||
"dist": "yarn clean && cp -f config-production.yml config.yml && yarn build:babel && webpack",
|
"dist": "yarn clean && yarn build:babel && CONFIG_FILE=config-production.yml webpack",
|
||||||
"clean": "rm -rf dist",
|
"clean": "rm -rf dist",
|
||||||
"lint": "semistandard 'src/**/*.js'",
|
"lint": "semistandard 'src/**/*.js'",
|
||||||
"start": "cp -f ${CONFIG_FILE:-config-local.yml} config.yml && VERBOSE=true webpack-dev-server --mode development",
|
"start": "CONFIG_FILE=${CONFIG_FILE:-config-testnet.yml} VERBOSE=true webpack-dev-server --mode development",
|
||||||
"test": "jest --rootDir ./src --passWithNoTests --no-cache"
|
"test": "jest --rootDir ./src --passWithNoTests --no-cache"
|
||||||
},
|
},
|
||||||
"author": "DXOS.org",
|
"author": "DXOS.org",
|
||||||
|
@ -11,27 +11,31 @@ import Typography from '@material-ui/core/Typography';
|
|||||||
import blueGrey from '@material-ui/core/colors/blueGrey';
|
import blueGrey from '@material-ui/core/colors/blueGrey';
|
||||||
import GraphQLIcon from '@material-ui/icons/Adb';
|
import GraphQLIcon from '@material-ui/icons/Adb';
|
||||||
|
|
||||||
import DxOSIcon from '../icons/DXOS';
|
import DXOSIcon from '../icons/DXOS';
|
||||||
import { graphqlApi } from '../client';
|
import { graphqlApi } from '../client';
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
offset: theme.mixins.denseToolbar,
|
offset: theme.mixins.denseToolbar,
|
||||||
|
|
||||||
logo: {
|
logo: {
|
||||||
paddingBottom: 2,
|
|
||||||
marginTop: 4,
|
|
||||||
marginRight: theme.spacing(2),
|
marginRight: theme.spacing(2),
|
||||||
color: '#333',
|
color: theme.palette.grey[800],
|
||||||
|
|
||||||
'& svg': {
|
'& svg': {
|
||||||
width: 64,
|
width: 100,
|
||||||
height: 32
|
height: 48
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
logoLink: {
|
||||||
|
lineHeight: 0
|
||||||
|
},
|
||||||
|
|
||||||
title: {
|
title: {
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
flex: 1
|
flex: 1,
|
||||||
|
marginTop: 2,
|
||||||
|
color: theme.palette.grey[800]
|
||||||
},
|
},
|
||||||
|
|
||||||
link: {
|
link: {
|
||||||
@ -46,9 +50,9 @@ const AppBar = ({ config }) => {
|
|||||||
<>
|
<>
|
||||||
<MuiAppBar position='fixed'>
|
<MuiAppBar position='fixed'>
|
||||||
<Toolbar>
|
<Toolbar>
|
||||||
<Link href='/'>
|
<Link classes={{ root: classes.logoLink }} href='/'>
|
||||||
<div className={classes.logo}>
|
<div className={classes.logo}>
|
||||||
<DxOSIcon />
|
<DXOSIcon />
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
<div className={classes.title}>
|
<div className={classes.title}>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright 2020 DXOS.org.org
|
// Copyright 2020 DXOS.org
|
||||||
//
|
//
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright 2020 DXOS.org.org
|
// Copyright 2020 DXOS.org
|
||||||
//
|
//
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
//
|
//
|
||||||
// Copyright 2020 DXOS.org.org
|
// Copyright 2020 DXOS.org
|
||||||
//
|
//
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import ExitToApp from '@material-ui/icons/ExitToApp';
|
|
||||||
import Link from '@material-ui/core/Link';
|
import Link from '@material-ui/core/Link';
|
||||||
|
import LinkIcon from '@material-ui/icons/ExitToApp';
|
||||||
|
|
||||||
import { getServiceUrl } from '../util/config';
|
import { getServiceUrl } from '../util/config';
|
||||||
|
|
||||||
// TODO(burdon): print actual GRAPHQL query.
|
|
||||||
const QUERY = `
|
const QUERY = `
|
||||||
query {
|
query {
|
||||||
queryRecords(attributes: [{ key: "name", value: { string: "%NAME%" } }]) {
|
queryRecords(attributes: [{ key: "name", value: { string: "%NAME%" } }]) {
|
||||||
id
|
id
|
||||||
type
|
type
|
||||||
@ -28,7 +27,7 @@ query {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,21 +41,19 @@ const QueryLink = ({ config, name, text, icon = false }) => {
|
|||||||
const baseURL = getServiceUrl(config, 'wns.webui');
|
const baseURL = getServiceUrl(config, 'wns.webui');
|
||||||
const query = QUERY.replace('%NAME%', name);
|
const query = QUERY.replace('%NAME%', name);
|
||||||
|
|
||||||
// TODO(burdon): This doesn't work.
|
// NOTE: Playground bug opens two tabs.
|
||||||
const fullURL = encodeURI(`${baseURL}?query=${query}`);
|
const fullURL = encodeURI(`${baseURL}?query=${query}`);
|
||||||
|
|
||||||
console.log(fullURL);
|
|
||||||
|
|
||||||
if (icon) {
|
|
||||||
return (
|
return (
|
||||||
<Link href={fullURL} target='WNS_GraphQL'>
|
<Link href={fullURL} target='gql'>
|
||||||
<ExitToApp />
|
{icon && (
|
||||||
|
<LinkIcon />
|
||||||
|
)}
|
||||||
|
{!icon && (
|
||||||
|
text || name
|
||||||
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
}
|
|
||||||
return (
|
|
||||||
<Link href={fullURL} target='wns'>{text || name}</Link>
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default QueryLink;
|
export default QueryLink;
|
||||||
|
@ -17,6 +17,9 @@ const useStyles = makeStyles(() => ({
|
|||||||
},
|
},
|
||||||
medium: {
|
medium: {
|
||||||
width: 170
|
width: 170
|
||||||
|
},
|
||||||
|
large: {
|
||||||
|
width: 400
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
8
packages/console-app/src/config.js
Normal file
8
packages/console-app/src/config.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
//
|
||||||
|
// Copyright 2020 DXOS.org
|
||||||
|
//
|
||||||
|
|
||||||
|
// See webpack-common.config.js
|
||||||
|
import config from '__CONFIG_FILE__';
|
||||||
|
|
||||||
|
export default config;
|
@ -55,6 +55,7 @@ const Layout = ({ children }) => {
|
|||||||
<FullScreen>
|
<FullScreen>
|
||||||
<div className={classes.root}>
|
<div className={classes.root}>
|
||||||
<AppBar config={config} />
|
<AppBar config={config} />
|
||||||
|
|
||||||
<div className={classes.container}>
|
<div className={classes.container}>
|
||||||
<div className={classes.sidebar}>
|
<div className={classes.sidebar}>
|
||||||
<Sidebar modules={modules} />
|
<Sidebar modules={modules} />
|
||||||
@ -63,6 +64,7 @@ const Layout = ({ children }) => {
|
|||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={classes.footer}>
|
<div className={classes.footer}>
|
||||||
<StatusBar />
|
<StatusBar />
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,14 +30,12 @@ const AppRecords = () => {
|
|||||||
|
|
||||||
// TODO(telackey): Does this also need an interval?
|
// TODO(telackey): Does this also need an interval?
|
||||||
const ipfsResponse = useQueryStatusReducer(useQuery(IPFS_STATUS));
|
const ipfsResponse = useQueryStatusReducer(useQuery(IPFS_STATUS));
|
||||||
|
|
||||||
if (!appResponse || !ipfsResponse) {
|
if (!appResponse || !ipfsResponse) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const appData = JSON.parse(appResponse.wns_records.json);
|
const appData = JSON.parse(appResponse.wns_records.json);
|
||||||
const ipfsData = JSON.parse(ipfsResponse.ipfs_status.json);
|
const ipfsData = JSON.parse(ipfsResponse.ipfs_status.json);
|
||||||
|
|
||||||
const localRefs = new Set(ipfsData.refs.local);
|
const localRefs = new Set(ipfsData.refs.local);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -45,23 +43,25 @@ const AppRecords = () => {
|
|||||||
<TableHead>
|
<TableHead>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
|
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
|
||||||
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
|
|
||||||
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
|
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
|
||||||
|
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
|
||||||
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
|
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
|
||||||
<TableCell size='icon'>Downloaded</TableCell>
|
<TableCell size='icon' />
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{appData.sort(sorter).map(({ id, name, version, createTime, attributes: { displayName, publicUrl, package: hash } }) => {
|
{appData.sort(sorter).map(({ id, name, version, createTime, attributes: { displayName, package: hash } }) => {
|
||||||
return (
|
return (
|
||||||
<TableRow key={id} size='small'>
|
<TableRow key={id} size='small'>
|
||||||
<TableCell monospace>
|
<TableCell monospace>
|
||||||
<AppLink config={config} name={name} />
|
<AppLink config={config} name={name} />
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell>{displayName}</TableCell>
|
|
||||||
<TableCell monospace>
|
<TableCell monospace>
|
||||||
<AppLink config={config} name={name} version={version} text={version} />
|
<AppLink config={config} name={name} version={version} text={version} />
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
{displayName}
|
||||||
|
</TableCell>
|
||||||
<TableCell>{moment.utc(createTime).fromNow()}</TableCell>
|
<TableCell>{moment.utc(createTime).fromNow()}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<BooleanIcon yes={localRefs && localRefs.has(hash)} />
|
<BooleanIcon yes={localRefs && localRefs.has(hash)} />
|
||||||
|
@ -37,9 +37,9 @@ const BotRecords = () => {
|
|||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
|
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
|
||||||
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
|
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
|
||||||
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
|
|
||||||
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
|
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
|
||||||
<TableCell />
|
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
|
||||||
|
<TableCell size='icon' />
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
@ -48,8 +48,8 @@ const BotRecords = () => {
|
|||||||
<TableRow key={id} size='small'>
|
<TableRow key={id} size='small'>
|
||||||
<TableCell monospace>{name}</TableCell>
|
<TableCell monospace>{name}</TableCell>
|
||||||
<TableCell monospace>{version}</TableCell>
|
<TableCell monospace>{version}</TableCell>
|
||||||
<TableCell>{moment.utc(createTime).fromNow()}</TableCell>
|
|
||||||
<TableCell>{displayName}</TableCell>
|
<TableCell>{displayName}</TableCell>
|
||||||
|
<TableCell>{moment.utc(createTime).fromNow()}</TableCell>
|
||||||
<TableCell />
|
<TableCell />
|
||||||
</TableRow>
|
</TableRow>
|
||||||
);
|
);
|
||||||
|
@ -109,14 +109,16 @@ const IPFSStatus = () => {
|
|||||||
displayServers.push({ name: 'None' });
|
displayServers.push({ name: 'None' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(burdon): Get Address (currenlty truncated).
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Table stickyHeader size='small' className={classes.table}>
|
<Table stickyHeader size='small' className={classes.table}>
|
||||||
<TableHead>
|
<TableHead>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell>Identifier</TableCell>
|
<TableCell>Identifier</TableCell>
|
||||||
<TableCell size='medium'>Description</TableCell>
|
<TableCell size='medium'>Description</TableCell>
|
||||||
<TableCell size='icon'>Connected</TableCell>
|
|
||||||
<TableCell>Address</TableCell>
|
<TableCell>Address</TableCell>
|
||||||
|
<TableCell size='small'>Connected</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
@ -125,10 +127,10 @@ const IPFSStatus = () => {
|
|||||||
<TableCell>{name}</TableCell>
|
<TableCell>{name}</TableCell>
|
||||||
<TableCell>{description}</TableCell>
|
<TableCell>{description}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<BooleanIcon yes={connected} />
|
{ipfs.addresses}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
{ipfs.addresses}
|
<BooleanIcon yes={connected} />
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
))}
|
))}
|
||||||
|
@ -32,7 +32,7 @@ const SignalServers = () => {
|
|||||||
<TableHead>
|
<TableHead>
|
||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell>Server</TableCell>
|
<TableCell>Server</TableCell>
|
||||||
<TableCell>Peers</TableCell>
|
<TableCell size='small' s>Peers</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHead>
|
</TableHead>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
|
@ -85,8 +85,8 @@ const WNSRecords = ({ type }) => {
|
|||||||
<TableRow>
|
<TableRow>
|
||||||
<TableCell onClick={sortBy('type')} size='medium'>Type</TableCell>
|
<TableCell onClick={sortBy('type')} size='medium'>Type</TableCell>
|
||||||
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
|
<TableCell onClick={sortBy('name')}>Identifier</TableCell>
|
||||||
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
|
|
||||||
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
|
<TableCell onClick={sortBy('version')} size='small'>Version</TableCell>
|
||||||
|
<TableCell onClick={sortBy('attributes.displayName')}>Name</TableCell>
|
||||||
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
|
<TableCell onClick={sortBy('createTime')} size='small'>Created</TableCell>
|
||||||
<TableCell onClick={sortBy('package')}>Package</TableCell>
|
<TableCell onClick={sortBy('package')}>Package</TableCell>
|
||||||
<TableCell size='icon' />
|
<TableCell size='icon' />
|
||||||
@ -116,12 +116,12 @@ const WNSRecords = ({ type }) => {
|
|||||||
<TableCell monospace>
|
<TableCell monospace>
|
||||||
{appLink || name}
|
{appLink || name}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell>
|
|
||||||
{displayName || service || description}
|
|
||||||
</TableCell>
|
|
||||||
<TableCell monospace>
|
<TableCell monospace>
|
||||||
{verLink || version}
|
{verLink || version}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
{displayName || service || description}
|
||||||
|
</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
{moment.utc(createTime).fromNow()}
|
{moment.utc(createTime).fromNow()}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
@ -6,34 +6,9 @@ import React from 'react';
|
|||||||
import SvgIcon from '@material-ui/core/SvgIcon';
|
import SvgIcon from '@material-ui/core/SvgIcon';
|
||||||
|
|
||||||
const Icon = (props) => (
|
const Icon = (props) => (
|
||||||
<SvgIcon {...props} viewBox='0 0 512 256'>
|
<SvgIcon {...props} viewBox='0 0 3200 1067'>
|
||||||
<g transform='matrix(1,0,0,1,-187.374,-7.5)'>
|
<path fill='none' d='M0 0h3200v1066.67H0z' />
|
||||||
<g transform='matrix(0.936373,0,0,0.906495,295.947,135.5)'>
|
<path d='M1191.03 327.748v385.175h80.981c28.975 0 55.749-4.945 80.323-14.822 24.587-9.878 45.657-23.373 63.212-40.484 17.554-17.125 31.277-37.424 41.154-60.91 9.878-23.474 14.81-48.819 14.81-76.049 0-27.647-4.717-53.22-14.152-76.706-9.435-23.461-22.829-43.773-40.168-60.897-17.34-17.112-38.511-30.607-63.528-40.497-25.029-9.865-52.904-14.81-83.624-14.81h-79.008zm-51.361-47.403h134.327c37.297 0 71.319 6.147 102.052 18.428 30.72 12.306 57.052 29.202 79.008 50.703 21.943 21.513 38.954 46.858 51.02 76.049 12.065 29.202 18.111 60.897 18.111 95.133 0 34.237-6.261 66.07-18.769 95.475s-29.848 54.763-52.006 76.049c-22.171 21.298-48.402 38.081-78.692 50.374-30.278 12.281-63.199 18.427-98.751 18.427h-136.3V280.345zM1785.58 554.239l-135.63 206.747h-57.951l163.948-246.902-152.742-233.736h57.937l125.753 190.28 125.095-190.28h57.938l-153.4 230.435 163.278 250.203h-57.938L1785.58 554.239zM2301.11 718.848c27.66 0 53.334-5.274 77.035-15.81 23.702-10.535 44.216-24.789 61.555-42.786 17.34-17.997 30.948-38.954 40.826-62.882 9.878-23.917 14.81-49.49 14.81-76.707 0-27.204-4.932-52.777-14.81-76.706-9.878-23.916-23.486-44.873-40.826-62.883-17.339-17.984-37.853-32.251-61.555-42.786-23.701-10.535-49.375-15.809-77.035-15.809-27.659 0-53.334 5.274-77.035 15.809-23.701 10.535-44.228 24.802-61.555 42.786-17.352 18.01-30.948 38.967-40.825 62.883-9.878 23.929-14.81 49.502-14.81 76.706 0 27.217 4.932 52.79 14.81 76.707 9.877 23.928 23.473 44.885 40.825 62.882 17.327 17.997 37.854 32.251 61.555 42.786 23.701 10.536 49.376 15.81 77.035 15.81m0 48.717c-34.236 0-66.285-6.488-96.132-19.426-29.848-12.938-55.952-30.607-78.338-53.005-22.386-22.386-40.067-48.49-53.005-78.338-12.951-29.848-19.427-61.896-19.427-96.133 0-34.236 6.476-66.272 19.427-96.132 12.938-29.836 30.619-55.952 53.005-78.338 22.386-22.386 48.49-40.055 78.338-53.005 29.847-12.951 61.896-19.427 96.132-19.427 34.237 0 66.273 6.476 96.133 19.427 29.835 12.95 55.952 30.619 78.338 53.005 22.386 22.386 40.054 48.502 53.005 78.338 12.951 29.86 19.426 61.896 19.426 96.132 0 34.237-6.475 66.285-19.426 96.133-12.951 29.848-30.619 55.952-53.005 78.338-22.386 22.398-48.503 40.067-78.338 53.005-29.86 12.938-61.896 19.426-96.133 19.426M2802.16 767.565c-39.067 0-72.203-7.791-99.421-23.385-27.217-15.569-50.69-37.196-70.445-64.843l43.456-32.921c16.239 25.017 34.451 43.684 54.649 55.965 20.173 12.293 44.102 18.439 71.761 18.439 14.924 0 28.647-2.301 41.155-6.918 12.508-4.603 23.259-10.864 32.263-18.768 8.993-7.892 16.012-17.441 21.071-28.634 5.034-11.193 7.563-23.372 7.563-36.538 0-14.924-3.288-27.432-9.865-37.538-6.589-10.092-15.379-18.756-26.344-26.003-10.978-7.247-23.486-13.494-37.525-18.768a2454.437 2454.437 0 00-43.456-15.797 712.606 712.606 0 01-49.06-18.769c-16.024-6.791-30.277-15.24-42.786-25.345-12.521-10.093-22.714-22.272-30.619-36.538-7.905-14.266-11.851-31.935-11.851-53.005 0-17.555 3.719-33.908 11.193-49.047 7.462-15.151 17.77-28.317 30.949-39.51 13.165-11.193 28.734-19.97 46.732-26.332 17.997-6.362 37.537-9.549 58.607-9.549 34.237 0 63.212 6.362 86.913 19.098 23.701 12.736 44.329 30.505 61.884 53.334l-40.826 30.278c-24.586-38.183-60.796-57.28-108.628-57.28-13.609 0-26.117 1.973-37.525 5.931-11.433 3.946-21.399 9.536-29.962 16.783-8.562 7.247-15.252 15.696-20.084 25.346-4.831 9.662-7.247 19.982-7.247 30.948 0 14.051 3.188 25.788 9.549 35.223 6.362 9.447 14.823 17.681 25.358 24.687 10.535 7.032 22.715 13.065 36.538 18.111a4308.994 4308.994 0 0043.128 15.481 681.841 681.841 0 0149.375 19.085c16.24 7.032 30.835 15.695 43.786 26.003 12.938 10.32 23.473 22.942 31.605 37.866 8.107 14.924 12.18 33.364 12.18 55.307 0 17.997-3.617 35.223-10.864 51.69-7.247 16.454-17.681 31.049-31.277 43.772-13.609 12.736-29.848 22.942-48.718 30.619-18.883 7.677-39.953 11.522-63.212 11.522M893.472 909.428l-338.469-211.54 92.313-126.929 246.156 338.469zM398.96 570.959l92.313 126.929-338.469 211.54L398.96 570.959zM152.804 157.226l338.469 211.54-92.313 126.929-246.156-338.469zm392.473 273.423l74.67 102.684-74.67 102.672V430.649zm-44.266 205.356l-74.682-102.672 74.682-102.684v205.356zm146.305-140.31l-92.313-126.929 338.469-211.54-246.156 338.469zm349.03-404.653l-29.633-31.783L523.144 336.49 79.563 59.259 49.93 91.042l321.661 442.291L49.93 975.612l29.633 31.795 443.581-277.243 443.569 277.243 29.633-31.795-321.661-442.279L996.346 91.042z' fill-rule='nonzero' />
|
||||||
<path
|
|
||||||
d='M0,-0.233C0,-27.435 -16.74,-48.591 -48.359,-48.591L-76.722,-48.591L-76.722,48.358L-48.59,48.358C-17.902,48.358 0,26.271 0,-0.233M-109.736,77.419L-109.736,-77.652L-48.59,-77.652C0,-77.652 33.711,-46.731 33.711,-0.233C33.711,46.73 0,77.419 -48.359,77.419L-109.736,77.419Z'
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
<g transform='matrix(0.936373,0,0,0.906495,530.058,135.499)'>
|
|
||||||
<path
|
|
||||||
d='M0,0.002C0,-29.06 -18.367,-50.914 -46.964,-50.914C-75.793,-50.914 -94.16,-29.06 -94.16,0.002C-94.16,28.83 -75.793,50.917 -46.964,50.917C-18.367,50.917 0,28.83 0,0.002M-128.104,0.002C-128.104,-46.729 -93.927,-80.208 -46.964,-80.208C-0.233,-80.208 33.942,-46.729 33.942,0.002C33.942,46.731 -0.233,80.21 -46.964,80.21C-93.927,80.21 -128.104,46.731 -128.104,0.002'
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
<g transform='matrix(0.936373,0,0,0.906495,573.603,85.3412)'>
|
|
||||||
<path
|
|
||||||
d='M0,110.898L18.134,85.092C29.062,96.484 46.034,106.249 67.422,106.249C85.789,106.249 94.392,98.111 94.392,89.044C94.392,62.075 5.115,80.907 5.115,22.551C5.115,-3.255 27.434,-24.644 63.935,-24.644C88.579,-24.644 109.039,-17.204 124.383,-3.022L106.017,21.622C93.462,9.997 76.723,4.65 60.913,4.65C46.964,4.65 39.059,10.695 39.059,19.994C39.059,44.406 128.103,27.898 128.103,85.789C128.103,114.153 107.644,135.542 66.028,135.542C36.036,135.542 14.648,125.544 0,110.898'
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
<g transform='matrix(0.936373,0,0,0.906495,368.158,65.109)'>
|
|
||||||
<path
|
|
||||||
d='M0,56.844L-36.496,0L36.496,0L0,56.844Z'
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
<g transform='matrix(0.936373,0,0,0.906495,368.158,205.681)'>
|
|
||||||
<path
|
|
||||||
d='M0,-56.845L-36.496,0L36.496,0L0,-56.845Z'
|
|
||||||
/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</SvgIcon>
|
</SvgIcon>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ import debug from 'debug';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from 'react-dom';
|
import { render } from 'react-dom';
|
||||||
|
|
||||||
import config from '../config.yml';
|
import config from './config';
|
||||||
|
|
||||||
import Main from './containers/Main';
|
import Main from './containers/Main';
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ export const createTheme = (theme) => createMuiTheme({
|
|||||||
// https://stackoverflow.com/questions/60567673/reactjs-material-ui-theme-mixins-toolbar-offset-is-not-adapting-when-toolbar
|
// https://stackoverflow.com/questions/60567673/reactjs-material-ui-theme-mixins-toolbar-offset-is-not-adapting-when-toolbar
|
||||||
mixins: {
|
mixins: {
|
||||||
denseToolbar: {
|
denseToolbar: {
|
||||||
minHeight: 48
|
height: 48
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"build": {
|
"build": {
|
||||||
"name": "@dxos/console-app",
|
"name": "@dxos/console-app",
|
||||||
"buildDate": "2020-07-20T18:34:32.825Z",
|
"buildDate": "2020-07-20T22:54:23.462Z",
|
||||||
"version": "1.0.0-beta.17"
|
"version": "1.0.0-beta.19"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,7 @@ const webpack = require('webpack');
|
|||||||
|
|
||||||
const PUBLIC_URL = process.env.PUBLIC_URL || '';
|
const PUBLIC_URL = process.env.PUBLIC_URL || '';
|
||||||
|
|
||||||
// TODO(burdon): Remove.
|
const CONFIG_FILE = path.relative('./src', process.env.CONFIG_FILE || 'config-local.yml');
|
||||||
const STACK_CONFIG = process.env.CONFIG || 'default';
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
devtool: 'eval-source-map',
|
devtool: 'eval-source-map',
|
||||||
@ -76,8 +75,8 @@ module.exports = {
|
|||||||
|
|
||||||
// Define the build config file based on the target.
|
// Define the build config file based on the target.
|
||||||
// https://webpack.js.org/plugins/normal-module-replacement-plugin
|
// https://webpack.js.org/plugins/normal-module-replacement-plugin
|
||||||
new webpack.NormalModuleReplacementPlugin(/(.*)__STACK_CONFIG__/, (resource) => {
|
new webpack.NormalModuleReplacementPlugin(/(.*)__CONFIG_FILE__/, (resource) => {
|
||||||
resource.request = resource.request.replace(/__STACK_CONFIG__/, STACK_CONFIG);
|
resource.request = resource.request.replace(/__CONFIG_FILE__/, CONFIG_FILE);
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// https://www.npmjs.com/package/webpack-version-file-plugin
|
// https://www.npmjs.com/package/webpack-version-file-plugin
|
||||||
|
@ -15,7 +15,7 @@ module.exports = merge(commonConfig, {
|
|||||||
new HtmlWebPackPlugin({
|
new HtmlWebPackPlugin({
|
||||||
template: './public/index.html',
|
template: './public/index.html',
|
||||||
templateParameters: {
|
templateParameters: {
|
||||||
title: 'DXOS Console'
|
title: 'Kubenet Console'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#
|
#
|
||||||
# NODE_ENV === production
|
# NODE_ENV=development
|
||||||
# NOTE: Set CONFIG_FILE to swap out this config file.
|
# NOTE: Set CONFIG_FILE to swap out this config file.
|
||||||
#
|
#
|
||||||
|
|
||||||
app:
|
app:
|
||||||
title: 'Console'
|
title: 'Kubenet Console'
|
||||||
org': 'DXOS'
|
org': 'DXOS.org'
|
||||||
theme: 'dark'
|
theme: 'dark'
|
||||||
website: 'https://dxos.org'
|
website: 'https://dxos.org'
|
||||||
publicUrl: '/console'
|
publicUrl: '/console'
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#
|
#
|
||||||
# NODE_ENV === production
|
# NODE_ENV=development
|
||||||
# NOTE: Set CONFIG_FILE to swap out this config file.
|
# NOTE: Set CONFIG_FILE to swap out this config file.
|
||||||
#
|
#
|
||||||
|
|
||||||
app:
|
app:
|
||||||
title: 'Console'
|
title: 'Kubenet Console'
|
||||||
org': 'DXOS'
|
org': 'DXOS.org'
|
||||||
theme: 'dark'
|
theme: 'dark'
|
||||||
website: 'https://dxos.org'
|
website: 'https://dxos.org'
|
||||||
publicUrl: '/console'
|
publicUrl: '/console'
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#
|
#
|
||||||
# NODE_ENV === production
|
# NODE_ENV=production
|
||||||
# NOTE: Set CONFIG_FILE to swap out this config file.
|
# NOTE: Set CONFIG_FILE to swap out this config file.
|
||||||
#
|
#
|
||||||
|
|
||||||
app:
|
app:
|
||||||
title: 'Console'
|
title: 'Kubenet Console'
|
||||||
org': 'DXOS'
|
org': 'DXOS.org'
|
||||||
theme: 'dark'
|
theme: 'dark'
|
||||||
website: 'https://dxos.org'
|
website: 'https://dxos.org'
|
||||||
publicUrl: '/console'
|
publicUrl: '/console'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@dxos/console-server",
|
"name": "@dxos/console-server",
|
||||||
"version": "1.0.0-beta.17",
|
"version": "1.0.0-beta.19",
|
||||||
"description": "DXOS Console Server",
|
"description": "Kubenet Console Server",
|
||||||
"main": "dist/es/index.js",
|
"main": "dist/es/index.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
"dxos-console": "bin/console.js"
|
"dxos-console": "bin/console.js"
|
||||||
@ -31,7 +31,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/polyfill": "^7.8.7",
|
"@babel/polyfill": "^7.8.7",
|
||||||
"@babel/runtime": "^7.8.7",
|
"@babel/runtime": "^7.8.7",
|
||||||
"@dxos/console-app": "^1.0.0-beta.17",
|
"@dxos/console-app": "^1.0.0-beta.19",
|
||||||
"@wirelineio/wns-schema": "^0.1.1",
|
"@wirelineio/wns-schema": "^0.1.1",
|
||||||
"apollo-boost": "^0.4.9",
|
"apollo-boost": "^0.4.9",
|
||||||
"apollo-server-express": "^2.13.1",
|
"apollo-server-express": "^2.13.1",
|
||||||
|
@ -67,7 +67,7 @@ module.exports = {
|
|||||||
new HtmlWebPackPlugin({
|
new HtmlWebPackPlugin({
|
||||||
template: './public/index.html',
|
template: './public/index.html',
|
||||||
templateParameters: {
|
templateParameters: {
|
||||||
title: 'DXOS Console'
|
title: 'Kubenet Console'
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user