fix: outdated code conditions and global variable (#2581)
* Fixed Check Code Validity to set outdated as false when type does not exist * feat: Refactor update_template_values function Refactor the `update_template_values` function to improve code readability and maintainability. Rename the parameters `frontend_template` to `new_template` and `raw_template` to `previous_template` for clarity. Update the variable names within the function accordingly. * feat(update_template_field): update load_from_db in case field value is not the default * refactor: update template values in PromptComponent Update the `update_template_values` function in the `PromptComponent` class to improve code readability and maintainability. Rename the parameters `frontend_template` to `new_template` and `raw_template` to `previous_template` for clarity. Update the variable names within the function accordingly. --------- Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
This commit is contained in:
parent
2736d5920b
commit
74433bf023
3 changed files with 25 additions and 23 deletions
|
|
@ -41,5 +41,5 @@ class PromptComponent(Component):
|
||||||
)
|
)
|
||||||
# Now that template is updated, we need to grab any values that were set in the current_build_config
|
# Now that template is updated, we need to grab any values that were set in the current_build_config
|
||||||
# and update the frontend_node with those values
|
# and update the frontend_node with those values
|
||||||
update_template_values(frontend_template=frontend_node, raw_template=current_build_config["template"])
|
update_template_values(new_template=frontend_node, previous_template=current_build_config["template"])
|
||||||
return frontend_node
|
return frontend_node
|
||||||
|
|
|
||||||
|
|
@ -27,17 +27,22 @@ def get_file_path_value(file_path):
|
||||||
return file_path
|
return file_path
|
||||||
|
|
||||||
|
|
||||||
def update_template_field(frontend_template, key, value_dict):
|
def update_template_field(new_template, key, previous_value_dict):
|
||||||
"""Updates a specific field in the frontend template."""
|
"""Updates a specific field in the frontend template."""
|
||||||
template_field = frontend_template.get(key)
|
template_field = new_template.get(key)
|
||||||
if not template_field or template_field.get("type") != value_dict.get("type"):
|
if not template_field or template_field.get("type") != previous_value_dict.get("type"):
|
||||||
return
|
return
|
||||||
|
|
||||||
if "value" in value_dict and value_dict["value"]:
|
if "value" in previous_value_dict and previous_value_dict["value"] is not None:
|
||||||
template_field["value"] = value_dict["value"]
|
# if the new value is different, this means the default value has been changed
|
||||||
|
# so we need to update the value in the template_field
|
||||||
|
# and set other parameters to the new ones as well
|
||||||
|
if template_field.get("value") != previous_value_dict["value"]:
|
||||||
|
template_field["load_from_db"] = previous_value_dict.get("load_from_db", False)
|
||||||
|
template_field["value"] = previous_value_dict["value"]
|
||||||
|
|
||||||
if "file_path" in value_dict and value_dict["file_path"]:
|
if "file_path" in previous_value_dict and previous_value_dict["file_path"]:
|
||||||
file_path_value = get_file_path_value(value_dict["file_path"])
|
file_path_value = get_file_path_value(previous_value_dict["file_path"])
|
||||||
if not file_path_value:
|
if not file_path_value:
|
||||||
# If the file does not exist, remove the value from the template_field["value"]
|
# If the file does not exist, remove the value from the template_field["value"]
|
||||||
template_field["value"] = ""
|
template_field["value"] = ""
|
||||||
|
|
@ -50,13 +55,13 @@ def is_valid_data(frontend_node, raw_frontend_data):
|
||||||
return frontend_node and "template" in frontend_node and raw_frontend_data_is_valid(raw_frontend_data)
|
return frontend_node and "template" in frontend_node and raw_frontend_data_is_valid(raw_frontend_data)
|
||||||
|
|
||||||
|
|
||||||
def update_template_values(frontend_template, raw_template):
|
def update_template_values(new_template, previous_template):
|
||||||
"""Updates the frontend template with values from the raw template."""
|
"""Updates the frontend template with values from the raw template."""
|
||||||
for key, value_dict in raw_template.items():
|
for key, previous_value_dict in previous_template.items():
|
||||||
if key == "code" or not isinstance(value_dict, dict):
|
if key == "code" or not isinstance(previous_value_dict, dict):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
update_template_field(frontend_template, key, value_dict)
|
update_template_field(new_template, key, previous_value_dict)
|
||||||
|
|
||||||
|
|
||||||
def update_frontend_node_with_template_values(frontend_node, raw_frontend_node):
|
def update_frontend_node_with_template_values(frontend_node, raw_frontend_node):
|
||||||
|
|
|
||||||
|
|
@ -13,24 +13,21 @@ const useCheckCodeValidity = (
|
||||||
// This one should run only once
|
// This one should run only once
|
||||||
// first check if data.type in NATIVE_CATEGORIES
|
// first check if data.type in NATIVE_CATEGORIES
|
||||||
// if not return
|
// if not return
|
||||||
if (
|
if (!data?.node || !templates) return;
|
||||||
!Object.keys(nodeNames).includes(types[data.type]) ||
|
const currentCode = templates[data.type]?.template?.code?.value;
|
||||||
!data.node?.template?.code?.value
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
const thisNodeTemplate = templates[data.type].template;
|
|
||||||
// if the template does not have a code key
|
|
||||||
// return
|
|
||||||
if (!thisNodeTemplate.code) return;
|
|
||||||
const currentCode = thisNodeTemplate.code?.value;
|
|
||||||
const thisNodesCode = data.node!.template?.code?.value;
|
const thisNodesCode = data.node!.template?.code?.value;
|
||||||
const componentsToIgnore = ["CustomComponent"];
|
const componentsToIgnore = ["CustomComponent"];
|
||||||
setIsOutdated(
|
setIsOutdated(
|
||||||
currentCode !== thisNodesCode && !componentsToIgnore.includes(data.type),
|
currentCode &&
|
||||||
|
thisNodesCode &&
|
||||||
|
currentCode !== thisNodesCode &&
|
||||||
|
!componentsToIgnore.includes(data.type) &&
|
||||||
|
Object.keys(nodeNames).includes(types[data.type]),
|
||||||
);
|
);
|
||||||
setIsUserEdited(data.node?.edited ?? false);
|
setIsUserEdited(data.node?.edited ?? false);
|
||||||
// template.code can be undefined
|
// template.code can be undefined
|
||||||
}, [
|
}, [
|
||||||
|
data.node,
|
||||||
data.node?.template?.code?.value,
|
data.node?.template?.code?.value,
|
||||||
templates,
|
templates,
|
||||||
setIsOutdated,
|
setIsOutdated,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue