From 3884fa3c63447936b0a1c5fe4e9fe6a544e4c05f Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Tue, 9 Jan 2024 16:08:27 +0530 Subject: [PATCH] fix: duplicate field in filters (#24189) * fix: duplicate field in filters * test: clear filters using new clear filter button --- cypress/integration/routing.js | 1 + cypress/support/commands.js | 23 ++--------------------- frappe/public/js/frappe/list/list_view.js | 10 +++++++--- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/cypress/integration/routing.js b/cypress/integration/routing.js index 0822dd9b7d..79c0cea9dc 100644 --- a/cypress/integration/routing.js +++ b/cypress/integration/routing.js @@ -8,6 +8,7 @@ const test_queries = [ `?date=%5B">"%2C"2022-06-01"%5D`, `?name=%5B"like"%2C"%2542%25"%5D`, `?status=%5B"not%20in"%2C%5B"Open"%2C"Closed"%5D%5D`, + `?status=%5B%22%21%3D%22%2C%22Closed%22%5D&status=%5B%22%21%3D%22%2C%22Cancelled%22%5D`, ]; describe("SPA Routing", { scrollBehavior: false }, () => { diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 50d86d42b1..66defa88f7 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -449,27 +449,8 @@ Cypress.Commands.add("click_menu_button", (name) => { }); Cypress.Commands.add("clear_filters", () => { - let has_filter = false; - cy.intercept({ - method: "POST", - url: "api/method/frappe.model.utils.user_settings.save", - }).as("filter-saved"); - cy.get(".filter-section .filter-button").click({ force: true }); - cy.wait(300); - cy.get(".filter-popover").should("exist"); - cy.get(".filter-popover").then((popover) => { - if (popover.find("input.input-with-feedback")[0].value != "") { - has_filter = true; - } - }); - cy.get(".filter-popover").find(".clear-filters").click(); - cy.get(".filter-section .filter-button").click(); - cy.window() - .its("cur_list") - .then((cur_list) => { - cur_list && cur_list.filter_area && cur_list.filter_area.clear(); - has_filter && cy.wait("@filter-saved"); - }); + cy.get(".filter-x-button").click({ force: true }); + cy.wait(500); }); Cypress.Commands.add("click_modal_primary_button", (btn_name) => { diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 06bf9fef00..491867edc9 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -2016,9 +2016,13 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { parse_filters_from_route_options() { const filters = []; - for (let field in frappe.route_options) { + let params = new URLSearchParams(window.location.search); + if (!params.toString() && frappe.route_options) { + params = new Map(Object.entries(frappe.route_options)); + } + + params.forEach((value, field) => { let doctype = null; - let value = frappe.route_options[field]; let value_array; if ($.isArray(value) && value[0].startsWith("[") && value[0].endsWith("]")) { @@ -2060,7 +2064,7 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { filters.push([doctype, field, "=", value]); } } - } + }); return filters; }