diff --git a/public/react/src/modules/wxcode/index.js b/public/react/src/modules/wxcode/index.js
index f026e3b85..13e4bc037 100644
--- a/public/react/src/modules/wxcode/index.js
+++ b/public/react/src/modules/wxcode/index.js
@@ -4,7 +4,7 @@
* @Github:
* @Date: 2020-01-15 09:56:34
* @LastEditors : tangjiang
- * @LastEditTime : 2020-01-17 21:10:23
+ * @LastEditTime : 2020-01-18 09:54:54
*/
import './index.scss';
import React, {useState, useEffect, useRef} from 'react';
@@ -12,7 +12,7 @@ import MonacoEditor from '@monaco-editor/react';
import { Input, Icon } from 'antd';
import { connect } from 'react-redux';
import actions from '../../redux/actions';
-import cookie from 'react-cookies';
+// import cookie from 'react-cookies';
const { TextArea } = Input;
const App = (props) => {
@@ -63,7 +63,15 @@ const App = (props) => {
}
setCookier();
const [isActive, setIsActive] = useState(-1);
+ const [tip, setTip] = useState('');
+ const [codes, setCodes] = useState(wxCode);
// const [isVisible, setIsVisible] = useState(false);
+
+ useEffect(() => {
+ if (codes !== props.wxCode) {
+ setCodes(props.wxCode);
+ }
+ }, [props]);
const editorRef = useRef(null);
let timer = null;
@@ -129,6 +137,8 @@ const App = (props) => {
const handleResetCode = () => {
const result = window.confirm('你在本文件中修改的内容将丢失, 是否确定重新加载初始代码?');
if (result) {
+ setTip('初始化中...');
+ changeWXCodeEvaluateLoading(true);
identifier && restoreWXCode(identifier, { path });
}
}
@@ -136,6 +146,7 @@ const App = (props) => {
const handleEvalateCode = () => {
changeWXCodeEvaluateLoading(true);
evaluateWxCode(identifier, path);
+ setTip('评测中...');
}
// 关闭弹框
@@ -171,7 +182,7 @@ const App = (props) => {
height="100%"
width="100%"
language="python"
- value={wxCode}
+ value={codes}
options={{
selectOnLineNumbers: true,
automaticLayout: true,
@@ -184,11 +195,11 @@ const App = (props) => {
-
+
初始化
-
+
测试集
@@ -224,10 +235,10 @@ const App = (props) => {
测试集{i + 1}
{
- is_public && last_compile_output
- ? (result
- ?
- :
)
+ is_public
+ ? (last_compile_output ?
+ (result ?
+ :
) : '')
: (
隐藏测试集,暂不支持解锁和查看
{/* {result
@@ -271,7 +282,7 @@ const App = (props) => {
- 测评中...
+ {tip}
{/* 通过弹框 */}
@@ -322,7 +333,7 @@ const mapStateToProps = (state) => {
test_sets_count,
sets_error_count
} = state.wxcodeReducer;
- console.log(state);
+ // console.log(state);
return {
path,
isShow,
diff --git a/public/react/src/modules/wxcode/index.scss b/public/react/src/modules/wxcode/index.scss
index d31b3c55d..071bc1708 100644
--- a/public/react/src/modules/wxcode/index.scss
+++ b/public/react/src/modules/wxcode/index.scss
@@ -14,7 +14,7 @@
display: flex;
justify-content: space-between;
align-items: center;
- height: 120px;
+ height: 150px;
background-color: #052645;
padding: 0 50px;
}
@@ -33,7 +33,7 @@
font-size: 32px !important;
transform: scale(2);
position: relative;
- top: 10px;
+ // top: 10px;
}
// .icon-reset{
// transform: scale(2.4);
@@ -43,10 +43,11 @@
// }
&:last-child{
- margin-left: 50px;
+ margin-left: 60px;
}
.icon-txt{
- font-size: 32px;
+ // margin-top: 5px;
+ font-size: 28px;
}
}
}
@@ -55,11 +56,12 @@
border: none;
outline: none;
border-radius: 9999px;
- padding: 0 40px;
- line-height: 72px;
- font-size: 36px;
+ padding: 0 50px;
+ line-height: 92px;
+ font-size: 38px;
color: #fff;
background:#2EA4FF;
+ letter-spacing: 2;
}
.wx-code-test-case{
@@ -107,7 +109,7 @@
font-size: 36px;
}
.header-close{
- // font-size: 28px;
+ // font-size: 36px;
font-size: 36px;
color: #2EA4FF;
}
@@ -208,12 +210,12 @@
}
.case-item-tips{
- font-size: 28px;
+ font-size: 36px;
}
.case-item-desc{
display: none;
flex-direction: column;
- font-size: 28px;
+ font-size: 36px;
line-height: 1.5;
&.active{
@@ -227,7 +229,7 @@
.text-area-style{
background:#010E1F !important;
color: #fff;
- font-size: 28px;
+ font-size: 36px;
line-height: 1.5;
border: none;
}
diff --git a/public/react/src/redux/actions/wxCode.js b/public/react/src/redux/actions/wxCode.js
index e62e6facc..8d240b0d9 100644
--- a/public/react/src/redux/actions/wxCode.js
+++ b/public/react/src/redux/actions/wxCode.js
@@ -4,7 +4,7 @@
* @Github:
* @Date: 2020-01-15 15:41:10
* @LastEditors : tangjiang
- * @LastEditTime : 2020-01-17 21:06:46
+ * @LastEditTime : 2020-01-18 09:52:55
*/
import types from './actionTypes.js';
import {
@@ -46,7 +46,7 @@ export const getWXCodeTestCase = (identifier, params) => {
game_id: data.game && data.game.id,
myIdentifier: data.myshixun.identifier,
exec_time: data.challenge.exec_time,
- path: _path.split(';')[0] || _path.split(';')[0],
+ path: _path.split(';')[0] || _path.split(';')[0] || _path,
last_compile_output: data.last_compile_output,
test_sets_count: data.test_sets_count,
sets_error_count: data.sets_error_count
@@ -65,6 +65,10 @@ export const restoreWXCode = (identifier, params) => {
fetchRestoreWxCode(identifier, params).then(res => {
console.log('点击了初始化代码: ', res);
const {data} = res;
+ dispatch({
+ type: types.SHOW_WX_CODE_LOADING,
+ payload: false
+ })
dispatch({
type: types.GET_WXCODE_BY_IDENTIFIER,
payload: data.content || ''
@@ -90,11 +94,16 @@ export const updateWxCode = (path, identifier, userCode, game_id, evaluate = 0,)
});
}
// 定时更新代码内容
-export const updateWXCodeForInterval = (identifier, path) => {
+export const updateWXCodeForInterval = (identifier, $path) => {
return (dispatch, getState) => {
- const {wxCode, userCode, game_id, myIdentifier} = getState().wxcodeReducer;
+ const {wxCode, userCode, game_id, myIdentifier, path} = getState().wxcodeReducer;
if (wxCode !== userCode) {
- updateWxCode(path, myIdentifier, userCode, game_id, 0);
+ updateWxCode(path, myIdentifier, userCode, game_id, 0).then(res => {
+ dispatch({
+ type: types.GET_WXCODE_BY_IDENTIFIER,
+ payload: userCode
+ });
+ });
}
}
}
@@ -133,10 +142,12 @@ export const evaluateWxCode = (identifier, path) => {
// 定时调用 game_status fetchWxCodeGameStatus
let count = 1;
const intervalTime = 500;
+ let time_out = false;
function wxCodeGameStatus (intervalTime, finalTime, count, timer) {
const excuteTime = (count++) * intervalTime; // 当前执行时间
console.log(finalTime, count, excuteTime);
- fetchWxCodeGameStatus(identifier, {resubmit: _resubmit}).then(r => {
+ if ((excuteTime / 1000) > (finalTime + 1)) time_out = true;
+ fetchWxCodeGameStatus(identifier, {resubmit: _resubmit, time_out}).then(r => {
const { status, test_sets = [], gold, experience, next_game, sets_error_count } = r.data;
if (+status > -1 || ((excuteTime / 1000) > (finalTime + 1))) {
clearInterval(timer);
diff --git a/public/react/src/redux/reducers/wxcodeReducer.js b/public/react/src/redux/reducers/wxcodeReducer.js
index 24aa4a58b..2caf25a84 100644
--- a/public/react/src/redux/reducers/wxcodeReducer.js
+++ b/public/react/src/redux/reducers/wxcodeReducer.js
@@ -4,7 +4,7 @@
* @Github:
* @Date: 2020-01-15 15:37:44
* @LastEditors : tangjiang
- * @LastEditTime : 2020-01-17 19:50:00
+ * @LastEditTime : 2020-01-18 09:46:04
*/
import types from "../actions/actionTypes";
const initialState = {
@@ -30,6 +30,7 @@ const wxcodeReducer = (state = initialState, action) => {
const { payload, type } = action;
switch (type) {
case types.GET_WXCODE_BY_IDENTIFIER:
+ console.log('=====>>>>>', payload);
return {
...state,
wxCode: payload,