in listview i want to add some filters dynamically like below code and result of listview should fetch according to that deafult filters.
how can we achieve that?
frappe.listview_settings['Asset'] = {
onload(listview) {
// triggers once before the list is loaded
frappe.call({
method: "some.function.call",
callback: function (r) {
// below step is not working
filters = ['Project', '=', r.message]
}
});
},
}
1 Like
Hi,
try use:
frappe.set_route(“List”,”Asset”,”List”, {“project”: [“=“, r.message]})
2 Likes
Thanks this worked perfectly fine. I was looking to hide the “Clear Filter” button but my JQuery code is not reflecting in the onload function.
frappe.listview_settings['DocType'] = {
onload(listview) {
// triggers once before the list is loaded
frappe.call({
method: "some.function",
callback: (r) => {
let projects = r.message.length > 0 ? r.message.map(m => m.parent) : [""];
frappe.set_route("List", "DocType", "List", { "project": ["in", projects] });
$('button:contains("Clear Filters")').remove();
}
});
},
}
You are welcome.
Try use .then(() => …):
frappe.set_route("List", "DocType", "List", { "project": ["in", projects] })
.then(() => $('button:contains("Clear Filters")').remove());
frappe.set_route return promise.
@Jiri_Sir I have tried this snippet but no effect in the JQuery code
Hi @Avinash_Utekar,
now I see 
The button (“Clear …”) does not exist after the frappe.set_route refresh the page. It exists only if the filter popup window is open.
Maybe try after frappe.set_route set some variable and then check this variable in shown event:
var open = false;
frappe.set_route("List", "DocType", "List", { "project": ["in", projects] })
.then(() => open = true);
$(".filter-button").on("shown.bs.popover", () => {
if (open){
$('button:contains("Clear Filters")').remove();
}
})
1 Like