diff --git a/src/forge/Component/OpsStatus.jsx b/src/forge/Component/OpsStatus.jsx index f5db8d722..b6944642c 100644 --- a/src/forge/Component/OpsStatus.jsx +++ b/src/forge/Component/OpsStatus.jsx @@ -24,15 +24,15 @@ export const Tags = (status)=>{ export const TagsLine = (status)=>{ switch(status){ - case 1: + case "running": return( 运行中 ); - case 2: + case "failure": return ( 未通过 ); - case 3: + case "success": return ( 已通过 ); diff --git a/src/forge/DevOps/OpsDetailLeftpanel.jsx b/src/forge/DevOps/OpsDetailLeftpanel.jsx index c92cc0960..87343b825 100644 --- a/src/forge/DevOps/OpsDetailLeftpanel.jsx +++ b/src/forge/DevOps/OpsDetailLeftpanel.jsx @@ -1,12 +1,11 @@ -import React, { useEffect ,useState } from "react"; +import React, { useEffect, useState } from "react"; import { FlexAJ, Blueline, AlignCenter } from "../Component/layout"; import styled from "styled-components"; -import { Menu , Popconfirm } from "antd"; +import { Menu, Popconfirm } from "antd"; import { TagsLine } from "../Component/OpsStatus"; import { Time } from "../Utils/Time"; import { truncateCommitId } from "../common/util"; - const SubMenu = Menu.SubMenu; const Img = styled.img` { @@ -16,37 +15,83 @@ const Img = styled.img` margin-right: 10px; } `; -export default ({ data , repeatSet }) => { - const [ tamp , setTamp ] = useState(undefined); - const [ sha , setSha ] = useState(undefined); - useEffect(()=>{ - if(data && data.started){ +export default ({ data, repeatSet }) => { + const [tamp, setTamp] = useState(undefined); + const [sha, setSha] = useState(undefined); + useEffect(() => { + if (data && data.started) { let t = parseInt(data.started) * 1000; let time = Time(t); setTamp(time); } - if(data && data.after){ + if (data && data.after) { setSha(truncateCommitId(data.after)); } - },[data]) + }, [data]); + + function renderMenu() { + if (data.stages && data.stages.length > 0) { + data.stages.map((item, key) => { + return item.steps && item.steps.length > 0 ? ( + + + {item.name} + + } + > + {item.steps.map((i, k) => { + return ( + + + + {i.name} {i.status ? TagsLine(i.status) : ""} + + + {i.stopped + ? parseInt(parseInt(i.stopped) - parseInt(i.started)) + : "0"} + s + + + + ); + })} + + ) : ( + "" + ); + }); + } + } + + function titleClick(e,index){ + console.log(index); + } return (
- {data && data.started && ( + {data && data.started ? ( 开始时间: {tamp} + ) : ( + "" )} - {data && data.timestamp && ( - - 运行时间:{data && data.timestamp}s - - )} + + 运行时间:{data && data.timestamp}s + - + 重新创建 @@ -59,21 +104,38 @@ export default ({ data , repeatSet }) => {
- - - CI - - } - > - - - Build setup 01 {TagsLine(1)} - 20s - - - + {data && data.stages + ? data.stages.map((item, key) => { + return item.steps && item.steps.length > 0 ? ( + + + {item.name} + + } + onTitleClick={(e)=>titleClick(e,key)} + > + {item.steps.map((i, k) => { + return ( + + + + {i.name} {i.status ? TagsLine(i.status) : ""} + + + {i.stopped ? (parseInt(i.stopped) - parseInt(i.started)): "0"}s + + + + ); + })} + + ) : ( + "" + ); + }) + : ""} ); diff --git a/src/forge/DevOps/OpsDetailRightpanel.jsx b/src/forge/DevOps/OpsDetailRightpanel.jsx index a7f0f11e9..5de632695 100644 --- a/src/forge/DevOps/OpsDetailRightpanel.jsx +++ b/src/forge/DevOps/OpsDetailRightpanel.jsx @@ -1,21 +1,31 @@ -import React from 'react'; -import { FlexAJ , AlignCenter } from '../Component/layout'; +import React, {useState,useEffect} from "react"; +import { FlexAJ, AlignCenter } from "../Component/layout"; -export default (()=>{ - return( +export default ({ stages }) => { + const [ list , setList ] = useState(undefined); + useEffect(()=>{ + if(stages){ + console.log(stages.steps); + setList(stages.steps); + } + },[stages]) + + return (
-
- - Build setup 01 - 20 - -
-
- -
-
- -
+ {list && list.length>0 ? list.map((item, key) => { + return ( +
+ + {item.name} + + { item.stopped ? (parseInt(item.stopped) - parseInt(item.started)) : "0" } + + + +
+ ); + }):"1111" + }
- ) -}) \ No newline at end of file + ); +}; diff --git a/src/forge/DevOps/opsDetail.jsx b/src/forge/DevOps/opsDetail.jsx index 34ae4e3ef..52f207961 100644 --- a/src/forge/DevOps/opsDetail.jsx +++ b/src/forge/DevOps/opsDetail.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState , useRef , useContext } from "react"; +import React, { useEffect, useState, useRef, useContext } from "react"; import "./ops.scss"; import { FlexAJ, AlignCenter } from "../Component/layout"; import { Tags } from "../Component/OpsStatus"; @@ -7,7 +7,7 @@ import LeftPanel from "./OpsDetailLeftpanel"; import RightPanel from "./OpsDetailRightpanel"; import axios from "axios"; import { Spin } from "antd"; -import { Link } from 'react-router-dom'; +import { Link } from "react-router-dom"; export default (props) => { const [data, setData] = useState(undefined); @@ -23,37 +23,41 @@ export default (props) => { } }, [opsId]); - function Init(){ + function Init() { const url = `/dev_ops/builds/${opsId}.json`; - axios.get(url, { - params: { - project_id: projectId, - }, - }) - .then((result) => { - if (result && result.data) { - setSpinning(false); - setData(result.data); - setStages(result.data.stages); - } - }) - .catch((error) => { - console.log(error); - }); + axios + .get(url, { + params: { + project_id: projectId, + }, + }) + .then((result) => { + if (result && result.data) { + setSpinning(false); + setData(result.data); + setStages( + result.data.stages && result.data.stages.length > 0 ? result.data.stages[0] : undefined + ); + } + }) + .catch((error) => { + console.log(error); + }); } // 重新构建 function repeatSet() { const url = `/dev_ops/builds/${data && data.number}.json`; - axios.post(url, { project_id: projectId }) - .then((result) => { - if (result) { - Init(); - } - }) - .catch((error) => { - console.log(error); - }); + axios + .post(url, { project_id: projectId }) + .then((result) => { + if (result) { + Init(); + } + }) + .catch((error) => { + console.log(error); + }); } return ( @@ -64,7 +68,10 @@ export default (props) => { {data && data.message} {Tags(`${data && data.status}`)} - + 退出 @@ -77,10 +84,10 @@ export default (props) => { defaultSize="40%" >
- +
- +