Merge pull request #35670 from sokumon/sidebar-item-filters

feat: allow sidebar items to use filters
This commit is contained in:
Soham Kulkarni 2026-01-06 14:14:31 +05:30 committed by GitHub
commit 4ff06e6583
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 48 additions and 4 deletions

View file

@ -27,10 +27,10 @@ frappe.ui.form.on("Workspace Sidebar Item", {
let row = locals[cdt][cdn];
let grid = frm.fields_dict.items.grid;
let link_to = row.link_to;
let row_obj = grid.get_grid_row(cdn);
if (link_to) {
frappe.model.with_doctype(link_to, function () {
let meta = frappe.get_meta(link_to);
let row_obj = grid.get_grid_row(cdn);
let field_obj = row_obj.get_field("navigate_to_tab");
let tab_fieldnames = meta.fields
.filter((field) => field.fieldtype === "Tab Break")
@ -41,3 +41,34 @@ frappe.ui.form.on("Workspace Sidebar Item", {
}
},
});
frappe.ui.form.on("Workspace Sidebar Item", {
form_render(frm, cdt, cdn) {
const row = locals[cdt][cdn];
let grid = frm.fields_dict.items.grid;
let row_obj = grid.get_grid_row(cdn);
let link_to = row.link_to;
if (!row_obj) return;
grid.update_docfield_property("filters", "hidden", 1);
const field = row_obj.get_field("filter_area");
if (!field) return;
let filter_group = new frappe.ui.FilterGroup({
parent: $(field.wrapper),
doctype: link_to,
on_change: () => {
frm.dirty();
let fieldname = "filters";
let value = JSON.stringify(filter_group.get_filters());
frappe.model.set_value(cdt, cdn, fieldname, value);
},
});
$(field.wrapper).find(".filter-area").css("margin-bottom", "10px");
$(field.wrapper)
.find(".filter-area")
.prepend("<label class='control-label'>Filters</label>");
if (row.filters) {
filter_group.add_filters_to_filter_group(JSON.parse(row.filters));
}
},
});

View file

@ -25,6 +25,7 @@
"column_break_jexf",
"display_depends_on",
"section_break_whjq",
"filter_area",
"filters",
"route_options"
],
@ -162,13 +163,18 @@
"fieldname": "navigate_to_tab",
"fieldtype": "Autocomplete",
"label": "Tab"
},
{
"fieldname": "filter_area",
"fieldtype": "HTML",
"label": "Filter Area"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-12-29 17:11:16.069665",
"modified": "2026-01-05 17:51:09.868113",
"modified_by": "Administrator",
"module": "Desk",
"name": "Workspace Sidebar Item",

View file

@ -48,11 +48,18 @@ frappe.ui.sidebar_item.TypeLink = class SidebarItem {
route_options: JSON.parse(this.item.route_options),
});
} else {
path = frappe.utils.generate_route({
let args = {
type: this.item.link_type,
name: this.item.link_to,
tab: this.item.tab,
});
};
if (this.item.filters) {
let filters_json = frappe.utils.get_filter_as_json(
JSON.parse(this.item.filters)
);
args.filters = filters_json;
}
path = frappe.utils.generate_route(args);
}
}
if (path) {