Merge pull request #35670 from sokumon/sidebar-item-filters
feat: allow sidebar items to use filters
This commit is contained in:
commit
4ff06e6583
3 changed files with 48 additions and 4 deletions
|
|
@ -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));
|
||||
}
|
||||
},
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue