1 import * as React from 'react';
3 import connect, { IDispatcher, Connect } from '../../../../framework/src/flux/connect';
4 import { Panel } from '../../../../framework/src/components/material-ui';
6 import { requiredNetworkElementsReloadAction } from '../handlers/requiredNetworkElementsHandler';
7 import { loadAllMountedNetworkElementsAsync } from '../actions/mountedNetworkElementsActions';
8 import { connectionStatusLogReloadAction } from '../handlers/connectionStatusLogHandler';
10 import { RequiredNetworkElementsList } from '../components/requiredNetworkElements';
11 import { ConnectionStatusLog } from '../components/connectionStatusLog';
12 import { UnknownNetworkElementsList } from '../components/unknownNetworkElements';
14 const mapDispatcher = (dispatcher: IDispatcher) => ({
15 onLoadUnknownNetworkElements: () => {
16 dispatcher.dispatch(loadAllMountedNetworkElementsAsync);
18 onLoadRequiredNetworkElements: () => {
19 dispatcher.dispatch(requiredNetworkElementsReloadAction);
21 onLoadConnectionStatusLog: () => {
22 dispatcher.dispatch(connectionStatusLogReloadAction);
26 type PanelId = null | "RequiredNetworkElements" | "UnknownNetworkElements" | "ConnectionStatusLog";
28 type ConnectApplicationComponentProps = Connect<undefined, typeof mapDispatcher> ;
30 type ConnectApplicationComponentState = {
34 class ConnectApplicationComponent extends React.Component<ConnectApplicationComponentProps, ConnectApplicationComponentState>{
36 * Initialises this instance
38 constructor(props: ConnectApplicationComponentProps) {
46 private onTogglePanel = (panelId: PanelId) => {
47 const nextActivePanel = panelId === this.state.activePanel ? null : panelId;
49 activePanel: nextActivePanel
51 switch (nextActivePanel) {
52 case 'RequiredNetworkElements':
53 this.props.onLoadRequiredNetworkElements();
55 case 'UnknownNetworkElements':
56 // todo: should we update the application state ?
58 case 'ConnectionStatusLog':
59 this.props.onLoadConnectionStatusLog();
62 // do nothing if all panels are closed
65 console.warn("Unknown nextActivePanel [" + nextActivePanel + "] in connectView");
71 render(): JSX.Element {
72 const { activePanel } = this.state;
76 <Panel activePanel={ activePanel } panelId={ 'RequiredNetworkElements' } onToggle={ this.onTogglePanel } title={ "Required Network Elements" }>
77 <RequiredNetworkElementsList />
79 <Panel activePanel={ activePanel } panelId={ 'UnknownNetworkElements' } onToggle={ this.onTogglePanel } title={ "Unknown Network Elements" }>
80 <UnknownNetworkElementsList />
82 <Panel activePanel={ activePanel } panelId={ 'ConnectionStatusLog' } onToggle={ this.onTogglePanel } title={ "Connection Status Log" }>
83 <ConnectionStatusLog />
88 public componentDidMount() {
89 this.onTogglePanel("RequiredNetworkElements");
90 this.props.onLoadUnknownNetworkElements();
94 export const ConnectApplication = (connect(undefined, mapDispatcher)(ConnectApplicationComponent));
95 export default ConnectApplication;