From 4cf627720fe026d383448b9bcc3210908f00a23e Mon Sep 17 00:00:00 2001 From: wulibaibao <13366578180@163.com> Date: Fri, 8 Dec 2023 11:14:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9Ejob=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Details/TestRsultTable/index.tsx | 281 +++++++++--------- .../Details/components/MainPageComponents.tsx | 20 +- .../WorkSpace/TestResult/Details/index.tsx | 2 - .../TestResult/Details/locales/en-US.ts | 3 + .../TestResult/Details/locales/zh-CN.ts | 3 + 5 files changed, 168 insertions(+), 141 deletions(-) diff --git a/src/pages/WorkSpace/TestResult/Details/TestRsultTable/index.tsx b/src/pages/WorkSpace/TestResult/Details/TestRsultTable/index.tsx index f623aeb4..2c1624ce 100644 --- a/src/pages/WorkSpace/TestResult/Details/TestRsultTable/index.tsx +++ b/src/pages/WorkSpace/TestResult/Details/TestRsultTable/index.tsx @@ -117,6 +117,11 @@ const TestResultTable: React.FC = (props) => { setExpandedCaseRowKeys(openKeys) } + const handleExports = (row: any) => { + const { suite_name } = row + window.open(`/api/job/export_results/?job_id=${job_id}&ws_id=${ws_id}&suite_name=${suite_name}`) + } + const states = ['functional', 'business_functional'].includes(testType) ? funcStates : (testType === 'business_business' ? businessBusinessStates : perfStates) @@ -279,6 +284,10 @@ const TestResultTable: React.FC = (props) => { handleContrastBaseline(_)}> handleJoinBaseline(_)}> + { + testType === 'performance' && + handleExports(_)}> + } @@ -406,159 +415,157 @@ const TestResultTable: React.FC = (props) => { }, [selectedRowKeys, suiteCaseSelectKeys]) return ( - <> -
- - - } - overlay={ - - - {expandBtnText} - - - {expandIndexBtnText} - - - } - > - { - isOpenAllConf ? - formatMessage({ id: `ws.result.details.folded.all` }) : - formatMessage({ id: `ws.result.details.expand.all` }) - } - - { - ['performance', 'business_performance'].includes(testType) && - - - - - - } +
+ + + } + overlay={ + + + {expandBtnText} + + + {expandIndexBtnText} + + + } + > + { + isOpenAllConf ? + formatMessage({ id: `ws.result.details.folded.all` }) : + formatMessage({ id: `ws.result.details.expand.all` }) + } + + { + ['performance', 'business_performance'].includes(testType) && + + - - - } - - - { - states.map( - ({ key, name, value }: any) => ( - handleStateChange(value)} - style={{ - cursor: 'pointer', - color: selectSuiteState === value ? '#1890FF' : 'rgba(0, 0, 0, 0.65)' - }} + } + > + + + + + + + } + + + { + states.map( + ({ key, name, value }: any) => ( + handleStateChange(value)} + style={{ + cursor: 'pointer', + color: selectSuiteState === value ? '#1890FF' : 'rgba(0, 0, 0, 0.65)' + }} + > + {name}({caseResult[key]}) + ) - } - - - setColumnsChange(uuid())} - rowKey="suite_id" - name={RESULT_SUITE_TABLE_NAME} - dataSource={filterData} - pagination={false} - refreshDeps={[ws_id, access, testType, baseline, baseline_job_id, creator]} - size="small" - loading={loading} - className={styles.result_expand_table} - style={{ marginTop: 20 }} - rowSelection={rowSelection} - expandable={{ - defaultExpandAllRows: openAllRows, - expandedRowKeys: expandedRowKeys, - onExpand: (expanded: boolean, record: any) => { - if (expanded) { - const tempList = expandedRowKeys.concat([record.suite_id]) - setExpandedRowKeys(tempList) - if (tempList?.length === filterData.length) { - // 展开的状态标志 - setOpenAllRows(true) - setIndexExpandFlag(true) - } + ) + } + + + setColumnsChange(uuid())} + rowKey="suite_id" + name={RESULT_SUITE_TABLE_NAME} + dataSource={filterData} + pagination={false} + refreshDeps={[ws_id, access, testType, baseline, baseline_job_id, creator]} + size="small" + loading={loading} + className={styles.result_expand_table} + style={{ marginTop: 20 }} + rowSelection={rowSelection} + expandable={{ + defaultExpandAllRows: openAllRows, + expandedRowKeys: expandedRowKeys, + onExpand: (expanded: boolean, record: any) => { + if (expanded) { + const tempList = expandedRowKeys.concat([record.suite_id]) + setExpandedRowKeys(tempList) + if (tempList?.length === filterData.length) { + // 展开的状态标志 + setOpenAllRows(true) + setIndexExpandFlag(true) } - else { - const tempList = expandedRowKeys.filter((i: number) => i !== record.suite_id) - setExpandedRowKeys(tempList) - if (!tempList.length) { - // 收起的状态标志 - setOpenAllRows(false) - setIndexExpandFlag(false) - } + } + else { + const tempList = expandedRowKeys.filter((i: number) => i !== record.suite_id) + setExpandedRowKeys(tempList) + if (!tempList.length) { + // 收起的状态标志 + setOpenAllRows(false) + setIndexExpandFlag(false) } - }, - expandedRowRender: (record) => ( - - ), - expandIcon: ({ expanded, onExpand, record }: any) => ( - // expanded ? null : null - expanded ? - ( onExpand(record, e)} />) : - ( onExpand(record, e)} />) - ) - }} - /> -
+ } + }, + expandedRowRender: (record) => ( + + ), + expandIcon: ({ expanded, onExpand, record }: any) => ( + // expanded ? null : null + expanded ? + ( onExpand(record, e)} />) : + ( onExpand(record, e)} />) + ) + }} + /> = (props) => { server_provider={serverProvider} onOk={handleContrastBaselineOk} /> - +
) } diff --git a/src/pages/WorkSpace/TestResult/Details/components/MainPageComponents.tsx b/src/pages/WorkSpace/TestResult/Details/components/MainPageComponents.tsx index 10d8fc9c..d693ef8e 100644 --- a/src/pages/WorkSpace/TestResult/Details/components/MainPageComponents.tsx +++ b/src/pages/WorkSpace/TestResult/Details/components/MainPageComponents.tsx @@ -5,7 +5,7 @@ import { useCopyText } from '@/utils/hooks' import styled from 'styled-components' import { Breadcrumb, Typography, message, Row, Tooltip, Space, Col } from "antd" import { useParams, useAccess, useIntl, FormattedMessage, Access, history, getLocale } from 'umi' -import { DownloadOutlined, ShareAltOutlined, EditOutlined } from '@ant-design/icons' +import { DownloadOutlined, ShareAltOutlined, EditOutlined, ExportOutlined } from '@ant-design/icons' import { queryDownloadLink, startDownloadTask } from '@/pages/WorkSpace/TestResult/Details/service' import styles from "../index.less" @@ -25,7 +25,8 @@ export const CAN_STOP_JOB_STATES = ['running', 'pending', 'pending_q'] export const sleep = (time: number) => new Promise((resolve) => setTimeout(resolve, time)) export const BreadcrumbItem: React.FC = (props) => { - const { state: jobState, bottomHeight } = props + const { state: jobState, bottomHeight, test_type } = props + const { ws_id, id: job_id } = useParams() as any const access = useAccess() const intl = useIntl() @@ -83,6 +84,10 @@ export const BreadcrumbItem: React.FC = (props) => { } } + const handleExportJob = () => { + window.open(`/api/job/export_results/?job_id=${job_id}&ws_id=${ws_id}`) + } + React.useEffect(() => { if (downloadHerf) downloadRef.current?.click() }, [downloadHerf]) @@ -123,6 +128,17 @@ export const BreadcrumbItem: React.FC = (props) => { } + { + (test_type === '性能测试' && !CAN_STOP_JOB_STATES.includes(jobState)) && + + + + + + } { key="testResult" creator={details.creator} test_type={details.test_type} - job_id={job_id} cases={details.case_result} caseResult={details.case_result} provider_name={transProvider(details.provider_name)} - ws_id={ws_id} refreshResult={refreshResult} />], [ diff --git a/src/pages/WorkSpace/TestResult/Details/locales/en-US.ts b/src/pages/WorkSpace/TestResult/Details/locales/en-US.ts index f400ad18..fa51e129 100644 --- a/src/pages/WorkSpace/TestResult/Details/locales/en-US.ts +++ b/src/pages/WorkSpace/TestResult/Details/locales/en-US.ts @@ -1,6 +1,8 @@ const defaultKey = 'ws.result.details' const text = { + 'exports': 'Export', + 'test.result': 'Test Result', 'result.details': 'Result Details', 'provider_name': 'Sever Type', @@ -121,6 +123,7 @@ const text = { 'breadcrumb.button.download': 'Download', 'breadcrumb.button.share': 'Share', + 'breadcrumb.button.export': 'Export', // ProcessTable 'build.kernel': 'Build Kernel', diff --git a/src/pages/WorkSpace/TestResult/Details/locales/zh-CN.ts b/src/pages/WorkSpace/TestResult/Details/locales/zh-CN.ts index 97a119b9..16a95726 100644 --- a/src/pages/WorkSpace/TestResult/Details/locales/zh-CN.ts +++ b/src/pages/WorkSpace/TestResult/Details/locales/zh-CN.ts @@ -1,6 +1,7 @@ const defaultKey = 'ws.result.details' const text = { + 'exports': '导出', 'test.result': '测试结果', 'result.details': '结果详情', 'provider_name': '机器类型', @@ -115,6 +116,8 @@ const text = { 'track_result': '跟踪结果', 'breadcrumb.button.download': '下载', + 'breadcrumb.button.export': '导出', + 'breadcrumb.button.share': '分享Job链接', "breadcrumb.button.download.running": "下载中...", -- Gitee From afa482a71a110ea0a2bc0facec2ce1f1990d3293 Mon Sep 17 00:00:00 2001 From: wulibaibao <13366578180@163.com> Date: Fri, 8 Dec 2023 11:26:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4=E5=88=97=E5=AE=BD?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TestResult/Details/TestRsultTable/CaseTable.tsx | 5 ++--- .../WorkSpace/TestResult/Details/TestRsultTable/index.tsx | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/pages/WorkSpace/TestResult/Details/TestRsultTable/CaseTable.tsx b/src/pages/WorkSpace/TestResult/Details/TestRsultTable/CaseTable.tsx index bef87418..281df6dc 100644 --- a/src/pages/WorkSpace/TestResult/Details/TestRsultTable/CaseTable.tsx +++ b/src/pages/WorkSpace/TestResult/Details/TestRsultTable/CaseTable.tsx @@ -2,7 +2,7 @@ /* eslint-disable react-hooks/exhaustive-deps */ import { Table, Space, Row } from 'antd' import React, { useRef, useState, useEffect } from 'react' -import { useRequest, Access, useAccess, useParams, FormattedMessage, getLocale } from 'umi' +import { useRequest, Access, useAccess, useParams, FormattedMessage } from 'umi' import ServerLink from '@/components/MachineWebLink/index'; import { queryTestResultSuiteConfList } from '../service' import { CaretRightFilled, CaretDownFilled } from '@ant-design/icons'; @@ -26,7 +26,6 @@ const CaseTable: React.FC> = ({ suite_id, testType, suite_name, server_provider, provider_name, creator, expandedState, expandedCaseRowKeys, suiteSelect = [], onCaseSelect, openAllRows = false, setIndexExpandFlag, parentTableName, columnsChange }) => { - const locale = getLocale() === 'en-US'; const { id: job_id } = useParams() as any const background = `url(${treeSvg}) center center / 38.6px 32px ` const [selectedRowKeys, setSelectedRowKeys] = useState([]) @@ -186,7 +185,7 @@ const CaseTable: React.FC> = ({ ['performance', 'business_performance'].includes(testType) && { title: , - width: locale ? 180 : 145, + width: 180, fixed: 'right', render: (_: any) => { diff --git a/src/pages/WorkSpace/TestResult/Details/TestRsultTable/index.tsx b/src/pages/WorkSpace/TestResult/Details/TestRsultTable/index.tsx index 2c1624ce..bcdcddc9 100644 --- a/src/pages/WorkSpace/TestResult/Details/TestRsultTable/index.tsx +++ b/src/pages/WorkSpace/TestResult/Details/TestRsultTable/index.tsx @@ -262,7 +262,7 @@ const TestResultTable: React.FC = (props) => { ['performance', 'business_performance'].includes(testType) && { title: , - width: locale ? 180 : 145, + width: 180, fixed: 'right', key: "operation", ellipsis: { @@ -405,7 +405,7 @@ const TestResultTable: React.FC = (props) => { const expandBtnText = isOpenAllConf ? formatMessage({ id: `ws.result.details.folded.conf` }) : formatMessage({ id: `ws.result.details.expand.conf` }) const expandIndexBtnText = indexExpandFlag ? formatMessage({ id: `ws.result.details.folded.${childName}` }) : formatMessage({ id: `ws.result.details.expand.${childName}` }) - const RESULT_SUITE_TABLE_NAME = "ws-job-result-list" + const RESULT_SUITE_TABLE_NAME = "ws-job-result-list-1" const [columnsChange, setColumnsChange] = React.useState(uuid()) const batchBtnDisabled = React.useMemo(() => { -- Gitee