Merge branch 'dev_aliyun' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_tpm_ui
杨树林 5 years ago
commit 97e0c67f1c

@ -232,6 +232,11 @@ class HacksController < ApplicationController
hacks = hacks.where(category: params[:category])
end
# 语言
if params[:language]
hacks = hacks.joins(:hack_codes).where(hack_codes: {language: params[:language]})
end
# 排序
sort_by = params[:sort_by] || "hack_user_lastest_codes_count"
sort_direction = params[:sort_direction] || "desc"

@ -53,11 +53,11 @@ class Discuss < ApplicationRecord
def send_tiding
if dis_type == 'Shixun'
user_id = has_parent? ? parent.user_id : Challenge.find(challenge_id).user_id
send_user_id = has_parent? ? parent.user_id : Challenge.find(challenge_id).user_id
parent_container_type = 'Challenge'
challenge_id = challenge_id
elsif dis_type == 'Hack'
user_id = has_parent? ? parent.user_id : Hack.find(dis_id).user_id
send_user_id = has_parent? ? parent.user_id : Hack.find(dis_id).user_id
parent_container_type = 'Hack'
challenge_id = dis_id
end
@ -65,6 +65,6 @@ class Discuss < ApplicationRecord
trigger_user_id: user_id, parent_container_id: challenge_id, parent_container_type: parent_container_type,
belong_container_id: dis_id, belong_container_type: dis_type, viewed: 0, tiding_type: 'Comment'
}
tidings.create!(base_attrs.merge(user_id: user_id))
tidings.create!(base_attrs.merge(user_id: send_user_id))
end
end

@ -4,7 +4,7 @@
* @Github:
* @Date: 2019-12-16 15:50:45
* @LastEditors : tangjiang
* @LastEditTime : 2019-12-27 11:04:43
* @LastEditTime : 2019-12-27 15:07:11
*/
import Quill from "quill";
@ -37,7 +37,7 @@ export default class ImageBlot extends BlockEmbed {
node.setAttribute('width', '100%');
}
node.setAttribute('style', { cursor: 'pointer' });
// node.setAttribute('style', { cursor: 'pointer' });
// if (node.onclick) {
// console.log('image 有图片点击事件======》》》》》》');
@ -60,7 +60,7 @@ export default class ImageBlot extends BlockEmbed {
height: node.height,
display: node.getAttribute('display'),
id: node.id,
style: node.style
// style: node.style
};
}
}

@ -2,4 +2,9 @@
.ql-editing{
left: 0 !important;
}
.ql-editor{
img{
cursor: pointer;
}
}
}

@ -9,7 +9,7 @@
import './index.scss';
import React from 'react';
import { Table, Button, Dropdown, Icon, Menu, Card, Input, Select, Tag, Modal } from 'antd';
import { Table, Button, Dropdown, Icon, Menu, Card, Input, Select, Tag } from 'antd';
import { connect } from 'react-redux';
import actions from '../../redux/actions';
import MultipTags from './components/multiptags';
@ -46,9 +46,24 @@ const maps = {
],
'languageMenu': [
{
'key': 'c',
'name': 'C语言',
'value': 'c'
'key': 'C',
'name': 'C',
'value': 'C'
},
{
'key': 'C++',
'name': 'C++',
'value': 'C++'
},
{
'key': 'Python',
'name': 'Python',
'value': 'Python'
},
{
'key': 'Java',
'name': 'Java',
'value': 'Java'
}
],
'difficultMenu': [
@ -491,7 +506,7 @@ class DeveloperHome extends React.PureComponent {
</div>
</div>
<div className={'card-table'}>
<div bordered={false} className={'filter_ctx_area'}>
<div className={'filter_ctx_area'}>
<div>
<Dropdown className={'dropdonw-style'} placement="bottomLeft" overlay={this.getMenuItems('categoryMenu', this.handleCategoryMenuClick)}>
<span className={'dropdown-span'}>分类 <Icon type="down"/></span>

@ -310,7 +310,7 @@ function JupyterTPI (props) {
});
const oUl = (
<ul className="jupyter_data_list">
<ul className="jupyter_data_list" >
{ oList }
</ul>
);
@ -412,7 +412,7 @@ function JupyterTPI (props) {
<h2 className="borbottom17212F jupyterfilepaths">
<span className={"ml50"}>文件路径</span>
<div className="sortinxdirection">
<a className="jupyter_name ml50 maxnamewidth200 lineheighttaj colorlineheighttaj">{jupyter_folder_name}</a>
<a className="jupyter_name ml50 maxnamewidth186JUPYTER lineheighttaj colorlineheighttaj">{jupyter_folder_name}</a>
<a className={"fr color-blue lineheighttaj font-14"}
onClick={() => {
jsCopy("jupyter_folder_name")

@ -215,13 +215,13 @@ line-height: 50px !important;
background: #070F1A !important;
}
.maxnamewidth200{
max-width: 200px;
.maxnamewidth186JUPYTER{
max-width: 186px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: default;
width: 200px;
width: 186px;
}
.maxnamewidth181{

@ -7,7 +7,7 @@
* @LastEditTime: 2019-12-13 23:03:27
*/
import types from "./actionTypes";
import { message } from 'antd';
import { message ,Modal} from 'antd';
import {
fetchJupyterTpiDataSet,
fetchJupyterTpiUrl,
@ -78,8 +78,8 @@ export const getJupyterTpiUrl = (obj) => {
if (res.status === 200) {
const { status, url = '', port } = res.data;
dispatch(updataspinning(false))
setTimeout(()=>{ dispatch(addjypertime(Date.now() +3600 * 1000))},500)
// timeinfo_with_tpi(id,dispatch)
//setTimeout(()=>{ dispatch(addjypertime(Date.now() +3600 * 1000))},500)
timeinfo_with_tpi(id,dispatch)
dispatch({
type: types.GET_JUPYTER_TPI_URL,
payload: {
@ -240,27 +240,26 @@ 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);
// }
if(res.data.status===0){
if(res.data.useSeconds===null){
Modal.warning({
title: '提示',
content: '因为这个实训pod不在了无法获取倒计时请联系系统管理人员',
});
}else{
let useSeconds=res.data.useSeconds;
let summain=3600 * 1000;
let sums= useSeconds * 1000;
let sum=summain-sums;
setTimeout(()=>{ dispatch(addjypertime(Date.now() +sum))},500);
}
}
}
})
}
Loading…
Cancel
Save