TrialsDetail.tsx 4.46 KB
Newer Older
Lijiao's avatar
Lijiao committed
1
import * as React from 'react';
2
import { Stack, Pivot, PivotItem } from '@fluentui/react';
Lijiaoa's avatar
Lijiaoa committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { EXPERIMENT, TRIALS } from '@static/datamodel';
import { AppContext } from '@/App';
import DefaultPoint from './chart/DefaultMetricPoint';
import Duration from './chart/Duration';
import Para from './chart/Para';
import Intermediate from './chart/Intermediate';
import TableList from './table/TableList';
import '@style/button.scss';
import '@style/openRow.scss';
import '@style/pagination.scss';
import '@style/experiment/overview/overviewTitle.scss';
import '@style/experiment/trialdetail/search.scss';
import '@style/experiment/trialdetail/tensorboard.scss';
import '@style/table.scss';
import '@style/common/trialStatus.css';

/**
 * single experiment
 * trial detail page
 */
Lijiao's avatar
Lijiao committed
23
24

interface TrialDetailState {
25
    whichChart: string;
Lijiao's avatar
Lijiao committed
26
27
}

28
29
class TrialsDetail extends React.Component<{}, TrialDetailState> {
    static contextType = AppContext;
30
    context!: React.ContextType<typeof AppContext>;
Lijiao's avatar
Lijiao committed
31
    public interAccuracy = 0;
32
    public interAllTableList = 2;
33

34
35
    public tableList!: TableList | null;
    public searchInput!: HTMLInputElement | null;
36

37
    constructor(props) {
Lijiao's avatar
Lijiao committed
38
39
        super(props);
        this.state = {
40
            whichChart: 'Default metric'
Lijiao's avatar
Lijiao committed
41
42
43
        };
    }

44
    handleWhichTabs = (item: any): void => {
45
        this.setState({ whichChart: item.props.headerText });
46
    };
47

Lijiao's avatar
Lijiao committed
48
    render(): React.ReactNode {
49
50
51
        const { whichChart } = this.state;
        const source = TRIALS.toArray();
        const trialIds = TRIALS.toArray().map(trial => trial.id);
52

Lijiao's avatar
Lijiao committed
53
        return (
54
            <AppContext.Consumer>
55
                {(_value): React.ReactNode => (
56
                    <React.Fragment>
57
58
59
                        <div className='trial' id='tabsty'>
                            <Pivot
                                defaultSelectedKey={'0'}
a1trl9's avatar
a1trl9 committed
60
                                className='detail-title'
61
62
63
                                onLinkClick={this.handleWhichTabs}
                                selectedKey={whichChart}
                            >
64
                                {/* <PivotItem tab={this.titleOfacc} key="1"> doesn't work*/}
65
66
                                <PivotItem headerText='Default metric' itemIcon='HomeGroup' key='Default metric'>
                                    <Stack className='graph'>
67
68
69
70
71
72
                                        <DefaultPoint
                                            trialIds={trialIds}
                                            hasBestCurve={true}
                                            chartHeight={402}
                                            changeExpandRowIDs={_value.changeExpandRowIDs}
                                        />
73
74
75
                                    </Stack>
                                </PivotItem>
                                {/* <PivotItem tab={this.titleOfhyper} key="2"> */}
76
77
                                <PivotItem headerText='Hyper-parameter' itemIcon='Equalizer' key='Hyper-parameter'>
                                    <Stack className='graph'>
78
                                        <Para trials={source} searchSpace={EXPERIMENT.searchSpaceNew} />
79
80
81
                                    </Stack>
                                </PivotItem>
                                {/* <PivotItem tab={this.titleOfDuration} key="3"> */}
82
                                <PivotItem headerText='Duration' itemIcon='BarChartHorizontal' key='Duration'>
83
                                    <Duration source={source} />
84
85
                                </PivotItem>
                                {/* <PivotItem tab={this.titleOfIntermediate} key="4"> */}
86
87
88
89
90
                                <PivotItem
                                    headerText='Intermediate result'
                                    itemIcon='StackedLineChart'
                                    key='Intermediate result'
                                >
91
                                    {/* *why this graph has small footprint? */}
92
                                    <Intermediate source={source} />
93
94
95
96
                                </PivotItem>
                            </Pivot>
                        </div>
                        {/* trial table list */}
97
                        <div className='detailTable' style={{ marginTop: 10 }}>
Lijiaoa's avatar
Lijiaoa committed
98
                            <TableList tableSource={source} />
99
100
                        </div>
                    </React.Fragment>
101
                )}
102
            </AppContext.Consumer>
Lijiao's avatar
Lijiao committed
103
104
105
106
        );
    }
}

107
export default TrialsDetail;