Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
nni
Commits
13bec759
Commit
13bec759
authored
Aug 12, 2019
by
Lijiao
Committed by
Guoxin
Aug 12, 2019
Browse files
fix bugs, sort, concurrency, multi (#1451)
fix bugs about sort & concurrency & multi-phase
parent
d754574c
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
99 additions
and
37 deletions
+99
-37
src/webui/src/App.tsx
src/webui/src/App.tsx
+43
-5
src/webui/src/components/Modal/ExperimentDrawer.tsx
src/webui/src/components/Modal/ExperimentDrawer.tsx
+1
-2
src/webui/src/components/Overview.tsx
src/webui/src/components/Overview.tsx
+20
-3
src/webui/src/components/SlideBar.tsx
src/webui/src/components/SlideBar.tsx
+2
-2
src/webui/src/components/TrialsDetail.tsx
src/webui/src/components/TrialsDetail.tsx
+7
-2
src/webui/src/components/overview/Progress.tsx
src/webui/src/components/overview/Progress.tsx
+5
-4
src/webui/src/components/public-child/OpenRow.tsx
src/webui/src/components/public-child/OpenRow.tsx
+1
-1
src/webui/src/components/trial-detail/DefaultMetricPoint.tsx
src/webui/src/components/trial-detail/DefaultMetricPoint.tsx
+1
-1
src/webui/src/components/trial-detail/TableList.tsx
src/webui/src/components/trial-detail/TableList.tsx
+18
-16
src/webui/src/static/interface.ts
src/webui/src/static/interface.ts
+1
-1
No files found.
src/webui/src/App.tsx
View file @
13bec759
import
*
as
React
from
'
react
'
;
import
*
as
React
from
'
react
'
;
import
{
Row
,
Col
}
from
'
antd
'
;
import
{
Row
,
Col
}
from
'
antd
'
;
import
axios
from
'
axios
'
;
import
{
COLUMN
,
MANAGER_IP
}
from
'
./static/const
'
;
import
'
./App.css
'
;
import
'
./App.css
'
;
import
SlideBar
from
'
./components/SlideBar
'
;
import
SlideBar
from
'
./components/SlideBar
'
;
interface
AppState
{
interface
AppState
{
interval
:
number
;
interval
:
number
;
whichPageToFresh
:
string
;
whichPageToFresh
:
string
;
columnList
:
Array
<
string
>
;
concurrency
:
number
;
}
}
class
App
extends
React
.
Component
<
{},
AppState
>
{
class
App
extends
React
.
Component
<
{},
AppState
>
{
...
@@ -14,7 +18,9 @@ class App extends React.Component<{}, AppState> {
...
@@ -14,7 +18,9 @@ class App extends React.Component<{}, AppState> {
super
(
props
);
super
(
props
);
this
.
state
=
{
this
.
state
=
{
interval
:
10
,
// sendons
interval
:
10
,
// sendons
whichPageToFresh
:
''
whichPageToFresh
:
''
,
columnList
:
COLUMN
,
concurrency
:
1
};
};
}
}
...
@@ -31,25 +37,57 @@ class App extends React.Component<{}, AppState> {
...
@@ -31,25 +37,57 @@ class App extends React.Component<{}, AppState> {
}
}
}
}
changeColumn
=
(
columnList
:
Array
<
string
>
)
=>
{
if
(
this
.
_isMounted
===
true
)
{
this
.
setState
(()
=>
({
columnList
:
columnList
}));
}
}
changeConcurrency
=
(
val
:
number
)
=>
{
if
(
this
.
_isMounted
===
true
)
{
this
.
setState
(()
=>
({
concurrency
:
val
}));
}
}
getConcurrency
=
()
=>
{
axios
(
`
${
MANAGER_IP
}
/experiment`
,
{
method
:
'
GET
'
})
.
then
(
res
=>
{
if
(
res
.
status
===
200
)
{
const
params
=
res
.
data
.
params
;
if
(
this
.
_isMounted
)
{
this
.
setState
(()
=>
({
concurrency
:
params
.
trialConcurrency
}));
}
}
});
}
componentDidMount
()
{
componentDidMount
()
{
this
.
_isMounted
=
true
;
this
.
_isMounted
=
true
;
this
.
getConcurrency
();
}
}
componentWillUnmount
()
{
componentWillUnmount
()
{
this
.
_isMounted
=
false
;
this
.
_isMounted
=
false
;
}
}
render
()
{
render
()
{
const
{
interval
,
whichPageToFresh
}
=
this
.
state
;
const
{
interval
,
whichPageToFresh
,
columnList
,
concurrency
}
=
this
.
state
;
const
reactPropsChildren
=
React
.
Children
.
map
(
this
.
props
.
children
,
child
=>
const
reactPropsChildren
=
React
.
Children
.
map
(
this
.
props
.
children
,
child
=>
// tslint:disable-next-line:no-any
React
.
cloneElement
(
React
.
cloneElement
(
child
as
React
.
ReactElement
<
any
>
,
{
interval
,
whichPageToFresh
})
// tslint:disable-next-line:no-any
child
as
React
.
ReactElement
<
any
>
,
{
interval
,
whichPageToFresh
,
columnList
,
changeColumn
:
this
.
changeColumn
,
concurrency
,
changeConcurrency
:
this
.
changeConcurrency
})
);
);
return
(
return
(
<
Row
className
=
"nni"
style
=
{
{
minHeight
:
window
.
innerHeight
}
}
>
<
Row
className
=
"nni"
style
=
{
{
minHeight
:
window
.
innerHeight
}
}
>
<
Row
className
=
"header"
>
<
Row
className
=
"header"
>
<
Col
span
=
{
1
}
/>
<
Col
span
=
{
1
}
/>
<
Col
className
=
"headerCon"
span
=
{
22
}
>
<
Col
className
=
"headerCon"
span
=
{
22
}
>
<
SlideBar
changeInterval
=
{
this
.
changeInterval
}
changeFresh
=
{
this
.
changeFresh
}
/>
<
SlideBar
changeInterval
=
{
this
.
changeInterval
}
changeFresh
=
{
this
.
changeFresh
}
/>
</
Col
>
</
Col
>
<
Col
span
=
{
1
}
/>
<
Col
span
=
{
1
}
/>
</
Row
>
</
Row
>
...
...
src/webui/src/components/Modal/ExperimentDrawer.tsx
View file @
13bec759
...
@@ -42,8 +42,7 @@ class ExperimentDrawer extends React.Component<ExpDrawerProps, ExpDrawerState> {
...
@@ -42,8 +42,7 @@ class ExperimentDrawer extends React.Component<ExpDrawerProps, ExpDrawerState> {
let
trialMessagesArr
=
res1
.
data
;
let
trialMessagesArr
=
res1
.
data
;
const
interResultList
=
res2
.
data
;
const
interResultList
=
res2
.
data
;
Object
.
keys
(
trialMessagesArr
).
map
(
item
=>
{
Object
.
keys
(
trialMessagesArr
).
map
(
item
=>
{
// transform hyperparameters as object to show elegantly
// not deal with trial's hyperParameters
trialMessagesArr
[
item
].
hyperParameters
=
JSON
.
parse
(
trialMessagesArr
[
item
].
hyperParameters
);
const
trialId
=
trialMessagesArr
[
item
].
id
;
const
trialId
=
trialMessagesArr
[
item
].
id
;
// add intermediate result message
// add intermediate result message
trialMessagesArr
[
item
].
intermediate
=
[];
trialMessagesArr
[
item
].
intermediate
=
[];
...
...
src/webui/src/components/Overview.tsx
View file @
13bec759
...
@@ -42,6 +42,8 @@ interface OverviewState {
...
@@ -42,6 +42,8 @@ interface OverviewState {
interface
OverviewProps
{
interface
OverviewProps
{
interval
:
number
;
// user select
interval
:
number
;
// user select
whichPageToFresh
:
string
;
whichPageToFresh
:
string
;
concurrency
:
number
;
changeConcurrency
:
(
val
:
number
)
=>
void
;
}
}
class
Overview
extends
React
.
Component
<
OverviewProps
,
OverviewState
>
{
class
Overview
extends
React
.
Component
<
OverviewProps
,
OverviewState
>
{
...
@@ -61,7 +63,7 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
...
@@ -61,7 +63,7 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
id
:
''
,
id
:
''
,
author
:
''
,
author
:
''
,
experName
:
''
,
experName
:
''
,
runConcurren
:
0
,
runConcurren
:
1
,
maxDuration
:
0
,
maxDuration
:
0
,
execDuration
:
0
,
execDuration
:
0
,
MaxTrialNum
:
0
,
MaxTrialNum
:
0
,
...
@@ -264,7 +266,8 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
...
@@ -264,7 +266,8 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
profile
.
succTrial
+=
1
;
profile
.
succTrial
+=
1
;
const
desJobDetail
:
Parameters
=
{
const
desJobDetail
:
Parameters
=
{
parameters
:
{},
parameters
:
{},
intermediate
:
[]
intermediate
:
[],
multiProgress
:
1
};
};
const
duration
=
(
tableData
[
item
].
endTime
-
tableData
[
item
].
startTime
)
/
1000
;
const
duration
=
(
tableData
[
item
].
endTime
-
tableData
[
item
].
startTime
)
/
1000
;
const
acc
=
getFinal
(
tableData
[
item
].
finalMetricData
);
const
acc
=
getFinal
(
tableData
[
item
].
finalMetricData
);
...
@@ -273,6 +276,7 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
...
@@ -273,6 +276,7 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
if
(
tempara
!==
undefined
)
{
if
(
tempara
!==
undefined
)
{
const
tempLength
=
tempara
.
length
;
const
tempLength
=
tempara
.
length
;
const
parameters
=
JSON
.
parse
(
tempara
[
tempLength
-
1
]).
parameters
;
const
parameters
=
JSON
.
parse
(
tempara
[
tempLength
-
1
]).
parameters
;
desJobDetail
.
multiProgress
=
tempara
.
length
;
if
(
typeof
parameters
===
'
string
'
)
{
if
(
typeof
parameters
===
'
string
'
)
{
desJobDetail
.
parameters
=
JSON
.
parse
(
parameters
);
desJobDetail
.
parameters
=
JSON
.
parse
(
parameters
);
}
else
{
}
else
{
...
@@ -462,6 +466,18 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
...
@@ -462,6 +466,18 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
accNodata
,
status
,
errorStr
,
trialNumber
,
bestAccuracy
,
isMultiPhase
,
accNodata
,
status
,
errorStr
,
trialNumber
,
bestAccuracy
,
isMultiPhase
,
titleMaxbgcolor
,
titleMinbgcolor
,
isLogCollection
,
experimentAPI
titleMaxbgcolor
,
titleMinbgcolor
,
isLogCollection
,
experimentAPI
}
=
this
.
state
;
}
=
this
.
state
;
const
{
concurrency
}
=
this
.
props
;
trialProfile
.
runConcurren
=
concurrency
;
Object
.
keys
(
experimentAPI
).
map
(
item
=>
{
if
(
item
===
'
params
'
)
{
const
temp
=
experimentAPI
[
item
];
Object
.
keys
(
temp
).
map
(
index
=>
{
if
(
index
===
'
trialConcurrency
'
)
{
temp
[
index
]
=
concurrency
;
}
});
}
});
return
(
return
(
<
div
className
=
"overview"
>
<
div
className
=
"overview"
>
...
@@ -480,7 +496,8 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
...
@@ -480,7 +496,8 @@ class Overview extends React.Component<OverviewProps, OverviewState> {
bestAccuracy
=
{
bestAccuracy
}
bestAccuracy
=
{
bestAccuracy
}
status
=
{
status
}
status
=
{
status
}
errors
=
{
errorStr
}
errors
=
{
errorStr
}
updateFile
=
{
this
.
showSessionPro
}
concurrency
=
{
concurrency
}
changeConcurrency
=
{
this
.
props
.
changeConcurrency
}
/>
/>
</
Col
>
</
Col
>
{
/* experiment parameters search space tuner assessor... */
}
{
/* experiment parameters search space tuner assessor... */
}
...
...
src/webui/src/components/SlideBar.tsx
View file @
13bec759
...
@@ -136,7 +136,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
...
@@ -136,7 +136,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
onChange
=
{
this
.
handleVisibleChange
}
onChange
=
{
this
.
handleVisibleChange
}
title
=
{
title
=
{
<
span
>
<
span
>
<
span
>
Download
</
span
>
<
span
>
View
</
span
>
</
span
>
</
span
>
}
}
>
>
...
@@ -234,7 +234,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
...
@@ -234,7 +234,7 @@ class SlideBar extends React.Component<SliderProps, SliderState> {
>
>
<
a
className
=
"ant-dropdown-link"
href
=
"#"
>
<
a
className
=
"ant-dropdown-link"
href
=
"#"
>
<
Icon
type
=
"download"
className
=
"down-icon"
/>
<
Icon
type
=
"download"
className
=
"down-icon"
/>
<
span
>
Download
</
span
>
<
span
>
View
</
span
>
{
{
menuVisible
menuVisible
?
?
...
...
src/webui/src/components/TrialsDetail.tsx
View file @
13bec759
...
@@ -38,6 +38,8 @@ interface TrialDetailState {
...
@@ -38,6 +38,8 @@ interface TrialDetailState {
interface
TrialsDetailProps
{
interface
TrialsDetailProps
{
interval
:
number
;
interval
:
number
;
whichPageToFresh
:
string
;
whichPageToFresh
:
string
;
columnList
:
Array
<
string
>
;
changeColumn
:
(
val
:
Array
<
string
>
)
=>
void
;
}
}
class
TrialsDetail
extends
React
.
Component
<
TrialsDetailProps
,
TrialDetailState
>
{
class
TrialsDetail
extends
React
.
Component
<
TrialsDetailProps
,
TrialDetailState
>
{
...
@@ -112,7 +114,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
...
@@ -112,7 +114,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
let
desc
:
Parameters
=
{
let
desc
:
Parameters
=
{
parameters
:
{},
parameters
:
{},
intermediate
:
[],
intermediate
:
[],
p
rogress
:
1
multiP
rogress
:
1
};
};
let
duration
=
0
;
let
duration
=
0
;
const
id
=
trialJobs
[
item
].
id
!==
undefined
const
id
=
trialJobs
[
item
].
id
!==
undefined
...
@@ -133,7 +135,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
...
@@ -133,7 +135,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
const
tempHyper
=
trialJobs
[
item
].
hyperParameters
;
const
tempHyper
=
trialJobs
[
item
].
hyperParameters
;
if
(
tempHyper
!==
undefined
)
{
if
(
tempHyper
!==
undefined
)
{
const
getPara
=
JSON
.
parse
(
tempHyper
[
tempHyper
.
length
-
1
]).
parameters
;
const
getPara
=
JSON
.
parse
(
tempHyper
[
tempHyper
.
length
-
1
]).
parameters
;
desc
.
p
rogress
=
tempHyper
.
length
;
desc
.
multiP
rogress
=
tempHyper
.
length
;
if
(
typeof
getPara
===
'
string
'
)
{
if
(
typeof
getPara
===
'
string
'
)
{
desc
.
parameters
=
JSON
.
parse
(
getPara
);
desc
.
parameters
=
JSON
.
parse
(
getPara
);
}
else
{
}
else
{
...
@@ -397,6 +399,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
...
@@ -397,6 +399,7 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
whichGraph
,
searchPlaceHolder
whichGraph
,
searchPlaceHolder
}
=
this
.
state
;
}
=
this
.
state
;
const
source
=
isHasSearch
?
searchResultSource
:
tableListSource
;
const
source
=
isHasSearch
?
searchResultSource
:
tableListSource
;
const
{
columnList
,
changeColumn
}
=
this
.
props
;
return
(
return
(
<
div
>
<
div
>
<
div
className
=
"trial"
id
=
"tabsty"
>
<
div
className
=
"trial"
id
=
"tabsty"
>
...
@@ -482,6 +485,8 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
...
@@ -482,6 +485,8 @@ class TrialsDetail extends React.Component<TrialsDetailProps, TrialDetailState>
platform
=
{
experimentInfo
.
platform
}
platform
=
{
experimentInfo
.
platform
}
updateList
=
{
this
.
getDetailSource
}
updateList
=
{
this
.
getDetailSource
}
logCollection
=
{
experimentLogCollection
}
logCollection
=
{
experimentLogCollection
}
columnList
=
{
columnList
}
changeColumn
=
{
changeColumn
}
ref
=
{
(
tabList
)
=>
this
.
tableList
=
tabList
}
ref
=
{
(
tabList
)
=>
this
.
tableList
=
tabList
}
/>
/>
</
div
>
</
div
>
...
...
src/webui/src/components/overview/Progress.tsx
View file @
13bec759
...
@@ -11,11 +11,12 @@ import '../../static/style/probar.scss';
...
@@ -11,11 +11,12 @@ import '../../static/style/probar.scss';
interface
ProgressProps
{
interface
ProgressProps
{
trialProfile
:
Experiment
;
trialProfile
:
Experiment
;
concurrency
:
number
;
trialNumber
:
TrialNumber
;
trialNumber
:
TrialNumber
;
bestAccuracy
:
number
;
bestAccuracy
:
number
;
status
:
string
;
status
:
string
;
errors
:
string
;
errors
:
string
;
updateFile
:
Function
;
changeConcurrency
:
(
val
:
number
)
=>
void
;
}
}
interface
ProgressState
{
interface
ProgressState
{
...
@@ -45,12 +46,14 @@ class Progressed extends React.Component<ProgressProps, ProgressState> {
...
@@ -45,12 +46,14 @@ class Progressed extends React.Component<ProgressProps, ProgressState> {
const
{
btnName
}
=
this
.
state
;
const
{
btnName
}
=
this
.
state
;
if
(
this
.
_isMounted
)
{
if
(
this
.
_isMounted
)
{
if
(
btnName
===
'
Edit
'
)
{
if
(
btnName
===
'
Edit
'
)
{
// user click edit
this
.
setState
(()
=>
({
this
.
setState
(()
=>
({
isEnable
:
false
,
isEnable
:
false
,
btnName
:
'
Save
'
,
btnName
:
'
Save
'
,
cancelSty
:
'
inline-block
'
cancelSty
:
'
inline-block
'
}));
}));
}
else
{
}
else
{
// user click save button
axios
(
`
${
MANAGER_IP
}
/experiment`
,
{
axios
(
`
${
MANAGER_IP
}
/experiment`
,
{
method
:
'
GET
'
method
:
'
GET
'
})
})
...
@@ -81,9 +84,7 @@ class Progressed extends React.Component<ProgressProps, ProgressState> {
...
@@ -81,9 +84,7 @@ class Progressed extends React.Component<ProgressProps, ProgressState> {
message
.
destroy
();
message
.
destroy
();
message
.
success
(
`Update
${
CONTROLTYPE
[
1
].
toLocaleLowerCase
()}
message
.
success
(
`Update
${
CONTROLTYPE
[
1
].
toLocaleLowerCase
()}
successfully`
);
successfully`
);
// rerender trial profile message
this
.
props
.
changeConcurrency
(
parseInt
(
userInputVal
,
10
));
const
{
updateFile
}
=
this
.
props
;
updateFile
();
}
}
})
})
.
catch
(
error
=>
{
.
catch
(
error
=>
{
...
...
src/webui/src/components/public-child/OpenRow.tsx
View file @
13bec759
...
@@ -98,7 +98,7 @@ class OpenRow extends React.Component<OpenRowProps, OpenRowState> {
...
@@ -98,7 +98,7 @@ class OpenRow extends React.Component<OpenRowProps, OpenRowState> {
For the entire parameter set, please refer to the following "
For the entire parameter set, please refer to the following "
<
a
href
=
{
trialink
}
target
=
"_blank"
>
{
trialink
}
</
a
>
".
<
a
href
=
{
trialink
}
target
=
"_blank"
>
{
trialink
}
</
a
>
".
<
br
/>
<
br
/>
Current Phase:
{
record
.
description
.
p
rogress
}
.
Current Phase:
{
record
.
description
.
multiP
rogress
}
.
</
Row
>
</
Row
>
:
:
<
div
/>
<
div
/>
...
...
src/webui/src/components/trial-detail/DefaultMetricPoint.tsx
View file @
13bec759
...
@@ -275,7 +275,7 @@ class DefaultPoint extends React.Component<DefaultPointProps, DefaultPointState>
...
@@ -275,7 +275,7 @@ class DefaultPoint extends React.Component<DefaultPointProps, DefaultPointState>
<
div
>
<
div
>
<
div
className
=
"default-metric"
>
<
div
className
=
"default-metric"
>
<
div
className
=
"position"
>
<
div
className
=
"position"
>
<
span
className
=
"bold"
>
o
ptimization curve
</
span
>
<
span
className
=
"bold"
>
O
ptimization curve
</
span
>
<
Switch
defaultChecked
=
{
false
}
onChange
=
{
this
.
loadDefault
}
/>
<
Switch
defaultChecked
=
{
false
}
onChange
=
{
this
.
loadDefault
}
/>
</
div
>
</
div
>
</
div
>
</
div
>
...
...
src/webui/src/components/trial-detail/TableList.tsx
View file @
13bec759
...
@@ -4,7 +4,7 @@ import ReactEcharts from 'echarts-for-react';
...
@@ -4,7 +4,7 @@ import ReactEcharts from 'echarts-for-react';
import
{
Row
,
Table
,
Button
,
Popconfirm
,
Modal
,
Checkbox
,
Select
,
Icon
}
from
'
antd
'
;
import
{
Row
,
Table
,
Button
,
Popconfirm
,
Modal
,
Checkbox
,
Select
,
Icon
}
from
'
antd
'
;
const
Option
=
Select
.
Option
;
const
Option
=
Select
.
Option
;
const
CheckboxGroup
=
Checkbox
.
Group
;
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
{
convertDuration
,
intermediateGraphOption
,
killJob
,
filterByStatus
}
from
'
../../static/function
'
;
import
{
TableObj
,
TrialJob
}
from
'
../../static/interface
'
;
import
{
TableObj
,
TrialJob
}
from
'
../../static/interface
'
;
import
OpenRow
from
'
../public-child/OpenRow
'
;
import
OpenRow
from
'
../public-child/OpenRow
'
;
...
@@ -32,6 +32,8 @@ interface TableListProps {
...
@@ -32,6 +32,8 @@ interface TableListProps {
platform
:
string
;
platform
:
string
;
logCollection
:
boolean
;
logCollection
:
boolean
;
isMultiPhase
:
boolean
;
isMultiPhase
:
boolean
;
columnList
:
Array
<
string
>
;
// user select columnKeys
changeColumn
:
(
val
:
Array
<
string
>
)
=>
void
;
}
}
interface
TableListState
{
interface
TableListState
{
...
@@ -39,7 +41,6 @@ interface TableListState {
...
@@ -39,7 +41,6 @@ interface TableListState {
modalVisible
:
boolean
;
modalVisible
:
boolean
;
isObjFinal
:
boolean
;
isObjFinal
:
boolean
;
isShowColumn
:
boolean
;
isShowColumn
:
boolean
;
columnSelected
:
Array
<
string
>
;
// user select columnKeys
selectRows
:
Array
<
TableObj
>
;
selectRows
:
Array
<
TableObj
>
;
isShowCompareModal
:
boolean
;
isShowCompareModal
:
boolean
;
selectedRowKeys
:
string
[]
|
number
[];
selectedRowKeys
:
string
[]
|
number
[];
...
@@ -69,7 +70,6 @@ class TableList extends React.Component<TableListProps, TableListState> {
...
@@ -69,7 +70,6 @@ class TableList extends React.Component<TableListProps, TableListState> {
isObjFinal
:
false
,
isObjFinal
:
false
,
isShowColumn
:
false
,
isShowColumn
:
false
,
isShowCompareModal
:
false
,
isShowCompareModal
:
false
,
columnSelected
:
COLUMN
,
selectRows
:
[],
selectRows
:
[],
selectedRowKeys
:
[],
// close selected trial message after modal closed
selectedRowKeys
:
[],
// close selected trial message after modal closed
intermediateData
:
[],
intermediateData
:
[],
...
@@ -120,6 +120,8 @@ class TableList extends React.Component<TableListProps, TableListState> {
...
@@ -120,6 +120,8 @@ class TableList extends React.Component<TableListProps, TableListState> {
}
}
}
}
// intermediate button click -> intermediate graph for each trial
// support intermediate is dict
selectOtherKeys
=
(
value
:
string
)
=>
{
selectOtherKeys
=
(
value
:
string
)
=>
{
const
isShowDefault
:
boolean
=
value
===
'
default
'
?
true
:
false
;
const
isShowDefault
:
boolean
=
value
===
'
default
'
?
true
:
false
;
...
@@ -226,7 +228,7 @@ class TableList extends React.Component<TableListProps, TableListState> {
...
@@ -226,7 +228,7 @@ class TableList extends React.Component<TableListProps, TableListState> {
});
});
if
(
this
.
_isMounted
)
{
if
(
this
.
_isMounted
)
{
this
.
setState
(()
=>
({
columnSelected
:
wantResult
})
);
this
.
props
.
changeColumn
(
wantResult
);
}
}
}
}
...
@@ -277,8 +279,8 @@ class TableList extends React.Component<TableListProps, TableListState> {
...
@@ -277,8 +279,8 @@ class TableList extends React.Component<TableListProps, TableListState> {
render
()
{
render
()
{
const
{
entries
,
tableSource
,
updateList
}
=
this
.
props
;
const
{
entries
,
tableSource
,
updateList
,
columnList
}
=
this
.
props
;
const
{
intermediateOption
,
modalVisible
,
isShowColumn
,
columnSelected
,
const
{
intermediateOption
,
modalVisible
,
isShowColumn
,
selectRows
,
isShowCompareModal
,
selectedRowKeys
,
intermediateOtherKeys
}
=
this
.
state
;
selectRows
,
isShowCompareModal
,
selectedRowKeys
,
intermediateOtherKeys
}
=
this
.
state
;
const
rowSelection
=
{
const
rowSelection
=
{
selectedRowKeys
:
selectedRowKeys
,
selectedRowKeys
:
selectedRowKeys
,
...
@@ -316,8 +318,8 @@ class TableList extends React.Component<TableListProps, TableListState> {
...
@@ -316,8 +318,8 @@ class TableList extends React.Component<TableListProps, TableListState> {
value
:
item
value
:
item
});
});
});
});
Object
.
keys
(
column
Selected
).
map
(
key
=>
{
Object
.
keys
(
column
List
).
map
(
key
=>
{
const
item
=
column
Selected
[
key
];
const
item
=
column
List
[
key
];
switch
(
item
)
{
switch
(
item
)
{
case
'
Trial No.
'
:
case
'
Trial No.
'
:
showColumn
.
push
({
showColumn
.
push
({
...
@@ -413,13 +415,12 @@ class TableList extends React.Component<TableListProps, TableListState> {
...
@@ -413,13 +415,12 @@ class TableList extends React.Component<TableListProps, TableListState> {
key
:
'
acc
'
,
key
:
'
acc
'
,
width
:
120
,
width
:
120
,
sorter
:
(
a
:
TableObj
,
b
:
TableObj
)
=>
{
sorter
:
(
a
:
TableObj
,
b
:
TableObj
)
=>
{
const
aa
=
a
.
description
.
intermediate
;
const
oneArr
=
a
.
description
.
intermediate
;
const
bb
=
b
.
description
.
intermediate
;
const
otherArr
=
b
.
description
.
intermediate
;
if
(
aa
!==
undefined
&&
bb
!==
undefined
)
{
const
one
=
(
oneArr
[
oneArr
.
length
-
1
]
!==
undefined
)
?
oneArr
[
oneArr
.
length
-
1
]
:
0
;
return
aa
[
aa
.
length
-
1
]
-
bb
[
bb
.
length
-
1
];
const
other
=
(
otherArr
[
otherArr
.
length
-
1
]
!==
undefined
)
}
else
{
?
otherArr
[
otherArr
.
length
-
1
]
:
0
;
return
NaN
;
return
one
-
other
;
}
},
},
render
:
(
text
:
string
,
record
:
TableObj
)
=>
{
render
:
(
text
:
string
,
record
:
TableObj
)
=>
{
return
(
return
(
...
@@ -581,7 +582,8 @@ class TableList extends React.Component<TableListProps, TableListState> {
...
@@ -581,7 +582,8 @@ class TableList extends React.Component<TableListProps, TableListState> {
>
>
<
CheckboxGroup
<
CheckboxGroup
options
=
{
showTitle
}
options
=
{
showTitle
}
defaultValue
=
{
columnSelected
}
defaultValue
=
{
columnList
}
// defaultValue={columnSelected}
onChange
=
{
this
.
selectedColumn
}
onChange
=
{
this
.
selectedColumn
}
className
=
"titleColumn"
className
=
"titleColumn"
/>
/>
...
...
src/webui/src/static/interface.ts
View file @
13bec759
...
@@ -27,7 +27,7 @@ interface Parameters {
...
@@ -27,7 +27,7 @@ interface Parameters {
parameters
:
ErrorParameter
;
parameters
:
ErrorParameter
;
logPath
?:
string
;
logPath
?:
string
;
intermediate
:
Array
<
number
>
;
intermediate
:
Array
<
number
>
;
p
rogress
?:
number
;
multiP
rogress
?:
number
;
}
}
interface
Experiment
{
interface
Experiment
{
...
...
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