diff --git a/web/src/components/originui/select-with-search.tsx b/web/src/components/originui/select-with-search.tsx index 9627fe027..ce4327332 100644 --- a/web/src/components/originui/select-with-search.tsx +++ b/web/src/components/originui/select-with-search.tsx @@ -83,7 +83,7 @@ export const SelectWithSearch = forwardRef< aria-expanded={open} ref={ref} className={cn( - 'bg-background hover:bg-background border-input w-full justify-between px-3 font-normal outline-offset-0 outline-none focus-visible:outline-[3px]', + 'bg-background hover:bg-background border-input w-full justify-between px-3 font-normal outline-offset-0 outline-none focus-visible:outline-[3px]', triggerClassName, )} > diff --git a/web/src/components/ui/multi-select.tsx b/web/src/components/ui/multi-select.tsx index 8f4c8bcac..3f123c7b3 100644 --- a/web/src/components/ui/multi-select.tsx +++ b/web/src/components/ui/multi-select.tsx @@ -209,7 +209,7 @@ export const MultiSelect = React.forwardRef< {selectedValues.length > 0 ? (
- {selectedValues.slice(0, maxCount).map((value) => { + {selectedValues?.slice(0, maxCount)?.map((value) => { const option = options.find((o) => o.value === value); const IconComponent = option?.icon; return ( diff --git a/web/src/pages/agent/canvas/node/switch-node.tsx b/web/src/pages/agent/canvas/node/switch-node.tsx index 796239c33..102fb9f8d 100644 --- a/web/src/pages/agent/canvas/node/switch-node.tsx +++ b/web/src/pages/agent/canvas/node/switch-node.tsx @@ -78,14 +78,17 @@ function InnerSwitchNode({ id, data, selected }: NodeProps) { {positions.map((position, idx) => { return (
-
-
- - {idx < positions.length - 1 && - position.condition?.logical_operator?.toUpperCase()} - +
+
{getConditionKey(idx, positions.length)} +
+ {idx < positions.length - 1 && position.text} +
+ + {idx < positions.length - 1 && + position.condition?.logical_operator?.toUpperCase()} + {position.condition && ( { - console.info('xxx0000'); - }, [conditions]); - const positions = useMemo(() => { const list: Array<{ text: string; @@ -31,7 +27,7 @@ export const useBuildSwitchHandlePositions = ({ }> = []; [...conditions, ''].forEach((x, idx) => { - let top = idx === 0 ? 53 : list[idx - 1].top + 10 + 14; // case number (Case 1) height + flex gap + let top = idx === 0 ? 53 : list[idx - 1].top + 10 + 14 + 16 + 16; // case number (Case 1) height + flex gap if (idx >= 1) { const previousItems = conditions[idx - 1]?.items ?? []; if (previousItems.length > 0) { diff --git a/web/src/pages/agent/form-sheet/form-config-map.tsx b/web/src/pages/agent/form-sheet/form-config-map.tsx index 0bfd96717..faeb7ab5a 100644 --- a/web/src/pages/agent/form-sheet/form-config-map.tsx +++ b/web/src/pages/agent/form-sheet/form-config-map.tsx @@ -30,7 +30,7 @@ import QWeatherForm from '../form/qweather-form'; import RelevantForm from '../form/relevant-form'; import RetrievalForm from '../form/retrieval-form/next'; import RewriteQuestionForm from '../form/rewrite-question-form'; -import { StringTransformForm } from '../form/string-transform-form'; +import StringTransformForm from '../form/string-transform-form'; import SwitchForm from '../form/switch-form'; import TavilyExtractForm from '../form/tavily-extract-form'; import TavilyForm from '../form/tavily-form'; diff --git a/web/src/pages/agent/form/string-transform-form/index.tsx b/web/src/pages/agent/form/string-transform-form/index.tsx index 3efc636b9..0aad80b97 100644 --- a/web/src/pages/agent/form/string-transform-form/index.tsx +++ b/web/src/pages/agent/form/string-transform-form/index.tsx @@ -11,7 +11,7 @@ import { MultiSelect } from '@/components/ui/multi-select'; import { RAGFlowSelect } from '@/components/ui/select'; import { buildOptions } from '@/utils/form'; import { zodResolver } from '@hookform/resolvers/zod'; -import { useCallback, useMemo } from 'react'; +import { memo, useCallback, useMemo } from 'react'; import { useForm, useWatch } from 'react-hook-form'; import { z } from 'zod'; import { @@ -30,14 +30,14 @@ const DelimiterOptions = Object.entries(StringTransformDelimiter).map( ([key, val]) => ({ label: key, value: val }), ); -export const StringTransformForm = ({ node }: INextOperatorForm) => { +function StringTransformForm({ node }: INextOperatorForm) { const values = useValues(node); const FormSchema = z.object({ method: z.string(), split_ref: z.string().optional(), script: z.string().optional(), - delimiters: z.array(z.string()), + delimiters: z.array(z.string()).or(z.string()), outputs: z.object({ result: z.object({ type: z.string() }) }).optional(), }); @@ -56,14 +56,18 @@ export const StringTransformForm = ({ node }: INextOperatorForm) => { const handleMethodChange = useCallback( (value: StringTransformMethod) => { + const isMerge = value === StringTransformMethod.Merge; const outputs = { ...initialStringTransformValues.outputs, result: { - type: - value === StringTransformMethod.Merge ? 'string' : 'Array', + type: isMerge ? 'string' : 'Array', }, }; form.setValue('outputs', outputs); + form.setValue( + 'delimiters', + isMerge ? StringTransformDelimiter.Comma : [], + ); }, [form], ); @@ -132,8 +136,9 @@ export const StringTransformForm = ({ node }: INextOperatorForm) => { ) : ( {
); -}; +} + +export default memo(StringTransformForm); diff --git a/web/src/pages/agent/form/switch-form/index.tsx b/web/src/pages/agent/form/switch-form/index.tsx index 64b791974..e06c47996 100644 --- a/web/src/pages/agent/form/switch-form/index.tsx +++ b/web/src/pages/agent/form/switch-form/index.tsx @@ -17,7 +17,7 @@ import { cn } from '@/lib/utils'; import { zodResolver } from '@hookform/resolvers/zod'; import { toLower } from 'lodash'; import { X } from 'lucide-react'; -import { useCallback, useMemo } from 'react'; +import { memo, useCallback, useMemo } from 'react'; import { useFieldArray, useForm, useFormContext } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { z } from 'zod'; @@ -118,13 +118,13 @@ function ConditionCards({ ); return ( -
+
{fields.map((field, index) => { return (
( - + @@ -202,7 +202,7 @@ function ConditionCards({ ); } -const SwitchForm = ({ node }: IOperatorForm) => { +function SwitchForm({ node }: IOperatorForm) { const { t } = useTranslation(); const values = useValues(node); const switchOperatorOptions = useBuildSwitchOperatorOptions(); @@ -257,9 +257,23 @@ const SwitchForm = ({ node }: IOperatorForm) => { {fields.map((field, index) => { return ( -
{index === 0 ? 'IF' : 'ELSEIF'}
+
+
+ {index === 0 ? 'IF' : 'ELSEIF'} +
Case {index + 1}
+
+ {index !== 0 && ( + + )} +
-
+
{ @@ -307,6 +320,6 @@ const SwitchForm = ({ node }: IOperatorForm) => { ); -}; +} -export default SwitchForm; +export default memo(SwitchForm); diff --git a/web/src/pages/agents/agent-card.tsx b/web/src/pages/agents/agent-card.tsx index b2ccabe6b..c6497b968 100644 --- a/web/src/pages/agents/agent-card.tsx +++ b/web/src/pages/agents/agent-card.tsx @@ -1,5 +1,5 @@ import { MoreButton } from '@/components/more-button'; -import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; +import { RAGFlowAvatar } from '@/components/ragflow-avatar'; import { Card, CardContent } from '@/components/ui/card'; import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; import { IFlow } from '@/interfaces/database/flow'; @@ -19,10 +19,11 @@ export function AgentCard({ data, showAgentRenameModal }: DatasetCardProps) {
- - - CN - +