From 2a800dc7ca80234e43105d1a26f8c203bcad060d Mon Sep 17 00:00:00 2001 From: Thomas Nordquist Date: Tue, 8 Jan 2019 03:29:18 +0100 Subject: [PATCH] Clean up --- app/src/App.tsx | 11 ++-- app/src/actions/Settings.ts | 1 - .../components/ConnectionSetup/Connection.tsx | 2 +- app/src/components/Copy.tsx | 17 +++--- app/src/components/Settings.tsx | 8 +-- app/src/components/Sidebar/NodeStats.tsx | 18 ++----- app/src/components/Sidebar/Sidebar.tsx | 14 +++-- app/src/components/Sidebar/Topic.tsx | 20 +++---- app/src/components/Sidebar/ValueRenderer.tsx | 4 -- app/src/components/TitleBar.tsx | 53 ++++++++----------- app/src/components/Tree/Tree.tsx | 16 +++--- app/src/components/Tree/TreeNode.tsx | 1 + app/src/components/Tree/TreeNodeSubnodes.tsx | 6 +-- app/src/index.tsx | 21 ++++---- backend/src/index.ts | 4 +- electron.js | 6 ++- events/Events.ts | 4 -- 17 files changed, 86 insertions(+), 120 deletions(-) diff --git a/app/src/App.tsx b/app/src/App.tsx index 13ca3dc..f0369b6 100644 --- a/app/src/App.tsx +++ b/app/src/App.tsx @@ -1,17 +1,14 @@ import * as React from 'react' import { connect } from 'react-redux' -import { AppState } from './reducers' - -import { withStyles, Theme } from '@material-ui/core/styles' -import CssBaseline from '@material-ui/core/CssBaseline' - import * as q from '../../backend/src/Model' - +import CssBaseline from '@material-ui/core/CssBaseline' +import { withStyles, Theme } from '@material-ui/core/styles' import Tree from './components/Tree/Tree' import TitleBar from './components/TitleBar' import Sidebar from './components/Sidebar/Sidebar' import Connection from './components/ConnectionSetup/Connection' import Settings from './components/Settings' +import { AppState } from './reducers' interface State { selectedNode?: q.TreeNode, @@ -81,7 +78,7 @@ class App extends React.Component { public render() { const { settingsVisible } = this.props - const { content, contentShift, settings, centerContent } = this.getStyles() + const { content, contentShift, centerContent } = this.getStyles() return
diff --git a/app/src/actions/Settings.ts b/app/src/actions/Settings.ts index c8e37e7..1eff351 100644 --- a/app/src/actions/Settings.ts +++ b/app/src/actions/Settings.ts @@ -1,4 +1,3 @@ -import { Action } from 'redux' import { ActionTypes } from '../reducers' export const setAutoExpandLimit = (autoExpandLimit: number = 0) => { diff --git a/app/src/components/ConnectionSetup/Connection.tsx b/app/src/components/ConnectionSetup/Connection.tsx index 1ef4723..8d1bf21 100644 --- a/app/src/components/ConnectionSetup/Connection.tsx +++ b/app/src/components/ConnectionSetup/Connection.tsx @@ -121,7 +121,7 @@ class Connection extends React.Component { minWidth: 550, maxWidth: 650, backgroundColor: theme.palette.background.default, - margin: '20vh auto auto auto', + margin: '14vh auto auto auto', padding: `${2 * theme.spacing.unit}px`, outline: 'none', }, diff --git a/app/src/components/Copy.tsx b/app/src/components/Copy.tsx index 024261e..ce062fe 100644 --- a/app/src/components/Copy.tsx +++ b/app/src/components/Copy.tsx @@ -4,6 +4,7 @@ import FileCopy from '@material-ui/icons/FileCopy' import Check from '@material-ui/icons/Check' import green from '@material-ui/core/colors/green' import { withStyles, Theme } from '@material-ui/core/styles' + const copy = require('copy-text-to-clipboard') interface Props { @@ -16,19 +17,19 @@ interface State { snackBarOpen: boolean } +const styles = (theme: Theme) => ({ + snackbar: { + backgroundColor: green[600], + color: theme.typography.button.color, + }, +}) + class Copy extends React.Component { constructor(props: Props) { super(props) this.state = { didCopy: false, snackBarOpen: false } } - public static styles = (theme: Theme) => ({ - snackbar: { - backgroundColor: green[600], - color: theme.typography.button.color, - }, - }) - public render() { const icon = !this.state.didCopy ? @@ -66,4 +67,4 @@ class Copy extends React.Component { } } -export default withStyles(Copy.styles)(Copy) +export default withStyles(styles)(Copy) diff --git a/app/src/components/Settings.tsx b/app/src/components/Settings.tsx index 96fc505..140cda2 100644 --- a/app/src/components/Settings.tsx +++ b/app/src/components/Settings.tsx @@ -33,7 +33,8 @@ const styles: StyleRulesCallback = theme => ({ ...theme.mixins.toolbar, }, input: { - margin: `auto ${theme.spacing.unit}px auto ${theme.spacing.unit}px`, + minWidth: '150px', + margin: `auto ${theme.spacing.unit}px auto ${2 * theme.spacing.unit}px`, }, }) @@ -86,7 +87,7 @@ class Settings extends React.Component { private renderAutoExpand() { const { classes, actions, autoExpandLimit } = this.props - return + return
Auto Expand - +
} } diff --git a/app/src/components/Sidebar/NodeStats.tsx b/app/src/components/Sidebar/NodeStats.tsx index f31af58..ed6d726 100644 --- a/app/src/components/Sidebar/NodeStats.tsx +++ b/app/src/components/Sidebar/NodeStats.tsx @@ -2,28 +2,16 @@ import * as React from 'react' import * as q from '../../../../backend/src/Model' // import Drawer from '@material-ui/core/Drawer' import { Typography } from '@material-ui/core' -import { withStyles, Theme, StyleRulesCallback } from '@material-ui/core/styles' interface Props { - node: q.TreeNode, - classes: any, - theme: Theme + node: q.TreeNode } -interface State { - node?: q.TreeNode | undefined -} - -class NodeStats extends React.Component { +class NodeStats extends React.Component { constructor(props: any) { super(props) } - public static styles: StyleRulesCallback = (theme: Theme) => { - return { - } - } - public render() { const { node } = this.props @@ -35,4 +23,4 @@ class NodeStats extends React.Component { } } -export default withStyles(NodeStats.styles, { withTheme: true })(NodeStats) +export default NodeStats diff --git a/app/src/components/Sidebar/Sidebar.tsx b/app/src/components/Sidebar/Sidebar.tsx index 0439eb9..b04d755 100644 --- a/app/src/components/Sidebar/Sidebar.tsx +++ b/app/src/components/Sidebar/Sidebar.tsx @@ -1,16 +1,13 @@ import * as React from 'react' import * as q from '../../../../backend/src/Model' -// import Drawer from '@material-ui/core/Drawer' -import ExpansionPanel from '@material-ui/core/ExpansionPanel' -import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary' -import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails' +import { ExpansionPanel, ExpansionPanelDetails, ExpansionPanelSummary, Typography } from '@material-ui/core' +import { withStyles, Theme, StyleRulesCallback } from '@material-ui/core/styles' import ExpandMore from '@material-ui/icons/ExpandMore' + +import Copy from '../Copy' import ValueRenderer from './ValueRenderer' import NodeStats from './NodeStats' import Topic from './Topic' -import { Typography } from '@material-ui/core' -import { withStyles, Theme, StyleRulesCallback } from '@material-ui/core/styles' -import Copy from '../Copy' interface Props { node?: q.TreeNode, @@ -19,7 +16,7 @@ interface Props { } interface State { - node?: q.TreeNode + node: q.TreeNode } class Sidebar extends React.Component { @@ -29,6 +26,7 @@ class Sidebar extends React.Component { constructor(props: any) { super(props) + console.warn('Find and fix me #state') this.state = { node: new q.Tree() } } diff --git a/app/src/components/Sidebar/Topic.tsx b/app/src/components/Sidebar/Topic.tsx index 0a80644..c40afec 100644 --- a/app/src/components/Sidebar/Topic.tsx +++ b/app/src/components/Sidebar/Topic.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import * as q from '../../../../backend/src/Model' -import { withStyles, Theme, StyleRulesCallback } from '@material-ui/core/styles' import Button from '@material-ui/core/Button' +import { withStyles, Theme, StyleRulesCallback } from '@material-ui/core/styles' interface Props { classes: any @@ -11,15 +11,15 @@ interface Props { didSelectNode: (node: q.TreeNode) => void } -class Topic extends React.Component { - public static styles: StyleRulesCallback = (theme: Theme) => ({ - button: { - textTransform: 'none', - padding: '3px 5px 3px 5px', - minWidth: '30px', - }, - }) +const styles: StyleRulesCallback = (theme: Theme) => ({ + button: { + textTransform: 'none', + padding: '3px 5px 3px 5px', + minWidth: '30px', + }, +}) +class Topic extends React.Component { public render() { const { node } = this.props if (!node) { @@ -54,4 +54,4 @@ class Topic extends React.Component { } } -export default withStyles(Topic.styles, { withTheme: true })(Topic) +export default withStyles(styles, { withTheme: true })(Topic) diff --git a/app/src/components/Sidebar/ValueRenderer.tsx b/app/src/components/Sidebar/ValueRenderer.tsx index 6af089e..68f6136 100644 --- a/app/src/components/Sidebar/ValueRenderer.tsx +++ b/app/src/components/Sidebar/ValueRenderer.tsx @@ -27,10 +27,6 @@ class ValueRenderer extends React.Component { nextProps.node && nextProps.node.onMessage.subscribe(this.updateNode) } - private style = (theme: Theme) => { - - } - public render() { const node = this.props.node if (!node || !node.message) { diff --git a/app/src/components/TitleBar.tsx b/app/src/components/TitleBar.tsx index 4ceec07..836de09 100644 --- a/app/src/components/TitleBar.tsx +++ b/app/src/components/TitleBar.tsx @@ -1,28 +1,16 @@ import * as React from 'react' -import * as q from '../../../backend/src/Model' - -import Search from '@material-ui/icons/Search' -import Drawer from '@material-ui/core/Drawer' -import IconButton from '@material-ui/core/IconButton' -import Menu from '@material-ui/icons/Menu' - -import List from '@material-ui/core/List' -import Divider from '@material-ui/core/Divider' -import ListItem from '@material-ui/core/ListItem' -import ListItemIcon from '@material-ui/core/ListItemIcon' -import ListItemText from '@material-ui/core/ListItemText' -import Slider from '@material-ui/lab/Slider' - -import { settingsActions } from '../actions' -import { AppState, SettingsModel } from '../reducers' - import { connect } from 'react-redux' import { bindActionCreators } from 'redux' +import * as q from '../../../backend/src/Model' -import { AppBar, Toolbar, Typography, InputBase } from '@material-ui/core' +import { AppBar, IconButton, InputBase, Toolbar, Typography } from '@material-ui/core' +import Search from '@material-ui/icons/Search' +import Menu from '@material-ui/icons/Menu' import { withStyles, StyleRulesCallback } from '@material-ui/core/styles' import { fade } from '@material-ui/core/styles/colorManipulator' +import { settingsActions } from '../actions' + const styles: StyleRulesCallback = theme => ({ title: { display: 'none', @@ -105,21 +93,26 @@ class TitleBar extends React.Component { MQTT-Xplorer -
-
- -
- -
} + + private renderSearch() { + const { classes } = this.props + + return
+
+ +
+ +
+ } } const mapDispatchToProps = (dispatch: any) => { diff --git a/app/src/components/Tree/Tree.tsx b/app/src/components/Tree/Tree.tsx index 162c1df..3bdba4a 100644 --- a/app/src/components/Tree/Tree.tsx +++ b/app/src/components/Tree/Tree.tsx @@ -1,17 +1,17 @@ import * as React from 'react' -import * as q from '../../../../backend/src/Model' -import TreeNode from './TreeNode' -import { Typography } from '@material-ui/core' -import { makeConnectionMessageEvent, rendererEvents } from '../../../../events' -import { } from '../../../../events/Events' -const MovingAvaerage = require('moving-average') import { connect } from 'react-redux' +import * as q from '../../../../backend/src/Model' +import { Typography } from '@material-ui/core' +import TreeNode from './TreeNode' +import { makeConnectionMessageEvent, rendererEvents } from '../../../../events' import { AppState } from '../../reducers' +const MovingAverage = require('moving-average') + declare const performance: any const timeInterval = 10 * 1000 -const average = MovingAvaerage(timeInterval) +const average = MovingAverage(timeInterval) interface Props { autoExpandLimit: number @@ -25,7 +25,6 @@ interface TreeState { } class Tree extends React.Component { - private renderDuration: number = 300 private updateTimer?: any private lastUpdate: number = 0 private perf: number = 0 @@ -111,7 +110,6 @@ class Tree extends React.Component { key="rootNode" performanceCallback={(ms: number) => { average.push(Date.now(), ms) - this.renderDuration = ms }} /> diff --git a/app/src/components/Tree/TreeNode.tsx b/app/src/components/Tree/TreeNode.tsx index a479631..64ce467 100644 --- a/app/src/components/Tree/TreeNode.tsx +++ b/app/src/components/Tree/TreeNode.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import * as q from '../../../../backend/src/Model' import { withStyles, Theme } from '@material-ui/core/styles' + import { isElementInViewport } from '../helper/isElementInViewport' import TreeNodeTitle from './TreeNodeTitle' import TreeNodeSubnodes from './TreeNodeSubnodes' diff --git a/app/src/components/Tree/TreeNodeSubnodes.tsx b/app/src/components/Tree/TreeNodeSubnodes.tsx index b794ebc..964e42f 100644 --- a/app/src/components/Tree/TreeNodeSubnodes.tsx +++ b/app/src/components/Tree/TreeNodeSubnodes.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import * as q from '../../../../backend/src/Model' import { withTheme, Theme } from '@material-ui/core/styles' -import { List, ListItem, Collapse } from '@material-ui/core' + import TreeNode from './TreeNode' export interface Props { @@ -21,10 +21,6 @@ class TreeNodeSubnodes extends React.Component { padding: '3px 8px 0px 8px', } - const listStyle = { - padding: '3px 8px 0px 8px', - } - if (edges.length > 0 && !this.props.collapsed) { const listItems = edges .map(edge => edge.target) diff --git a/app/src/index.tsx b/app/src/index.tsx index eade86c..7a0d5d4 100644 --- a/app/src/index.tsx +++ b/app/src/index.tsx @@ -1,21 +1,13 @@ import * as React from 'react' import * as ReactDOM from 'react-dom' - import { Provider } from 'react-redux' import { createStore } from 'redux' -import reducers, { AppState } from './reducers' -import App from './App' import { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles' -const theme = createMuiTheme({ - palette: { - type: 'dark', // Switching the dark mode on is a single property value change. - }, - typography: { useNextVariants: true }, -}) +import reducers from './reducers' +import App from './App' declare var document: any -declare var window: any const initialAppState = { settings: { @@ -23,9 +15,14 @@ const initialAppState = { visible: false, }, } - const store = createStore(reducers, initialAppState) -window.reduxStore = store + +const theme = createMuiTheme({ + palette: { + type: 'dark', + }, + typography: { useNextVariants: true }, +}) ReactDOM.render( diff --git a/backend/src/index.ts b/backend/src/index.ts index dc7a97a..1ba4644 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,7 +1,7 @@ import { addMqttConnectionEvent, backendEvents, makeConnectionStateEvent, removeConnection, - makeConnectionMessageEvent, AddMqttConnection + makeConnectionMessageEvent, AddMqttConnection, } from '../../events' import { MqttSource, DataSource } from './DataSource' @@ -10,7 +10,7 @@ class ConnectionManager { public manageConnections() { backendEvents.subscribe(addMqttConnectionEvent, this.handleConnectionRequest) - backendEvents.subscribe(removeConnection, (connectionId) => this.removeConnection(connectionId)) + backendEvents.subscribe(removeConnection, (connectionId: string) => this.removeConnection(connectionId)) } private handleConnectionRequest = (event: AddMqttConnection) => { diff --git a/electron.js b/electron.js index d585d4e..fe01f35 100644 --- a/electron.js +++ b/electron.js @@ -1,6 +1,10 @@ // Modules to control application life and create native browser window const {app, BrowserWindow} = require('electron') -require('./backend/build/backend/src/index.js') +try { + require('./backend/build/backend/src/index.js') +} catch (err) { + console.error(err) +} // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. let mainWindow diff --git a/events/Events.ts b/events/Events.ts index 14d1fb7..5b02cee 100644 --- a/events/Events.ts +++ b/events/Events.ts @@ -13,10 +13,6 @@ export const addMqttConnectionEvent: Event = { topic: 'connection/add/mqtt', } -interface RemoveConnection { - connectionId: string, -} - export const removeConnection: Event = { topic: 'connection/remove', }