TrialsDetail.tsx 4.34 KB
Newer Older
Lijiao's avatar
Lijiao committed
1
import * as React from 'react';
2
import { Stack, Pivot, PivotItem } from '@fluentui/react';
3
import { EXPERIMENT, TRIALS } from '../static/datamodel';
4
import { AppContext } from '../App';
5
import DefaultPoint from './trial-detail/DefaultMetricPoint';
Lijiao's avatar
Lijiao committed
6
7
import Duration from './trial-detail/Duration';
import Para from './trial-detail/Para';
8
import Intermediate from './trial-detail/Intermediate';
Lijiao's avatar
Lijiao committed
9
10
import TableList from './trial-detail/TableList';
import '../static/style/trialsDetail.scss';
11
import '../static/style/search.scss';
Lijiao's avatar
Lijiao committed
12
13

interface TrialDetailState {
14
    whichChart: string;
Lijiao's avatar
Lijiao committed
15
16
}

17
18
class TrialsDetail extends React.Component<{}, TrialDetailState> {
    static contextType = AppContext;
19
    context!: React.ContextType<typeof AppContext>;
Lijiao's avatar
Lijiao committed
20
    public interAccuracy = 0;
21
    public interAllTableList = 2;
22

23
24
    public tableList!: TableList | null;
    public searchInput!: HTMLInputElement | null;
25

26
    constructor(props) {
Lijiao's avatar
Lijiao committed
27
28
        super(props);
        this.state = {
29
            whichChart: 'Default metric'
Lijiao's avatar
Lijiao committed
30
31
32
        };
    }

33
    handleWhichTabs = (item: any): void => {
34
        this.setState({ whichChart: item.props.headerText });
35
    };
36

Lijiao's avatar
Lijiao committed
37
    render(): React.ReactNode {
38
39
40
        const { whichChart } = this.state;
        const source = TRIALS.toArray();
        const trialIds = TRIALS.toArray().map(trial => trial.id);
41

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

98
export default TrialsDetail;