Commit 56be400c authored by Lijiao's avatar Lijiao Committed by Yan Ni
Browse files

[webui] eslint fix (#1864)

parent f9580cd1
...@@ -22,8 +22,8 @@ jobs: ...@@ -22,8 +22,8 @@ jobs:
cd src/nni_manager cd src/nni_manager
yarn eslint yarn eslint
# uncomment following 2 lines to enable webui eslint # uncomment following 2 lines to enable webui eslint
# cd ../webui cd ../webui
# yarn eslint yarn eslint
displayName: 'Run eslint' displayName: 'Run eslint'
- script: | - script: |
python3 -m pip install torch==0.4.1 --user python3 -m pip install torch==0.4.1 --user
......
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
"@typescript-eslint/consistent-type-assertions": 0, "@typescript-eslint/consistent-type-assertions": 0,
"@typescript-eslint/no-inferrable-types": 0, "@typescript-eslint/no-inferrable-types": 0,
"no-inner-declarations": 0, "no-inner-declarations": 0,
"@typescript-eslint/no-var-requires": 0 "@typescript-eslint/no-var-requires": 0,
"react/display-name": 0
}, },
"ignorePatterns": [ "ignorePatterns": [
"node_modules/", "node_modules/",
......
...@@ -27,7 +27,7 @@ class App extends React.Component<{}, AppState> { ...@@ -27,7 +27,7 @@ class App extends React.Component<{}, AppState> {
}; };
} }
async componentDidMount() { async componentDidMount(): Promise<void> {
await Promise.all([ EXPERIMENT.init(), TRIALS.init() ]); await Promise.all([ EXPERIMENT.init(), TRIALS.init() ]);
this.setState(state => ({ experimentUpdateBroadcast: state.experimentUpdateBroadcast + 1 })); this.setState(state => ({ experimentUpdateBroadcast: state.experimentUpdateBroadcast + 1 }));
this.setState(state => ({ trialsUpdateBroadcast: state.trialsUpdateBroadcast + 1 })); this.setState(state => ({ trialsUpdateBroadcast: state.trialsUpdateBroadcast + 1 }));
...@@ -35,7 +35,7 @@ class App extends React.Component<{}, AppState> { ...@@ -35,7 +35,7 @@ class App extends React.Component<{}, AppState> {
this.setState({ metricGraphMode: (EXPERIMENT.optimizeMode === 'minimize' ? 'min' : 'max') }); this.setState({ metricGraphMode: (EXPERIMENT.optimizeMode === 'minimize' ? 'min' : 'max') });
} }
changeInterval = (interval: number) => { changeInterval = (interval: number): void => {
this.setState({ interval }); this.setState({ interval });
if (this.timerId === null && interval !== 0) { if (this.timerId === null && interval !== 0) {
window.setTimeout(this.refresh); window.setTimeout(this.refresh);
...@@ -45,15 +45,15 @@ class App extends React.Component<{}, AppState> { ...@@ -45,15 +45,15 @@ class App extends React.Component<{}, AppState> {
} }
// TODO: use local storage // TODO: use local storage
changeColumn = (columnList: Array<string>) => { changeColumn = (columnList: Array<string>): void => {
this.setState({ columnList: columnList }); this.setState({ columnList: columnList });
} }
changeMetricGraphMode = (val: 'max' | 'min') => { changeMetricGraphMode = (val: 'max' | 'min'): void => {
this.setState({ metricGraphMode: val }); this.setState({ metricGraphMode: val });
} }
render() { render(): React.ReactNode{
const { interval, columnList, experimentUpdateBroadcast, trialsUpdateBroadcast, metricGraphMode } = this.state; const { interval, columnList, experimentUpdateBroadcast, trialsUpdateBroadcast, metricGraphMode } = this.state;
if (experimentUpdateBroadcast === 0 || trialsUpdateBroadcast === 0) { if (experimentUpdateBroadcast === 0 || trialsUpdateBroadcast === 0) {
return null; // TODO: render a loading page return null; // TODO: render a loading page
...@@ -86,7 +86,7 @@ class App extends React.Component<{}, AppState> { ...@@ -86,7 +86,7 @@ class App extends React.Component<{}, AppState> {
); );
} }
private refresh = async () => { private refresh = async (): Promise<void> => {
const [ experimentUpdated, trialsUpdated ] = await Promise.all([ EXPERIMENT.update(), TRIALS.update() ]); const [ experimentUpdated, trialsUpdated ] = await Promise.all([ EXPERIMENT.update(), TRIALS.update() ]);
if (experimentUpdated) { if (experimentUpdated) {
this.setState(state => ({ experimentUpdateBroadcast: state.experimentUpdateBroadcast + 1 })); this.setState(state => ({ experimentUpdateBroadcast: state.experimentUpdateBroadcast + 1 }));
...@@ -107,7 +107,7 @@ class App extends React.Component<{}, AppState> { ...@@ -107,7 +107,7 @@ class App extends React.Component<{}, AppState> {
} }
} }
private async lastRefresh() { private async lastRefresh(): Promise<void> {
await EXPERIMENT.update(); await EXPERIMENT.update();
await TRIALS.update(true); await TRIALS.update(true);
this.setState(state => ({ experimentUpdateBroadcast: state.experimentUpdateBroadcast + 1 })); this.setState(state => ({ experimentUpdateBroadcast: state.experimentUpdateBroadcast + 1 }));
......
...@@ -20,7 +20,7 @@ class Compare extends React.Component<CompareProps, {}> { ...@@ -20,7 +20,7 @@ class Compare extends React.Component<CompareProps, {}> {
super(props); super(props);
} }
intermediate = () => { intermediate = (): any => {
const { compareRows } = this.props; const { compareRows } = this.props;
const trialIntermediate: Array<Intermedia> = []; const trialIntermediate: Array<Intermedia> = [];
const idsList: Array<string> = []; const idsList: Array<string> = [];
...@@ -40,7 +40,7 @@ class Compare extends React.Component<CompareProps, {}> { ...@@ -40,7 +40,7 @@ class Compare extends React.Component<CompareProps, {}> {
const legend: Array<string> = []; const legend: Array<string> = [];
// max length // max length
const length = trialIntermediate[0] !== undefined ? trialIntermediate[0].data.length : 0; const length = trialIntermediate[0] !== undefined ? trialIntermediate[0].data.length : 0;
const xAxis: Array<number> = []; const xAxis: number[] = [];
Object.keys(trialIntermediate).map(item => { Object.keys(trialIntermediate).map(item => {
const temp = trialIntermediate[item]; const temp = trialIntermediate[item];
legend.push(temp.name); legend.push(temp.name);
...@@ -52,14 +52,14 @@ class Compare extends React.Component<CompareProps, {}> { ...@@ -52,14 +52,14 @@ class Compare extends React.Component<CompareProps, {}> {
tooltip: { tooltip: {
trigger: 'item', trigger: 'item',
enterable: true, enterable: true,
position: function (point: Array<number>, data: TooltipForIntermediate) { position: function (point: number[], data: TooltipForIntermediate): number[] {
if (data.dataIndex < length / 2) { if (data.dataIndex < length / 2) {
return [point[0], 80]; return [point[0], 80];
} else { } else {
return [point[0] - 300, 80]; return [point[0] - 300, 80];
} }
}, },
formatter: function (data: TooltipForIntermediate) { formatter: function (data: TooltipForIntermediate): any {
const trialId = data.seriesName; const trialId = data.seriesName;
let obj = {}; let obj = {};
const temp = trialIntermediate.find(key => key.name === trialId); const temp = trialIntermediate.find(key => key.name === trialId);
...@@ -106,10 +106,10 @@ class Compare extends React.Component<CompareProps, {}> { ...@@ -106,10 +106,10 @@ class Compare extends React.Component<CompareProps, {}> {
} }
// render table column --- // render table column ---
initColumn = () => { initColumn = (): React.ReactNode => {
const idList: Array<string> = []; const idList: Array<string> = [];
const sequenceIdList: Array<number> = []; const sequenceIdList: number[] = [];
const durationList: Array<number> = []; const durationList: number[] = [];
const compareRows = this.props.compareRows.map(tableRecord => TRIALS.getTrial(tableRecord.id)); const compareRows = this.props.compareRows.map(tableRecord => TRIALS.getTrial(tableRecord.id));
...@@ -195,15 +195,15 @@ class Compare extends React.Component<CompareProps, {}> { ...@@ -195,15 +195,15 @@ class Compare extends React.Component<CompareProps, {}> {
); );
} }
componentDidMount() { componentDidMount(): void {
this._isCompareMount = true; this._isCompareMount = true;
} }
componentWillUnmount() { componentWillUnmount(): void {
this._isCompareMount = false; this._isCompareMount = false;
} }
render() { render(): React.ReactNode{
const { visible, cancelFunc } = this.props; const { visible, cancelFunc } = this.props;
return ( return (
......
...@@ -39,7 +39,7 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> { ...@@ -39,7 +39,7 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> {
} }
// [submit click] user add a new trial [submit a trial] // [submit click] user add a new trial [submit a trial]
addNewTrial = () => { addNewTrial = (): void => {
const { searchSpace, copyTrialParameter } = this.state; const { searchSpace, copyTrialParameter } = this.state;
// get user edited hyperParameter, ps: will change data type if you modify the input val // get user edited hyperParameter, ps: will change data type if you modify the input val
const customized = this.props.form.getFieldsValue(); const customized = this.props.form.getFieldsValue();
...@@ -76,19 +76,19 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> { ...@@ -76,19 +76,19 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> {
} }
warningConfirm = () => { warningConfirm = (): void => {
this.setState(() => ({ isShowWarning: false })); this.setState(() => ({ isShowWarning: false }));
const { customParameters } = this.state; const { customParameters } = this.state;
this.submitCustomize(customParameters); this.submitCustomize(customParameters);
} }
warningCancel = () => { warningCancel = (): void => {
this.setState(() => ({ isShowWarning: false })); this.setState(() => ({ isShowWarning: false }));
} }
submitCustomize = (customized: Object) => { submitCustomize = (customized: Record<string, any>): void => {
// delete `tag` key // delete `tag` key
for (let i in customized) { for (const i in customized) {
if (i === 'tag') { if (i === 'tag') {
delete customized[i]; delete customized[i];
} }
...@@ -106,24 +106,24 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> { ...@@ -106,24 +106,24 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> {
this.setState(() => ({ isShowSubmitFailed: true })); this.setState(() => ({ isShowSubmitFailed: true }));
} }
}) })
.catch(error => { .catch(() => {
this.setState(() => ({ isShowSubmitFailed: true })); this.setState(() => ({ isShowSubmitFailed: true }));
}); });
} }
closeSucceedHint = () => { closeSucceedHint = (): void => {
// also close customized trial modal // also close customized trial modal
this.setState(() => ({ isShowSubmitSucceed: false })); this.setState(() => ({ isShowSubmitSucceed: false }));
this.props.closeCustomizeModal(); this.props.closeCustomizeModal();
} }
closeFailedHint = () => { closeFailedHint = (): void => {
// also close customized trial modal // also close customized trial modal
this.setState(() => ({ isShowSubmitFailed: false })); this.setState(() => ({ isShowSubmitFailed: false }));
this.props.closeCustomizeModal(); this.props.closeCustomizeModal();
} }
componentDidMount() { componentDidMount(): void {
const { copyTrialId } = this.props; const { copyTrialId } = this.props;
if (copyTrialId !== undefined && TRIALS.getTrial(copyTrialId) !== undefined) { if (copyTrialId !== undefined && TRIALS.getTrial(copyTrialId) !== undefined) {
const originCopyTrialPara = TRIALS.getTrial(copyTrialId).description.parameters; const originCopyTrialPara = TRIALS.getTrial(copyTrialId).description.parameters;
...@@ -131,7 +131,7 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> { ...@@ -131,7 +131,7 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> {
} }
} }
componentWillReceiveProps(nextProps: CustomizeProps) { componentWillReceiveProps(nextProps: CustomizeProps): void {
const { copyTrialId } = nextProps; const { copyTrialId } = nextProps;
if (copyTrialId !== undefined && TRIALS.getTrial(copyTrialId) !== undefined) { if (copyTrialId !== undefined && TRIALS.getTrial(copyTrialId) !== undefined) {
const originCopyTrialPara = TRIALS.getTrial(copyTrialId).description.parameters; const originCopyTrialPara = TRIALS.getTrial(copyTrialId).description.parameters;
...@@ -139,7 +139,7 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> { ...@@ -139,7 +139,7 @@ class Customize extends React.Component<CustomizeProps, CustomizeState> {
} }
} }
render() { render(): React.ReactNode {
const { closeCustomizeModal, visible } = this.props; const { closeCustomizeModal, visible } = this.props;
const { isShowSubmitSucceed, isShowSubmitFailed, isShowWarning, customID, copyTrialParameter } = this.state; const { isShowSubmitSucceed, isShowSubmitFailed, isShowWarning, customID, copyTrialParameter } = this.state;
const { const {
......
...@@ -29,7 +29,7 @@ class ExperimentDrawer extends React.Component<ExpDrawerProps, ExpDrawerState> { ...@@ -29,7 +29,7 @@ class ExperimentDrawer extends React.Component<ExpDrawerProps, ExpDrawerState> {
}; };
} }
getExperimentContent = () => { getExperimentContent = (): void => {
axios axios
.all([ .all([
axios.get(`${MANAGER_IP}/experiment`), axios.get(`${MANAGER_IP}/experiment`),
...@@ -41,7 +41,7 @@ class ExperimentDrawer extends React.Component<ExpDrawerProps, ExpDrawerState> { ...@@ -41,7 +41,7 @@ class ExperimentDrawer extends React.Component<ExpDrawerProps, ExpDrawerState> {
if (res.data.params.searchSpace) { if (res.data.params.searchSpace) {
res.data.params.searchSpace = JSON.parse(res.data.params.searchSpace); res.data.params.searchSpace = JSON.parse(res.data.params.searchSpace);
} }
let trialMessagesArr = res1.data; const trialMessagesArr = res1.data;
const interResultList = res2.data; const interResultList = res2.data;
Object.keys(trialMessagesArr).map(item => { Object.keys(trialMessagesArr).map(item => {
// not deal with trial's hyperParameters // not deal with trial's hyperParameters
...@@ -66,34 +66,34 @@ class ExperimentDrawer extends React.Component<ExpDrawerProps, ExpDrawerState> { ...@@ -66,34 +66,34 @@ class ExperimentDrawer extends React.Component<ExpDrawerProps, ExpDrawerState> {
})); }));
} }
downExperimentParameters = () => { downExperimentParameters = (): void => {
const { experiment } = this.state; const { experiment } = this.state;
downFile(experiment, 'experiment.json'); downFile(experiment, 'experiment.json');
} }
onWindowResize = () => { onWindowResize = (): void => {
this.setState(() => ({expDrawerHeight: window.innerHeight - 48})); this.setState(() => ({expDrawerHeight: window.innerHeight - 48}));
} }
componentDidMount() { componentDidMount(): void {
this._isCompareMount = true; this._isCompareMount = true;
this.getExperimentContent(); this.getExperimentContent();
window.addEventListener('resize', this.onWindowResize); window.addEventListener('resize', this.onWindowResize);
} }
componentWillReceiveProps(nextProps: ExpDrawerProps) { componentWillReceiveProps(nextProps: ExpDrawerProps): void {
const { isVisble } = nextProps; const { isVisble } = nextProps;
if (isVisble === true) { if (isVisble === true) {
this.getExperimentContent(); this.getExperimentContent();
} }
} }
componentWillUnmount() { componentWillUnmount(): void {
this._isCompareMount = false; this._isCompareMount = false;
window.removeEventListener('resize', this.onWindowResize); window.removeEventListener('resize', this.onWindowResize);
} }
render() { render(): React.ReactNode {
const { isVisble, closeExpDrawer } = this.props; const { isVisble, closeExpDrawer } = this.props;
const { experiment, expDrawerHeight } = this.state; const { experiment, expDrawerHeight } = this.state;
return ( return (
......
...@@ -33,19 +33,19 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> { ...@@ -33,19 +33,19 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> {
}; };
} }
downloadNNImanager = () => { downloadNNImanager = (): void => {
if (this.state.nniManagerLogStr !== null) { if (this.state.nniManagerLogStr !== null) {
downFile(this.state.nniManagerLogStr, 'nnimanager.log'); downFile(this.state.nniManagerLogStr, 'nnimanager.log');
} }
} }
downloadDispatcher = () => { downloadDispatcher = (): void => {
if (this.state.dispatcherLogStr !== null) { if (this.state.dispatcherLogStr !== null) {
downFile(this.state.dispatcherLogStr, 'dispatcher.log'); downFile(this.state.dispatcherLogStr, 'dispatcher.log');
} }
} }
dispatcherHTML = () => { dispatcherHTML = (): any => {
return ( return (
<div> <div>
<span>Dispatcher Log</span> <span>Dispatcher Log</span>
...@@ -56,7 +56,7 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> { ...@@ -56,7 +56,7 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> {
); );
} }
nnimanagerHTML = () => { nnimanagerHTML = (): any => {
return ( return (
<div> <div>
<span>NNImanager Log</span> <span>NNImanager Log</span>
...@@ -65,21 +65,21 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> { ...@@ -65,21 +65,21 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> {
); );
} }
setLogDrawerHeight = () => { setLogDrawerHeight = (): void => {
this.setState(() => ({ logDrawerHeight: window.innerHeight - 48 })); this.setState(() => ({ logDrawerHeight: window.innerHeight - 48 }));
} }
async componentDidMount() { async componentDidMount(): Promise<void> {
this.refresh(); this.refresh();
window.addEventListener('resize', this.setLogDrawerHeight); window.addEventListener('resize', this.setLogDrawerHeight);
} }
componentWillUnmount() { componentWillUnmount(): void {
window.clearTimeout(this.timerId); window.clearTimeout(this.timerId);
window.removeEventListener('resize', this.setLogDrawerHeight); window.removeEventListener('resize', this.setLogDrawerHeight);
} }
render() { render(): React.ReactNode {
const { closeDrawer, activeTab } = this.props; const { closeDrawer, activeTab } = this.props;
const { nniManagerLogStr, dispatcherLogStr, isLoading, logDrawerHeight } = this.state; const { nniManagerLogStr, dispatcherLogStr, isLoading, logDrawerHeight } = this.state;
return ( return (
...@@ -164,7 +164,7 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> { ...@@ -164,7 +164,7 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> {
); );
} }
private refresh = () => { private refresh = (): void => {
window.clearTimeout(this.timerId); window.clearTimeout(this.timerId);
const dispatcherPromise = axios.get(`${DOWNLOAD_IP}/dispatcher.log`); const dispatcherPromise = axios.get(`${DOWNLOAD_IP}/dispatcher.log`);
const nniManagerPromise = axios.get(`${DOWNLOAD_IP}/nnimanager.log`); const nniManagerPromise = axios.get(`${DOWNLOAD_IP}/nnimanager.log`);
...@@ -184,7 +184,7 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> { ...@@ -184,7 +184,7 @@ class LogDrawer extends React.Component<LogDrawerProps, LogDrawerState> {
}); });
} }
private manualRefresh = () => { private manualRefresh = (): void => {
this.setState({ isLoading: true }); this.setState({ isLoading: true });
this.refresh(); this.refresh();
} }
......
...@@ -35,30 +35,31 @@ class Overview extends React.Component<OverviewProps, OverviewState> { ...@@ -35,30 +35,31 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
}; };
} }
clickMaxTop = (event: React.SyntheticEvent<EventTarget>) => { clickMaxTop = (event: React.SyntheticEvent<EventTarget>): void => {
event.stopPropagation(); event.stopPropagation();
// #999 panel active bgcolor; #b3b3b3 as usual // #999 panel active bgcolor; #b3b3b3 as usual
const { changeMetricGraphMode } = this.props; const { changeMetricGraphMode } = this.props;
changeMetricGraphMode('max'); changeMetricGraphMode('max');
} }
clickMinTop = (event: React.SyntheticEvent<EventTarget>) => { clickMinTop = (event: React.SyntheticEvent<EventTarget>): void => {
event.stopPropagation(); event.stopPropagation();
const { changeMetricGraphMode } = this.props; const { changeMetricGraphMode } = this.props;
changeMetricGraphMode('min'); changeMetricGraphMode('min');
} }
changeConcurrency = (val: number) => { changeConcurrency = (val: number): void => {
this.setState({ trialConcurrency: val }); this.setState({ trialConcurrency: val });
} }
render() { render(): React.ReactNode {
const { trialConcurrency } = this.state; const { trialConcurrency } = this.state;
const { experimentUpdateBroadcast, metricGraphMode } = this.props; const { experimentUpdateBroadcast, metricGraphMode } = this.props;
const searchSpace = this.convertSearchSpace(); const searchSpace = this.convertSearchSpace();
const bestTrials = this.findBestTrials(); const bestTrials = this.findBestTrials();
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const bestAccuracy = bestTrials.length > 0 ? bestTrials[0].accuracy! : NaN; const bestAccuracy = bestTrials.length > 0 ? bestTrials[0].accuracy! : NaN;
const accuracyGraphData = this.generateAccuracyGraph(bestTrials); const accuracyGraphData = this.generateAccuracyGraph(bestTrials);
const noDataMessage = bestTrials.length > 0 ? '' : 'No data'; const noDataMessage = bestTrials.length > 0 ? '' : 'No data';
...@@ -147,7 +148,7 @@ class Overview extends React.Component<OverviewProps, OverviewState> { ...@@ -147,7 +148,7 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
const searchSpace = Object.assign({}, EXPERIMENT.searchSpace); const searchSpace = Object.assign({}, EXPERIMENT.searchSpace);
Object.keys(searchSpace).map(item => { Object.keys(searchSpace).map(item => {
const key = searchSpace[item]._type; const key = searchSpace[item]._type;
let value = searchSpace[item]._value; const value = searchSpace[item]._value;
switch (key) { switch (key) {
case 'quniform': case 'quniform':
case 'qnormal': case 'qnormal':
...@@ -161,7 +162,7 @@ class Overview extends React.Component<OverviewProps, OverviewState> { ...@@ -161,7 +162,7 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
} }
private findBestTrials(): Trial[] { private findBestTrials(): Trial[] {
let bestTrials = TRIALS.sort(); const bestTrials = TRIALS.sort();
if (this.props.metricGraphMode === 'max') { if (this.props.metricGraphMode === 'max') {
bestTrials.reverse().splice(10); bestTrials.reverse().splice(10);
} else { } else {
......
...@@ -50,7 +50,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -50,7 +50,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
}; };
} }
getNNIversion = () => { getNNIversion = (): void => {
axios(`${MANAGER_IP}/version`, { axios(`${MANAGER_IP}/version`, {
method: 'GET' method: 'GET'
}) })
...@@ -61,7 +61,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -61,7 +61,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
}); });
} }
handleMenuClick = (e: EventPer) => { handleMenuClick = (e: EventPer): void => {
this.setState({ menuVisible: false }); this.setState({ menuVisible: false });
switch (e.key) { switch (e.key) {
// to see & download experiment parameters // to see & download experiment parameters
...@@ -87,11 +87,11 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -87,11 +87,11 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
} }
} }
handleVisibleChange = (flag: boolean) => { handleVisibleChange = (flag: boolean): void => {
this.setState({ menuVisible: flag }); this.setState({ menuVisible: flag });
} }
getInterval = (value: string) => { getInterval = (value: string): void => {
if (value === 'close') { if (value === 'close') {
this.props.changeInterval(0); this.props.changeInterval(0);
} else { } else {
...@@ -99,7 +99,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -99,7 +99,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
} }
} }
menu = () => { menu = (): any => {
return ( return (
<Menu onClick={this.handleMenuClick}> <Menu onClick={this.handleMenuClick}>
<Menu.Item key="1">Experiment Parameters</Menu.Item> <Menu.Item key="1">Experiment Parameters</Menu.Item>
...@@ -110,14 +110,14 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -110,14 +110,14 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
} }
// nav bar // nav bar
navigationBar = () => { navigationBar = (): any => {
const { version } = this.state; const { version } = this.state;
const feedBackLink = `https://github.com/Microsoft/nni/issues/new?labels=${version}`; const feedBackLink = `https://github.com/Microsoft/nni/issues/new?labels=${version}`;
return ( return (
<Menu onClick={this.handleMenuClick} className="menu-list" style={{ width: 216 }}> <Menu onClick={this.handleMenuClick} className="menu-list" style={{ width: 216 }}>
{/* <Menu onClick={this.handleMenuClick} className="menu-list" style={{width: window.innerWidth}}> */} {/* <Menu onClick={this.handleMenuClick} className="menu-list" style={{width: window.innerWidth}}> */}
<Menu.Item key="feedback"> <Menu.Item key="feedback">
<a href={feedBackLink} target="_blank">Feedback</a> <a href={feedBackLink} rel="noopener noreferrer" target="_blank">Feedback</a>
</Menu.Item> </Menu.Item>
<Menu.Item key="version">Version: {version}</Menu.Item> <Menu.Item key="version">Version: {version}</Menu.Item>
<SubMenu <SubMenu
...@@ -137,7 +137,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -137,7 +137,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
); );
} }
mobileTabs = () => { mobileTabs = (): any => {
return ( return (
// <Menu className="menuModal" style={{width: 880, position: 'fixed', left: 0, top: 56}}> // <Menu className="menuModal" style={{width: 880, position: 'fixed', left: 0, top: 56}}>
<Menu className="menuModal" style={{ padding: '0 10px' }}> <Menu className="menuModal" style={{ padding: '0 10px' }}>
...@@ -147,7 +147,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -147,7 +147,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
); );
} }
refreshInterval = () => { refreshInterval = (): any => {
const { const {
form: { getFieldDecorator }, form: { getFieldDecorator },
// form: { getFieldDecorator, getFieldValue }, // form: { getFieldDecorator, getFieldValue },
...@@ -171,7 +171,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -171,7 +171,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
); );
} }
select = () => { select = (): any => {
const { isdisabledFresh } = this.state; const { isdisabledFresh } = this.state;
return ( return (
...@@ -189,7 +189,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -189,7 +189,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
); );
} }
fresh = (event: React.SyntheticEvent<EventTarget>) => { fresh = (event: React.SyntheticEvent<EventTarget>): void => {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
this.setState({ isdisabledFresh: true }, () => { this.setState({ isdisabledFresh: true }, () => {
...@@ -197,7 +197,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -197,7 +197,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
}); });
} }
desktopHTML = () => { desktopHTML = (): any => {
const { version, menuVisible } = this.state; const { version, menuVisible } = this.state;
const feed = `https://github.com/Microsoft/nni/issues/new?labels=${version}`; const feed = `https://github.com/Microsoft/nni/issues/new?labels=${version}`;
return ( return (
...@@ -213,7 +213,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -213,7 +213,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
className="fresh" className="fresh"
type="ghost" type="ghost"
> >
<a target="_blank" href="https://nni.readthedocs.io/en/latest/Tutorial/WebUI.html"> <a target="_blank" rel="noopener noreferrer" href="https://nni.readthedocs.io/en/latest/Tutorial/WebUI.html">
<img <img
src={require('../static/img/icon/ques.png')} src={require('../static/img/icon/ques.png')}
alt="question" alt="question"
...@@ -246,7 +246,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -246,7 +246,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
</Dropdown> </Dropdown>
</span> </span>
<span className="feedback"> <span className="feedback">
<a href={feed} target="_blank"> <a href={feed} target="_blank" rel="noopener noreferrer">
<img <img
src={require('../static/img/icon/issue.png')} src={require('../static/img/icon/issue.png')}
alt="NNI github issue" alt="NNI github issue"
...@@ -260,7 +260,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -260,7 +260,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
); );
} }
tabeltHTML = () => { tabeltHTML = (): any => {
return ( return (
<Row className="nav"> <Row className="nav">
<Col className="tabelt-left" span={14}> <Col className="tabelt-left" span={14}>
...@@ -280,7 +280,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -280,7 +280,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
); );
} }
mobileHTML = () => { mobileHTML = (): any => {
const { isdisabledFresh } = this.state; const { isdisabledFresh } = this.state;
return ( return (
<Row className="nav"> <Row className="nav">
...@@ -319,20 +319,20 @@ class SlideBar extends React.Component<SliderProps, SliderState> { ...@@ -319,20 +319,20 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
); );
} }
// close log drawer (nnimanager.dispatcher) // close log drawer (nnimanager.dispatcher)
closeLogDrawer = () => { closeLogDrawer = (): void => {
this.setState({ isvisibleLogDrawer: false, activeKey: '' }); this.setState({ isvisibleLogDrawer: false, activeKey: '' });
} }
// close download experiment parameters drawer // close download experiment parameters drawer
closeExpDrawer = () => { closeExpDrawer = (): void => {
this.setState({ isvisibleExperimentDrawer: false }); this.setState({ isvisibleExperimentDrawer: false });
} }
componentDidMount() { componentDidMount(): void {
this.getNNIversion(); this.getNNIversion();
} }
render() { render(): React.ReactNode {
const mobile = (<MediaQuery maxWidth={884}>{this.mobileHTML()}</MediaQuery>); const mobile = (<MediaQuery maxWidth={884}>{this.mobileHTML()}</MediaQuery>);
const tablet = (<MediaQuery minWidth={885} maxWidth={1281}>{this.tabeltHTML()}</MediaQuery>); const tablet = (<MediaQuery minWidth={885} maxWidth={1281}>{this.tabeltHTML()}</MediaQuery>);
const desktop = (<MediaQuery minWidth={1282}>{this.desktopHTML()}</MediaQuery>); const desktop = (<MediaQuery minWidth={1282}>{this.desktopHTML()}</MediaQuery>);
......
...@@ -60,13 +60,15 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState> ...@@ -60,13 +60,15 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
tablePageSize: 20, tablePageSize: 20,
whichGraph: '1', whichGraph: '1',
searchType: 'id', searchType: 'id',
searchFilter: trial => true, // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/no-unused-vars
searchFilter: trial => true
}; };
} }
// search a trial by trial No. & trial id // search a trial by trial No. & trial id
searchTrial = (event: React.ChangeEvent<HTMLInputElement>) => { searchTrial = (event: React.ChangeEvent<HTMLInputElement>): void => {
const targetValue = event.target.value; const targetValue = event.target.value;
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/no-unused-vars
let filter = (trial: Trial) => true; let filter = (trial: Trial) => true;
if (!targetValue.trim()) { if (!targetValue.trim()) {
this.setState({ searchFilter: filter }); this.setState({ searchFilter: filter });
...@@ -74,17 +76,17 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState> ...@@ -74,17 +76,17 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
} }
switch (this.state.searchType) { switch (this.state.searchType) {
case 'id': case 'id':
filter = trial => trial.info.id.toUpperCase().includes(targetValue.toUpperCase()); filter = (trial): boolean => trial.info.id.toUpperCase().includes(targetValue.toUpperCase());
break; break;
case 'Trial No.': case 'Trial No.':
filter = trial => trial.info.sequenceId.toString() === targetValue; filter = (trial): boolean => trial.info.sequenceId.toString() === targetValue;
break; break;
case 'status': case 'status':
filter = trial => trial.info.status.toUpperCase().includes(targetValue.toUpperCase()); filter = (trial): boolean => trial.info.status.toUpperCase().includes(targetValue.toUpperCase());
break; break;
case 'parameters': case 'parameters':
// TODO: support filters like `x: 2` (instead of `"x": 2`) // TODO: support filters like `x: 2` (instead of `"x": 2`)
filter = trial => JSON.stringify(trial.info.hyperParameters, null, 4).includes(targetValue); filter = (trial): boolean => JSON.stringify(trial.info.hyperParameters, null, 4).includes(targetValue);
break; break;
default: default:
alert(`Unexpected search filter ${this.state.searchType}`); alert(`Unexpected search filter ${this.state.searchType}`);
...@@ -92,15 +94,15 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState> ...@@ -92,15 +94,15 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
this.setState({ searchFilter: filter }); this.setState({ searchFilter: filter });
} }
handleTablePageSizeSelect = (value: string) => { handleTablePageSizeSelect = (value: string): void => {
this.setState({ tablePageSize: value === 'all' ? -1 : parseInt(value, 10) }); this.setState({ tablePageSize: value === 'all' ? -1 : parseInt(value, 10) });
} }
handleWhichTabs = (activeKey: string) => { handleWhichTabs = (activeKey: string): void => {
this.setState({ whichGraph: activeKey }); this.setState({ whichGraph: activeKey });
} }
updateSearchFilterType = (value: string) => { updateSearchFilterType = (value: string): void => {
// clear input value and re-render table // clear input value and re-render table
if (this.searchInput !== null) { if (this.searchInput !== null) {
this.searchInput.value = ''; this.searchInput.value = '';
...@@ -108,7 +110,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState> ...@@ -108,7 +110,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
this.setState({ searchType: value }); this.setState({ searchType: value });
} }
render() { render(): React.ReactNode {
const { tablePageSize, whichGraph } = this.state; const { tablePageSize, whichGraph } = this.state;
const { columnList, changeColumn } = this.props; const { columnList, changeColumn } = this.props;
const source = TRIALS.filter(this.state.searchFilter); const source = TRIALS.filter(this.state.searchFilter);
...@@ -163,14 +165,14 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState> ...@@ -163,14 +165,14 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
<Col span={14} className="right"> <Col span={14} className="right">
<Button <Button
className="common" className="common"
onClick={() => { if (this.tableList) { this.tableList.addColumn(); }}} onClick={(): void => { if (this.tableList) { this.tableList.addColumn(); }}}
> >
Add column Add column
</Button> </Button>
<Button <Button
className="mediateBtn common" className="mediateBtn common"
// use child-component tableList's function, the function is in child-component. // use child-component tableList's function, the function is in child-component.
onClick={() => { if (this.tableList) { this.tableList.compareBtn(); }}} onClick={(): void => { if (this.tableList) { this.tableList.compareBtn(); }}}
> >
Compare Compare
</Button> </Button>
...@@ -186,6 +188,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState> ...@@ -186,6 +188,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
placeholder={`Search by ${this.state.searchType}`} placeholder={`Search by ${this.state.searchType}`}
onChange={this.searchTrial} onChange={this.searchTrial}
style={{ width: 230 }} style={{ width: 230 }}
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
ref={text => (this.searchInput) = text} ref={text => (this.searchInput) = text}
/> />
</Col> </Col>
...@@ -196,7 +199,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState> ...@@ -196,7 +199,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
columnList={columnList} columnList={columnList}
changeColumn={changeColumn} changeColumn={changeColumn}
trialsUpdateBroadcast={this.props.trialsUpdateBroadcast} trialsUpdateBroadcast={this.props.trialsUpdateBroadcast}
ref={(tabList) => this.tableList = tabList} ref={(tabList) => this.tableList = tabList} // eslint-disable-line @typescript-eslint/explicit-function-return-type
/> />
</div> </div>
); );
......
...@@ -21,7 +21,7 @@ class Accuracy extends React.Component<AccuracyProps, {}> { ...@@ -21,7 +21,7 @@ class Accuracy extends React.Component<AccuracyProps, {}> {
} }
render() { render(): React.ReactNode {
const { accNodata, accuracyData, height } = this.props; const { accNodata, accuracyData, height } = this.props;
return ( return (
<div> <div>
......
...@@ -12,7 +12,7 @@ class BasicInfo extends React.Component<BasicInfoProps, {}> { ...@@ -12,7 +12,7 @@ class BasicInfo extends React.Component<BasicInfoProps, {}> {
super(props); super(props);
} }
render() { render(): React.ReactNode {
return ( return (
<Row className="main"> <Row className="main">
<Col span={8} className="padItem basic"> <Col span={8} className="padItem basic">
......
...@@ -18,22 +18,22 @@ class ConcurrencyInput extends React.Component<ConcurrencyInputProps, Concurrenc ...@@ -18,22 +18,22 @@ class ConcurrencyInput extends React.Component<ConcurrencyInputProps, Concurrenc
this.state = { editting: false }; this.state = { editting: false };
} }
save = () => { save = (): void => {
if (this.input.current !== null) { if (this.input.current !== null) {
this.props.updateValue(this.input.current.value); this.props.updateValue(this.input.current.value);
this.setState({ editting: false }); this.setState({ editting: false });
} }
} }
cancel = () => { cancel = (): void => {
this.setState({ editting: false }); this.setState({ editting: false });
} }
edit = () => { edit = (): void => {
this.setState({ editting: true }); this.setState({ editting: true });
} }
render() { render(): React.ReactNode {
if (this.state.editting) { if (this.state.editting) {
return ( return (
<Row className="inputBox"> <Row className="inputBox">
......
...@@ -29,7 +29,7 @@ class Progressed extends React.Component<ProgressProps, ProgressState> { ...@@ -29,7 +29,7 @@ class Progressed extends React.Component<ProgressProps, ProgressState> {
}; };
} }
editTrialConcurrency = async (userInput: string) => { editTrialConcurrency = async (userInput: string): Promise<void> => {
if (!userInput.match(/^[1-9]\d*$/)) { if (!userInput.match(/^[1-9]\d*$/)) {
message.error('Please enter a positive integer!', 2); message.error('Please enter a positive integer!', 2);
return; return;
...@@ -46,6 +46,7 @@ class Progressed extends React.Component<ProgressProps, ProgressState> { ...@@ -46,6 +46,7 @@ class Progressed extends React.Component<ProgressProps, ProgressState> {
// rest api, modify trial concurrency value // rest api, modify trial concurrency value
try { try {
const res = await axios.put(`${MANAGER_IP}/experiment`, newProfile, { const res = await axios.put(`${MANAGER_IP}/experiment`, newProfile, {
// eslint-disable-next-line @typescript-eslint/camelcase
params: { update_type: 'TRIAL_CONCURRENCY' } params: { update_type: 'TRIAL_CONCURRENCY' }
}); });
if (res.status === 200) { if (res.status === 200) {
...@@ -66,20 +67,22 @@ class Progressed extends React.Component<ProgressProps, ProgressState> { ...@@ -66,20 +67,22 @@ class Progressed extends React.Component<ProgressProps, ProgressState> {
} }
} }
isShowDrawer = () => { isShowDrawer = (): void => {
this.setState({ isShowLogDrawer: true }); this.setState({ isShowLogDrawer: true });
} }
closeDrawer = () => { closeDrawer = (): void => {
this.setState({ isShowLogDrawer: false }); this.setState({ isShowLogDrawer: false });
} }
render() { render(): React.ReactNode {
const { bestAccuracy } = this.props; const { bestAccuracy } = this.props;
const { isShowLogDrawer } = this.state; const { isShowLogDrawer } = this.state;
const count = TRIALS.countStatus(); const count = TRIALS.countStatus();
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const stoppedCount = count.get('USER_CANCELED')! + count.get('SYS_CANCELED')! + count.get('EARLY_STOPPED')!; const stoppedCount = count.get('USER_CANCELED')! + count.get('SYS_CANCELED')! + count.get('EARLY_STOPPED')!;
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const bar2 = count.get('RUNNING')! + count.get('SUCCEEDED')! + count.get('FAILED')! + stoppedCount; const bar2 = count.get('RUNNING')! + count.get('SUCCEEDED')! + count.get('FAILED')! + stoppedCount;
const bar2Percent = (bar2 / EXPERIMENT.profile.params.maxTrialNum) * 100; const bar2Percent = (bar2 / EXPERIMENT.profile.params.maxTrialNum) * 100;
...@@ -98,6 +101,7 @@ class Progressed extends React.Component<ProgressProps, ProgressState> { ...@@ -98,6 +101,7 @@ class Progressed extends React.Component<ProgressProps, ProgressState> {
</div> </div>
); );
} }
return ( return (
<Row className="progress" id="barBack"> <Row className="progress" id="barBack">
<Row className="basic lineBasic"> <Row className="basic lineBasic">
......
...@@ -16,7 +16,7 @@ class ProgressBar extends React.Component<ProItemProps, {}> { ...@@ -16,7 +16,7 @@ class ProgressBar extends React.Component<ProItemProps, {}> {
} }
render() { render(): React.ReactNode {
const { who, percent, description, maxString, bgclass } = this.props; const { who, percent, description, maxString, bgclass } = this.props;
return ( return (
...@@ -31,7 +31,7 @@ class ProgressBar extends React.Component<ProItemProps, {}> { ...@@ -31,7 +31,7 @@ class ProgressBar extends React.Component<ProItemProps, {}> {
percent={percent} percent={percent}
strokeWidth={30} strokeWidth={30}
// strokeLinecap={'square'} // strokeLinecap={'square'}
format={() => description} format={(): string => description}
/> />
</div> </div>
<Row className="description"> <Row className="description">
......
...@@ -13,7 +13,7 @@ class SearchSpace extends React.Component<SearchspaceProps, {}> { ...@@ -13,7 +13,7 @@ class SearchSpace extends React.Component<SearchspaceProps, {}> {
} }
render() { render(): React.ReactNode {
const { searchSpace } = this.props; const { searchSpace } = this.props;
return ( return (
<div className="searchSpace"> <div className="searchSpace">
......
...@@ -12,7 +12,7 @@ interface SuccessTableProps { ...@@ -12,7 +12,7 @@ interface SuccessTableProps {
trialIds: string[]; trialIds: string[];
} }
function openRow(record: TableRecord) { function openRow(record: TableRecord): any {
return ( return (
<OpenRow trialId={record.id} /> <OpenRow trialId={record.id} />
); );
...@@ -23,7 +23,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> { ...@@ -23,7 +23,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> {
super(props); super(props);
} }
render() { render(): React.ReactNode {
const columns = [ const columns = [
{ {
title: 'Trial No.', title: 'Trial No.',
...@@ -35,7 +35,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> { ...@@ -35,7 +35,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> {
dataIndex: 'id', dataIndex: 'id',
width: 60, width: 60,
className: 'tableHead leftTitle', className: 'tableHead leftTitle',
render: (text: string, record: TableRecord) => { render: (text: string, record: TableRecord): React.ReactNode => {
return ( return (
<div>{record.id}</div> <div>{record.id}</div>
); );
...@@ -44,7 +44,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> { ...@@ -44,7 +44,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> {
title: 'Duration', title: 'Duration',
dataIndex: 'duration', dataIndex: 'duration',
width: 140, width: 140,
render: (text: string, record: TableRecord) => { render: (text: string, record: TableRecord): React.ReactNode => {
return ( return (
<div className="durationsty"><div>{convertDuration(record.duration)}</div></div> <div className="durationsty"><div>{convertDuration(record.duration)}</div></div>
); );
...@@ -54,7 +54,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> { ...@@ -54,7 +54,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> {
dataIndex: 'status', dataIndex: 'status',
width: 150, width: 150,
className: 'tableStatus', className: 'tableStatus',
render: (text: string, record: TableRecord) => { render: (text: string, record: TableRecord): React.ReactNode => {
return ( return (
<div className={`${record.status} commonStyle`}>{record.status}</div> <div className={`${record.status} commonStyle`}>{record.status}</div>
); );
...@@ -62,7 +62,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> { ...@@ -62,7 +62,7 @@ class SuccessTable extends React.Component<SuccessTableProps, {}> {
}, { }, {
title: 'Default metric', title: 'Default metric',
dataIndex: 'accuracy', dataIndex: 'accuracy',
render: (text: string, record: TableRecord) => { render: (text: string, record: TableRecord): React.ReactNode => {
return ( return (
<DefaultMetric trialId={record.id} /> <DefaultMetric trialId={record.id} />
); );
......
...@@ -12,7 +12,7 @@ class Title1 extends React.Component<Title1Props, {}> { ...@@ -12,7 +12,7 @@ class Title1 extends React.Component<Title1Props, {}> {
super(props); super(props);
} }
render() { render(): React.ReactNode {
const { text, icon, bgcolor } = this.props; const { text, icon, bgcolor } = this.props;
return ( return (
<div> <div>
......
...@@ -14,12 +14,12 @@ class TrialInfo extends React.Component<TrialInfoProps, {}> { ...@@ -14,12 +14,12 @@ class TrialInfo extends React.Component<TrialInfoProps, {}> {
super(props); super(props);
} }
render() { render(): React.ReactNode {
const blacklist = [ const blacklist = [
'id', 'logDir', 'startTime', 'endTime', 'id', 'logDir', 'startTime', 'endTime',
'experimentName', 'searchSpace', 'trainingServicePlatform' 'experimentName', 'searchSpace', 'trainingServicePlatform'
]; ];
const filter = (key: string, val: any) => { const filter = (key: string, val: any): any => {
if (key === 'trialConcurrency') { if (key === 'trialConcurrency') {
return this.props.concurrency; return this.props.concurrency;
} }
......
...@@ -11,7 +11,7 @@ class DefaultMetric extends React.Component<DefaultMetricProps, {}> { ...@@ -11,7 +11,7 @@ class DefaultMetric extends React.Component<DefaultMetricProps, {}> {
super(props); super(props);
} }
render() { render(): React.ReactNode {
const accuracy = TRIALS.getTrial(this.props.trialId).accuracy; const accuracy = TRIALS.getTrial(this.props.trialId).accuracy;
return ( return (
<div>{accuracy !== undefined ? formatAccuracy(accuracy) : '--'}</div> <div>{accuracy !== undefined ? formatAccuracy(accuracy) : '--'}</div>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment