- optimization curve
+ Optimization curve
diff --git a/src/webui/src/components/trial-detail/TableList.tsx b/src/webui/src/components/trial-detail/TableList.tsx
index 98222914dd..a1af9be602 100644
--- a/src/webui/src/components/trial-detail/TableList.tsx
+++ b/src/webui/src/components/trial-detail/TableList.tsx
@@ -4,7 +4,7 @@ import ReactEcharts from 'echarts-for-react';
import { Row, Table, Button, Popconfirm, Modal, Checkbox, Select, Icon } from 'antd';
const Option = Select.Option;
const CheckboxGroup = Checkbox.Group;
-import { MANAGER_IP, trialJobStatus, COLUMN, COLUMN_INDEX, COLUMNPro } from '../../static/const';
+import { MANAGER_IP, trialJobStatus, COLUMN_INDEX, COLUMNPro } from '../../static/const';
import { convertDuration, intermediateGraphOption, killJob, filterByStatus } from '../../static/function';
import { TableObj, TrialJob } from '../../static/interface';
import OpenRow from '../public-child/OpenRow';
@@ -32,6 +32,8 @@ interface TableListProps {
platform: string;
logCollection: boolean;
isMultiPhase: boolean;
+ columnList: Array
; // user select columnKeys
+ changeColumn: (val: Array) => void;
}
interface TableListState {
@@ -39,7 +41,6 @@ interface TableListState {
modalVisible: boolean;
isObjFinal: boolean;
isShowColumn: boolean;
- columnSelected: Array; // user select columnKeys
selectRows: Array;
isShowCompareModal: boolean;
selectedRowKeys: string[] | number[];
@@ -69,7 +70,6 @@ class TableList extends React.Component {
isObjFinal: false,
isShowColumn: false,
isShowCompareModal: false,
- columnSelected: COLUMN,
selectRows: [],
selectedRowKeys: [], // close selected trial message after modal closed
intermediateData: [],
@@ -120,6 +120,8 @@ class TableList extends React.Component {
}
}
+ // intermediate button click -> intermediate graph for each trial
+ // support intermediate is dict
selectOtherKeys = (value: string) => {
const isShowDefault: boolean = value === 'default' ? true : false;
@@ -226,7 +228,7 @@ class TableList extends React.Component {
});
if (this._isMounted) {
- this.setState(() => ({ columnSelected: wantResult }));
+ this.props.changeColumn(wantResult);
}
}
@@ -277,8 +279,8 @@ class TableList extends React.Component {
render() {
- const { entries, tableSource, updateList } = this.props;
- const { intermediateOption, modalVisible, isShowColumn, columnSelected,
+ const { entries, tableSource, updateList, columnList } = this.props;
+ const { intermediateOption, modalVisible, isShowColumn,
selectRows, isShowCompareModal, selectedRowKeys, intermediateOtherKeys } = this.state;
const rowSelection = {
selectedRowKeys: selectedRowKeys,
@@ -316,8 +318,8 @@ class TableList extends React.Component {
value: item
});
});
- Object.keys(columnSelected).map(key => {
- const item = columnSelected[key];
+ Object.keys(columnList).map(key => {
+ const item = columnList[key];
switch (item) {
case 'Trial No.':
showColumn.push({
@@ -413,13 +415,12 @@ class TableList extends React.Component {
key: 'acc',
width: 120,
sorter: (a: TableObj, b: TableObj) => {
- const aa = a.description.intermediate;
- const bb = b.description.intermediate;
- if (aa !== undefined && bb !== undefined) {
- return aa[aa.length - 1] - bb[bb.length - 1];
- } else {
- return NaN;
- }
+ const oneArr = a.description.intermediate;
+ const otherArr = b.description.intermediate;
+ const one = (oneArr[oneArr.length - 1] !== undefined) ? oneArr[oneArr.length - 1] : 0;
+ const other = (otherArr[otherArr.length - 1] !== undefined)
+ ? otherArr[otherArr.length - 1] : 0;
+ return one - other;
},
render: (text: string, record: TableObj) => {
return (
@@ -581,7 +582,8 @@ class TableList extends React.Component {
>
diff --git a/src/webui/src/static/interface.ts b/src/webui/src/static/interface.ts
index 3d004eddfd..15349e23ab 100644
--- a/src/webui/src/static/interface.ts
+++ b/src/webui/src/static/interface.ts
@@ -27,7 +27,7 @@ interface Parameters {
parameters: ErrorParameter;
logPath?: string;
intermediate: Array;
- progress?: number;
+ multiProgress?: number;
}
interface Experiment {
diff --git a/tools/nni_cmd/config_schema.py b/tools/nni_cmd/config_schema.py
index 5118c793b7..f09786664b 100644
--- a/tools/nni_cmd/config_schema.py
+++ b/tools/nni_cmd/config_schema.py
@@ -233,8 +233,7 @@ def setPathCheck(key):
'cpuNum': setNumberRange('cpuNum', int, 0, 99999),
'memoryMB': setType('memoryMB', int),
'image': setType('image', str),
- Optional('authFile'): And(Regex(r'hdfs://(([0-9]{1,3}.){3}[0-9]{1,3})(:[0-9]{2,5})?(/.*)?'),\
- error='ERROR: authFile format error, authFile format is hdfs://xxx.xxx.xxx.xxx:xxx'),
+ Optional('authFile'): And(os.path.exists, error=SCHEMA_PATH_ERROR % 'authFile'),
Optional('shmMB'): setType('shmMB', int),
Optional('dataDir'): And(Regex(r'hdfs://(([0-9]{1,3}.){3}[0-9]{1,3})(:[0-9]{2,5})?(/.*)?'),\
error='ERROR: dataDir format error, dataDir format is hdfs://xxx.xxx.xxx.xxx:xxx'),