You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

experiment.ts 1.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { ExperimentStatus } from '@/enums';
  2. import { NodeStatus } from '@/types';
  3. import { parseJsonText } from './index';
  4. /**
  5. * 获取工作流节点
  6. *
  7. * @param node_status - 流水线workflow节点,json字符串
  8. * @return workflow 节点
  9. */
  10. export const getWorkflowStatus = (node_status?: string | null) => {
  11. if (!node_status) {
  12. return undefined;
  13. }
  14. const nodeStatusJson = parseJsonText(node_status);
  15. if (!nodeStatusJson) {
  16. return undefined;
  17. }
  18. for (const key in nodeStatusJson) {
  19. if (key.startsWith('workflow')) {
  20. return nodeStatusJson[key];
  21. }
  22. }
  23. return undefined;
  24. };
  25. /**
  26. * 获取实例状态
  27. * 终止或者 workflowStatus 不存在时,取实例状态,否则取流水线状态
  28. *
  29. * @param instanceStatus - 实例状态
  30. * @param workflowStatus - 流水线workflow节点
  31. * @return 实例状态
  32. */
  33. export const getExperimentInstanceStatus = (
  34. instanceStatus: ExperimentStatus,
  35. workflowStatus?: NodeStatus,
  36. ): ExperimentStatus => {
  37. return instanceStatus === ExperimentStatus.Terminated || !workflowStatus
  38. ? instanceStatus
  39. : workflowStatus?.phase;
  40. };
  41. /**
  42. * 获取实例状态
  43. * 终止或者 workflowStatus 不存在时,取实例状态,否则取流水线状态
  44. *
  45. * @param instanceStatus - 实例状态
  46. * @param workflowStatus - 流水线workflow节点
  47. * @return 实例状态
  48. */
  49. export const getInstanceStatusInList = (
  50. instanceStatus: ExperimentStatus,
  51. node_status?: string | null,
  52. ): ExperimentStatus => {
  53. const workflowStatus = getWorkflowStatus(node_status);
  54. return getExperimentInstanceStatus(instanceStatus, workflowStatus);
  55. };