fix: append run not work

pull/21369/head
Joel 1 year ago
parent 6ba1b4c999
commit 1b390344ef

@ -16,6 +16,8 @@ import {
} from '@/service/use-workflow' } from '@/service/use-workflow'
import { useCallback, useEffect, useState } from 'react' import { useCallback, useEffect, useState } from 'react'
import { isConversationVar, isENV, isSystemVar } from '../nodes/_base/components/variable/utils' import { isConversationVar, isENV, isSystemVar } from '../nodes/_base/components/variable/utils'
import produce from 'immer'
import type { Node } from '@/app/components/workflow/types'
const useInspectVarsCrud = () => { const useInspectVarsCrud = () => {
const workflowStore = useWorkflowStore() const workflowStore = useWorkflowStore()
@ -28,6 +30,7 @@ const useInspectVarsCrud = () => {
deleteAllInspectVars: deleteAllInspectVarsInStore, deleteAllInspectVars: deleteAllInspectVarsInStore,
deleteNodeInspectVars: deleteNodeInspectVarsInStore, deleteNodeInspectVars: deleteNodeInspectVarsInStore,
deleteInspectVar: deleteInspectVarInStore, deleteInspectVar: deleteInspectVarInStore,
setNodesWithInspectVars,
} = workflowStore.getState() } = workflowStore.getState()
const { data: conversationVars } = useConversationVarValues(appId) const { data: conversationVars } = useConversationVarValues(appId)
@ -100,6 +103,28 @@ const useInspectVarsCrud = () => {
setNodeInspectVars(nodeId, vars) setNodeInspectVars(nodeId, vars)
} }
// after last run would call this
const appendNodeInspectVars = (nodeId: string, payload: VarInInspect[], allNodes: Node[]) => {
const nodes = produce(nodesWithInspectVars, (draft) => {
const nodeInfo = allNodes.find(node => node.id === nodeId)
if (nodeInfo) {
const index = draft.findIndex(node => node.nodeId === nodeId)
if (index === -1) {
draft.push({
nodeId,
nodeType: nodeInfo.data.type,
title: nodeInfo.data.title,
vars: payload,
})
}
else {
draft[index].vars = payload
}
}
})
setNodesWithInspectVars(nodes)
}
const deleteInspectVar = async (nodeId: string, varId: string) => { const deleteInspectVar = async (nodeId: string, varId: string) => {
await doDeleteInspectVar(varId) await doDeleteInspectVar(varId)
deleteInspectVarInStore(nodeId, varId) deleteInspectVarInStore(nodeId, varId)
@ -184,6 +209,7 @@ const useInspectVarsCrud = () => {
fetchInspectVarValue, fetchInspectVarValue,
editInspectVarValue, editInspectVarValue,
renameInspectVarName, renameInspectVarName,
appendNodeInspectVars,
deleteInspectVar, deleteInspectVar,
deleteNodeInspectorVars, deleteNodeInspectorVars,
deleteAllInspectorVars, deleteAllInspectorVars,

@ -73,8 +73,6 @@ const BasePanel: FC<BasePanelProps> = ({
const nodePanelWidth = useStore(s => s.nodePanelWidth) const nodePanelWidth = useStore(s => s.nodePanelWidth)
const otherPanelWidth = useStore(s => s.otherPanelWidth) const otherPanelWidth = useStore(s => s.otherPanelWidth)
const setNodePanelWidth = useStore(s => s.setNodePanelWidth) const setNodePanelWidth = useStore(s => s.setNodePanelWidth)
const nodesWithInspectVars = useStore(s => s.nodesWithInspectVars)
console.log(nodesWithInspectVars)
const maxNodePanelWidth = useMemo(() => { const maxNodePanelWidth = useMemo(() => {
if (!workflowCanvasWidth) if (!workflowCanvasWidth)

@ -51,6 +51,7 @@ import {
useStoreApi, useStoreApi,
} from 'reactflow' } from 'reactflow'
import { useInvalidLastRun } from '@/service/use-workflow' import { useInvalidLastRun } from '@/service/use-workflow'
import useInspectVarsCrud from '../../../hooks/use-inspect-vars-crud'
// eslint-disable-next-line ts/no-unsafe-function-type // eslint-disable-next-line ts/no-unsafe-function-type
const checkValidFns: Record<BlockEnum, Function> = { const checkValidFns: Record<BlockEnum, Function> = {
[BlockEnum.LLM]: checkLLMValid, [BlockEnum.LLM]: checkLLMValid,
@ -159,11 +160,13 @@ const useOneStepRun = <T>({
const store = useStoreApi() const store = useStoreApi()
const workflowStore = useWorkflowStore() const workflowStore = useWorkflowStore()
const { const {
appendNodeInspectVars,
setShowSingleRunPanel, setShowSingleRunPanel,
} = workflowStore.getState() } = workflowStore.getState()
const invalidLastRun = useInvalidLastRun(appId!, id) const invalidLastRun = useInvalidLastRun(appId!, id)
const [runResult, doSetRunResult] = useState<NodeRunResult | null>(null) const [runResult, doSetRunResult] = useState<NodeRunResult | null>(null)
const {
appendNodeInspectVars,
} = useInspectVarsCrud()
const setRunResult = useCallback(async (data: NodeRunResult | null) => { const setRunResult = useCallback(async (data: NodeRunResult | null) => {
doSetRunResult(data) doSetRunResult(data)
invalidLastRun() invalidLastRun()

@ -90,8 +90,9 @@ const BaseNode: FC<BaseNodeProps> = ({
} }
}, [data.isInLoop, data.selected, id, handleNodeLoopChildSizeChange]) }, [data.isInLoop, data.selected, id, handleNodeLoopChildSizeChange])
const { hasNodeInspectVars } = useInspectVarsCrud() const { hasNodeInspectVars, nodesWithInspectVars } = useInspectVarsCrud()
const hasVarValue = useMemo(() => hasNodeInspectVars(id), [id, hasNodeInspectVars]) // window.nodesWithInspectVars = nodesWithInspectVars
const hasVarValue = hasNodeInspectVars(id)
const showSelectedBorder = data.selected || data._isBundled || data._isEntering const showSelectedBorder = data.selected || data._isBundled || data._isEntering
const { const {
showRunningBorder, showRunningBorder,

@ -2,7 +2,6 @@ import type { StateCreator } from 'zustand'
import produce from 'immer' import produce from 'immer'
import type { NodeWithVar, VarInInspect } from '@/types/workflow' import type { NodeWithVar, VarInInspect } from '@/types/workflow'
import type { ValueSelector } from '../../../types' import type { ValueSelector } from '../../../types'
import type { Node } from '@/app/components/workflow/types'
type InspectVarsState = { type InspectVarsState = {
currentFocusNodeId: string | null currentFocusNodeId: string | null
@ -15,7 +14,6 @@ type InspectVarsActions = {
setNodesWithInspectVars: (payload: NodeWithVar[]) => void setNodesWithInspectVars: (payload: NodeWithVar[]) => void
deleteAllInspectVars: () => void deleteAllInspectVars: () => void
setNodeInspectVars: (nodeId: string, payload: VarInInspect[]) => void setNodeInspectVars: (nodeId: string, payload: VarInInspect[]) => void
appendNodeInspectVars: (nodeId: string, payload: VarInInspect[], allNodes: Node[]) => void
deleteNodeInspectVars: (nodeId: string) => void deleteNodeInspectVars: (nodeId: string) => void
setInspectVarValue: (nodeId: string, name: string, value: any) => void setInspectVarValue: (nodeId: string, name: string, value: any) => void
renameInspectVarName: (nodeId: string, varId: string, selector: ValueSelector) => void renameInspectVarName: (nodeId: string, varId: string, selector: ValueSelector) => void
@ -60,30 +58,6 @@ export const createInspectVarsSlice: StateCreator<InspectVarsSliceShape> = (set,
} }
}) })
}, },
// after last run would call this
appendNodeInspectVars: (nodeId, payload, allNodes) => {
set((state) => {
const nodes = state.nodesWithInspectVars
const nodeInfo = allNodes.find(node => node.id === nodeId)
if (nodeInfo) {
const index = nodes.findIndex(node => node.nodeId === nodeId)
if (index === -1) {
nodes.push({
nodeId,
nodeType: nodeInfo.data.type,
title: nodeInfo.data.title,
vars: payload,
})
}
else {
nodes[index].vars = payload
}
}
return {
nodesWithInspectVars: nodes,
}
})
},
deleteNodeInspectVars: (nodeId) => { deleteNodeInspectVars: (nodeId) => {
set(produce((state: InspectVarsSliceShape) => { set(produce((state: InspectVarsSliceShape) => {
const nodes = state.nodesWithInspectVars.filter(node => node.nodeId !== nodeId) const nodes = state.nodesWithInspectVars.filter(node => node.nodeId !== nodeId)

Loading…
Cancel
Save