Skip to content

Commit

Permalink
fix: Add builder page filter to replace component feature
Browse files Browse the repository at this point in the history
  • Loading branch information
surajshetty3416 committed Feb 18, 2025
1 parent 4696b09 commit 32d7812
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
20 changes: 20 additions & 0 deletions builder/builder/doctype/builder_settings/builder_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,17 @@ frappe.ui.form.on("Builder Settings", {
"builder.builder.doctype.builder_settings.builder_settings.get_components",
callback: (r) => {
const components = r.message;
let filter_group = null;
// modal to select target component and component to replace with
const d = new frappe.ui.Dialog({
title: __("Replace Component"),
fields: [
{
fieldtype: "HTML",
fieldname: "filter_area",
label: "Builder Page Filter",
description: "Limits the pages where the component is replaced",
},
{
fieldname: "target_component",
label: __("Target Component"),
Expand All @@ -25,6 +32,7 @@ frappe.ui.form.on("Builder Settings", {
"builder.builder.doctype.builder_settings.builder_settings.get_component_usage_count",
args: {
component_id: this.get_value(),
filters: filter_group?.get_filters(),
},
callback: (r) => {
const field = d.get_field("target_component");
Expand All @@ -50,6 +58,17 @@ frappe.ui.form.on("Builder Settings", {
],
});

frappe.model.with_doctype("Builder Page", () => {
filter_group = new frappe.ui.FilterGroup({
parent: d.get_field("filter_area").$wrapper,
doctype: "Builder Page",
on_change: () => {},
});
filter_group.wrapper.prepend(
"<h5>Filter Builder Pages</h5><p>Limits the pages where the component is replaced</p><br>",
);
filter_group.wrapper.append("<br><br>");
});
d.set_primary_action(__("Replace"), (values) => {
frappe.confirm(
__("Are you sure you want to replace {0} with {1}?", [
Expand All @@ -63,6 +82,7 @@ frappe.ui.form.on("Builder Settings", {
args: {
target_component: values.target_component,
replace_with: values.replace_with,
filters: filter_group.get_filters(),
},
callback: (r) => {
frappe.msgprint(__("Component replaced successfully"));
Expand Down
6 changes: 4 additions & 2 deletions builder/builder/doctype/builder_settings/builder_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def get_components():


@frappe.whitelist()
def replace_component(target_component: str, replace_with: str):
def replace_component(target_component: str, replace_with: str, filters=None):
if not target_component or not replace_with:
return
# check permissions
Expand All @@ -72,6 +72,7 @@ def replace_component(target_component: str, replace_with: str):
pages = frappe.get_all(
"Builder Page",
fields=["name"],
filters=filters,
or_filters={
"blocks": ["like", f"%{target_component}%"],
"draft_blocks": ["like", f"%{target_component}%"],
Expand All @@ -83,10 +84,11 @@ def replace_component(target_component: str, replace_with: str):


@frappe.whitelist()
def get_component_usage_count(component_id: str):
def get_component_usage_count(component_id: str, filters=None):
return len(
frappe.get_all(
"Builder Page",
filters=filters,
or_filters={
"blocks": ["like", f"%{component_id}%"],
"draft_blocks": ["like", f"%{component_id}%"],
Expand Down

0 comments on commit 32d7812

Please sign in to comment.