Kaynağa Gözat

fix(form-nav): Get filters from list_view (#9124)

* fix(form-nav): Get filters from list_view

- Fallback to user_settings
- Fix UI Test

* style: Missing semicolon
version-14
Faris Ansari 5 yıl önce
committed by GitHub
ebeveyn
işleme
dcdf95a95f
Veri tabanında bu imza için bilinen anahtar bulunamadı GPG Anahtar Kimliği: 4AEE18F83AFDEB23
4 değiştirilmiş dosya ile 30 ekleme ve 9 silme
  1. +6
    -4
      cypress/integration/form.js
  2. +1
    -1
      frappe/desk/form/utils.py
  3. +18
    -4
      frappe/public/js/frappe/form/form.js
  4. +5
    -0
      frappe/public/js/frappe/list/list_view.js

+ 6
- 4
cypress/integration/form.js Dosyayı Görüntüle

@@ -1,6 +1,5 @@
context('Form', () => {
before(() => {
Cypress.config('defaultCommandTimeout', 100000);
cy.login();
cy.visit('/desk');
cy.window().its('frappe').then(frappe => {
@@ -27,14 +26,17 @@ context('Form', () => {
cy.get('.filter-field .input-with-feedback.form-control').type('123', { force: true });
cy.get('.filter-box .btn:contains("Apply")').click({ force: true });
cy.visit('/desk#Form/Contact/Test Form Contact 3');
cy.get('.prev-doc').click();
cy.get('.prev-doc').should('be.visible').click();
cy.get('.msgprint-dialog .modal-body').contains('No further records').should('be.visible');
cy.get('.btn-modal-close:visible').click();
cy.get('.next-doc').click();
cy.wait(200);
cy.contains('Test Form Contact 2').should('not.exist');
cy.get('.page-title .title-text').should('contain', 'Test Form Contact 1');
cy.visit('/desk#List/Contact');
cy.get('.clear-filters.btn').click();
// clear filters
cy.window().its('frappe').then((frappe) => {
let list_view = frappe.get_list_view('Contact');
list_view.filter_area.filter_list.clear_filters();
});
});
});

+ 1
- 1
frappe/desk/form/utils.py Dosyayı Görüntüle

@@ -84,7 +84,7 @@ def update_comment(name, content):
doc.save(ignore_permissions=True)

@frappe.whitelist()
def get_next(doctype, value, prev, filters, sort_order, sort_field):
def get_next(doctype, value, prev, filters=None, sort_order='desc', sort_field='modified'):

prev = int(prev)
if not filters: filters = []


+ 18
- 4
frappe/public/js/frappe/form/form.js Dosyayı Görüntüle

@@ -858,13 +858,27 @@ frappe.ui.form.Form = class FrappeForm {
}

navigate_records(prev) {
let list_settings = frappe.get_user_settings(this.doctype)['List'];
let filters, sort_field, sort_order;
let list_view = frappe.get_list_view(this.doctype);
if (list_view) {
filters = list_view.get_filters_for_args();
sort_field = list_view.sort_field;
sort_order = list_view.sort_order;
} else {
let list_settings = frappe.get_user_settings(this.doctype)['List'];
if (list_settings) {
filters = list_settings.filters;
sort_field = list_settings.sort_field;
sort_order = list_settings.sort_order;
}
}

let args = {
doctype: this.doctype,
value: this.docname,
filters: list_settings.filters,
sort_order: list_settings.sort_order,
sort_field: list_settings.sort_by,
filters,
sort_order,
sort_field,
prev,
};



+ 5
- 0
frappe/public/js/frappe/list/list_view.js Dosyayı Görüntüle

@@ -1538,3 +1538,8 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList {
$(document).on('save', (event, doc) => {
frappe.views.ListView.trigger_list_update(doc);
});

frappe.get_list_view = (doctype) => {
let route = `List/${doctype}/List`;
return frappe.views.list_view[route];
};

Yükleniyor…
İptal
Kaydet