diff --git a/web/app/components/workflow/header/run-mode.tsx b/web/app/components/workflow/header/run-mode.tsx index 11ff214f9b..a6612ec8df 100644 --- a/web/app/components/workflow/header/run-mode.tsx +++ b/web/app/components/workflow/header/run-mode.tsx @@ -1,7 +1,6 @@ -import React, { useCallback } from 'react' -// import { useEffect, useRef } from 'react' +import React, { useCallback, useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' -import { useWorkflowRun, /* useWorkflowRunValidation, */ useWorkflowStartRun } from '@/app/components/workflow/hooks' +import { useWorkflowRun, useWorkflowRunValidation, useWorkflowStartRun } from '@/app/components/workflow/hooks' import { useStore } from '@/app/components/workflow/store' import { WorkflowRunningStatus } from '@/app/components/workflow/types' import { useEventEmitterContextContext } from '@/context/event-emitter' @@ -10,9 +9,8 @@ import { getKeyboardKeyNameBySystem } from '@/app/components/workflow/utils' import cn from '@/utils/classnames' import { RiLoader2Line, RiPlayLargeLine } from '@remixicon/react' import { StopCircle } from '@/app/components/base/icons/src/vender/line/mediaAndDevices' -// import ShortcutsName from '../shortcuts-name' -// import { useDynamicTestRunOptions } from '../hooks/use-dynamic-test-run-options' -// import TestRunMenu, { type TestRunMenuRef, type TriggerOption } from './test-run-menu' +import { useDynamicTestRunOptions } from '../hooks/use-dynamic-test-run-options' +import TestRunMenu, { type TestRunMenuRef, type TriggerOption } from './test-run-menu' type RunModeProps = { text?: string @@ -24,42 +22,42 @@ const RunMode = ({ const { t } = useTranslation() const { handleWorkflowStartRunInWorkflow } = useWorkflowStartRun() const { handleStopRun } = useWorkflowRun() - // const { validateBeforeRun } = useWorkflowRunValidation() + const { validateBeforeRun } = useWorkflowRunValidation() const workflowRunningData = useStore(s => s.workflowRunningData) const isRunning = workflowRunningData?.result.status === WorkflowRunningStatus.Running - // const dynamicOptions = useDynamicTestRunOptions() - // const testRunMenuRef = useRef(null) + const dynamicOptions = useDynamicTestRunOptions() + const testRunMenuRef = useRef(null) - // useEffect(() => { - // // @ts-expect-error - Dynamic property for backward compatibility with keyboard shortcuts - // window._toggleTestRunDropdown = () => { - // testRunMenuRef.current?.toggle() - // } - // return () => { - // // @ts-expect-error - Dynamic property cleanup - // delete window._toggleTestRunDropdown - // } - // }, []) + useEffect(() => { + // @ts-expect-error - Dynamic property for backward compatibility with keyboard shortcuts + window._toggleTestRunDropdown = () => { + testRunMenuRef.current?.toggle() + } + return () => { + // @ts-expect-error - Dynamic property cleanup + delete window._toggleTestRunDropdown + } + }, []) const handleStop = useCallback(() => { handleStopRun(workflowRunningData?.task_id || '') }, [handleStopRun, workflowRunningData?.task_id]) - // const handleTriggerSelect = (option: TriggerOption) => { - // // Validate checklist before running any workflow - // if (!validateBeforeRun()) - // return + const handleTriggerSelect = useCallback((option: TriggerOption) => { + // Validate checklist before running any workflow + if (!validateBeforeRun()) + return - // if (option.type === 'user_input') { - // handleWorkflowStartRunInWorkflow() - // } - // else { - // // Placeholder for trigger-specific execution logic for schedule, webhook, plugin types - // console.log('TODO: Handle trigger execution for type:', option.type, 'nodeId:', option.nodeId) - // } - // } + if (option.type === 'user_input') { + handleWorkflowStartRunInWorkflow() + } + else { + // Placeholder for trigger-specific execution logic for schedule, webhook, plugin types + console.log('TODO: Handle trigger execution for type:', option.type, 'nodeId:', option.nodeId) + } + }, [validateBeforeRun, handleWorkflowStartRunInWorkflow]) const { eventEmitter } = useEventEmitterContextContext() eventEmitter?.useSubscription((v: any) => { @@ -69,63 +67,46 @@ const RunMode = ({ return (
- + ) + : ( + +
{text ?? t('workflow.common.run')} - - // - //
- // - // {text ?? t('workflow.common.run')} - // - //
- //
- ) - } - { - !isRunning && ( -
-
- {getKeyboardKeyNameBySystem('alt')} +
+
+ {getKeyboardKeyNameBySystem('alt')} +
+
+ R +
+
-
- R -
-
+ ) - } - + } { isRunning && (