import * as React from 'react'; import * as copy from 'copy-to-clipboard'; import { Stack, PrimaryButton, Pivot, PivotItem } from 'office-ui-fabric-react'; import { Trial } from '../../static/model/trial'; import { EXPERIMENT, TRIALS } from '../../static/datamodel'; import JSONTree from 'react-json-tree'; import PaiTrialLog from '../public-child/PaiTrialLog'; import TrialLog from '../public-child/TrialLog'; import MessageInfo from '../Modals/MessageInfo'; import '../../static/style/overview.scss'; import '../../static/style/copyParameter.scss'; interface OpenRowProps { trialId: string; } interface OpenRowState { typeInfo: string; info: string; isHidenInfo: boolean; } class OpenRow extends React.Component { constructor(props: OpenRowProps) { super(props); this.state = { typeInfo: '', info: '', isHidenInfo: true }; } hideMessageInfo = (): void => { this.setState(() => ({ isHidenInfo: true })); } /** * info: message content * typeInfo: message type: success | error... * continuousTime: show time, 2000ms */ getCopyStatus = (info: string, typeInfo: string): void => { this.setState(() => ({ info, typeInfo, isHidenInfo: false })); setTimeout(this.hideMessageInfo, 2000); } copyParams = (trial: Trial): void => { // get copy parameters const params = JSON.stringify(trial.description.parameters, null, 4); if (copy.default(params)) { this.getCopyStatus('Success copy parameters to clipboard in form of python dict !', 'success'); } else { this.getCopyStatus('Failed !', 'error'); } } render(): React.ReactNode { const { isHidenInfo, typeInfo, info } = this.state; const trialId = this.props.trialId; const trial = TRIALS.getTrial(trialId); const logPathRow = trial.info.logPath || 'This trial\'s log path is not available.'; return ( { trial.info.hyperParameters !== undefined ? true} // default expandNode getItemString={(): null => null} // remove the {} items data={trial.description.parameters} /> {/* copy success | failed message info */} {!isHidenInfo && } : Error: {`This trial's parameters are not available.'`} } { // FIXME: this should not be handled in web UI side EXPERIMENT.trainingServicePlatform !== 'local' ? : } ); } } export default OpenRow;