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:
anovazzi1 2024-02-08 16:58:13 -03:00
commit 3d2a76438c
7 changed files with 101 additions and 58 deletions

View file

@ -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

View file

@ -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;
});
}} }}
/> />
)} )}

View file

@ -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;
}); });

View file

@ -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>

View file

@ -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

View file

@ -27,5 +27,8 @@ export const useGlobalVariablesStore = create<GlobalVariablesStore>(
globalVariablesEntries: Object.keys(newVariables), globalVariablesEntries: Object.keys(newVariables),
}); });
}, },
getVariableId: (key) => {
return get().globalVariables[key]?.id;
}
}) })
); );

View file

@ -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;
}; };