mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-09 22:24:05 -08:00
fix: Reset pagination when output size changes (#9652)
This commit is contained in:
parent
566b52c4e1
commit
e520f8a98f
39
cypress/e2e/2230-ADO-ndv-reset-data-pagination.cy.ts
Normal file
39
cypress/e2e/2230-ADO-ndv-reset-data-pagination.cy.ts
Normal file
|
@ -0,0 +1,39 @@
|
|||
import { NDV, WorkflowPage } from '../pages';
|
||||
|
||||
const workflowPage = new WorkflowPage();
|
||||
const ndv = new NDV();
|
||||
|
||||
describe('ADO-2230 NDV Pagination Reset', () => {
|
||||
it('should reset pagaintion if data size changes to less than current page', () => {
|
||||
// setup, load workflow with debughelper node with random seed
|
||||
workflowPage.actions.visit();
|
||||
cy.createFixtureWorkflow('NDV-debug-generate-data.json', `Debug workflow`);
|
||||
workflowPage.actions.openNode('DebugHelper');
|
||||
|
||||
// execute node outputting 10 pages, check output of first page
|
||||
ndv.actions.execute();
|
||||
workflowPage.getters
|
||||
.successToast()
|
||||
.find('.el-notification__closeBtn')
|
||||
.click({ multiple: true });
|
||||
ndv.getters.outputTbodyCell(1, 1).invoke('text').should('eq', 'Terry.Dach@hotmail.com');
|
||||
|
||||
// open 4th page, check output
|
||||
ndv.getters.pagination().should('be.visible');
|
||||
ndv.getters.pagination().find('li.number').should('have.length', 5);
|
||||
ndv.getters.pagination().find('li.number').eq(3).click();
|
||||
ndv.getters.outputTbodyCell(1, 1).invoke('text').should('eq', 'Shane.Cormier68@yahoo.com');
|
||||
|
||||
// output a lot less data
|
||||
ndv.getters.parameterInput('randomDataCount').find('input').clear().type('20');
|
||||
ndv.actions.execute();
|
||||
workflowPage.getters
|
||||
.successToast()
|
||||
.find('.el-notification__closeBtn')
|
||||
.click({ multiple: true });
|
||||
|
||||
// check we are back to second page now
|
||||
ndv.getters.pagination().find('li.number').should('have.length', 2);
|
||||
ndv.getters.outputTbodyCell(1, 1).invoke('text').should('eq', 'Sylvia.Weber@hotmail.com');
|
||||
});
|
||||
});
|
48
cypress/fixtures/NDV-debug-generate-data.json
Normal file
48
cypress/fixtures/NDV-debug-generate-data.json
Normal file
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"meta": {
|
||||
"templateCredsSetupCompleted": true,
|
||||
"instanceId": "5b397bc122efafc165b2a6e67d5e8d75b8138f0d24d6352fac713e4845b002a6"
|
||||
},
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {},
|
||||
"id": "df260de7-6f28-4d07-b7b5-29588e27335b",
|
||||
"name": "When clicking \"Test workflow\"",
|
||||
"type": "n8n-nodes-base.manualTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
780,
|
||||
500
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"category": "randomData",
|
||||
"randomDataSeed": "0",
|
||||
"randomDataCount": 100
|
||||
},
|
||||
"id": "9e9a0708-86dc-474f-a60e-4315e757c08e",
|
||||
"name": "DebugHelper",
|
||||
"type": "n8n-nodes-base.debugHelper",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1000,
|
||||
500
|
||||
]
|
||||
}
|
||||
],
|
||||
"connections": {
|
||||
"When clicking \"Test workflow\"": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "DebugHelper",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"pinData": {}
|
||||
}
|
|
@ -1094,6 +1094,9 @@ export default defineComponent({
|
|||
jsonData(data: IDataObject[], prevData: IDataObject[]) {
|
||||
if (isEqual(data, prevData)) return;
|
||||
this.refreshDataSize();
|
||||
if (this.dataCount) {
|
||||
this.resetCurrentPageIfTooFar();
|
||||
}
|
||||
this.showPinDataDiscoveryTooltip(data);
|
||||
},
|
||||
binaryData(newData: IBinaryKeyData[], prevData: IBinaryKeyData[]) {
|
||||
|
@ -1411,12 +1414,16 @@ export default defineComponent({
|
|||
items_total: this.dataCount,
|
||||
});
|
||||
},
|
||||
onPageSizeChange(pageSize: number) {
|
||||
this.pageSize = pageSize;
|
||||
resetCurrentPageIfTooFar() {
|
||||
const maxPage = Math.ceil(this.dataCount / this.pageSize);
|
||||
if (maxPage < this.currentPage) {
|
||||
this.currentPage = maxPage;
|
||||
}
|
||||
},
|
||||
onPageSizeChange(pageSize: number) {
|
||||
this.pageSize = pageSize;
|
||||
|
||||
this.resetCurrentPageIfTooFar();
|
||||
|
||||
this.$telemetry.track('User changed ndv page size', {
|
||||
node_type: this.activeNode?.type,
|
||||
|
|
Loading…
Reference in a new issue