Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
nni
Commits
56be400c
Commit
56be400c
authored
Dec 23, 2019
by
Lijiao
Committed by
Yan Ni
Dec 23, 2019
Browse files
[webui] eslint fix (#1864)
parent
f9580cd1
Changes
39
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
120 additions
and
111 deletions
+120
-111
azure-pipelines.yml
azure-pipelines.yml
+2
-2
src/webui/.eslintrc
src/webui/.eslintrc
+2
-1
src/webui/src/App.tsx
src/webui/src/App.tsx
+7
-7
src/webui/src/components/Modal/Compare.tsx
src/webui/src/components/Modal/Compare.tsx
+10
-10
src/webui/src/components/Modal/CustomizedTrial.tsx
src/webui/src/components/Modal/CustomizedTrial.tsx
+11
-11
src/webui/src/components/Modal/ExperimentDrawer.tsx
src/webui/src/components/Modal/ExperimentDrawer.tsx
+8
-8
src/webui/src/components/Modal/LogDrawer.tsx
src/webui/src/components/Modal/LogDrawer.tsx
+10
-10
src/webui/src/components/Overview.tsx
src/webui/src/components/Overview.tsx
+7
-6
src/webui/src/components/SlideBar.tsx
src/webui/src/components/SlideBar.tsx
+20
-20
src/webui/src/components/TrialsDetail.tsx
src/webui/src/components/TrialsDetail.tsx
+16
-13
src/webui/src/components/overview/Accuracy.tsx
src/webui/src/components/overview/Accuracy.tsx
+1
-1
src/webui/src/components/overview/BasicInfo.tsx
src/webui/src/components/overview/BasicInfo.tsx
+1
-1
src/webui/src/components/overview/NumInput.tsx
src/webui/src/components/overview/NumInput.tsx
+4
-4
src/webui/src/components/overview/Progress.tsx
src/webui/src/components/overview/Progress.tsx
+8
-4
src/webui/src/components/overview/ProgressItem.tsx
src/webui/src/components/overview/ProgressItem.tsx
+2
-2
src/webui/src/components/overview/SearchSpace.tsx
src/webui/src/components/overview/SearchSpace.tsx
+1
-1
src/webui/src/components/overview/SuccessTable.tsx
src/webui/src/components/overview/SuccessTable.tsx
+6
-6
src/webui/src/components/overview/Title1.tsx
src/webui/src/components/overview/Title1.tsx
+1
-1
src/webui/src/components/overview/TrialProfile.tsx
src/webui/src/components/overview/TrialProfile.tsx
+2
-2
src/webui/src/components/public-child/DefaultMetrc.tsx
src/webui/src/components/public-child/DefaultMetrc.tsx
+1
-1
No files found.
azure-pipelines.yml
View file @
56be400c
...
@@ -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
...
...
src/webui/.eslintrc
View file @
56be400c
...
@@ -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/",
...
...
src/webui/src/App.tsx
View file @
56be400c
...
@@ -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
}));
...
...
src/webui/src/components/Modal/Compare.tsx
View file @
56be400c
...
@@ -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
(
...
...
src/webui/src/components/Modal/CustomizedTrial.tsx
View file @
56be400c
...
@@ -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
(
le
t
i
in
customized
)
{
for
(
cons
t
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
{
...
...
src/webui/src/components/Modal/ExperimentDrawer.tsx
View file @
56be400c
...
@@ -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
);
}
}
le
t
trialMessagesArr
=
res1
.
data
;
cons
t
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
(
...
...
src/webui/src/components/Modal/LogDrawer.tsx
View file @
56be400c
...
@@ -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
();
}
}
...
...
src/webui/src/components/Overview.tsx
View file @
56be400c
...
@@ -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
;
le
t
value
=
searchSpace
[
item
].
_value
;
cons
t
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
[]
{
le
t
bestTrials
=
TRIALS
.
sort
();
cons
t
bestTrials
=
TRIALS
.
sort
();
if
(
this
.
props
.
metricGraphMode
===
'
max
'
)
{
if
(
this
.
props
.
metricGraphMode
===
'
max
'
)
{
bestTrials
.
reverse
().
splice
(
10
);
bestTrials
.
reverse
().
splice
(
10
);
}
else
{
}
else
{
...
...
src/webui/src/components/SlideBar.tsx
View file @
56be400c
...
@@ -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
>);
...
...
src/webui/src/components/TrialsDetail.tsx
View file @
56be400c
...
@@ -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
>
);
);
...
...
src/webui/src/components/overview/Accuracy.tsx
View file @
56be400c
...
@@ -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
>
...
...
src/webui/src/components/overview/BasicInfo.tsx
View file @
56be400c
...
@@ -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"
>
...
...
src/webui/src/components/overview/NumInput.tsx
View file @
56be400c
...
@@ -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"
>
...
...
src/webui/src/components/overview/Progress.tsx
View file @
56be400c
...
@@ -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"
>
...
...
src/webui/src/components/overview/ProgressItem.tsx
View file @
56be400c
...
@@ -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"
>
...
...
src/webui/src/components/overview/SearchSpace.tsx
View file @
56be400c
...
@@ -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"
>
...
...
src/webui/src/components/overview/SuccessTable.tsx
View file @
56be400c
...
@@ -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
}
/>
);
);
...
...
src/webui/src/components/overview/Title1.tsx
View file @
56be400c
...
@@ -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
>
...
...
src/webui/src/components/overview/TrialProfile.tsx
View file @
56be400c
...
@@ -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
;
}
}
...
...
src/webui/src/components/public-child/DefaultMetrc.tsx
View file @
56be400c
...
@@ -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
>
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment