Merge pull request #15380 from hrwX/fix_df_propagation
fix: Update df of all grid rows
This commit is contained in:
commit
340db94631
4 changed files with 105 additions and 9 deletions
92
cypress/integration/grid.js
Normal file
92
cypress/integration/grid.js
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
context('Grid', () => {
|
||||
beforeEach(() => {
|
||||
cy.login();
|
||||
cy.visit('/app/website');
|
||||
});
|
||||
before(() => {
|
||||
cy.login();
|
||||
cy.visit('/app/website');
|
||||
return cy.window().its('frappe').then(frappe => {
|
||||
return frappe.call("frappe.tests.ui_test_helpers.create_contact_phone_nos_records");
|
||||
});
|
||||
});
|
||||
it('update docfield property using update_docfield_property', () => {
|
||||
cy.visit('/app/contact/Test Contact');
|
||||
cy.window().its("cur_frm").then(frm => {
|
||||
cy.get('.frappe-control[data-fieldname="phone_nos"]').as('table');
|
||||
let field = frm.get_field("phone_nos");
|
||||
field.grid.update_docfield_property("is_primary_phone", "hidden", true);
|
||||
|
||||
cy.get('@table').find('[data-idx="1"] .edit-grid-row').click();
|
||||
cy.get('.grid-row-open').as('table-form');
|
||||
cy.get('@table-form').find('.frappe-control[data-fieldname="is_primary_phone"]').should("be.hidden");
|
||||
cy.get('@table-form').find('.grid-footer-toolbar').click();
|
||||
|
||||
cy.get('@table').find('[data-idx="2"] .edit-grid-row').click();
|
||||
cy.get('.grid-row-open').as('table-form');
|
||||
cy.get('@table-form').find('.frappe-control[data-fieldname="is_primary_phone"]').should("be.hidden");
|
||||
cy.get('@table-form').find('.grid-footer-toolbar').click();
|
||||
});
|
||||
});
|
||||
it('update docfield property using toggle_display', () => {
|
||||
cy.visit('/app/contact/Test Contact');
|
||||
cy.window().its("cur_frm").then(frm => {
|
||||
cy.get('.frappe-control[data-fieldname="phone_nos"]').as('table');
|
||||
let field = frm.get_field("phone_nos");
|
||||
field.grid.toggle_display("is_primary_mobile_no", false);
|
||||
|
||||
cy.get('@table').find('[data-idx="1"] .edit-grid-row').click();
|
||||
cy.get('.grid-row-open').as('table-form');
|
||||
cy.get('@table-form').find('.frappe-control[data-fieldname="is_primary_mobile_no"]').should("be.hidden");
|
||||
cy.get('@table-form').find('.grid-footer-toolbar').click();
|
||||
|
||||
cy.get('@table').find('[data-idx="2"] .edit-grid-row').click();
|
||||
cy.get('.grid-row-open').as('table-form');
|
||||
cy.get('@table-form').find('.frappe-control[data-fieldname="is_primary_mobile_no"]').should("be.hidden");
|
||||
cy.get('@table-form').find('.grid-footer-toolbar').click();
|
||||
});
|
||||
});
|
||||
it('update docfield property using toggle_enable', () => {
|
||||
cy.visit('/app/contact/Test Contact');
|
||||
cy.window().its("cur_frm").then(frm => {
|
||||
cy.get('.frappe-control[data-fieldname="phone_nos"]').as('table');
|
||||
let field = frm.get_field("phone_nos");
|
||||
field.grid.toggle_enable("phone", false);
|
||||
|
||||
|
||||
cy.get('@table').find('[data-idx="1"] .edit-grid-row').click();
|
||||
cy.get('.grid-row-open').as('table-form');
|
||||
cy.get('@table-form').find('.frappe-control[data-fieldname="phone"] .control-value').should('have.class', 'like-disabled-input');
|
||||
cy.get('@table-form').find('.grid-footer-toolbar').click();
|
||||
|
||||
cy.get('@table').find('[data-idx="2"] .edit-grid-row').click();
|
||||
cy.get('.grid-row-open').as('table-form');
|
||||
cy.get('@table-form').find('.frappe-control[data-fieldname="phone"] .control-value').should('have.class', 'like-disabled-input');
|
||||
cy.get('@table-form').find('.grid-footer-toolbar').click();
|
||||
});
|
||||
});
|
||||
it('update docfield property using toggle_reqd', () => {
|
||||
cy.visit('/app/contact/Test Contact');
|
||||
cy.window().its("cur_frm").then(frm => {
|
||||
cy.get('.frappe-control[data-fieldname="phone_nos"]').as('table');
|
||||
let field = frm.get_field("phone_nos");
|
||||
field.grid.toggle_reqd("phone", false);
|
||||
|
||||
cy.get('@table').find('[data-idx="1"] .edit-grid-row').click();
|
||||
cy.get('.grid-row-open').as('table-form');
|
||||
cy.get_field("phone").as('phone-field');
|
||||
cy.get('@phone-field').focus().clear().wait(500).blur();
|
||||
cy.get('@phone-field').should("not.have.class", "has-error");
|
||||
cy.get('@table-form').find('.grid-footer-toolbar').click();
|
||||
|
||||
cy.get('@table').find('[data-idx="2"] .edit-grid-row').click();
|
||||
cy.get('.grid-row-open').as('table-form');
|
||||
cy.get_field("phone").as('phone-field');
|
||||
cy.get('@phone-field').focus().clear().wait(500).blur();
|
||||
cy.get('@phone-field').should("not.have.class", "has-error");
|
||||
cy.get('@table-form').find('.grid-footer-toolbar').click();
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -1363,6 +1363,7 @@ frappe.ui.form.Form = class FrappeForm {
|
|||
|
||||
set_df_property(fieldname, property, value, docname, table_field, table_row_name=null) {
|
||||
let df;
|
||||
|
||||
if (!docname || !table_field) {
|
||||
df = this.get_docfield(fieldname);
|
||||
} else {
|
||||
|
|
@ -1372,8 +1373,10 @@ frappe.ui.form.Form = class FrappeForm {
|
|||
df = frappe.meta.get_docfield(filtered_fields[0].parent, table_field, table_row_name);
|
||||
}
|
||||
}
|
||||
|
||||
if (df && df[property] != value) {
|
||||
df[property] = value;
|
||||
|
||||
if (table_field && table_row_name) {
|
||||
if (this.fields_dict[fieldname].grid.grid_rows_by_docname[table_row_name]) {
|
||||
this.fields_dict[fieldname].grid.grid_rows_by_docname[table_row_name].refresh_field(fieldname);
|
||||
|
|
|
|||
|
|
@ -502,10 +502,9 @@ export default class Grid {
|
|||
|
||||
set_column_disp(fieldname, show) {
|
||||
if ($.isArray(fieldname)) {
|
||||
for (var i = 0, l = fieldname.length; i < l; i++) {
|
||||
var fname = fieldname[i];
|
||||
this.get_docfield(fname).hidden = show ? 0 : 1;
|
||||
this.set_editable_grid_column_disp(fname, show);
|
||||
for (let field of fieldname) {
|
||||
this.update_docfield_property(field, "hidden", show);
|
||||
this.set_editable_grid_column_disp(field, show);
|
||||
}
|
||||
} else {
|
||||
this.get_docfield(fieldname).hidden = show ? 0 : 1;
|
||||
|
|
@ -555,17 +554,17 @@ export default class Grid {
|
|||
}
|
||||
|
||||
toggle_reqd(fieldname, reqd) {
|
||||
this.get_docfield(fieldname).reqd = reqd;
|
||||
this.update_docfield_property(fieldname, "reqd", reqd);
|
||||
this.debounced_refresh();
|
||||
}
|
||||
|
||||
toggle_enable(fieldname, enable) {
|
||||
this.get_docfield(fieldname).read_only = enable ? 0 : 1;
|
||||
this.update_docfield_property(fieldname, "read_only", enable ? 0 : 1);
|
||||
this.debounced_refresh();
|
||||
}
|
||||
|
||||
toggle_display(fieldname, show) {
|
||||
this.get_docfield(fieldname).hidden = show ? 0 : 1;
|
||||
this.update_docfield_property(fieldname, "hidden", show ? 0 : 1);
|
||||
this.debounced_refresh();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -547,9 +547,11 @@ frappe.ui.form.Layout = class Layout {
|
|||
}
|
||||
|
||||
refresh_dependency() {
|
||||
// Resolve "depends_on" and show / hide accordingly
|
||||
/**
|
||||
Resolve "depends_on" and show / hide accordingly
|
||||
build dependants' dictionary
|
||||
*/
|
||||
|
||||
// build dependants' dictionary
|
||||
let has_dep = false;
|
||||
|
||||
for (let fkey in this.fields_list) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue