/*
* @Description: 执行结果
* @Author: tangjiang
* @Github:
* @Date: 2019-11-28 08:44:54
* @LastEditors: tangjiang
* @LastEditTime: 2019-12-19 10:44:16
*/
import './index.scss';
import React, { useState, useEffect } from 'react';
import { Icon } from 'antd';
import CONST from '../../../../constants';
const {reviewResult} = CONST;
function ExecResult (props) {
const { excuteState, excuteDetail } = props;
// console.log('执行状态: ======', excuteState);
// 指定渲染初始, 加载中, 加载完成页面内容
const renderInit = () => (
请填写测试用例的输入值,点击“调试代码”
);
const renderLoading = () => (
加载中...
);
const readerLoaded = () => (
加载完成
);
const renderError = () => (
未知异常
)
const renderFinish = () => {
const {
error_line,
error_msg,
execute_memory,
execute_time,
input,
output,
status,
expected_output
} = codeResult;
const excuteHeader = (state) => {
const review_class = state === 0 ? `excute_suc` : `excute_err`;
return (
执行结果:
{reviewResult[`${state}`]}
)
}
// console.log('执行结果====》》》》', status);
const excuteCtx = (state) => {
if (state === 0) {
return (
输入: {input}
输出: {output}
执行用时: {`${execute_time}s`}
);
} else if (state === 4){
return (
{error_msg}
)
} else if (state === -1) {
return (
输入: {input}
输出: {output}
预期输出: {expected_output}
)
} else if (state === 5) {
return (
执行出错信息: {error_msg}
最后执行的输入: {input}
)
}
}
return (
{excuteHeader(status)}
{excuteCtx(status)}
);
};
// 渲染状态
const [renderCtx, setRenderCtx] = useState(() => {
return function () {
return renderInit();
}
});
// 提交记录详情
const [codeResult, setCodeResult] = useState({})
// 渲染状态变化时渲染相应的内容
useEffect(() => {
// console.log('执行状态====》》》》', excuteState);
if ('loading' === excuteState) {
setRenderCtx(() => (renderLoading));
} else if ('loaded' === excuteState) {
setRenderCtx(() => (readerLoaded));
} else if ('finish' === excuteState) {
setRenderCtx(() => (renderFinish));
} else if ('error' === excuteState) {
setRenderCtx(() => (renderError))
}
}, [excuteState]);
// 提交详情变化时
useEffect(() => {
// console.log('提交记录详情=====>>>>>', excuteDetail);
setCodeResult(excuteDetail);
}, [excuteDetail]);
return (
{renderCtx()}
)
}
export default ExecResult;