ExpDuration.tsx 2.16 KB
Newer Older
1
import React from 'react';
Lijiaoa's avatar
Lijiaoa committed
2
import { EXPERIMENT } from '@static/datamodel';
3
import { CONTROLTYPE } from '@static/const';
Lijiaoa's avatar
Lijiaoa committed
4
import { convertDuration, convertTimeAsUnit } from '@static/function';
5
6
import { EditExperimentParam } from './EditExperimentParam';
import { ExpDurationContext } from './ExpDurationContext';
7
import ProgressBar from './ProgressBar';
8
import { EditExpeParamContext } from './context';
Lijiaoa's avatar
Lijiaoa committed
9
import '@style/experiment/overview/count.scss';
10
11
12
13

export const ExpDuration = (): any => (
    <ExpDurationContext.Consumer>
        {(value): React.ReactNode => {
14
            const { maxExecDuration, execDuration, maxDurationUnit, updateOverviewPage } = value;
15
16
            const tooltip = maxExecDuration - execDuration;
            const percent = execDuration / maxExecDuration;
17
18
            const execDurationStr = convertDuration(execDuration);
            const maxExecDurationStr = convertTimeAsUnit(maxDurationUnit, maxExecDuration).toString();
19
            return (
20
21
22
23
24
25
26
27
                <React.Fragment>
                    <ProgressBar
                        tooltip={`${convertDuration(tooltip)} remaining`}
                        percent={percent}
                        latestVal={execDurationStr}
                        presetVal={`${maxExecDurationStr} ${maxDurationUnit}`}
                    />
                    <div className='editExpDuration'>
28
29
30
                        <EditExpeParamContext.Provider
                            value={{
                                editType: CONTROLTYPE[0],
liuzhe-lz's avatar
liuzhe-lz committed
31
                                field: 'maxExperimentDuration',
32
33
                                title: 'Max duration',
                                maxExecDuration: maxExecDurationStr,
34
                                maxTrialNum: EXPERIMENT.maxTrialNumber,
35
36
37
38
39
40
41
                                trialConcurrency: EXPERIMENT.profile.params.trialConcurrency,
                                updateOverviewPage
                            }}
                        >
                            <EditExperimentParam />
                        </EditExpeParamContext.Provider>
                    </div>
42
                </React.Fragment>
43
44
45
46
            );
        }}
    </ExpDurationContext.Consumer>
);