From 87facf1552b9c3a635990186087a44b2cdd30a4d Mon Sep 17 00:00:00 2001 From: Maciej Hirsz <1096222+maciejhirsz@users.noreply.github.com> Date: Wed, 26 Sep 2018 13:55:07 +0200 Subject: [PATCH] Add location column (#57) --- packages/frontend/src/App.tsx | 5 ++-- packages/frontend/src/components/Node/Row.css | 15 ++++++++++ packages/frontend/src/components/Node/Row.tsx | 28 +++++++++++++------ packages/frontend/src/state.ts | 1 + 4 files changed, 38 insertions(+), 11 deletions(-) diff --git a/packages/frontend/src/App.tsx b/packages/frontend/src/App.tsx index fa3d933..0c8acdf 100644 --- a/packages/frontend/src/App.tsx +++ b/packages/frontend/src/App.tsx @@ -20,11 +20,12 @@ export default class App extends React.Component<{}, State> { 'settings', { validator: true, + location: true, implementation: true, peers: true, txs: true, - cpu: true, - mem: true, + cpu: false, + mem: false, blocknumber: true, blockhash: true, blocktime: true, diff --git a/packages/frontend/src/components/Node/Row.css b/packages/frontend/src/components/Node/Row.css index df0e609..2e29db4 100644 --- a/packages/frontend/src/components/Node/Row.css +++ b/packages/frontend/src/components/Node/Row.css @@ -8,6 +8,21 @@ padding: 0.35em 13px; } +.Node-Row td { + position: relative; +} + +.Node-Row .Node-Row-truncate { + position: absolute; + left: 0; + right: 0; + top: 0; + padding: inherit; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + .Node-Row-synced { color: #fff; } diff --git a/packages/frontend/src/components/Node/Row.tsx b/packages/frontend/src/components/Node/Row.tsx index 758b7fc..c8f6b87 100644 --- a/packages/frontend/src/components/Node/Row.tsx +++ b/packages/frontend/src/components/Node/Row.tsx @@ -1,13 +1,14 @@ import * as React from 'react'; import Identicon from 'polkadot-identicon'; import { Types } from '@dotstats/common'; -import { formatNumber, trimHash, milliOrSecond, secondsWithPrecision } from '../../utils'; +import { formatNumber, milliOrSecond, secondsWithPrecision } from '../../utils'; import { State as AppState } from '../../state'; import { PersistentSet } from '../../persist'; import { SEMVER_PATTERN } from './'; import { Ago, Icon } from '../'; import nodeIcon from '../../icons/server.svg'; +import nodeLocationIcon from '../../icons/location.svg'; import nodeValidatorIcon from '../../icons/shield.svg'; import nodeTypeIcon from '../../icons/terminal.svg'; import peersIcon from '../../icons/broadcast.svg'; @@ -43,12 +44,18 @@ interface Column { render: (node: AppState.Node) => React.ReactElement | string; } +function Truncate(props: { text: string }): React.ReactElement { + const { text } = props; + + return
{text}
; +} + export default class Row extends React.Component { public static readonly columns: Column[] = [ { label: 'Node', icon: nodeIcon, - render: ({ nodeDetails }) => nodeDetails[0] + render: ({ nodeDetails }) => }, { label: 'Validator', @@ -61,17 +68,24 @@ export default class Row extends React.Component { return validator ? : '-'; } }, + { + label: 'Location', + icon: nodeLocationIcon, + width: 140, + setting: 'location', + render: ({ location }) => location && location[2] ? : '-' + }, { label: 'Implementation', icon: nodeTypeIcon, - width: 100, + width: 90, setting: 'implementation', render: ({ nodeDetails }) => { const [, implementation, version] = nodeDetails; const [semver] = version.match(SEMVER_PATTERN) || [version]; const implIcon = implementation === 'parity-polkadot' ? parityPolkadotIcon : unknownImplementationIcon; - return v{semver}; + return {semver}; } }, { @@ -122,11 +136,7 @@ export default class Row extends React.Component { icon: blockHashIcon, width: 154, setting: 'blockhash', - render: ({ blockDetails }) => { - const hash = blockDetails[1]; - - return {trimHash(hash, 16)}; - } + render: ({ blockDetails }) => }, { label: 'Block Time', diff --git a/packages/frontend/src/state.ts b/packages/frontend/src/state.ts index ff099ca..fcaade3 100644 --- a/packages/frontend/src/state.ts +++ b/packages/frontend/src/state.ts @@ -11,6 +11,7 @@ export namespace State { } export interface Settings { + location: boolean; validator: boolean; implementation: boolean; peers: boolean;