diff --git a/src/forge/DevOps/About.jsx b/src/forge/DevOps/About.jsx index 31ced220..e23a82c3 100644 --- a/src/forge/DevOps/About.jsx +++ b/src/forge/DevOps/About.jsx @@ -171,10 +171,10 @@ function About(props, ref) {
DevOps开启功能暂未对项目创建者以外的角色开放,可以联系项目创建者进行开启,开启后便可查看构建信息。
:"" } - 了解什么是DevOps? + 了解什么是引擎? - 如何使用DevOps? + 如何使用引擎(Engine)功能? { AuthorLogin === CurrentLogin ? diff --git a/src/forge/Head/AddProjectModal.jsx b/src/forge/Head/AddProjectModal.jsx index 81f1d27c..3dcb2d95 100644 --- a/src/forge/Head/AddProjectModal.jsx +++ b/src/forge/Head/AddProjectModal.jsx @@ -2,84 +2,82 @@ import React, { useState , forwardRef, useEffect } from 'react'; import { Form , Modal , Input , Radio } from 'antd'; import Axios from 'axios'; import CheckProfile from '../Component/ProfileModal/Profile'; +function AddProjectModal(props){ + const { getFieldDecorator, validateFields , setFieldsValue } = props && props.form; + const [ visible , setVisible ] = useState(false); -export default Form.create()( - forwardRef((props)=>{ - const { getFieldDecorator, validateFields , setFieldsValue } = props && props.form; - const [ visible , setVisible ] = useState(false); - - useEffect(()=>{ - if(!visible){ - setFieldsValue({ - code:undefined, - role:"developer" - }) - } - },[visible]) - - function onOk() { - validateFields((error,values)=>{ - if(!error){ - const url = `/applied_projects.json`; - Axios.post(url,{ - applied_project:{ - ...values - } - }).then(result=>{ - if(result && result.data){ - setVisible(false); - props.showNotification("申请加入项目成功,等待审核!"); - } - }).catch(error=>{}) - } + useEffect(()=>{ + if(!visible){ + setFieldsValue({ + code:undefined, + role:"developer" }) } - function checkValue(rule, value, callback){ - if(!value){ - callback(); + },[visible]) + + function onOk() { + validateFields((error,values)=>{ + if(!error){ + const url = `/applied_projects.json`; + Axios.post(url,{ + applied_project:{ + ...values + } + }).then(result=>{ + if(result && result.data){ + setVisible(false); + props.showNotification("申请加入项目成功,等待审核!"); + } + }).catch(error=>{}) } + }) + } + function checkValue(rule, value, callback){ + if(!value){ + callback("请输入6位数的邀请码"); + }else{ if(value.length < 6 || value.length > 6){ callback("请输入6位数的邀请码"); } - callback(); - } + } + } - return( - - setVisible(false)} - > -
- - {getFieldDecorator("code",{ - rules:[ - {required:true,message:"请输入6位项目邀请码"}, - {validator:checkValue} - ] - })( - - )} - - - {getFieldDecorator("role",{ - rules:[{required:true,message:"请选择角色"}] - })( - - 管理员 - 开发者 - 报告者 - - )} - -
-
- setVisible(true)}>加入项目 -
- ) - }) -) \ No newline at end of file + return( + + setVisible(false)} + > +
+ + {getFieldDecorator("code",{ + rules:[ + {required:true,message:" "}, + {validator:checkValue} + ] + })( + + )} + + + {getFieldDecorator("role",{ + rules:[{required:true,message:"请选择角色"}] + })( + + 管理员 + 开发者 + 报告者 + + )} + +
+
+ setVisible(true)}>加入项目 +
+ ) +} +export default Form.create()(forwardRef(AddProjectModal)); \ No newline at end of file diff --git a/src/forge/Head/header.scss b/src/forge/Head/header.scss index dbe640d5..bcdb9499 100644 --- a/src/forge/Head/header.scss +++ b/src/forge/Head/header.scss @@ -127,6 +127,9 @@ width: 110px; text-align: right; } + .ant-form-explain{ + position: absolute; + } } // 右上角小铃铛单独样式 diff --git a/src/forge/Main/CoderDepot.jsx b/src/forge/Main/CoderDepot.jsx index a00deb20..f104d711 100644 --- a/src/forge/Main/CoderDepot.jsx +++ b/src/forge/Main/CoderDepot.jsx @@ -340,7 +340,7 @@ function CoderDepot(props){ function createIssue(){ if(baseOper){ - window.open(`/${owner}/${projectsId}/issues/new`,'_blank'); + props.history.push(`/${owner}/${projectsId}/issues/new`); }else{ props.showLoginDialog(`/${owner}/${projectsId}/issues/new`); } diff --git a/src/forge/Main/tree/Index.jsx b/src/forge/Main/tree/Index.jsx index 2fc57434..714bf353 100644 --- a/src/forge/Main/tree/Index.jsx +++ b/src/forge/Main/tree/Index.jsx @@ -46,7 +46,7 @@ function Index(props) { return( -
+
{ list && list.length>0 && list.map((item,key)=>{ return( diff --git a/src/forge/Main/version/New.jsx b/src/forge/Main/version/New.jsx index 8adde9b0..b1d764af 100644 --- a/src/forge/Main/version/New.jsx +++ b/src/forge/Main/version/New.jsx @@ -224,7 +224,7 @@ export default Form.create()( 这是一个预览版本 )} -

+

diff --git a/src/forge/Merge/merge_form.js b/src/forge/Merge/merge_form.js index d050116f..c6de9638 100644 --- a/src/forge/Merge/merge_form.js +++ b/src/forge/Merge/merge_form.js @@ -167,8 +167,8 @@ class MergeForm extends Component { this.setState({ isSpin: false, }); - const { pull_request_id } = result.data; - this.props.history.push(`/${owner}/${projectsId}/pulls/${pull_request_id}`); + const { pull_request_number } = result.data; + this.props.history.push(`/${owner}/${projectsId}/pulls/${pull_request_number}`); const { getDetail } = this.props; getDetail && getDetail(); } else { diff --git a/src/forge/Newfile/index.css b/src/forge/Newfile/index.css index 746febe5..0bda4711 100644 --- a/src/forge/Newfile/index.css +++ b/src/forge/Newfile/index.css @@ -1,3 +1,11 @@ +.editorBorderBox .CodeMirror +{ + height: unset; +} +.editorBorderBox .CodeMirror .CodeMirror-scroll{ + min-height: 300px; +} + .setInputAddon{ width: 350px; margin-right: 20px; @@ -9,12 +17,16 @@ border-right: none!important; } .editorBorder .editorBorderBox{ - border:1px solid #eee; + border:1px solid #d0d0d0; border-radius: 2px; + border-bottom: none; } .editorBorder .editorBorderSubmitBox{ padding:20px 0px!important; } +.editorBorderSubmitBox{ + border-top: 1px solid #d0d0d0; +} .userScrew{ margin:20px 0px; border:1px solid #f4f4f4; diff --git a/src/forge/Newfile/m_editor.js b/src/forge/Newfile/m_editor.js index 13d2ec46..d4446e3f 100644 --- a/src/forge/Newfile/m_editor.js +++ b/src/forge/Newfile/m_editor.js @@ -1,6 +1,9 @@ import React, { Component } from "react"; -import Editor from "react-monaco-editor"; -// import {UnControlled as CodeMirror} from 'react-codemirror2' +import {UnControlled as CodeMirror} from 'react-codemirror2'; +import 'codemirror/addon/selection/active-line.js'; +import 'codemirror/mode/javascript/javascript.js'; +import 'codemirror/mode/clike/clike'; +import 'codemirror/mode/css/css'; import UserSubmitComponent from "./UserSubmitComponent"; @@ -12,6 +15,7 @@ class m_editor extends Component { super(props); this.state = { editorValue: this.props.content, + changeValue:this.props.content, prevHeight:0 }; } @@ -22,18 +26,18 @@ class m_editor extends Component { }) } } - changeEditor = (editorValue) => { + changeEditor = (editorValue,data) => { this.setState({ - editorValue, + changeValue:editorValue.getValue(), }); }; render() { - const { editorValue } = this.state; - const { readOnly, editorType, language , currentBranch , descName } = this.props; + const { editorValue , changeValue } = this.state; + const { readOnly, editorType, currentBranch , descName } = this.props; const editor_options = { lineNumbers: "on", - wordWrap: true, //强制换行 + lineWrapping: true, //强制换行 selectOnLineNumbers: true, lineHeight: 24, renderLineHighlight: "line", @@ -46,84 +50,29 @@ class m_editor extends Component { automaticLayout: true, // 自适应布局 overviewRulerBorder: false, // 不要滚动条的边框 scrollBeyondLastLine: false, // 取消代码后面一大段空白 + styleActiveLine:true,//光标代码高亮 minimap: { // 不要小地图 enabled: false, }, }; - - const handleEditorMount = (editor, monaco) => { - editor.onDidChangeModelDecorations(() => { - requestAnimationFrame(updateEditorHeight); // folding - }); - - const updateEditorHeight = () => { - const editorElement = editor.getDomNode(); - - if (!editorElement) { - return; - } - - const padding = 40; - - const lineHeight = editor.getOption( - monaco.editor.EditorOption.lineHeight - ); - - const lineCount = editor.getModel().getLineCount() || 1; - let height = - editor.getTopForLineNumber(lineCount + 1) + - lineHeight + - padding ; - - if(height<400){height = 400;} - - if (this.state.prevHeight !== height) { - this.setState({ - prevHeight:height - }) - // setPrevHeight(height); - editorElement.style.height = `${height}px`; - editor.layout(); - } - }; - - updateEditorHeight(); // typing - }; - - return (

- - {/* */}
{!readOnly && ( -
+
暂无截止时间 } - {data && data.percent && data.percent.toFixed(2)}%完成 + {data && (data.percent || data.percent===0) ? {data.percent > 0 ? data.percent.toFixed(2):data.percent}%完成 :"" }
{ diff --git a/src/forge/Order/order.js b/src/forge/Order/order.js index 3508b282..5b4458f1 100644 --- a/src/forge/Order/order.js +++ b/src/forge/Order/order.js @@ -226,6 +226,7 @@ class order extends Component { // 翻页 ChangePage = (page) => { + window.scrollTo(0,0); this.setState({ isSpin: true, checkedValue: [], diff --git a/src/forge/Settings/new_tags.js b/src/forge/Settings/new_tags.js index ed9269cb..1c91a0ac 100644 --- a/src/forge/Settings/new_tags.js +++ b/src/forge/Settings/new_tags.js @@ -445,7 +445,7 @@ class NewTags extends Component { message: "请填写标记名字", }, ], - })()} + })()} diff --git a/src/forge/Wiki/fetch.js b/src/forge/Wiki/fetch.js index 9f0e6901..ec3abf87 100644 --- a/src/forge/Wiki/fetch.js +++ b/src/forge/Wiki/fetch.js @@ -1,106 +1,13 @@ -import { notification ,message} from 'antd'; -import axios from 'axios'; -import cookie from 'react-cookies'; -import Login from './components/Login'; -let actionUrl = ''; -if (window.location.href.indexOf('localhost') > -1) { - // actionUrl = 'http://117.50.100.12:8008'; - // actionUrl = 'http://192.168.31.74:8081'; - actionUrl = "https://test-search.trustie.net"; -} else if(window.location.href.indexOf('testforgeplus')>-1){ - actionUrl = "https://test-search.trustie.net"; - // actionUrl = 'https://testforgeplus.trustie.net'; - axios.defaults.withCredentials = true; -}else if (window.location.href.indexOf('forgeplus') > -1) { - actionUrl = "https://wiki-api.trustie.net"; - axios.defaults.withCredentials = true; -} +import javaFetch from '../javaFetch'; + +let settings = JSON.parse(localStorage.chromesetting); +let actionUrl = settings && settings.common.wiki; + +const service = javaFetch(actionUrl); export const httpUrl = actionUrl; -export const TokenKey = 'autologin_trustie'; - -// 创建axios实例 -const service = axios.create({ - baseURL: httpUrl, - timeout: 10000, // 请求超时时间 -}); - -// request拦截器 -service.interceptors.request.use(config => { - if (cookie.load(TokenKey)) { - console.log(cookie.load(TokenKey)); - config.headers['Authorization'] = cookie.load(TokenKey); // 让每个请求携带自定义token 请根据实际情况自行修改 - } - if (window.location.port === "3007") { - // 模拟token为登录用户 - const taskToken = sessionStorage.taskToken; - if (config.url.indexOf('?') === -1) { - config.url = `${config.url}?token=${taskToken}`; - } else { - config.url = `${config.url}&token=${taskToken}`; - } - } - return config; -}, error => { - // Do something with request error - console.log(error); // for debug - // Promise.reject(error); -}); -// respone拦截器 -service.interceptors.response.use( - response => { - const res = response||{}; - if (res.status === 400) { - message.error(res.data.message || '操作失败'); - return Promise.reject('error'); - } - if (res.status === 401) { - message.error(res.data.message || '登录信息已过期'); - return Promise.reject('error'); - } - if (res.status === 403) { - message.error(res.data.message || '无权限!'); - return Promise.reject('error'); - } - if (res.status === 40001) { - notification.open({ - message: "提示", - description: '账户或密码错误!', - }); - return Promise.reject('error'); - } - if (response.status !== 200 && res.status !== 200) { - notification.open({ - message: "提示", - description: res.message, - }); - } else { - return response.data; - } - }, - error => { - console.log(error); - let res = error.response||{}; - if (res.status === 400) { - message.error(res.data.message || '操作失败'); - return Promise.reject('error'); - } - if (res.status === 401) { - message.error(res.data.message || '登录信息已过期'); - Login(); - return Promise.reject('error'); - } - if (res.status === 403) { - message.error(res.data.message || '无权限!'); - return Promise.reject('error'); - } - notification.open({ - message: "提示", - description: error.message, - }); - return Promise.reject(error); - } -); - export default service; + + + diff --git a/src/forge/javaFetch.js b/src/forge/javaFetch.js index 7f536896..02840a15 100644 --- a/src/forge/javaFetch.js +++ b/src/forge/javaFetch.js @@ -4,22 +4,16 @@ import cookie from 'react-cookies'; import Login from './Wiki/components/Login'; export const TokenKey = 'autologin_trustie'; -export default function javaFetch(productUrl,testUrl,developUrl ){ - let actionUrl=''; - if (window.location.href.indexOf('localhost') > -1) { - actionUrl = developUrl; - } else if(window.location.href.indexOf('testforgeplus')>-1){ - actionUrl = testUrl; - axios.defaults.withCredentials = true; - }else if (window.location.href.indexOf('forgeplus') > -1) { - actionUrl = productUrl; + +export default function javaFetch(actionUrl){ + if (window.location.href.indexOf('localhost') < 0) { axios.defaults.withCredentials = true; } // 创建axios实例 const service = axios.create({ baseURL: actionUrl, - timeout: 10000, // 请求超时时间 + timeout: 1800000, // 请求超时时间 }); // request拦截器 @@ -98,8 +92,6 @@ export default function javaFetch(productUrl,testUrl,developUrl ){ } ); - console.log(service); - console.log(typeof service); - return {service,actionUrl}; + return service; } \ No newline at end of file diff --git a/src/forge/users/Infos.js b/src/forge/users/Infos.js index 0df0d910..00b03310 100644 --- a/src/forge/users/Infos.js +++ b/src/forge/users/Infos.js @@ -297,7 +297,7 @@ class Infos extends Component { } { current_user && current_user.login && current_user.login === username ? - DevOps工作流 + DevOps引擎 :"" } diff --git a/src/forge/users/InfosUser.js b/src/forge/users/InfosUser.js index bcfd75ff..fff3685e 100644 --- a/src/forge/users/InfosUser.js +++ b/src/forge/users/InfosUser.js @@ -147,7 +147,7 @@ class InfosUser extends Component { let list = button_lists.map((item, key) => { return ( - +
} { - percentData && + percentData && percentData.length >0 &&
{ @@ -200,7 +201,12 @@ function Index(props) {

展示你擅长、关注、感兴趣的专业范围,通过你参与项目、收藏项目、关注项目、复刻项目等数据来统计。

- + { + cloudData && cloudData.length >0? + + : + + }
diff --git a/src/home/Index.scss b/src/home/Index.scss index 7678aba4..b60a31e3 100644 --- a/src/home/Index.scss +++ b/src/home/Index.scss @@ -203,7 +203,7 @@ body{ background-image: url('./Img/top-2.png'); height: 139px; width: 353px; - padding:30px 24px; + padding:15px 24px; color: #fff; margin:0px 17px; border-radius: 11px; diff --git a/src/modules/tpm/TPMIndex.css b/src/modules/tpm/TPMIndex.css index 4e2aceab..8701a8aa 100644 --- a/src/modules/tpm/TPMIndex.css +++ b/src/modules/tpm/TPMIndex.css @@ -19,7 +19,7 @@ body>.-task-title { min-width: 1200px; max-width: unset; height: 100%; - min-height: 100%; + min-height: 70vh; overflow: hidden; } .newHeaders{