{
	shouldComponentUpdate(nextProps) {
		return typeof nextProps.shouldUpdate.general !== 'undefined' || typeof nextProps.shouldUpdate.system !== 'undefined';
	}
	// halfHeightChart renders an area chart with half of the height of its parent.
	halfHeightChart = (chartProps, tooltip, areaProps) => (
		
			
				{!tooltip || (} />)}
				
			
		
	);
	// doubleChart renders a pair of charts separated by the baseline.
	doubleChart = (syncId, chartKey, topChart, bottomChart) => {
		if (!Array.isArray(topChart.data) || !Array.isArray(bottomChart.data)) {
			return null;
		}
		const topDefault = topChart.default || 0;
		const bottomDefault = bottomChart.default || 0;
		const topKey = `${chartKey}${TOP}`;
		const bottomKey = `${chartKey}${BOTTOM}`;
		const topColor = '#8884d8';
		const bottomColor = '#82ca9d';
		return (
			
				{this.halfHeightChart(
					{
						syncId,
						data:   topChart.data.map(({value}) => ({[topKey]: value || topDefault})),
						margin: {top: 5, right: 5, bottom: 0, left: 5},
					},
					topChart.tooltip,
					{dataKey: topKey, stroke: topColor, fill: topColor},
				)}
				{this.halfHeightChart(
					{
						syncId,
						data:   bottomChart.data.map(({value}) => ({[bottomKey]: -value || -bottomDefault})),
						margin: {top: 0, right: 5, bottom: 5, left: 5},
					},
					bottomChart.tooltip,
					{dataKey: bottomKey, stroke: bottomColor, fill: bottomColor},
				)}
			
		);
	};
	render() {
		const {general, system} = this.props;
		return (
			
				
					
						{this.doubleChart(
							FOOTER_SYNC_ID,
							CPU,
							{data: system.processCPU, tooltip: percentPlotter('Process load')},
							{data: system.systemCPU, tooltip: percentPlotter('System load', multiplier(-1))},
						)}
						{this.doubleChart(
							FOOTER_SYNC_ID,
							MEMORY,
							{data: system.activeMemory, tooltip: bytePlotter('Active memory')},
							{data: system.virtualMemory, tooltip: bytePlotter('Virtual memory', multiplier(-1))},
						)}
						{this.doubleChart(
							FOOTER_SYNC_ID,
							DISK,
							{data: system.diskRead, tooltip: bytePerSecPlotter('Disk read')},
							{data: system.diskWrite, tooltip: bytePerSecPlotter('Disk write', multiplier(-1))},
						)}
						{this.doubleChart(
							FOOTER_SYNC_ID,
							TRAFFIC,
							{data: system.networkIngress, tooltip: bytePerSecPlotter('Download')},
							{data: system.networkEgress, tooltip: bytePerSecPlotter('Upload', multiplier(-1))},
						)}
					
				
				
					
						Geth {general.version}
					
					{general.commit && (
						
							{'Commit '}
							
								{general.commit.substring(0, 8)}
							
						
					)}
				
			
		);
	}
}
export default withStyles(themeStyles)(Footer);