mirror of https://github.com/ethereum/go-ethereum
dashboard: deep state update, version in footer (#15837)
* dashboard: footer, deep state update * dashboard: resolve asset path * dashboard: remove bundle.js * dashboard: prevent state update on every reconnection * dashboard: fix linter issue * dashboard, cmd: minor UI fix, include commit hash * remove geth binary * dashboard: gitCommit renamed to commit * dashboard: move the geth version to the right, make commit optional * dashboard: commit limited to 7 characters * dashboard: limit commit length on client side * dashboard: run go generatepull/15937/head
parent
81ad8f665d
commit
938cf4528a
File diff suppressed because one or more lines are too long
@ -0,0 +1,80 @@ |
|||||||
|
// @flow |
||||||
|
|
||||||
|
// Copyright 2017 The go-ethereum Authors |
||||||
|
// This file is part of the go-ethereum library. |
||||||
|
// |
||||||
|
// The go-ethereum library is free software: you can redistribute it and/or modify |
||||||
|
// it under the terms of the GNU Lesser General Public License as published by |
||||||
|
// the Free Software Foundation, either version 3 of the License, or |
||||||
|
// (at your option) any later version. |
||||||
|
// |
||||||
|
// The go-ethereum library is distributed in the hope that it will be useful, |
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
// GNU Lesser General Public License for more details. |
||||||
|
// |
||||||
|
// You should have received a copy of the GNU Lesser General Public License |
||||||
|
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
|
import React, {Component} from 'react'; |
||||||
|
|
||||||
|
import withStyles from 'material-ui/styles/withStyles'; |
||||||
|
import AppBar from 'material-ui/AppBar'; |
||||||
|
import Toolbar from 'material-ui/Toolbar'; |
||||||
|
import Typography from 'material-ui/Typography'; |
||||||
|
|
||||||
|
import type {General} from '../types/content'; |
||||||
|
|
||||||
|
// styles contains styles for the Header component. |
||||||
|
const styles = theme => ({ |
||||||
|
footer: { |
||||||
|
backgroundColor: theme.palette.background.appBar, |
||||||
|
color: theme.palette.getContrastText(theme.palette.background.appBar), |
||||||
|
zIndex: theme.zIndex.appBar, |
||||||
|
}, |
||||||
|
toolbar: { |
||||||
|
paddingLeft: theme.spacing.unit, |
||||||
|
paddingRight: theme.spacing.unit, |
||||||
|
display: 'flex', |
||||||
|
justifyContent: 'flex-end', |
||||||
|
}, |
||||||
|
light: { |
||||||
|
color: 'rgba(255, 255, 255, 0.54)', |
||||||
|
}, |
||||||
|
}); |
||||||
|
export type Props = { |
||||||
|
general: General, |
||||||
|
classes: Object, |
||||||
|
}; |
||||||
|
// TODO (kurkomisi): If the structure is appropriate, make an abstraction of the common parts with the Header. |
||||||
|
// Footer renders the header of the dashboard. |
||||||
|
class Footer extends Component<Props> { |
||||||
|
shouldComponentUpdate(nextProps) { |
||||||
|
return typeof nextProps.shouldUpdate.logs !== 'undefined'; |
||||||
|
} |
||||||
|
|
||||||
|
info = (about: string, data: string) => ( |
||||||
|
<Typography type="caption" color="inherit"> |
||||||
|
<span className={this.props.classes.light}>{about}</span> {data} |
||||||
|
</Typography> |
||||||
|
); |
||||||
|
|
||||||
|
render() { |
||||||
|
const {classes, general} = this.props; // The classes property is injected by withStyles(). |
||||||
|
const geth = general.version ? this.info('Geth', general.version) : null; |
||||||
|
const commit = general.commit ? this.info('Commit', general.commit.substring(0, 7)) : null; |
||||||
|
|
||||||
|
return ( |
||||||
|
<AppBar position="static" className={classes.footer}> |
||||||
|
<Toolbar className={classes.toolbar}> |
||||||
|
<div> |
||||||
|
{geth} |
||||||
|
{commit} |
||||||
|
</div> |
||||||
|
</Toolbar> |
||||||
|
</AppBar> |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
export default withStyles(styles)(Footer); |
@ -1,61 +0,0 @@ |
|||||||
// @flow |
|
||||||
|
|
||||||
// Copyright 2017 The go-ethereum Authors |
|
||||||
// This file is part of the go-ethereum library. |
|
||||||
// |
|
||||||
// The go-ethereum library is free software: you can redistribute it and/or modify |
|
||||||
// it under the terms of the GNU Lesser General Public License as published by |
|
||||||
// the Free Software Foundation, either version 3 of the License, or |
|
||||||
// (at your option) any later version. |
|
||||||
// |
|
||||||
// The go-ethereum library is distributed in the hope that it will be useful, |
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
||||||
// GNU Lesser General Public License for more details. |
|
||||||
// |
|
||||||
// You should have received a copy of the GNU Lesser General Public License |
|
||||||
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. |
|
||||||
|
|
||||||
export type Message = { |
|
||||||
home?: HomeMessage, |
|
||||||
chain?: ChainMessage, |
|
||||||
txpool?: TxPoolMessage, |
|
||||||
network?: NetworkMessage, |
|
||||||
system?: SystemMessage, |
|
||||||
logs?: LogsMessage, |
|
||||||
}; |
|
||||||
|
|
||||||
export type HomeMessage = { |
|
||||||
memory?: Chart, |
|
||||||
traffic?: Chart, |
|
||||||
}; |
|
||||||
|
|
||||||
export type Chart = { |
|
||||||
history?: Array<ChartEntry>, |
|
||||||
new?: ChartEntry, |
|
||||||
}; |
|
||||||
|
|
||||||
export type ChartEntry = { |
|
||||||
time: Date, |
|
||||||
value: number, |
|
||||||
}; |
|
||||||
|
|
||||||
export type ChainMessage = { |
|
||||||
/* TODO (kurkomisi) */ |
|
||||||
}; |
|
||||||
|
|
||||||
export type TxPoolMessage = { |
|
||||||
/* TODO (kurkomisi) */ |
|
||||||
}; |
|
||||||
|
|
||||||
export type NetworkMessage = { |
|
||||||
/* TODO (kurkomisi) */ |
|
||||||
}; |
|
||||||
|
|
||||||
export type SystemMessage = { |
|
||||||
/* TODO (kurkomisi) */ |
|
||||||
}; |
|
||||||
|
|
||||||
export type LogsMessage = { |
|
||||||
log: string, |
|
||||||
}; |
|
Loading…
Reference in new issue