fix(parameterComponent): fix logic for setting load_from_db property in template object
fix(codeTabsComponent): fix logic for setting load_from_db property in template object fix(EditNodeModal): fix logic for setting load_from_db property in template object fix(globalVariablesPage): fix logic for deleting global variable by id feat(globalVariables): add getVariableId function to retrieve variable id by key feat(types): add getVariableId function to GlobalVariablesStore type
This commit is contained in:
parent
928ba602bb
commit
3d2a76438c
7 changed files with 101 additions and 58 deletions
|
|
@ -8,9 +8,6 @@ from langflow.services.auth import utils as auth_utils
|
||||||
from langflow.services.auth.utils import get_current_active_user
|
from langflow.services.auth.utils import get_current_active_user
|
||||||
from langflow.services.database.models.credential import Credential, CredentialCreate, CredentialRead, CredentialUpdate
|
from langflow.services.database.models.credential import Credential, CredentialCreate, CredentialRead, CredentialUpdate
|
||||||
from langflow.services.database.models.user.model import User
|
from langflow.services.database.models.user.model import User
|
||||||
from langflow.services.deps import get_session, get_settings_service
|
|
||||||
CredentialRead,
|
|
||||||
CredentialUpdate)
|
|
||||||
from langflow.services.database.models.user.model import User
|
from langflow.services.database.models.user.model import User
|
||||||
from langflow.services.deps import get_session, get_settings_service
|
from langflow.services.deps import get_session, get_settings_service
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -421,16 +421,26 @@ export default function ParameterComponent({
|
||||||
title: `the value inserted in ${data.node?.display_name} is a global variable, \n
|
title: `the value inserted in ${data.node?.display_name} is a global variable, \n
|
||||||
the real value will be update on run`,
|
the real value will be update on run`,
|
||||||
});
|
});
|
||||||
|
setNode(data.id, (oldNode) => {
|
||||||
|
let newNode = cloneDeep(oldNode);
|
||||||
|
newNode.data = {
|
||||||
|
...newNode.data,
|
||||||
|
};
|
||||||
|
newNode.data.node.template[name].load_from_db = true;
|
||||||
|
return newNode;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
setNode(data.id, (oldNode) => {
|
||||||
|
let newNode = cloneDeep(oldNode);
|
||||||
|
newNode.data = {
|
||||||
|
...newNode.data,
|
||||||
|
};
|
||||||
|
newNode.data.node.template[name].load_from_db = false;
|
||||||
|
return newNode;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
//mark as global variable
|
//mark as global variable
|
||||||
setNode(data.id, (oldNode) => {
|
|
||||||
let newNode = cloneDeep(oldNode);
|
|
||||||
newNode.data = {
|
|
||||||
...newNode.data,
|
|
||||||
};
|
|
||||||
newNode.data.node.template[name].load_from_db = true;
|
|
||||||
return newNode;
|
|
||||||
});
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -394,6 +394,18 @@ export default function CodeTabsComponent({
|
||||||
title: `the value inserted in ${templateField} is a global variable, \n
|
title: `the value inserted in ${templateField} is a global variable, \n
|
||||||
the real value will be update on run`,
|
the real value will be update on run`,
|
||||||
});
|
});
|
||||||
|
newInputList![
|
||||||
|
i
|
||||||
|
].data.node.template[
|
||||||
|
templateField
|
||||||
|
].load_from_db = true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
newInputList![
|
||||||
|
i
|
||||||
|
].data.node.template[
|
||||||
|
templateField
|
||||||
|
].load_from_db = false;
|
||||||
}
|
}
|
||||||
return newInputList;
|
return newInputList;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -163,11 +163,11 @@ const EditNodeModal = forwardRef(
|
||||||
scapedJSONStringfy(
|
scapedJSONStringfy(
|
||||||
myData.node!.template[templateParam].proxy
|
myData.node!.template[templateParam].proxy
|
||||||
? {
|
? {
|
||||||
...id,
|
...id,
|
||||||
proxy:
|
proxy:
|
||||||
myData.node?.template[templateParam]
|
myData.node?.template[templateParam]
|
||||||
.proxy,
|
.proxy,
|
||||||
}
|
}
|
||||||
: id
|
: id
|
||||||
)
|
)
|
||||||
) ?? false;
|
) ?? false;
|
||||||
|
|
@ -178,7 +178,7 @@ const EditNodeModal = forwardRef(
|
||||||
content={
|
content={
|
||||||
myData.node?.template[templateParam].proxy
|
myData.node?.template[templateParam].proxy
|
||||||
? myData.node?.template[templateParam]
|
? myData.node?.template[templateParam]
|
||||||
.proxy?.id
|
.proxy?.id
|
||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|
@ -186,16 +186,16 @@ const EditNodeModal = forwardRef(
|
||||||
{myData.node?.template[templateParam]
|
{myData.node?.template[templateParam]
|
||||||
.display_name
|
.display_name
|
||||||
? myData.node.template[templateParam]
|
? myData.node.template[templateParam]
|
||||||
.display_name
|
.display_name
|
||||||
: myData.node?.template[templateParam]
|
: myData.node?.template[templateParam]
|
||||||
.name}
|
.name}
|
||||||
</span>
|
</span>
|
||||||
</ShadTooltip>
|
</ShadTooltip>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
<TableCell className="w-[300px] p-0 text-center text-xs text-foreground ">
|
<TableCell className="w-[300px] p-0 text-center text-xs text-foreground ">
|
||||||
{myData.node?.template[templateParam].type ===
|
{myData.node?.template[templateParam].type ===
|
||||||
"str" &&
|
"str" &&
|
||||||
!myData.node.template[templateParam].options ? (
|
!myData.node.template[templateParam].options ? (
|
||||||
<div className="mx-auto">
|
<div className="mx-auto">
|
||||||
{myData.node.template[templateParam]
|
{myData.node.template[templateParam]
|
||||||
.list ? (
|
.list ? (
|
||||||
|
|
@ -205,12 +205,12 @@ const EditNodeModal = forwardRef(
|
||||||
value={
|
value={
|
||||||
!myData.node.template[templateParam]
|
!myData.node.template[templateParam]
|
||||||
.value ||
|
.value ||
|
||||||
myData.node.template[templateParam]
|
myData.node.template[templateParam]
|
||||||
.value === ""
|
.value === ""
|
||||||
? [""]
|
? [""]
|
||||||
: myData.node.template[
|
: myData.node.template[
|
||||||
templateParam
|
templateParam
|
||||||
].value
|
].value
|
||||||
}
|
}
|
||||||
onChange={(value: string[]) => {
|
onChange={(value: string[]) => {
|
||||||
handleOnNewValue(
|
handleOnNewValue(
|
||||||
|
|
@ -220,7 +220,7 @@ const EditNodeModal = forwardRef(
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
) : myData.node.template[templateParam]
|
) : myData.node.template[templateParam]
|
||||||
.multiline ? (
|
.multiline ? (
|
||||||
<TextAreaComponent
|
<TextAreaComponent
|
||||||
id={
|
id={
|
||||||
"textarea-edit-" +
|
"textarea-edit-" +
|
||||||
|
|
@ -275,24 +275,36 @@ const EditNodeModal = forwardRef(
|
||||||
title: `the value inserted in ${data.node?.display_name} is a global variable, \n
|
title: `the value inserted in ${data.node?.display_name} is a global variable, \n
|
||||||
the real value will be update on run`,
|
the real value will be update on run`,
|
||||||
});
|
});
|
||||||
|
//mark as global variable
|
||||||
|
setNode(data.id, (oldNode) => {
|
||||||
|
let newNode = cloneDeep(oldNode);
|
||||||
|
newNode.data = {
|
||||||
|
...newNode.data,
|
||||||
|
};
|
||||||
|
newNode.data.node.template[
|
||||||
|
templateParam
|
||||||
|
].load_from_db = true;
|
||||||
|
return newNode;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setNode(data.id, (oldNode) => {
|
||||||
|
let newNode = cloneDeep(oldNode);
|
||||||
|
newNode.data = {
|
||||||
|
...newNode.data,
|
||||||
|
};
|
||||||
|
newNode.data.node.template[
|
||||||
|
templateParam
|
||||||
|
].load_from_db = false;
|
||||||
|
return newNode;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
//mark as global variable
|
|
||||||
setNode(data.id, (oldNode) => {
|
|
||||||
let newNode = cloneDeep(oldNode);
|
|
||||||
newNode.data = {
|
|
||||||
...newNode.data,
|
|
||||||
};
|
|
||||||
newNode.data.node.template[
|
|
||||||
templateParam
|
|
||||||
].load_from_db = true;
|
|
||||||
return newNode;
|
|
||||||
});
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "NestedDict" ? (
|
.type === "NestedDict" ? (
|
||||||
<div className=" w-full">
|
<div className=" w-full">
|
||||||
<DictComponent
|
<DictComponent
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
|
|
@ -302,10 +314,10 @@ const EditNodeModal = forwardRef(
|
||||||
templateParam
|
templateParam
|
||||||
]?.value?.toString() === "{}"
|
]?.value?.toString() === "{}"
|
||||||
? {
|
? {
|
||||||
yourkey: "value",
|
yourkey: "value",
|
||||||
}
|
}
|
||||||
: myData.node!.template[templateParam]
|
: myData.node!.template[templateParam]
|
||||||
.value
|
.value
|
||||||
}
|
}
|
||||||
onChange={(newValue) => {
|
onChange={(newValue) => {
|
||||||
myData.node!.template[
|
myData.node!.template[
|
||||||
|
|
@ -320,7 +332,7 @@ const EditNodeModal = forwardRef(
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "dict" ? (
|
.type === "dict" ? (
|
||||||
<div
|
<div
|
||||||
className={classNames(
|
className={classNames(
|
||||||
"max-h-48 w-full overflow-auto custom-scroll",
|
"max-h-48 w-full overflow-auto custom-scroll",
|
||||||
|
|
@ -336,14 +348,14 @@ const EditNodeModal = forwardRef(
|
||||||
value={
|
value={
|
||||||
myData.node!.template[templateParam]
|
myData.node!.template[templateParam]
|
||||||
.value?.length === 0 ||
|
.value?.length === 0 ||
|
||||||
!myData.node!.template[templateParam]
|
!myData.node!.template[templateParam]
|
||||||
.value
|
.value
|
||||||
? [{ "": "" }]
|
? [{ "": "" }]
|
||||||
: convertObjToArray(
|
: convertObjToArray(
|
||||||
myData.node!.template[
|
myData.node!.template[
|
||||||
templateParam
|
templateParam
|
||||||
].value
|
].value
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
duplicateKey={errorDuplicateKey}
|
duplicateKey={errorDuplicateKey}
|
||||||
onChange={(newValue) => {
|
onChange={(newValue) => {
|
||||||
|
|
@ -363,7 +375,7 @@ const EditNodeModal = forwardRef(
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "bool" ? (
|
.type === "bool" ? (
|
||||||
<div className="ml-auto">
|
<div className="ml-auto">
|
||||||
{" "}
|
{" "}
|
||||||
<ToggleShadComponent
|
<ToggleShadComponent
|
||||||
|
|
@ -383,7 +395,7 @@ const EditNodeModal = forwardRef(
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "float" ? (
|
.type === "float" ? (
|
||||||
<div className="mx-auto">
|
<div className="mx-auto">
|
||||||
<FloatComponent
|
<FloatComponent
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
|
|
@ -402,7 +414,7 @@ const EditNodeModal = forwardRef(
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "str" &&
|
.type === "str" &&
|
||||||
myData.node.template[templateParam]
|
myData.node.template[templateParam]
|
||||||
.options ? (
|
.options ? (
|
||||||
<div className="mx-auto">
|
<div className="mx-auto">
|
||||||
|
|
@ -424,7 +436,7 @@ const EditNodeModal = forwardRef(
|
||||||
></Dropdown>
|
></Dropdown>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "int" ? (
|
.type === "int" ? (
|
||||||
<div className="mx-auto">
|
<div className="mx-auto">
|
||||||
<IntComponent
|
<IntComponent
|
||||||
id={"edit-int-input-" + index}
|
id={"edit-int-input-" + index}
|
||||||
|
|
@ -440,7 +452,7 @@ const EditNodeModal = forwardRef(
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "file" ? (
|
.type === "file" ? (
|
||||||
<div className="mx-auto">
|
<div className="mx-auto">
|
||||||
<InputFileComponent
|
<InputFileComponent
|
||||||
editNode={true}
|
editNode={true}
|
||||||
|
|
@ -464,7 +476,7 @@ const EditNodeModal = forwardRef(
|
||||||
></InputFileComponent>
|
></InputFileComponent>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "prompt" ? (
|
.type === "prompt" ? (
|
||||||
<div className="mx-auto">
|
<div className="mx-auto">
|
||||||
<PromptAreaComponent
|
<PromptAreaComponent
|
||||||
readonly={
|
readonly={
|
||||||
|
|
@ -495,13 +507,13 @@ const EditNodeModal = forwardRef(
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "code" ? (
|
.type === "code" ? (
|
||||||
<div className="mx-auto">
|
<div className="mx-auto">
|
||||||
<CodeAreaComponent
|
<CodeAreaComponent
|
||||||
readonly={
|
readonly={
|
||||||
myData.node?.flow &&
|
myData.node?.flow &&
|
||||||
myData.node.template[templateParam]
|
myData.node.template[templateParam]
|
||||||
.dynamic
|
.dynamic
|
||||||
? true
|
? true
|
||||||
: false
|
: false
|
||||||
}
|
}
|
||||||
|
|
@ -526,7 +538,7 @@ const EditNodeModal = forwardRef(
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
) : myData.node?.template[templateParam]
|
) : myData.node?.template[templateParam]
|
||||||
.type === "Any" ? (
|
.type === "Any" ? (
|
||||||
"-"
|
"-"
|
||||||
) : (
|
) : (
|
||||||
<div className="hidden"></div>
|
<div className="hidden"></div>
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,20 @@ export default function GlobalVariablesPage() {
|
||||||
const globalVariablesEntries = useGlobalVariablesStore(
|
const globalVariablesEntries = useGlobalVariablesStore(
|
||||||
(state) => state.globalVariablesEntries
|
(state) => state.globalVariablesEntries
|
||||||
);
|
);
|
||||||
|
const getVariableId = useGlobalVariablesStore((state) => state.getVariableId);
|
||||||
const removeGlobalVariable = useGlobalVariablesStore(
|
const removeGlobalVariable = useGlobalVariablesStore(
|
||||||
(state) => state.removeGlobalVariable
|
(state) => state.removeGlobalVariable
|
||||||
);
|
);
|
||||||
|
|
||||||
function handleDelete(key: string) {
|
function handleDelete(key: string) {
|
||||||
deleteGlobalVariable(key).then((_) => removeGlobalVariable(key));
|
const id = getVariableId(key);
|
||||||
|
if(id!==undefined)
|
||||||
|
{
|
||||||
|
deleteGlobalVariable(id).then((_) => removeGlobalVariable(key));
|
||||||
|
|
||||||
|
}else{
|
||||||
|
console.error("id is undefined");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<PageLayout
|
<PageLayout
|
||||||
|
|
|
||||||
|
|
@ -27,5 +27,8 @@ export const useGlobalVariablesStore = create<GlobalVariablesStore>(
|
||||||
globalVariablesEntries: Object.keys(newVariables),
|
globalVariablesEntries: Object.keys(newVariables),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
getVariableId: (key) => {
|
||||||
|
return get().globalVariables[key]?.id;
|
||||||
|
}
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -6,4 +6,5 @@ export type GlobalVariablesStore = {
|
||||||
}) => void;
|
}) => void;
|
||||||
addGlobalVariable: (key: string, id: string, provider?: string) => void;
|
addGlobalVariable: (key: string, id: string, provider?: string) => void;
|
||||||
removeGlobalVariable: (key: string) => void;
|
removeGlobalVariable: (key: string) => void;
|
||||||
|
getVariableId: (key: string) => string | undefined;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue