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 {
|
export class OFRest {
|
||||||
|
|
||||||
|
@ -1,7 +1,131 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
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> {
|
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) {
|
constructor(props: any, context: any) {
|
||||||
super(props, context)
|
super(props, context)
|
||||||
this.state = {
|
this.state = {
|
||||||
@ -11,11 +135,77 @@ export class CrawlerSelector extends React.Component<any, any> {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
|
<MuiThemeProvider >
|
||||||
<div>
|
<div>
|
||||||
CrawlerSelector
|
FORM FOR SNMPV2C
|
||||||
|
<br />
|
||||||
|
<TextField
|
||||||
|
hintText="Community"
|
||||||
|
errorText="This field is required"
|
||||||
|
/>
|
||||||
</div>
|
</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 * 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> {
|
export class ItemSelector extends React.Component<any, any> {
|
||||||
constructor(props: any, context: any) {
|
constructor(props: any, context: any) {
|
||||||
super(props, context)
|
super(props, context)
|
||||||
this.state = {
|
this.state = {
|
||||||
|
selected: [],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
isSelected = (index: any) => {
|
||||||
|
return this.state.selected.indexOf(index) !== -1;
|
||||||
|
};
|
||||||
|
|
||||||
|
handleRowSelection = (selectedRows: any) => {
|
||||||
|
this.setState({
|
||||||
|
selected: selectedRows,
|
||||||
|
});
|
||||||
|
console.log(selectedRows);
|
||||||
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
ItemSelector
|
<Table onRowSelection={this.handleRowSelection}
|
||||||
</div>
|
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 * as React from 'react';
|
||||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
|
||||||
import {
|
import {
|
||||||
Step,
|
Step,
|
||||||
Stepper,
|
Stepper,
|
||||||
@ -7,57 +6,63 @@ import {
|
|||||||
} from 'material-ui/Stepper';
|
} from 'material-ui/Stepper';
|
||||||
import RaisedButton from 'material-ui/RaisedButton';
|
import RaisedButton from 'material-ui/RaisedButton';
|
||||||
import FlatButton from 'material-ui/FlatButton';
|
import FlatButton from 'material-ui/FlatButton';
|
||||||
import Divider from 'material-ui/Divider';
|
|
||||||
|
|
||||||
import { TargetSelector } from './TargetSelector';
|
import { TargetSelector } from './TargetSelector';
|
||||||
import { CrawlerSelector } from './CrawlerSelector';
|
import { CrawlerSelector } from './CrawlerSelector';
|
||||||
import { ItemSelector } from './ItemSelector';
|
import { ItemSelector } from './ItemSelector';
|
||||||
|
import Dialog from 'material-ui/Dialog';
|
||||||
|
|
||||||
export class SensorConfig extends React.Component<any, any> {
|
export class SensorConfig extends React.Component<any, any> {
|
||||||
|
|
||||||
constructor(props: any, context: any) {
|
constructor(props: any, context: any) {
|
||||||
super(props, context)
|
super(props, context)
|
||||||
}
|
this.state = {
|
||||||
|
|
||||||
state = {
|
|
||||||
finished: false,
|
finished: false,
|
||||||
stepIndex: 0,
|
stepIndex: 0,
|
||||||
selected: -1
|
selectedTarget: 0,
|
||||||
|
selectedSensors: []
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
handleNext = () => {
|
handleNext = () => {
|
||||||
|
if (this.state.selectedTarget == 0) {
|
||||||
|
alert("Choose a target.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
const { stepIndex } = this.state;
|
const { stepIndex } = this.state;
|
||||||
this.setState({
|
this.setState({
|
||||||
stepIndex: stepIndex + 1,
|
stepIndex: stepIndex + 1,
|
||||||
finished: stepIndex >= 2,
|
finished: stepIndex >= 2,
|
||||||
});
|
});
|
||||||
if(this.state.stepIndex == 0) {
|
|
||||||
alert(this.state.selected);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
handlePrev = () => {
|
handlePrev = () => {
|
||||||
const { stepIndex } = this.state;
|
const { stepIndex } = this.state;
|
||||||
if (stepIndex > 0) {
|
if (stepIndex > 0) {
|
||||||
this.setState({ stepIndex: stepIndex - 1 });
|
this.setState({ stepIndex: stepIndex - 1, selectedTarget: 0 });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
handleChange(idx :any) {
|
handleStep1Change(idx: any) {
|
||||||
this.setState({
|
this.setState({
|
||||||
selected : idx
|
selectedTarget: idx
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleStep2Change(idx: any) {
|
||||||
|
alert("aa");
|
||||||
|
}
|
||||||
|
|
||||||
getStepContent(stepIndex: any) {
|
getStepContent(stepIndex: any) {
|
||||||
switch (stepIndex) {
|
switch (stepIndex) {
|
||||||
case 0:
|
case 0:
|
||||||
return <TargetSelector onChange={this.handleChange.bind(this)} />;
|
return <TargetSelector onChange={this.handleStep1Change.bind(this)} />;
|
||||||
case 1:
|
case 1:
|
||||||
return <CrawlerSelector />;
|
return <CrawlerSelector onChange={this.handleStep2Change.bind(this)}/>;
|
||||||
case 2:
|
case 2:
|
||||||
return <ItemSelector />;
|
return null;
|
||||||
default:
|
default:
|
||||||
return 'errrrrrr';
|
return 'errrrrrr';
|
||||||
}
|
}
|
||||||
@ -65,20 +70,18 @@ export class SensorConfig extends React.Component<any, any> {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<div style={{ width: '100%', maxWidth: 900, margin: 'auto' }}>
|
<div style={{ width: '100%', maxWidth: 900, margin: 'auto' }}>
|
||||||
<Stepper activeStep={this.state.stepIndex}>
|
<Stepper activeStep={this.state.stepIndex}>
|
||||||
<Step>
|
<Step>
|
||||||
<StepLabel>MONITOR WHAT?</StepLabel>
|
<StepLabel>STEP 1</StepLabel>
|
||||||
</Step>
|
</Step>
|
||||||
<Step>
|
<Step>
|
||||||
<StepLabel>TECHNOLOGY USED?</StepLabel>
|
<StepLabel>STEP 2</StepLabel>
|
||||||
</Step>
|
</Step>
|
||||||
<Step>
|
<Step>
|
||||||
<StepLabel>SELEC ITEMS</StepLabel>
|
<StepLabel>STEP 3</StepLabel>
|
||||||
</Step>
|
</Step>
|
||||||
</Stepper>
|
</Stepper>
|
||||||
<Divider />
|
|
||||||
<div>
|
<div>
|
||||||
{this.state.finished ? (
|
{this.state.finished ? (
|
||||||
<p>
|
<p>
|
||||||
@ -112,7 +115,6 @@ export class SensorConfig extends React.Component<any, any> {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,17 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
|
||||||
|
|
||||||
import { List, ListItem, makeSelectable } from 'material-ui/List';
|
import { List, ListItem, makeSelectable } from 'material-ui/List';
|
||||||
import Subheader from 'material-ui/Subheader';
|
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);
|
let SelectableList = makeSelectable(List);
|
||||||
|
|
||||||
@ -43,9 +49,8 @@ function wrapState(ComposedComponent: any, par: any) {
|
|||||||
export class TargetSelector extends React.Component<any, any> {
|
export class TargetSelector extends React.Component<any, any> {
|
||||||
constructor(props: any, context: any) {
|
constructor(props: any, context: any) {
|
||||||
super(props, context)
|
super(props, context)
|
||||||
this.state = {
|
|
||||||
};
|
|
||||||
SelectableList = wrapState(SelectableList, this);
|
SelectableList = wrapState(SelectableList, this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
handleSelect(idx: any) {
|
handleSelect(idx: any) {
|
||||||
@ -54,9 +59,9 @@ export class TargetSelector extends React.Component<any, any> {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<SelectableList >
|
<Paper style={styles.test}>
|
||||||
|
<SelectableList>
|
||||||
<Subheader>Select a target to monitor</Subheader>
|
<Subheader>Select a target to monitor</Subheader>
|
||||||
<ListItem
|
<ListItem
|
||||||
value={1}
|
value={1}
|
||||||
@ -88,7 +93,6 @@ export class TargetSelector extends React.Component<any, any> {
|
|||||||
nestedItems={[
|
nestedItems={[
|
||||||
<ListItem
|
<ListItem
|
||||||
value={6}
|
value={6}
|
||||||
|
|
||||||
primaryText="MySQL"
|
primaryText="MySQL"
|
||||||
secondaryText="Port 5432" />,
|
secondaryText="Port 5432" />,
|
||||||
<ListItem
|
<ListItem
|
||||||
@ -100,8 +104,11 @@ export class TargetSelector extends React.Component<any, any> {
|
|||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</SelectableList>
|
</SelectableList>
|
||||||
|
</Paper>
|
||||||
|
<Paper style={styles.test}>
|
||||||
|
Target description...
|
||||||
|
</Paper>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
|
||||||
import Paper from 'material-ui/Paper';
|
import Paper from 'material-ui/Paper';
|
||||||
import Menu from 'material-ui/Menu';
|
import Menu from 'material-ui/Menu';
|
||||||
import MenuItem from 'material-ui/MenuItem';
|
import MenuItem from 'material-ui/MenuItem';
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
|
|
||||||
import { List, ListItem } from 'material-ui/List';
|
import { List, ListItem } from 'material-ui/List';
|
||||||
import ActionInfo from 'material-ui/svg-icons/action/info';
|
import ActionInfo from 'material-ui/svg-icons/action/info';
|
||||||
import SelectField from 'material-ui/SelectField';
|
import SelectField from 'material-ui/SelectField';
|
||||||
@ -60,7 +59,6 @@ export class WindowsInstallGuide extends React.Component<any, any> {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<MuiThemeProvider >
|
|
||||||
<div>
|
<div>
|
||||||
<SelectField
|
<SelectField
|
||||||
floatingLabelText="Architecture"
|
floatingLabelText="Architecture"
|
||||||
@ -71,7 +69,6 @@ export class WindowsInstallGuide extends React.Component<any, any> {
|
|||||||
<MenuItem value={1} primaryText="64bit" />
|
<MenuItem value={1} primaryText="64bit" />
|
||||||
</SelectField>
|
</SelectField>
|
||||||
</div>
|
</div>
|
||||||
</MuiThemeProvider>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -86,11 +83,9 @@ export class UbuntuInstallGuide extends React.Component<any, any> {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<MuiThemeProvider >
|
|
||||||
<div>
|
<div>
|
||||||
Ubuntu blah blah
|
Ubuntu blah blah
|
||||||
</div>
|
</div>
|
||||||
</MuiThemeProvider>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -25,7 +25,7 @@ module.exports = {
|
|||||||
historyApiFallback: true,
|
historyApiFallback: true,
|
||||||
contentBase: [__dirname + '/public', __dirname + '/dist', __dirname + '/node_modules'], // match the output path
|
contentBase: [__dirname + '/public', __dirname + '/dist', __dirname + '/node_modules'], // match the output path
|
||||||
publicPath: '/' ,// match the output `publicPath`
|
publicPath: '/' ,// match the output `publicPath`
|
||||||
host: '192.168.1.209',
|
host: '192.168.1.105',
|
||||||
port: 9091,
|
port: 9091,
|
||||||
stats: {
|
stats: {
|
||||||
colors: true
|
colors: true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user