Skip to content

Commit 57ca0e0

Browse files
committed
Merge pull request #195 from gavrix/master
Add support for relation's count in toolbar details
2 parents 663a0fa + 44b8559 commit 57ca0e0

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export default class Browser extends DashboardView {
5858
newObject: null,
5959

6060
lastError: null,
61+
relationCount: 0,
6162
};
6263
}
6364

@@ -258,6 +259,11 @@ export default class Browser extends DashboardView {
258259
query.find({ useMasterKey: true }).then((data) => this.setState({ data: data, lastMax: 200 }));
259260
}
260261

262+
fetchRelationCount(relation) {
263+
let p = this.context.currentApp.getRelationCount(relation);
264+
p.then((count) => this.setState({ relationCount: count }));
265+
}
266+
261267
fetchNextPage() {
262268
if (!this.state.data) {
263269
return null;
@@ -327,8 +333,12 @@ export default class Browser extends DashboardView {
327333
setRelation(relation) {
328334
this.setState({
329335
relation: relation,
336+
relationCount: 0,
330337
selection: {},
331-
}, () => this.fetchData(relation, this.state.filters));
338+
}, () => {
339+
this.fetchData(relation, this.state.filters);
340+
this.fetchRelationCount(relation);
341+
});
332342
}
333343

334344
handlePointerClick({ className, id }) {
@@ -541,7 +551,7 @@ export default class Browser extends DashboardView {
541551

542552
browser = (
543553
<DataBrowser
544-
count={this.state.counts[className]}
554+
count={this.state.relation ? this.state.relationCount : this.state.counts[className]}
545555
perms={this.state.clp[className]}
546556
schema={schema}
547557
userPointers={userPointers}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,15 @@ let BrowserToolbar = ({
4444
}) => {
4545
let selectionLength = Object.keys(selection).length;
4646
let details = [];
47-
if (!relation) {
48-
if (count !== undefined) {
47+
if (count !== undefined) {
4948
if (count === 1) {
5049
details.push('1 object');
5150
} else {
5251
details.push(prettyNumber(count) + ' objects');
5352
}
54-
}
53+
}
54+
55+
if (!relation) {
5556
if (perms && !hidePerms) {
5657
let read = perms.get && perms.find && perms.get['*'] && perms.find['*'];
5758
let write = perms.create && perms.update && perms.delete && perms.create['*'] && perms.update['*'] && perms.delete['*'];

src/lib/ParseApp.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,12 @@ export default class ParseApp {
202202
return p;
203203
}
204204

205+
getRelationCount(relation) {
206+
this.setParseKeys();
207+
let p = relation.query().count({ useMasterKey: true });
208+
return p;
209+
}
210+
205211
getAnalyticsRetention(time) {
206212
time = Math.round(time.getTime() / 1000);
207213
return AJAX.abortableGet('/apps/' + this.slug + '/analytics_retention?at=' + time);

0 commit comments

Comments
 (0)