Skip to content

Commit 01f1bf7

Browse files
committed
Paginate reverse dependencies
1 parent e05572c commit 01f1bf7

File tree

4 files changed

+84
-15
lines changed

4 files changed

+84
-15
lines changed

app/adapters/dependency.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import ApplicationAdapter from './application';
2+
3+
export default ApplicationAdapter.extend({
4+
findQuery: function(store, type, query) {
5+
if (!query.reverse) {
6+
return this._super(store, type, query);
7+
}
8+
delete query.reverse;
9+
var crate = query.crate;
10+
delete query.crate;
11+
return this.ajax(this.urlPrefix() + '/crates/' + crate.get('id') +
12+
'/reverse_dependencies',
13+
'GET', { data: query });
14+
},
15+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Ember from 'ember';
2+
import PaginationMixin from 'cargo/mixins/pagination';
3+
4+
export default Ember.ArrayController.extend(PaginationMixin, {
5+
queryParams: ['page', 'per_page'],
6+
page: '1',
7+
per_page: 10,
8+
9+
totalItems: function() {
10+
return this.store.metadataFor('dependency').total;
11+
}.property('model'),
12+
});
13+

app/routes/crate/reverse-dependencies.js

+33-8
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,44 @@ import Ember from 'ember';
22
import Crate from 'cargo/models/crate';
33

44
export default Ember.Route.extend({
5+
queryParams: {
6+
page: { refreshModel: true },
7+
},
8+
9+
crate: null,
10+
reverse_dependencies: null,
11+
params: null,
12+
13+
model: function(params, transition) {
14+
this.set('params', params);
15+
return this._super(params, transition);
16+
},
17+
518
afterModel: function(data) {
6-
console.log("afterModel");
19+
var crate;
720
if (data instanceof Crate) {
8-
return data.get('reverse_dependencies');
21+
crate = data;
922
} else {
10-
return data.crate.get('reverse_dependencies');
23+
crate = data.crate;
1124
}
25+
var self = this;
26+
27+
var params = this.get('params');
28+
params.reverse = true;
29+
params.crate = crate;
30+
31+
return this.store.find('dependency', params).then(function(deps) {
32+
var controller = self.controllerFor('crate/reverse_dependencies');
33+
if (controller) {
34+
controller.set('model', deps);
35+
}
36+
self.set('reverse_dependencies', deps);
37+
self.set('crate', crate);
38+
});
1239
},
1340

14-
setupController: function(controller, data) {
15-
if (data instanceof Crate) {
16-
data = {crate: data, reverse_dependencies: null};
17-
}
18-
this._super(controller, data.crate);
41+
setupController: function(controller) {
42+
this._super(controller, this.get('reverse_dependencies'));
43+
controller.set('crate', this.get('crate'));
1944
},
2045
});
+23-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
<div class='all-versions-back'>
2-
{{#link-to 'crate' this}}&#11013; Back to Main Page{{/link-to}}
2+
{{#link-to 'crate' crate}}&#11013; Back to {{ crate.name }}{{/link-to}}
33
</div>
44

5-
<div class='info'>
6-
<span class='small'>
7-
All <span class='num'>{{ reverse_dependencies.length }}</span>
8-
reverse dependencies of <span class='num'>{{ name }}</span>
9-
</span>
5+
<div id='results'>
6+
<div class='nav'>
7+
<span class='amt'>
8+
Displaying
9+
<span class='cur'>{{ currentPageStart }}-{{ currentPageEnd }}</span>
10+
of <span class='total'>{{ totalItems }}</span> reverse dependencies
11+
of <span class='num'>{{ crate.name }}</span>
12+
</span>
13+
</div>
1014
</div>
1115

1216
<div id='crate-all-reverse-dependencies' class='white-rows'>
13-
{{#each model.reverse_dependencies}}
17+
{{#each}}
1418
<div class='row'>
1519
<div>
1620
{{#link-to 'crate' crate_id}}{{crate_id}}{{/link-to}} requires {{req}}
@@ -22,3 +26,15 @@
2226
</div>
2327
{{/each}}
2428
</div>
29+
30+
<div class='pagination'>
31+
{{#link-to 'crate.reverse_dependencies' crate (query-params page=prevPage) class="prev"}}
32+
<img src="/assets/left-pag.png"/>
33+
{{/link-to}}
34+
{{#each pages}}
35+
{{#link-to 'crate.reverse_dependencies' crate (query-params page=this)}}{{ this }}{{/link-to}}
36+
{{/each}}
37+
{{#link-to 'crate.reverse_dependencies' crate (query-params page=nextPage) class="next"}}
38+
<img src="/assets/right-pag.png"/>
39+
{{/link-to}}
40+
</div>

0 commit comments

Comments
 (0)