From 939383c457a07af2f181d3982276462a63deb217 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Fri, 27 Dec 2019 11:59:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4jupter=20=E5=92=8C=E8=AF=BE?= =?UTF-8?q?=E5=A0=82shixun=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/common/EventUtil.js | 2 +- .../courses/coursesPublic/NewShixunModel.js | 11 ++++- public/react/src/modules/tpm/TPMIndex.js | 2 - public/react/src/modules/tpm/jupyter/index.js | 13 ++++-- public/react/src/redux/actions/jupyter.js | 40 ++++++++++++++++--- .../react/src/redux/reducers/commonReducer.js | 2 +- public/react/src/services/jupyterServer.js | 7 ++++ 7 files changed, 64 insertions(+), 13 deletions(-) diff --git a/public/react/src/common/EventUtil.js b/public/react/src/common/EventUtil.js index 208207b5f..0b98925ef 100644 --- a/public/react/src/common/EventUtil.js +++ b/public/react/src/common/EventUtil.js @@ -27,7 +27,7 @@ function onMessageByLocalStorage(eventName, callback) { } window.addEventListener("storage", function(ev) { const cb = localStorageMap[ev.key]; - console.log('storage event:', ev) + // console.log('storage event:', ev) if (cb) { cb(JSON.parse(ev.newValue)) } diff --git a/public/react/src/modules/courses/coursesPublic/NewShixunModel.js b/public/react/src/modules/courses/coursesPublic/NewShixunModel.js index f9318eb9d..314412f6b 100644 --- a/public/react/src/modules/courses/coursesPublic/NewShixunModel.js +++ b/public/react/src/modules/courses/coursesPublic/NewShixunModel.js @@ -34,6 +34,7 @@ class NewShixunModel extends Component{ getdatalist=(page,type,newstatus,keyword,order,diff,limit,pagetype,sorts)=>{ let newsort=sorts; + let no_jupyter=undefined; if(this.props.type==="shixuns"&&type==="mine"){ if(this.props&&this.props.user.course_name===undefined){ newsort="created_at"; @@ -41,6 +42,12 @@ class NewShixunModel extends Component{ newsort="publish_time"; } } + if(this.props.type==="shixuns"){ + if(this.props&&this.props.user.course_name===undefined){ + }else{ + no_jupyter=1; + } + } this.setState({ isspinning:true }) @@ -51,6 +58,7 @@ class NewShixunModel extends Component{ }else{ url="/subject_lists.json"; } + axios.get(url,{params:{ page:page, type:type, @@ -59,7 +67,8 @@ class NewShixunModel extends Component{ order:order, diff:diff, limit:limit, - sort:newsort + sort:newsort, + no_jupyter:no_jupyter }}).then((response) => { if(response.data){ if(pagetype===undefined){ diff --git a/public/react/src/modules/tpm/TPMIndex.js b/public/react/src/modules/tpm/TPMIndex.js index 01e9fe5d3..f7f73eabc 100644 --- a/public/react/src/modules/tpm/TPMIndex.js +++ b/public/react/src/modules/tpm/TPMIndex.js @@ -383,8 +383,6 @@ class TPMIndex extends Component { let url = window.location.href; let flag = url.indexOf("add_file")>-1; - - console.log(this.state.openknows) return (
{/*头部*/} diff --git a/public/react/src/modules/tpm/jupyter/index.js b/public/react/src/modules/tpm/jupyter/index.js index 5efe5c729..e80edc59c 100644 --- a/public/react/src/modules/tpm/jupyter/index.js +++ b/public/react/src/modules/tpm/jupyter/index.js @@ -88,6 +88,15 @@ function JupyterTPI (props) { const [myIdentifier, setMyIdentifier] = useState(''); const [renderCtx, setRenderCtx] = useState(() => (emptyCtx)); + let newHandletype=false + const newHandle = function (event) { + if(newHandletype===false){ + newHandletype=true + saveJupyterTpi(event); + setTimeout(()=>{newHandletype=false},500) + } + } + // 保存代码 const addEventListeners = () => { window.addEventListener('message', (e) => { @@ -95,12 +104,10 @@ function JupyterTPI (props) { if(e){ if(e.data){ if(e.data==="jupytermessage"){ - saveJupyterTpi(); + newHandle() } } - } - }) } diff --git a/public/react/src/redux/actions/jupyter.js b/public/react/src/redux/actions/jupyter.js index cf2459922..5ecdbf699 100644 --- a/public/react/src/redux/actions/jupyter.js +++ b/public/react/src/redux/actions/jupyter.js @@ -15,7 +15,8 @@ import { fetchSyncJupyterCode, fetchreset_with_tpi, fetchSaveJupyterTpi, - fetactive_with_tpi + fetactive_with_tpi, + timeinfo_with_tpis } from "../../services/jupyterServer"; // 获取 jupyter 相关信息 @@ -76,7 +77,9 @@ export const getJupyterTpiUrl = (obj) => { console.log('获取url', res); if (res.status === 200) { const { status, url = '', port } = res.data; - addjypertime(Date.now() +3600 * 1000) + dispatch(updataspinning(false)) + setTimeout(()=>{ dispatch(addjypertime(Date.now() +3600 * 1000))},500) + // timeinfo_with_tpi(id,dispatch) dispatch({ type: types.GET_JUPYTER_TPI_URL, payload: { @@ -106,7 +109,7 @@ export const syncJupyterCode = (identifier, msg) => { const {status} = res.data if (status === 0) { message.success(msg); - updataspinning(false) + dispatch(updataspinning(false)) setTimeout(() => { window.location.reload(); }, 300); @@ -131,7 +134,7 @@ export const reset_with_tpi = (identifier, msg) => { const {status} = res.data if (status === 0) { message.success(msg); - updataspinning(false) + dispatch(updataspinning(false)) setTimeout(() => { window.location.reload(); }, 300); @@ -156,7 +159,7 @@ export const active_with_tpi = (identifier, msg) => { const {status} = res.data if (status === 0) { message.success(msg); - addjypertime(Date.now() + 900 * 1000); + dispatch(addjypertime(Date.now() + 900 * 1000)) } } }) @@ -171,6 +174,7 @@ export const changeGetJupyterUrlState = (status) => { payload: status } } + // 保存 jupyter tpi export const saveJupyterTpi = () => { return (dispatch, getState) => { @@ -234,3 +238,29 @@ export const updataspinning=(type)=>{ } } +// 获取重置实训后的时间 +export const timeinfo_with_tpi = (identifier, dispatch) => { + debugger + const params = { + identifier: identifier + }; + debugger + timeinfo_with_tpis(params).then(res => { + debugger + console.log('同步时间成功: ', res); + if (res.data.status === 401) return; + if (res.status === 200) { + const {status} = res.data + console.log(status) + // dispatch(addjypertime(Date.now() +3600 * 1000)) + // setTimeout(()=>{ dispatch(addjypertime(Date.now() +3600 * 1000))},500) + // if (status === 0) { + // message.success(msg); + // dispatch(updataspinning(false)) + // setTimeout(() => { + // window.location.reload(); + // }, 300); + // } + } + }) +} \ No newline at end of file diff --git a/public/react/src/redux/reducers/commonReducer.js b/public/react/src/redux/reducers/commonReducer.js index 5694faf84..d0246afce 100644 --- a/public/react/src/redux/reducers/commonReducer.js +++ b/public/react/src/redux/reducers/commonReducer.js @@ -16,7 +16,7 @@ const initialState = { publishLoading: false, // 发布 isMySource: false, drawervisible:false, - jupytertime:Date.now() + 3600 * 1000, + jupytertime:0, spinning:false } diff --git a/public/react/src/services/jupyterServer.js b/public/react/src/services/jupyterServer.js index 37c86a3a2..93464820d 100644 --- a/public/react/src/services/jupyterServer.js +++ b/public/react/src/services/jupyterServer.js @@ -44,4 +44,11 @@ export async function fetchreset_with_tpi (params) { export async function fetactive_with_tpi(params) { const url = `/jupyters/active_with_tpi.json`; return axios.get(url, { params }); +} + + +//获取tpi重置实训的time +export async function timeinfo_with_tpis(params){ + const url = `/jupyters/timeinfo_with_tpi.json`; + return axios.get(url, { params }); } \ No newline at end of file