sensorconfig
This commit is contained in:
parent
b8d15671a8
commit
bcad64f29d
@ -1,6 +1,6 @@
|
||||
|
||||
|
||||
const url = "http://192.168.1.203:8080/v1/overflow/services";
|
||||
const url = "http://192.168.1.105:8080/v1/overflow/services";
|
||||
|
||||
export class OFRest {
|
||||
|
||||
|
@ -1,7 +1,131 @@
|
||||
import * as React from 'react';
|
||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
||||
import Paper from 'material-ui/Paper';
|
||||
import RemoveRedEye from 'material-ui/svg-icons/image/remove-red-eye';
|
||||
import DropDownMenu from 'material-ui/DropDownMenu';
|
||||
import MenuItem from 'material-ui/MenuItem';
|
||||
import Divider from 'material-ui/Divider';
|
||||
import Dialog from 'material-ui/Dialog';
|
||||
import FlatButton from 'material-ui/FlatButton';
|
||||
import RaisedButton from 'material-ui/RaisedButton';
|
||||
import TextField from 'material-ui/TextField';
|
||||
import LinearProgress from 'material-ui/LinearProgress';
|
||||
import {ItemSelector} from './ItemSelector';
|
||||
|
||||
const styles = {
|
||||
};
|
||||
|
||||
|
||||
export class CrawlerSelector extends React.Component<any, any> {
|
||||
constructor(props: any, context: any) {
|
||||
super(props, context)
|
||||
this.state = {
|
||||
crawlerType: 0,
|
||||
authOpen: false,
|
||||
isloading: false
|
||||
};
|
||||
}
|
||||
|
||||
handleCrawlerChange = (event: any, index: any, value: any) => {
|
||||
if (value == 1) {
|
||||
this.setState({ crawlerType: value });
|
||||
return;
|
||||
}
|
||||
if (this.validateCrawlerType()) {
|
||||
this.setState({ crawlerType: value });
|
||||
} else {
|
||||
this.setState({ crawlerType: 0 });
|
||||
}
|
||||
}
|
||||
|
||||
validateCrawlerType = () => {
|
||||
this.setState({ authOpen: true });
|
||||
return true;
|
||||
}
|
||||
|
||||
handleAuthPopupOk = () => {
|
||||
this.setState({ isLoading: true })
|
||||
//this.setState({ authOpen: false });
|
||||
};
|
||||
handleAuthPopupCancle = () => {
|
||||
this.setState({ authOpen: false, crawlerType: 0, isLoading: false });
|
||||
};
|
||||
|
||||
|
||||
getAuthPopupContent = () => {
|
||||
switch (this.state.crawlerType) {
|
||||
case 2:
|
||||
return <WMIAuthPopup />;
|
||||
case 3:
|
||||
return <SNMPv2AuthPopup />;
|
||||
case 4:
|
||||
return <SNMPv3AuthPopup />;
|
||||
case 5:
|
||||
return <JMXAuthPopup />;
|
||||
default:
|
||||
return 'errrrrrr';
|
||||
}
|
||||
}
|
||||
|
||||
showLoadingBar = () => {
|
||||
if (this.state.isLoading) {
|
||||
return <LinearProgress mode="indeterminate" style={{ marginTop: 30 }} />;
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const actions = [
|
||||
<FlatButton
|
||||
label="Cancel"
|
||||
primary={true}
|
||||
onTouchTap={this.handleAuthPopupCancle}
|
||||
/>,
|
||||
<FlatButton
|
||||
label="Submit"
|
||||
primary={true}
|
||||
onTouchTap={this.handleAuthPopupOk}
|
||||
/>,
|
||||
];
|
||||
|
||||
return (
|
||||
|
||||
<MuiThemeProvider >
|
||||
<div>
|
||||
<Dialog
|
||||
title="Connection information is required."
|
||||
actions={actions}
|
||||
modal={true}
|
||||
open={this.state.authOpen}
|
||||
>
|
||||
{this.getAuthPopupContent()}
|
||||
{this.showLoadingBar()}
|
||||
|
||||
</Dialog>
|
||||
|
||||
<Paper >
|
||||
<DropDownMenu value={this.state.crawlerType} onChange={this.handleCrawlerChange} style={{ width: 200 }}>
|
||||
<MenuItem value={1} primaryText="Protocol" />
|
||||
<MenuItem value={2} primaryText="WMI" />
|
||||
<MenuItem value={3} primaryText="SNMPv2c" />
|
||||
<MenuItem value={4} primaryText="SNMPv3" />
|
||||
<MenuItem value={5} primaryText="JMX" />
|
||||
</DropDownMenu>
|
||||
|
||||
<Divider />
|
||||
|
||||
<div style={{ padding: 30 }}>
|
||||
Crawler description....
|
||||
</div>
|
||||
<br />
|
||||
<ItemSelector/>
|
||||
</Paper>
|
||||
</div>
|
||||
</MuiThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class SNMPv2AuthPopup extends React.Component<any, any> {
|
||||
constructor(props: any, context: any) {
|
||||
super(props, context)
|
||||
this.state = {
|
||||
@ -11,11 +135,77 @@ export class CrawlerSelector extends React.Component<any, any> {
|
||||
|
||||
render() {
|
||||
return (
|
||||
|
||||
<div>
|
||||
CrawlerSelector
|
||||
<MuiThemeProvider >
|
||||
<div>
|
||||
FORM FOR SNMPV2C
|
||||
<br />
|
||||
<TextField
|
||||
hintText="Community"
|
||||
errorText="This field is required"
|
||||
/>
|
||||
</div>
|
||||
|
||||
</MuiThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class SNMPv3AuthPopup extends React.Component<any, any> {
|
||||
constructor(props: any, context: any) {
|
||||
super(props, context)
|
||||
this.state = {
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
return (
|
||||
<MuiThemeProvider >
|
||||
<div>
|
||||
FORM FOR SNMPV3
|
||||
<TextField
|
||||
hintText="User"
|
||||
errorText="This field is required"
|
||||
/>
|
||||
</div>
|
||||
</MuiThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class WMIAuthPopup extends React.Component<any, any> {
|
||||
constructor(props: any, context: any) {
|
||||
super(props, context)
|
||||
this.state = {
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
return (
|
||||
<MuiThemeProvider >
|
||||
<div>
|
||||
FORM FOR WMI
|
||||
</div>
|
||||
</MuiThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class JMXAuthPopup extends React.Component<any, any> {
|
||||
constructor(props: any, context: any) {
|
||||
super(props, context)
|
||||
this.state = {
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
return (
|
||||
<MuiThemeProvider >
|
||||
<div>
|
||||
FORM FOR JMX
|
||||
</div>
|
||||
</MuiThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
@ -1,21 +1,84 @@
|
||||
import * as React from 'react';
|
||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
||||
|
||||
|
||||
import {
|
||||
Table,
|
||||
TableBody,
|
||||
TableFooter,
|
||||
TableHeader,
|
||||
TableHeaderColumn,
|
||||
TableRow,
|
||||
TableRowColumn,
|
||||
} from 'material-ui/Table';
|
||||
import IconMenu from 'material-ui/IconMenu';
|
||||
|
||||
|
||||
const tableData = [
|
||||
{
|
||||
id: 0,
|
||||
name: 'CPU.USAGE',
|
||||
desc: 'desc....',
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
name: 'CPU.FREE',
|
||||
desc: 'desc....',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: 'CPU.IDLE',
|
||||
desc: 'desc....',
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
export class ItemSelector extends React.Component<any, any> {
|
||||
constructor(props: any, context: any) {
|
||||
super(props, context)
|
||||
this.state = {
|
||||
selected: [],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
isSelected = (index: any) => {
|
||||
return this.state.selected.indexOf(index) !== -1;
|
||||
};
|
||||
|
||||
handleRowSelection = (selectedRows: any) => {
|
||||
this.setState({
|
||||
selected: selectedRows,
|
||||
});
|
||||
console.log(selectedRows);
|
||||
};
|
||||
|
||||
render() {
|
||||
return (
|
||||
|
||||
<div>
|
||||
ItemSelector
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Table onRowSelection={this.handleRowSelection}
|
||||
selectable={true}
|
||||
multiSelectable={true}
|
||||
>
|
||||
<TableHeader >
|
||||
<TableRow>
|
||||
<TableHeaderColumn colSpan={3}>CPU</TableHeaderColumn>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
|
||||
<TableBody
|
||||
deselectOnClickaway={false}
|
||||
>
|
||||
{tableData.map((row, index) => (
|
||||
<TableRow key={index} selected={this.isSelected(index)} >
|
||||
<TableRowColumn style={{ display: 'none' }}>{row.id}</TableRowColumn>
|
||||
<TableRowColumn>{row.name}</TableRowColumn>
|
||||
<TableRowColumn>{row.desc}</TableRowColumn>
|
||||
</TableRow>
|
||||
))}
|
||||
</TableBody>
|
||||
|
||||
</Table>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
||||
import {
|
||||
Step,
|
||||
Stepper,
|
||||
@ -7,57 +6,63 @@ import {
|
||||
} from 'material-ui/Stepper';
|
||||
import RaisedButton from 'material-ui/RaisedButton';
|
||||
import FlatButton from 'material-ui/FlatButton';
|
||||
import Divider from 'material-ui/Divider';
|
||||
|
||||
import { TargetSelector } from './TargetSelector';
|
||||
import { CrawlerSelector } from './CrawlerSelector';
|
||||
import { ItemSelector } from './ItemSelector';
|
||||
import Dialog from 'material-ui/Dialog';
|
||||
|
||||
export class SensorConfig extends React.Component<any, any> {
|
||||
|
||||
constructor(props: any, context: any) {
|
||||
super(props, context)
|
||||
this.state = {
|
||||
finished: false,
|
||||
stepIndex: 0,
|
||||
selectedTarget: 0,
|
||||
selectedSensors: []
|
||||
};
|
||||
}
|
||||
|
||||
state = {
|
||||
finished: false,
|
||||
stepIndex: 0,
|
||||
selected: -1
|
||||
};
|
||||
|
||||
handleNext = () => {
|
||||
if (this.state.selectedTarget == 0) {
|
||||
alert("Choose a target.");
|
||||
return;
|
||||
}
|
||||
const { stepIndex } = this.state;
|
||||
this.setState({
|
||||
stepIndex: stepIndex + 1,
|
||||
finished: stepIndex >= 2,
|
||||
});
|
||||
if(this.state.stepIndex == 0) {
|
||||
alert(this.state.selected);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
handlePrev = () => {
|
||||
const { stepIndex } = this.state;
|
||||
if (stepIndex > 0) {
|
||||
this.setState({ stepIndex: stepIndex - 1 });
|
||||
this.setState({ stepIndex: stepIndex - 1, selectedTarget: 0 });
|
||||
}
|
||||
};
|
||||
|
||||
handleChange(idx :any) {
|
||||
handleStep1Change(idx: any) {
|
||||
this.setState({
|
||||
selected : idx
|
||||
selectedTarget: idx
|
||||
});
|
||||
}
|
||||
|
||||
handleStep2Change(idx: any) {
|
||||
alert("aa");
|
||||
}
|
||||
|
||||
getStepContent(stepIndex: any) {
|
||||
switch (stepIndex) {
|
||||
case 0:
|
||||
return <TargetSelector onChange={this.handleChange.bind(this)} />;
|
||||
return <TargetSelector onChange={this.handleStep1Change.bind(this)} />;
|
||||
case 1:
|
||||
return <CrawlerSelector />;
|
||||
return <CrawlerSelector onChange={this.handleStep2Change.bind(this)}/>;
|
||||
case 2:
|
||||
return <ItemSelector />;
|
||||
return null;
|
||||
default:
|
||||
return 'errrrrrr';
|
||||
}
|
||||
@ -65,20 +70,18 @@ export class SensorConfig extends React.Component<any, any> {
|
||||
|
||||
render() {
|
||||
return (
|
||||
|
||||
<div style={{ width: '100%', maxWidth: 900, margin: 'auto' }}>
|
||||
<Stepper activeStep={this.state.stepIndex}>
|
||||
<Step>
|
||||
<StepLabel>MONITOR WHAT?</StepLabel>
|
||||
<StepLabel>STEP 1</StepLabel>
|
||||
</Step>
|
||||
<Step>
|
||||
<StepLabel>TECHNOLOGY USED?</StepLabel>
|
||||
<StepLabel>STEP 2</StepLabel>
|
||||
</Step>
|
||||
<Step>
|
||||
<StepLabel>SELEC ITEMS</StepLabel>
|
||||
<StepLabel>STEP 3</StepLabel>
|
||||
</Step>
|
||||
</Stepper>
|
||||
<Divider />
|
||||
<div>
|
||||
{this.state.finished ? (
|
||||
<p>
|
||||
@ -112,7 +115,6 @@ export class SensorConfig extends React.Component<any, any> {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
}
|
@ -1,11 +1,17 @@
|
||||
import * as React from 'react';
|
||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
||||
|
||||
import { List, ListItem, makeSelectable } from 'material-ui/List';
|
||||
import Subheader from 'material-ui/Subheader';
|
||||
import Checkbox from 'material-ui/Checkbox';
|
||||
|
||||
import Paper from 'material-ui/Paper';
|
||||
|
||||
const styles = {
|
||||
test: {
|
||||
display: 'inline-block',
|
||||
float: 'left',
|
||||
width: '50%',
|
||||
height: 550,
|
||||
},
|
||||
}
|
||||
|
||||
let SelectableList = makeSelectable(List);
|
||||
|
||||
@ -43,9 +49,8 @@ function wrapState(ComposedComponent: any, par: any) {
|
||||
export class TargetSelector extends React.Component<any, any> {
|
||||
constructor(props: any, context: any) {
|
||||
super(props, context)
|
||||
this.state = {
|
||||
};
|
||||
SelectableList = wrapState(SelectableList, this);
|
||||
|
||||
}
|
||||
|
||||
handleSelect(idx: any) {
|
||||
@ -54,9 +59,9 @@ export class TargetSelector extends React.Component<any, any> {
|
||||
|
||||
render() {
|
||||
return (
|
||||
|
||||
<div>
|
||||
<SelectableList >
|
||||
<div>
|
||||
<Paper style={styles.test}>
|
||||
<SelectableList>
|
||||
<Subheader>Select a target to monitor</Subheader>
|
||||
<ListItem
|
||||
value={1}
|
||||
@ -88,7 +93,6 @@ export class TargetSelector extends React.Component<any, any> {
|
||||
nestedItems={[
|
||||
<ListItem
|
||||
value={6}
|
||||
|
||||
primaryText="MySQL"
|
||||
secondaryText="Port 5432" />,
|
||||
<ListItem
|
||||
@ -100,8 +104,11 @@ export class TargetSelector extends React.Component<any, any> {
|
||||
]}
|
||||
/>
|
||||
</SelectableList>
|
||||
</div>
|
||||
|
||||
</Paper>
|
||||
<Paper style={styles.test}>
|
||||
Target description...
|
||||
</Paper>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
||||
import Paper from 'material-ui/Paper';
|
||||
import Menu from 'material-ui/Menu';
|
||||
import MenuItem from 'material-ui/MenuItem';
|
||||
@ -44,28 +43,28 @@ export class ProveDownload extends React.Component<any, any> {
|
||||
render() {
|
||||
|
||||
return (
|
||||
|
||||
|
||||
<div>
|
||||
<div>
|
||||
<div>
|
||||
<Paper style={styles.osSelector}>
|
||||
<Menu onItemTouchTap={this.handleOSChange.bind(this)}>
|
||||
<MenuItem primaryText="Windows" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Ubuntu" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Mac OS X" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Docker" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Debian" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="CentOS" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Fedora" leftIcon={<ContentCopy />} />
|
||||
</Menu>
|
||||
</Paper>
|
||||
<Paper style={styles.osSelector}>
|
||||
<Menu onItemTouchTap={this.handleOSChange.bind(this)}>
|
||||
<MenuItem primaryText="Windows" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Ubuntu" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Mac OS X" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Docker" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Debian" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="CentOS" leftIcon={<ContentCopy />} />
|
||||
<MenuItem primaryText="Fedora" leftIcon={<ContentCopy />} />
|
||||
</Menu>
|
||||
</Paper>
|
||||
|
||||
<Paper style={styles.content}>
|
||||
<InstallGuide idx={this.state.selectedOSidx} name={this.state.selectedOSName} />
|
||||
</Paper>
|
||||
<Paper style={styles.content}>
|
||||
<InstallGuide idx={this.state.selectedOSidx} name={this.state.selectedOSName} />
|
||||
</Paper>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
||||
import { List, ListItem } from 'material-ui/List';
|
||||
import ActionInfo from 'material-ui/svg-icons/action/info';
|
||||
import SelectField from 'material-ui/SelectField';
|
||||
@ -34,13 +33,13 @@ export class InstallGuide extends React.Component<any, any> {
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
<div>
|
||||
<h1>Installing on {this.props.name}</h1>
|
||||
<ListItem primaryText="Blah Blah Blah..." disabled={true} leftIcon={<ActionInfo />} />
|
||||
{target}
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
<h1>Installing on {this.props.name}</h1>
|
||||
<ListItem primaryText="Blah Blah Blah..." disabled={true} leftIcon={<ActionInfo />} />
|
||||
{target}
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -60,18 +59,16 @@ export class WindowsInstallGuide extends React.Component<any, any> {
|
||||
|
||||
render() {
|
||||
return (
|
||||
<MuiThemeProvider >
|
||||
<div>
|
||||
<SelectField
|
||||
floatingLabelText="Architecture"
|
||||
value={this.state.selectedArch}
|
||||
onChange={this.handleArchChange}
|
||||
>
|
||||
<MenuItem value={0} primaryText="32bit" />
|
||||
<MenuItem value={1} primaryText="64bit" />
|
||||
</SelectField>
|
||||
</div>
|
||||
</MuiThemeProvider>
|
||||
<div>
|
||||
<SelectField
|
||||
floatingLabelText="Architecture"
|
||||
value={this.state.selectedArch}
|
||||
onChange={this.handleArchChange}
|
||||
>
|
||||
<MenuItem value={0} primaryText="32bit" />
|
||||
<MenuItem value={1} primaryText="64bit" />
|
||||
</SelectField>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -86,11 +83,9 @@ export class UbuntuInstallGuide extends React.Component<any, any> {
|
||||
|
||||
render() {
|
||||
return (
|
||||
<MuiThemeProvider >
|
||||
<div>
|
||||
Ubuntu blah blah
|
||||
<div>
|
||||
Ubuntu blah blah
|
||||
</div>
|
||||
</MuiThemeProvider>
|
||||
);
|
||||
}
|
||||
}
|
@ -25,7 +25,7 @@ module.exports = {
|
||||
historyApiFallback: true,
|
||||
contentBase: [__dirname + '/public', __dirname + '/dist', __dirname + '/node_modules'], // match the output path
|
||||
publicPath: '/' ,// match the output `publicPath`
|
||||
host: '192.168.1.209',
|
||||
host: '192.168.1.105',
|
||||
port: 9091,
|
||||
stats: {
|
||||
colors: true
|
||||
|
Loading…
x
Reference in New Issue
Block a user