From 9e697a2e8235b44bc59320a4178af8be228cb89d Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Fri, 20 Sep 2019 22:39:45 +0530 Subject: [PATCH 01/10] fix: turn off desk refresh for each update in bulk operations: updating multiple documents --- frappe/public/js/frappe/list/list_view.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 5f9aac0afb..79cf6f1986 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -124,7 +124,14 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { const actions = this.actions_menu_items.concat(this.workflow_action_menu_items); actions.map(item => { - const $item = this.page.add_actions_menu_item(item.label, item.action, item.standard); + let action = () => { + frappe.run_serially([ + this.toggle_auto_refresh(false), + item.action, + this.toggle_auto_refresh(true) + ]) + } + const $item = this.page.add_actions_menu_item(item.label, action, item.standard); if (item.class) { $item.addClass(item.class); } @@ -135,6 +142,10 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { }); } + toggle_auto_refresh(state) { + this.list_view_settings.disable_auto_refresh = !state; + } + show_restricted_list_indicator_if_applicable() { const match_rules_list = frappe.perm.get_match_rules(this.doctype); if(match_rules_list.length) { From 95334c0afe7d973bf667456088dfc61200410dd2 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Wed, 25 Sep 2019 22:49:25 +0530 Subject: [PATCH 02/10] fix: turn off refresh_count for each update in bulk operations: updatnng multiple documents --- frappe/public/js/frappe/list/list_view.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 79cf6f1986..d63cabfbfe 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -391,6 +391,14 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { } render() { + this.render_list(); + this.on_row_checked(); + this.render_count(); + this.render_tags(); + } + + render_list() { + // clear rows this.$result.find('.list-row-container').remove(); if (this.data.length > 0) { // append rows @@ -401,9 +409,6 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { }).join('') ); } - this.on_row_checked(); - this.render_count(); - this.render_tags(); } render_count() { @@ -1036,7 +1041,8 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { // in the listview according to filters applied // let's remove it manually this.data = this.data.filter(d => d.name !== name); - this.render(); + this.$result.find('.list-row-container').remove(); + this.render_list(); return; } @@ -1070,7 +1076,6 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { return return_value; }); this.toggle_result_area(); - this.render(); }); }); } From 499385a6f6e3fd326d79588af4ed1453f645fcd2 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Thu, 26 Sep 2019 13:31:53 +0530 Subject: [PATCH 03/10] fix: update in cypress tests: list_view.js --- cypress/integration/list_view.js | 13 +++++++------ frappe/public/js/frappe/list/list_view.js | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/cypress/integration/list_view.js b/cypress/integration/list_view.js index 1cf7f4e6d8..fcae02919a 100644 --- a/cypress/integration/list_view.js +++ b/cypress/integration/list_view.js @@ -19,13 +19,14 @@ context('List View', () => { cy.route({ method: 'POST', url:'api/method/frappe.model.workflow.bulk_workflow_approval' - }).as('bulk-approval'); - cy.route({ - method: 'GET', - url:'api/method/frappe.desk.reportview.get*' - }).as('update-list'); + }).then(()=> { + cy.route({ + method: 'GET', + url:'api/method/frappe.desk.reportview.get' + }) + }).as('update-view'); cy.wrap(elements).contains('Approve').click(); - cy.wait(['@bulk-approval', '@update-list']); + cy.wait('@update-view'); cy.get('.list-row-container:visible').should('contain', 'Approved'); }); }); diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index d63cabfbfe..8753caff2f 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -129,7 +129,7 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { this.toggle_auto_refresh(false), item.action, this.toggle_auto_refresh(true) - ]) + ]); } const $item = this.page.add_actions_menu_item(item.label, action, item.standard); if (item.class) { From e14dc883d91b63dd153d97bfca65d4cf5db6d7b4 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Thu, 26 Sep 2019 13:31:53 +0530 Subject: [PATCH 04/10] fix: update in cypress tests: list_view.js --- cypress/integration/list_view.js | 13 +++++++------ frappe/public/js/frappe/list/list_view.js | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/cypress/integration/list_view.js b/cypress/integration/list_view.js index 1cf7f4e6d8..9b3efd3b8e 100644 --- a/cypress/integration/list_view.js +++ b/cypress/integration/list_view.js @@ -19,13 +19,14 @@ context('List View', () => { cy.route({ method: 'POST', url:'api/method/frappe.model.workflow.bulk_workflow_approval' - }).as('bulk-approval'); - cy.route({ - method: 'GET', - url:'api/method/frappe.desk.reportview.get*' - }).as('update-list'); + }).then(()=> { + cy.route({ + method: 'POST', + url:'api/method/frappe.desk.reportview.get' + }) + }).as('update-view'); cy.wrap(elements).contains('Approve').click(); - cy.wait(['@bulk-approval', '@update-list']); + cy.wait('@update-view'); cy.get('.list-row-container:visible').should('contain', 'Approved'); }); }); diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index d63cabfbfe..8753caff2f 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -129,7 +129,7 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { this.toggle_auto_refresh(false), item.action, this.toggle_auto_refresh(true) - ]) + ]); } const $item = this.page.add_actions_menu_item(item.label, action, item.standard); if (item.class) { From 86d549b11826b9c6056a7f78c4917048a8ca29e0 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Thu, 26 Sep 2019 19:11:19 +0530 Subject: [PATCH 05/10] fix: list_view.js cypress tests update --- cypress/integration/list_view.js | 13 ++++++------- frappe/public/js/frappe/list/list_view.js | 1 - 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/cypress/integration/list_view.js b/cypress/integration/list_view.js index 9b3efd3b8e..8d37b19c89 100644 --- a/cypress/integration/list_view.js +++ b/cypress/integration/list_view.js @@ -19,14 +19,13 @@ context('List View', () => { cy.route({ method: 'POST', url:'api/method/frappe.model.workflow.bulk_workflow_approval' - }).then(()=> { - cy.route({ - method: 'POST', - url:'api/method/frappe.desk.reportview.get' - }) - }).as('update-view'); + }).as('bulk-approval'); + cy.route({ + method: 'POST', + url:'api/method/frappe.desk.reportview.get' + }).as('real-time-update'); cy.wrap(elements).contains('Approve').click(); - cy.wait('@update-view'); + cy.wait(['@bulk-approval', '@real-time-update']); cy.get('.list-row-container:visible').should('contain', 'Approved'); }); }); diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 8753caff2f..07055482b2 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -1041,7 +1041,6 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { // in the listview according to filters applied // let's remove it manually this.data = this.data.filter(d => d.name !== name); - this.$result.find('.list-row-container').remove(); this.render_list(); return; } From 2773313dcbca7f3071000df77fa603121a7c9ea2 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Thu, 26 Sep 2019 19:27:54 +0530 Subject: [PATCH 06/10] refactor: Remove redundant code --- frappe/tests/ui_test_helpers.py | 38 +++++++++++---------------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/frappe/tests/ui_test_helpers.py b/frappe/tests/ui_test_helpers.py index aaed05ca3a..4b5a854eb9 100644 --- a/frappe/tests/ui_test_helpers.py +++ b/frappe/tests/ui_test_helpers.py @@ -33,33 +33,19 @@ def create_if_not_exists(doc): @frappe.whitelist() def create_todo_records(): - if frappe.db.get_all('ToDo', {'description': 'this is first todo'}): - return + frappe.db.sql("DELETE FROM `tabToDo` WHERE name!=''") + + for number in range(1, 5): + frappe.get_doc({ + "doctype": "ToDo", + "date": add_to_date(now(), days=3), + "description": "this is {} todo".format(number) + }).insert() - frappe.get_doc({ - "doctype": "ToDo", - "date": add_to_date(now(), days=3), - "description": "this is first todo" - }).insert() - frappe.get_doc({ - "doctype": "ToDo", - "date": add_to_date(now(), days=-3), - "description": "this is second todo" - }).insert() - frappe.get_doc({ - "doctype": "ToDo", - "date": add_to_date(now(), months=2), - "description": "this is third todo" - }).insert() - frappe.get_doc({ - "doctype": "ToDo", - "date": add_to_date(now(), months=-2), - "description": "this is fourth todo" - }).insert() @frappe.whitelist() def setup_workflow(): - from frappe.workflow.doctype.workflow.test_workflow import create_todo_workflow - create_todo_workflow() - create_todo_records() - frappe.clear_cache() + from frappe.workflow.doctype.workflow.test_workflow import create_todo_workflow + create_todo_workflow() + create_todo_records() + frappe.clear_cache() From e6f56c48fd360fcb39e3ad6dea258184f57c5aa2 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Thu, 26 Sep 2019 19:33:26 +0530 Subject: [PATCH 07/10] fix: removed redundant run_serially method --- frappe/public/js/frappe/list/list_view.js | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 07055482b2..1e246dc637 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -124,14 +124,7 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { const actions = this.actions_menu_items.concat(this.workflow_action_menu_items); actions.map(item => { - let action = () => { - frappe.run_serially([ - this.toggle_auto_refresh(false), - item.action, - this.toggle_auto_refresh(true) - ]); - } - const $item = this.page.add_actions_menu_item(item.label, action, item.standard); + const $item = this.page.add_actions_menu_item(item.label, item.action, item.standard); if (item.class) { $item.addClass(item.class); } @@ -142,10 +135,6 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { }); } - toggle_auto_refresh(state) { - this.list_view_settings.disable_auto_refresh = !state; - } - show_restricted_list_indicator_if_applicable() { const match_rules_list = frappe.perm.get_match_rules(this.doctype); if(match_rules_list.length) { From c1dddc17dacd341ee36a871ba76be9cd776f5f0a Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Thu, 26 Sep 2019 19:36:11 +0530 Subject: [PATCH 08/10] Revert "refactor: Remove redundant code" This reverts commit 2773313dcbca7f3071000df77fa603121a7c9ea2. Because the changes would have resulted in other test failure... not worth it. --- frappe/tests/ui_test_helpers.py | 38 ++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/frappe/tests/ui_test_helpers.py b/frappe/tests/ui_test_helpers.py index 4b5a854eb9..aaed05ca3a 100644 --- a/frappe/tests/ui_test_helpers.py +++ b/frappe/tests/ui_test_helpers.py @@ -33,19 +33,33 @@ def create_if_not_exists(doc): @frappe.whitelist() def create_todo_records(): - frappe.db.sql("DELETE FROM `tabToDo` WHERE name!=''") - - for number in range(1, 5): - frappe.get_doc({ - "doctype": "ToDo", - "date": add_to_date(now(), days=3), - "description": "this is {} todo".format(number) - }).insert() + if frappe.db.get_all('ToDo', {'description': 'this is first todo'}): + return + frappe.get_doc({ + "doctype": "ToDo", + "date": add_to_date(now(), days=3), + "description": "this is first todo" + }).insert() + frappe.get_doc({ + "doctype": "ToDo", + "date": add_to_date(now(), days=-3), + "description": "this is second todo" + }).insert() + frappe.get_doc({ + "doctype": "ToDo", + "date": add_to_date(now(), months=2), + "description": "this is third todo" + }).insert() + frappe.get_doc({ + "doctype": "ToDo", + "date": add_to_date(now(), months=-2), + "description": "this is fourth todo" + }).insert() @frappe.whitelist() def setup_workflow(): - from frappe.workflow.doctype.workflow.test_workflow import create_todo_workflow - create_todo_workflow() - create_todo_records() - frappe.clear_cache() + from frappe.workflow.doctype.workflow.test_workflow import create_todo_workflow + create_todo_workflow() + create_todo_records() + frappe.clear_cache() From e8dde0f176cca52fc00bc269f6c58b339136a322 Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Thu, 26 Sep 2019 19:40:27 +0530 Subject: [PATCH 09/10] style: Fix formatting --- frappe/tests/ui_test_helpers.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frappe/tests/ui_test_helpers.py b/frappe/tests/ui_test_helpers.py index aaed05ca3a..3747eaa75b 100644 --- a/frappe/tests/ui_test_helpers.py +++ b/frappe/tests/ui_test_helpers.py @@ -59,7 +59,7 @@ def create_todo_records(): @frappe.whitelist() def setup_workflow(): - from frappe.workflow.doctype.workflow.test_workflow import create_todo_workflow - create_todo_workflow() - create_todo_records() - frappe.clear_cache() + from frappe.workflow.doctype.workflow.test_workflow import create_todo_workflow + create_todo_workflow() + create_todo_records() + frappe.clear_cache() From 93020585280842614e955e8ba177a7ed0b33a0de Mon Sep 17 00:00:00 2001 From: Suraj Shetty Date: Thu, 26 Sep 2019 19:57:23 +0530 Subject: [PATCH 10/10] fix: Render list after document update --- frappe/public/js/frappe/list/list_view.js | 1 + 1 file changed, 1 insertion(+) diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 1e246dc637..5c4a23962b 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -1064,6 +1064,7 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList { return return_value; }); this.toggle_result_area(); + this.render_list(); }); }); }