ソースを参照

test: added test cases to validate keyboard shortcuts for the grid

version-14
Rohit Waghchaure 3年前
コミット
4e3f996d64
3個のファイルの変更58行の追加2行の削除
  1. +52
    -0
      cypress/integration/grid_keyboard_shortcut.js
  2. +4
    -1
      frappe/public/js/frappe/form/grid.js
  3. +2
    -1
      frappe/public/js/frappe/form/grid_row.js

+ 52
- 0
cypress/integration/grid_keyboard_shortcut.js ファイルの表示

@@ -0,0 +1,52 @@
context('Grid Keyboard Shortcut', () => {
let total_count = 0;
beforeEach(() => {
cy.login();
cy.visit('/app/doctype/User');
});
before(() => {
cy.login();
cy.visit('/app/doctype/User');
return cy.window().its('frappe').then(frappe => {
frappe.db.count('DocField', {
filters: {
'parent': 'User', 'parentfield': 'fields', 'parenttype': 'DocType'
}
}).then((r) => {
total_count = r;
})
});
});
it('Insert new row at the end', () => {
cy.wait(100);
cy.get('.frappe-control[data-fieldname="fields"]').as('table');
cy.get('.grid-body .grid-row').find('.col-xs-2').first().click()
cy.get('.grid-body .grid-row').find('.col-xs-2')
.first().type('{ctrl}{shift}{downarrow}').should('be.visible')
cy.get('[data-name="new-docfield-1"]').should('have.attr', 'data-idx', `${total_count+1}`);
});
it('Insert new row at the top', () => {
cy.wait(100);
cy.get('.frappe-control[data-fieldname="fields"]').as('table');
cy.get('.grid-body .grid-row').find('.col-xs-2').first().click()
cy.get('.grid-body .grid-row').find('.col-xs-2')
.first().type('{ctrl}{shift}{uparrow}').should('be.visible')
cy.get('[data-name="new-docfield-1"]').should('have.attr', 'data-idx', '1');
});
it('Insert new row below', () => {
cy.wait(100);
cy.get('.frappe-control[data-fieldname="fields"]').as('table');
cy.get('.grid-body .grid-row').find('.col-xs-2').first().click()
cy.get('.grid-body .grid-row').find('.col-xs-2')
.first().type('{ctrl}{downarrow}').should('be.visible')
cy.get('[data-name="new-docfield-1"]').should('have.attr', 'data-idx', '2');
});
it('Insert new row above', () => {
cy.wait(100);
cy.get('.frappe-control[data-fieldname="fields"]').as('table');
cy.get('.grid-body .grid-row').find('.col-xs-2').first().click()
cy.get('.grid-body .grid-row').find('.col-xs-2')
.first().type('{ctrl}{uparrow}').should('be.visible')
cy.get('[data-name="new-docfield-1"]').should('have.attr', 'data-idx', '1');
});
});

+ 4
- 1
frappe/public/js/frappe/form/grid.js ファイルの表示

@@ -616,11 +616,14 @@ export default class Grid {
});
}

add_new_row(idx, callback, show, copy_doc, go_to_last_page = false) {
add_new_row(idx, callback, show, copy_doc, go_to_last_page = false, go_to_first_page = false) {
if (this.is_editable()) {
if (go_to_last_page) {
this.grid_pagination.go_to_last_page_to_add_row();
} else if (go_to_first_page) {
this.grid_pagination.go_to_page(1);
}

if (this.frm) {
var d = frappe.model.add_child(this.frm.doc, this.df.options, this.df.fieldname, idx);
if (copy_doc) {


+ 2
- 1
frappe/public/js/frappe/form/grid_row.js ファイルの表示

@@ -821,9 +821,10 @@ export default class GridRow {
if (ctrl_key && e.shiftKey) {
let show = (e.which === DOWN_ARROW) ? true : false;
idx = (e.which === DOWN_ARROW) ? null : 1;
let goto_last_page = (e.which === DOWN_ARROW) ? true : false;

setTimeout(() => {
this.grid.add_new_row(idx, null, show);
this.grid.add_new_row(idx, null, show, false, goto_last_page, !goto_last_page);

idx = (e.which === DOWN_ARROW) ? this.grid.grid_rows.length : 1;
this.grid.grid_rows[(idx - 1)].toggle_editable_row();


読み込み中…
キャンセル
保存