TrialsDetail.tsx 4.49 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
23
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/logPath.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
24
25

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

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

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

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

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

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

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

108
export default TrialsDetail;