|
|
|
@ -12,19 +12,24 @@ import Loading from '@/app/components/base/loading'
|
|
|
|
import { fetchRunDetail, fetchTracingList } from '@/service/log'
|
|
|
|
import { fetchRunDetail, fetchTracingList } from '@/service/log'
|
|
|
|
import type { NodeTracing } from '@/types/workflow'
|
|
|
|
import type { NodeTracing } from '@/types/workflow'
|
|
|
|
import type { WorkflowRunDetailResponse } from '@/models/log'
|
|
|
|
import type { WorkflowRunDetailResponse } from '@/models/log'
|
|
|
|
import { useStore as useAppStore } from '@/app/components/app/store'
|
|
|
|
|
|
|
|
export type RunProps = {
|
|
|
|
export type RunProps = {
|
|
|
|
hideResult?: boolean
|
|
|
|
hideResult?: boolean
|
|
|
|
activeTab?: 'RESULT' | 'DETAIL' | 'TRACING'
|
|
|
|
activeTab?: 'RESULT' | 'DETAIL' | 'TRACING'
|
|
|
|
runID: string
|
|
|
|
|
|
|
|
getResultCallback?: (result: WorkflowRunDetailResponse) => void
|
|
|
|
getResultCallback?: (result: WorkflowRunDetailResponse) => void
|
|
|
|
|
|
|
|
runDetailUrl: string
|
|
|
|
|
|
|
|
tracingListUrl: string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const RunPanel: FC<RunProps> = ({ hideResult, activeTab = 'RESULT', runID, getResultCallback }) => {
|
|
|
|
const RunPanel: FC<RunProps> = ({
|
|
|
|
|
|
|
|
hideResult,
|
|
|
|
|
|
|
|
activeTab = 'RESULT',
|
|
|
|
|
|
|
|
getResultCallback,
|
|
|
|
|
|
|
|
runDetailUrl,
|
|
|
|
|
|
|
|
tracingListUrl,
|
|
|
|
|
|
|
|
}) => {
|
|
|
|
const { t } = useTranslation()
|
|
|
|
const { t } = useTranslation()
|
|
|
|
const { notify } = useContext(ToastContext)
|
|
|
|
const { notify } = useContext(ToastContext)
|
|
|
|
const [currentTab, setCurrentTab] = useState<string>(activeTab)
|
|
|
|
const [currentTab, setCurrentTab] = useState<string>(activeTab)
|
|
|
|
const appDetail = useAppStore(state => state.appDetail)
|
|
|
|
|
|
|
|
const [loading, setLoading] = useState<boolean>(true)
|
|
|
|
const [loading, setLoading] = useState<boolean>(true)
|
|
|
|
const [runDetail, setRunDetail] = useState<WorkflowRunDetailResponse>()
|
|
|
|
const [runDetail, setRunDetail] = useState<WorkflowRunDetailResponse>()
|
|
|
|
const [list, setList] = useState<NodeTracing[]>([])
|
|
|
|
const [list, setList] = useState<NodeTracing[]>([])
|
|
|
|
@ -37,12 +42,9 @@ const RunPanel: FC<RunProps> = ({ hideResult, activeTab = 'RESULT', runID, getRe
|
|
|
|
return 'N/A'
|
|
|
|
return 'N/A'
|
|
|
|
}, [runDetail])
|
|
|
|
}, [runDetail])
|
|
|
|
|
|
|
|
|
|
|
|
const getResult = useCallback(async (appID: string, runID: string) => {
|
|
|
|
const getResult = useCallback(async () => {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const res = await fetchRunDetail({
|
|
|
|
const res = await fetchRunDetail(runDetailUrl)
|
|
|
|
appID,
|
|
|
|
|
|
|
|
runID,
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
setRunDetail(res)
|
|
|
|
setRunDetail(res)
|
|
|
|
if (getResultCallback)
|
|
|
|
if (getResultCallback)
|
|
|
|
getResultCallback(res)
|
|
|
|
getResultCallback(res)
|
|
|
|
@ -53,12 +55,12 @@ const RunPanel: FC<RunProps> = ({ hideResult, activeTab = 'RESULT', runID, getRe
|
|
|
|
message: `${err}`,
|
|
|
|
message: `${err}`,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, [notify, getResultCallback])
|
|
|
|
}, [notify, getResultCallback, runDetailUrl])
|
|
|
|
|
|
|
|
|
|
|
|
const getTracingList = useCallback(async (appID: string, runID: string) => {
|
|
|
|
const getTracingList = useCallback(async () => {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
const { data: nodeList } = await fetchTracingList({
|
|
|
|
const { data: nodeList } = await fetchTracingList({
|
|
|
|
url: `/apps/${appID}/workflow-runs/${runID}/node-executions`,
|
|
|
|
url: tracingListUrl,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
setList(nodeList)
|
|
|
|
setList(nodeList)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -68,27 +70,27 @@ const RunPanel: FC<RunProps> = ({ hideResult, activeTab = 'RESULT', runID, getRe
|
|
|
|
message: `${err}`,
|
|
|
|
message: `${err}`,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, [notify])
|
|
|
|
}, [notify, tracingListUrl])
|
|
|
|
|
|
|
|
|
|
|
|
const getData = async (appID: string, runID: string) => {
|
|
|
|
const getData = useCallback(async () => {
|
|
|
|
setLoading(true)
|
|
|
|
setLoading(true)
|
|
|
|
await getResult(appID, runID)
|
|
|
|
await getResult()
|
|
|
|
await getTracingList(appID, runID)
|
|
|
|
await getTracingList()
|
|
|
|
setLoading(false)
|
|
|
|
setLoading(false)
|
|
|
|
}
|
|
|
|
}, [getResult, getTracingList])
|
|
|
|
|
|
|
|
|
|
|
|
const switchTab = async (tab: string) => {
|
|
|
|
const switchTab = async (tab: string) => {
|
|
|
|
setCurrentTab(tab)
|
|
|
|
setCurrentTab(tab)
|
|
|
|
if (tab === 'RESULT')
|
|
|
|
if (tab === 'RESULT')
|
|
|
|
appDetail?.id && await getResult(appDetail.id, runID)
|
|
|
|
runDetailUrl && await getResult()
|
|
|
|
appDetail?.id && await getTracingList(appDetail.id, runID)
|
|
|
|
tracingListUrl && await getTracingList()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
useEffect(() => {
|
|
|
|
// fetch data
|
|
|
|
// fetch data
|
|
|
|
if (appDetail && runID)
|
|
|
|
if (runDetailUrl && tracingListUrl)
|
|
|
|
getData(appDetail.id, runID)
|
|
|
|
getData()
|
|
|
|
}, [appDetail, runID])
|
|
|
|
}, [getData, runDetailUrl, tracingListUrl])
|
|
|
|
|
|
|
|
|
|
|
|
const [height, setHeight] = useState(0)
|
|
|
|
const [height, setHeight] = useState(0)
|
|
|
|
const ref = useRef<HTMLDivElement>(null)
|
|
|
|
const ref = useRef<HTMLDivElement>(null)
|
|
|
|
|