diff --git a/web/src/pages/data-flow/canvas/node/card.tsx b/web/src/pages/data-flow/canvas/node/card.tsx
index 042ca45e0..7b2f39ba7 100644
--- a/web/src/pages/data-flow/canvas/node/card.tsx
+++ b/web/src/pages/data-flow/canvas/node/card.tsx
@@ -1,57 +1,12 @@
-import { Button } from '@/components/ui/button';
-import {
- Card,
- CardContent,
- CardDescription,
- CardFooter,
- CardHeader,
- CardTitle,
-} from '@/components/ui/card';
-import { Input } from '@/components/ui/input';
-import { Label } from '@/components/ui/label';
-import {
- Select,
- SelectContent,
- SelectItem,
- SelectTrigger,
- SelectValue,
-} from '@/components/ui/select';
+import { cn } from '@/lib/utils';
+import { PropsWithChildren } from 'react';
-export function CardWithForm() {
+type LabelCardProps = {
+ className?: string;
+} & PropsWithChildren;
+
+export function LabelCard({ children, className }: LabelCardProps) {
return (
-
-
- Create project
- Deploy your new project in one-click.
-
-
-
-
-
-
-
-
-
+
{children}
);
}
diff --git a/web/src/pages/data-flow/canvas/node/extractor-node.tsx b/web/src/pages/data-flow/canvas/node/extractor-node.tsx
index b8746a163..8b2e03483 100644
--- a/web/src/pages/data-flow/canvas/node/extractor-node.tsx
+++ b/web/src/pages/data-flow/canvas/node/extractor-node.tsx
@@ -1 +1,18 @@
-export { RagNode as ExtractorNode } from './index';
+import LLMLabel from '@/components/llm-select/llm-label';
+import { IRagNode } from '@/interfaces/database/agent';
+import { NodeProps } from '@xyflow/react';
+import { get } from 'lodash';
+import { LabelCard } from './card';
+import { RagNode } from './index';
+
+export function ExtractorNode({ ...props }: NodeProps) {
+ const { data } = props;
+
+ return (
+
+
+
+
+
+ );
+}
diff --git a/web/src/pages/data-flow/canvas/node/index.tsx b/web/src/pages/data-flow/canvas/node/index.tsx
index 7a26d4ecc..4e004aa83 100644
--- a/web/src/pages/data-flow/canvas/node/index.tsx
+++ b/web/src/pages/data-flow/canvas/node/index.tsx
@@ -1,6 +1,6 @@
import { IRagNode } from '@/interfaces/database/flow';
import { NodeProps, Position } from '@xyflow/react';
-import { memo, useMemo } from 'react';
+import { PropsWithChildren, memo, useMemo } from 'react';
import { NodeHandleId, SingleOperators } from '../../constant';
import useGraphStore from '../../store';
import { CommonHandle } from './handle';
@@ -9,12 +9,14 @@ import NodeHeader from './node-header';
import { NodeWrapper } from './node-wrapper';
import { ToolBar } from './toolbar';
+type RagNodeProps = NodeProps & PropsWithChildren;
function InnerRagNode({
id,
data,
isConnectable = true,
selected,
-}: NodeProps) {
+ children,
+}: RagNodeProps) {
const getOperatorTypeFromId = useGraphStore(
(state) => state.getOperatorTypeFromId,
);
@@ -45,6 +47,7 @@ function InnerRagNode({
isConnectableEnd={false}
>
+ {children}
);
diff --git a/web/src/pages/data-flow/canvas/node/parser-node.tsx b/web/src/pages/data-flow/canvas/node/parser-node.tsx
index 512632db6..9201b98db 100644
--- a/web/src/pages/data-flow/canvas/node/parser-node.tsx
+++ b/web/src/pages/data-flow/canvas/node/parser-node.tsx
@@ -1,7 +1,10 @@
-import { IRagNode } from '@/interfaces/database/flow';
+import { BaseNode } from '@/interfaces/database/agent';
import { NodeProps, Position } from '@xyflow/react';
import { memo } from 'react';
+import { useTranslation } from 'react-i18next';
import { NodeHandleId } from '../../constant';
+import { ParserFormSchemaType } from '../../form/parser-form';
+import { LabelCard } from './card';
import { CommonHandle } from './handle';
import { LeftHandleStyle, RightHandleStyle } from './handle-icon';
import NodeHeader from './node-header';
@@ -12,7 +15,8 @@ function ParserNode({
data,
isConnectable = true,
selected,
-}: NodeProps) {
+}: NodeProps>) {
+ const { t } = useTranslation();
return (
+
+ {data.form?.setups.map((x, idx) => (
+
+ Parser {idx + 1}
+ {t(`dataflow.fileFormatOptions.${x.fileFormat}`)}
+
+ ))}
+
);
}
diff --git a/web/src/pages/data-flow/canvas/node/tokenizer-node.tsx b/web/src/pages/data-flow/canvas/node/tokenizer-node.tsx
index 710ddef1f..9ae2face2 100644
--- a/web/src/pages/data-flow/canvas/node/tokenizer-node.tsx
+++ b/web/src/pages/data-flow/canvas/node/tokenizer-node.tsx
@@ -1,7 +1,10 @@
-import { IRagNode } from '@/interfaces/database/flow';
+import { BaseNode } from '@/interfaces/database/agent';
import { NodeProps, Position } from '@xyflow/react';
import { memo } from 'react';
+import { useTranslation } from 'react-i18next';
import { NodeHandleId } from '../../constant';
+import { TokenizerFormSchemaType } from '../../form/tokenizer-form';
+import { LabelCard } from './card';
import { CommonHandle } from './handle';
import { LeftHandleStyle } from './handle-icon';
import NodeHeader from './node-header';
@@ -13,7 +16,9 @@ function TokenizerNode({
data,
isConnectable = true,
selected,
-}: NodeProps) {
+}: NodeProps>) {
+ const { t } = useTranslation();
+
return (
+
+
+ {t('dataflow.searchMethod')}
+
+
+ {data.form?.search_method.map((x) => (
+ - {t(`dataflow.tokenizerSearchMethodOptions.${x}`)}
+ ))}
+
+
);
diff --git a/web/src/pages/data-flow/form/tokenizer-form/index.tsx b/web/src/pages/data-flow/form/tokenizer-form/index.tsx
index cc949d5cd..358554508 100644
--- a/web/src/pages/data-flow/form/tokenizer-form/index.tsx
+++ b/web/src/pages/data-flow/form/tokenizer-form/index.tsx
@@ -29,6 +29,8 @@ export const FormSchema = z.object({
fields: z.string(),
});
+export type TokenizerFormSchemaType = z.infer;
+
const TokenizerForm = ({ node }: INextOperatorForm) => {
const { t } = useTranslation();
const defaultValues = useFormValues(initialTokenizerValues, node);
@@ -44,7 +46,7 @@ const TokenizerForm = ({ node }: INextOperatorForm) => {
'dataflow.tokenizerFieldsOptions',
);
- const form = useForm>({
+ const form = useForm({
defaultValues,
resolver: zodResolver(FormSchema),
mode: 'onChange',