import * as React from 'react'; import * as copy from 'copy-to-clipboard'; import { Stack, PrimaryButton, Pivot, PivotItem } from '@fluentui/react'; import { Trial } from '../../static/model/trial'; import { MANAGER_IP } from '../../static/const'; 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/overview.scss'; import '../../static/style/copyParameter.scss'; import '../../static/style/openRow.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'); } }; openTrialLog = (filename: string): void => { window.open(`${MANAGER_IP}/trial-file/${this.props.trialId}/${filename}`); }; openModelOnnx = (): void => { // TODO: netron might need prefix. window.open(`/netron/index.html?url=${MANAGER_IP}/trial-file/${this.props.trialId}/model.onnx`); }; 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' ? ( ) : (
{/* view each trial log in drawer*/}
) }
{EXPERIMENT.metadata.tag.includes('retiarii') ? (
Visualize models with 3rd-party tools.
) : null}
); } } export default OpenRow;