| @@ -11,44 +11,43 @@ import { useCallback, useEffect, useState } from 'react'; | |||
| let globalTimeOffset: number | undefined = undefined; | |||
| export const globalGetSeverTime = async () => { | |||
| const requestStartTime = Date.now() | |||
| const requestStartTime = Date.now(); | |||
| const [res] = await to(getSeverTimeReq()); | |||
| const requestEndTime = Date.now() | |||
| const requestEndTime = Date.now(); | |||
| const requestDuration = (requestEndTime - requestStartTime) / 2; | |||
| if (res && res.data) { | |||
| const serverDate = new Date(res.data); | |||
| const timeOffset = serverDate.getTime() + requestDuration - requestEndTime ; | |||
| const timeOffset = serverDate.getTime() + requestDuration - requestEndTime; | |||
| globalTimeOffset = timeOffset; | |||
| return timeOffset | |||
| return timeOffset; | |||
| } | |||
| }; | |||
| export const now = () => { | |||
| return new Date(Date.now() + (globalTimeOffset ?? 0)) | |||
| } | |||
| return new Date(Date.now() + (globalTimeOffset ?? 0)); | |||
| }; | |||
| /** 获取服务器时间 */ | |||
| export function useServerTime() { | |||
| const [timeOffset, setTimeOffset] = useState<number>(globalTimeOffset ?? 0); | |||
| useEffect(() => { | |||
| // 获取服务器时间 | |||
| const getSeverTime = async () => { | |||
| const [res] = await to(globalGetSeverTime()); | |||
| if (res) { | |||
| setTimeOffset(res) | |||
| setTimeOffset(res); | |||
| } | |||
| }; | |||
| // 获取服务器时间,防止第一次加载时,请求失败 | |||
| if (!globalTimeOffset) { | |||
| getSeverTime(); | |||
| } | |||
| }, []); | |||
| const now = useCallback(() => { | |||
| return new Date(Date.now() + timeOffset) | |||
| }, [timeOffset]) | |||
| return new Date(Date.now() + timeOffset); | |||
| }, [timeOffset]); | |||
| return [now, timeOffset] as const; | |||
| return [now] as const; | |||
| } | |||
| @@ -1,3 +1,4 @@ | |||
| import RunDuration from '@/components/RunDuration'; | |||
| import { ExperimentStatus } from '@/enums'; | |||
| import { useStateRef } from '@/hooks/useStateRef'; | |||
| import { useVisible } from '@/hooks/useVisible'; | |||
| @@ -5,7 +6,7 @@ import { getExperimentIns } from '@/services/experiment/index.js'; | |||
| import { getWorkflowById } from '@/services/pipeline/index.js'; | |||
| import themes from '@/styles/theme.less'; | |||
| import { fittingString, parseJsonText } from '@/utils'; | |||
| import { elapsedTime, formatDate } from '@/utils/date'; | |||
| import { formatDate } from '@/utils/date'; | |||
| import { to } from '@/utils/promise'; | |||
| import G6, { Util } from '@antv/g6'; | |||
| import { Button } from 'antd'; | |||
| @@ -15,8 +16,6 @@ import ExperimentDrawer from '../components/ExperimentDrawer'; | |||
| import ParamsModal from '../components/ViewParamsModal'; | |||
| import { experimentStatusInfo } from '../status'; | |||
| import styles from './index.less'; | |||
| import { useServerTime } from '@/hooks/useServerTime'; | |||
| import RunDuration from '@/components/RunDuration'; | |||
| let graph = null; | |||
| @@ -476,7 +475,10 @@ function ExperimentText() { | |||
| </div> | |||
| <div className={styles['pipeline-container__top__info']}> | |||
| 执行时长: | |||
| <RunDuration createTime={experimentIns?.create_time} finishTime={experimentIns?.finish_time} /> | |||
| <RunDuration | |||
| createTime={experimentIns?.create_time} | |||
| finishTime={experimentIns?.finish_time} | |||
| /> | |||
| </div> | |||
| <div className={styles['pipeline-container__top__info']}> | |||
| 状态: | |||