mirror of
https://github.com/langbot-app/LangBot.git
synced 2025-11-25 03:15:06 +08:00
fix(pipeline dialog): config reset between tabs switching (#1597)
This commit is contained in:
committed by
GitHub
parent
b70001c579
commit
d60af2b451
@@ -1,3 +1,3 @@
|
|||||||
# Debug LangBot Frontend
|
# Debug LangBot Frontend
|
||||||
|
|
||||||
Please refer to the [Development Guide](https://docs.langbot.app/en/develop/dev-config.html) for more information.
|
Please refer to the [Development Guide](https://docs.langbot.app/en/develop/dev-config.html) for more information.
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import {
|
|||||||
} from '@/components/ui/sidebar';
|
} from '@/components/ui/sidebar';
|
||||||
import PipelineFormComponent from './components/pipeline-form/PipelineFormComponent';
|
import PipelineFormComponent from './components/pipeline-form/PipelineFormComponent';
|
||||||
import DebugDialog from './components/debug-dialog/DebugDialog';
|
import DebugDialog from './components/debug-dialog/DebugDialog';
|
||||||
import { PipelineFormEntity } from '@/app/infra/entities/pipeline';
|
|
||||||
|
|
||||||
interface PipelineDialogProps {
|
interface PipelineDialogProps {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@@ -26,7 +25,6 @@ interface PipelineDialogProps {
|
|||||||
pipelineId?: string;
|
pipelineId?: string;
|
||||||
isEditMode?: boolean;
|
isEditMode?: boolean;
|
||||||
isDefaultPipeline?: boolean;
|
isDefaultPipeline?: boolean;
|
||||||
initValues?: PipelineFormEntity;
|
|
||||||
onFinish: () => void;
|
onFinish: () => void;
|
||||||
onNewPipelineCreated?: (pipelineId: string) => void;
|
onNewPipelineCreated?: (pipelineId: string) => void;
|
||||||
onDeletePipeline: () => void;
|
onDeletePipeline: () => void;
|
||||||
@@ -41,7 +39,6 @@ export default function PipelineDialog({
|
|||||||
pipelineId: propPipelineId,
|
pipelineId: propPipelineId,
|
||||||
isEditMode = false,
|
isEditMode = false,
|
||||||
isDefaultPipeline = false,
|
isDefaultPipeline = false,
|
||||||
initValues,
|
|
||||||
onFinish,
|
onFinish,
|
||||||
onNewPipelineCreated,
|
onNewPipelineCreated,
|
||||||
onDeletePipeline,
|
onDeletePipeline,
|
||||||
@@ -119,7 +116,6 @@ export default function PipelineDialog({
|
|||||||
</DialogHeader>
|
</DialogHeader>
|
||||||
<div className="flex-1 overflow-y-auto px-6 pb-6">
|
<div className="flex-1 overflow-y-auto px-6 pb-6">
|
||||||
<PipelineFormComponent
|
<PipelineFormComponent
|
||||||
initValues={initValues}
|
|
||||||
isDefaultPipeline={isDefaultPipeline}
|
isDefaultPipeline={isDefaultPipeline}
|
||||||
onFinish={handleFinish}
|
onFinish={handleFinish}
|
||||||
onNewPipelineCreated={handleNewPipelineCreated}
|
onNewPipelineCreated={handleNewPipelineCreated}
|
||||||
@@ -184,7 +180,6 @@ export default function PipelineDialog({
|
|||||||
>
|
>
|
||||||
{currentMode === 'config' && (
|
{currentMode === 'config' && (
|
||||||
<PipelineFormComponent
|
<PipelineFormComponent
|
||||||
initValues={initValues}
|
|
||||||
isDefaultPipeline={isDefaultPipeline}
|
isDefaultPipeline={isDefaultPipeline}
|
||||||
onFinish={handleFinish}
|
onFinish={handleFinish}
|
||||||
onNewPipelineCreated={handleNewPipelineCreated}
|
onNewPipelineCreated={handleNewPipelineCreated}
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { httpClient } from '@/app/infra/http/HttpClient';
|
import { httpClient } from '@/app/infra/http/HttpClient';
|
||||||
import { Pipeline } from '@/app/infra/entities/api';
|
import { GetPipelineResponseData, Pipeline } from '@/app/infra/entities/api';
|
||||||
import {
|
import {
|
||||||
PipelineFormEntity,
|
|
||||||
PipelineConfigTab,
|
PipelineConfigTab,
|
||||||
PipelineConfigStage,
|
PipelineConfigStage,
|
||||||
} from '@/app/infra/entities/pipeline';
|
} from '@/app/infra/entities/pipeline';
|
||||||
@@ -34,7 +33,6 @@ import { useTranslation } from 'react-i18next';
|
|||||||
import { i18nObj } from '@/i18n/I18nProvider';
|
import { i18nObj } from '@/i18n/I18nProvider';
|
||||||
|
|
||||||
export default function PipelineFormComponent({
|
export default function PipelineFormComponent({
|
||||||
initValues,
|
|
||||||
isDefaultPipeline,
|
isDefaultPipeline,
|
||||||
onFinish,
|
onFinish,
|
||||||
onNewPipelineCreated,
|
onNewPipelineCreated,
|
||||||
@@ -49,8 +47,6 @@ export default function PipelineFormComponent({
|
|||||||
isEditMode: boolean;
|
isEditMode: boolean;
|
||||||
disableForm: boolean;
|
disableForm: boolean;
|
||||||
showButtons?: boolean;
|
showButtons?: boolean;
|
||||||
// 这里的写法很不安全不规范,未来流水线需要重新整理
|
|
||||||
initValues?: PipelineFormEntity;
|
|
||||||
onFinish: () => void;
|
onFinish: () => void;
|
||||||
onNewPipelineCreated: (pipelineId: string) => void;
|
onNewPipelineCreated: (pipelineId: string) => void;
|
||||||
onDeletePipeline: () => void;
|
onDeletePipeline: () => void;
|
||||||
@@ -132,13 +128,26 @@ export default function PipelineFormComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (isEditMode) {
|
||||||
|
httpClient
|
||||||
|
.getPipeline(pipelineId || '')
|
||||||
|
.then((resp: GetPipelineResponseData) => {
|
||||||
|
form.reset({
|
||||||
|
basic: {
|
||||||
|
name: resp.pipeline.name,
|
||||||
|
description: resp.pipeline.description,
|
||||||
|
},
|
||||||
|
ai: resp.pipeline.config.ai,
|
||||||
|
trigger: resp.pipeline.config.trigger,
|
||||||
|
safety: resp.pipeline.config.safety,
|
||||||
|
output: resp.pipeline.config.output,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (initValues) {
|
|
||||||
form.reset(initValues);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isEditMode) {
|
if (!isEditMode) {
|
||||||
form.reset({
|
form.reset({
|
||||||
basic: {
|
basic: {
|
||||||
@@ -147,7 +156,7 @@ export default function PipelineFormComponent({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [initValues, form, isEditMode]);
|
}, [form, isEditMode]);
|
||||||
|
|
||||||
function handleFormSubmit(values: FormValues) {
|
function handleFormSubmit(values: FormValues) {
|
||||||
console.log('handleFormSubmit', values);
|
console.log('handleFormSubmit', values);
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import CreateCardComponent from '@/app/infra/basic-component/create-card-compone
|
|||||||
import { httpClient } from '@/app/infra/http/HttpClient';
|
import { httpClient } from '@/app/infra/http/HttpClient';
|
||||||
import { PipelineCardVO } from '@/app/home/pipelines/components/pipeline-card/PipelineCardVO';
|
import { PipelineCardVO } from '@/app/home/pipelines/components/pipeline-card/PipelineCardVO';
|
||||||
import PipelineCard from '@/app/home/pipelines/components/pipeline-card/PipelineCard';
|
import PipelineCard from '@/app/home/pipelines/components/pipeline-card/PipelineCard';
|
||||||
import { PipelineFormEntity } from '@/app/infra/entities/pipeline';
|
|
||||||
import styles from './pipelineConfig.module.css';
|
import styles from './pipelineConfig.module.css';
|
||||||
import { toast } from 'sonner';
|
import { toast } from 'sonner';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
@@ -23,14 +22,7 @@ export default function PluginConfigPage() {
|
|||||||
const [isEditForm, setIsEditForm] = useState(false);
|
const [isEditForm, setIsEditForm] = useState(false);
|
||||||
const [pipelineList, setPipelineList] = useState<PipelineCardVO[]>([]);
|
const [pipelineList, setPipelineList] = useState<PipelineCardVO[]>([]);
|
||||||
const [selectedPipelineId, setSelectedPipelineId] = useState('');
|
const [selectedPipelineId, setSelectedPipelineId] = useState('');
|
||||||
const [selectedPipelineFormValue, setSelectedPipelineFormValue] =
|
|
||||||
useState<PipelineFormEntity>({
|
|
||||||
basic: {},
|
|
||||||
ai: {},
|
|
||||||
trigger: {},
|
|
||||||
safety: {},
|
|
||||||
output: {},
|
|
||||||
});
|
|
||||||
const [selectedPipelineIsDefault, setSelectedPipelineIsDefault] =
|
const [selectedPipelineIsDefault, setSelectedPipelineIsDefault] =
|
||||||
useState(false);
|
useState(false);
|
||||||
const [sortByValue, setSortByValue] = useState<string>('created_at');
|
const [sortByValue, setSortByValue] = useState<string>('created_at');
|
||||||
@@ -81,39 +73,16 @@ export default function PluginConfigPage() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSelectedPipelineForm(id?: string) {
|
|
||||||
httpClient.getPipeline(id ?? selectedPipelineId).then((value) => {
|
|
||||||
setSelectedPipelineFormValue({
|
|
||||||
ai: value.pipeline.config.ai,
|
|
||||||
basic: {
|
|
||||||
description: value.pipeline.description,
|
|
||||||
name: value.pipeline.name,
|
|
||||||
},
|
|
||||||
output: value.pipeline.config.output,
|
|
||||||
safety: value.pipeline.config.safety,
|
|
||||||
trigger: value.pipeline.config.trigger,
|
|
||||||
});
|
|
||||||
setSelectedPipelineIsDefault(value.pipeline.is_default ?? false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const handlePipelineClick = (pipelineId: string) => {
|
const handlePipelineClick = (pipelineId: string) => {
|
||||||
setSelectedPipelineId(pipelineId);
|
setSelectedPipelineId(pipelineId);
|
||||||
setIsEditForm(true);
|
setIsEditForm(true);
|
||||||
setDialogOpen(true);
|
setDialogOpen(true);
|
||||||
getSelectedPipelineForm(pipelineId);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleCreateNew = () => {
|
const handleCreateNew = () => {
|
||||||
setIsEditForm(false);
|
setIsEditForm(false);
|
||||||
setSelectedPipelineId('');
|
setSelectedPipelineId('');
|
||||||
setSelectedPipelineFormValue({
|
|
||||||
basic: {},
|
|
||||||
ai: {},
|
|
||||||
trigger: {},
|
|
||||||
safety: {},
|
|
||||||
output: {},
|
|
||||||
});
|
|
||||||
setSelectedPipelineIsDefault(false);
|
setSelectedPipelineIsDefault(false);
|
||||||
setDialogOpen(true);
|
setDialogOpen(true);
|
||||||
};
|
};
|
||||||
@@ -133,7 +102,6 @@ export default function PluginConfigPage() {
|
|||||||
pipelineId={selectedPipelineId || undefined}
|
pipelineId={selectedPipelineId || undefined}
|
||||||
isEditMode={isEditForm}
|
isEditMode={isEditForm}
|
||||||
isDefaultPipeline={selectedPipelineIsDefault}
|
isDefaultPipeline={selectedPipelineIsDefault}
|
||||||
initValues={selectedPipelineFormValue}
|
|
||||||
onFinish={() => {
|
onFinish={() => {
|
||||||
getPipelines();
|
getPipelines();
|
||||||
}}
|
}}
|
||||||
@@ -142,7 +110,6 @@ export default function PluginConfigPage() {
|
|||||||
setSelectedPipelineId(pipelineId);
|
setSelectedPipelineId(pipelineId);
|
||||||
setIsEditForm(true);
|
setIsEditForm(true);
|
||||||
setDialogOpen(true);
|
setDialogOpen(true);
|
||||||
getSelectedPipelineForm(pipelineId);
|
|
||||||
}}
|
}}
|
||||||
onDeletePipeline={() => {
|
onDeletePipeline={() => {
|
||||||
getPipelines();
|
getPipelines();
|
||||||
|
|||||||
Reference in New Issue
Block a user