Skip to content

Commit 597a0ed

Browse files
authored
updated fetch next query for pagination (#1706)
1 parent 4cbc78d commit 597a0ed

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

src/dashboard/Data/Browser/Browser.react.js

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,14 @@ class Browser extends DashboardView {
363363
query.ascending(field)
364364
}
365365

366+
if (field !== 'objectId') {
367+
if (sortDir === '-') {
368+
query.addDescending('objectId');
369+
} else {
370+
query.addAscending('objectId');
371+
}
372+
}
373+
366374
query.limit(MAX_ROWS_FETCHED);
367375
this.excludeFields(query, source);
368376

@@ -438,37 +446,38 @@ class Browser extends DashboardView {
438446
let className = this.props.params.className;
439447
let source = this.state.relation || className;
440448
let query = queryFromFilters(source, this.state.filters);
441-
if (this.state.ordering !== '-createdAt') {
449+
let field = this.state.ordering;
450+
let sortDir = field[0] === '-' ? '-' : '+';
451+
field = field[0] === '-' ? field.slice(1) : field;
452+
if (this.state.ordering !== '-objectId' && this.state.ordering !== 'objectId') {
442453
// Construct complex pagination query
443454
let equalityQuery = queryFromFilters(source, this.state.filters);
444-
let field = this.state.ordering;
445-
let ascending = true;
446455
let comp = this.state.data[this.state.data.length - 1].get(field);
447-
if (field === 'objectId' || field === '-objectId') {
448-
comp = this.state.data[this.state.data.length - 1].id;
449-
}
450-
if (field[0] === '-') {
451-
field = field.substr(1);
456+
457+
if (sortDir === '-') {
452458
query.lessThan(field, comp);
453-
ascending = false;
459+
equalityQuery.lessThan('objectId', this.state.data[this.state.data.length - 1].id);
454460
} else {
455461
query.greaterThan(field, comp);
462+
equalityQuery.greaterThan('objectId', this.state.data[this.state.data.length - 1].id);
456463
}
457-
if (field === 'createdAt') {
458-
equalityQuery.greaterThan('createdAt', this.state.data[this.state.data.length - 1].get('createdAt'));
459-
} else {
460-
equalityQuery.lessThan('createdAt', this.state.data[this.state.data.length - 1].get('createdAt'));
461-
equalityQuery.equalTo(field, comp);
462-
}
464+
equalityQuery.equalTo(field, comp);
463465
query = Parse.Query.or(query, equalityQuery);
464-
if (ascending) {
465-
query.ascending(this.state.ordering);
466+
if (sortDir === '-') {
467+
query.descending(field);
468+
query.addDescending('objectId');
466469
} else {
467-
query.descending(this.state.ordering.substr(1));
470+
query.ascending(field);
471+
query.addAscending('objectId');
468472
}
469473
} else {
470-
query.lessThan('createdAt', this.state.data[this.state.data.length - 1].get('createdAt'));
471-
query.addDescending('createdAt');
474+
if (sortDir === '-') {
475+
query.lessThan('objectId', this.state.data[this.state.data.length - 1].id);
476+
query.addDescending('objectId');
477+
} else {
478+
query.greaterThan('objectId', this.state.data[this.state.data.length - 1].id);
479+
query.addAscending('objectId');
480+
}
472481
}
473482
query.limit(MAX_ROWS_FETCHED);
474483
this.excludeFields(query, source);

0 commit comments

Comments
 (0)