Commit 6e2ef9ed6f97e22ac596c2f7f6ccb8bbf974ac87

Authored by Victor Costa
1 parent 1d6363e0

Add pagination button for comment listing

src/app/article/comment/comments.component.spec.ts
... ... @@ -57,5 +57,17 @@ describe("Components", () => {
57 57 done();
58 58 });
59 59 });
  60 +
  61 + it("load comments for next page", done => {
  62 + createComponent().then(fixture => {
  63 + commentService.getByArticle = jasmine.createSpy("getByArticle")
  64 + .and.returnValue(helpers.mocks.promiseResultTemplate({ data: { id: 4 } }));
  65 + let component: CommentsComponent = fixture.debugElement.componentViewChildren[0].componentInstance;
  66 + component.loadNextPage();
  67 + expect(component['page']).toEqual(3);
  68 + expect(component.comments.length).toEqual(3);
  69 + done();
  70 + });
  71 + });
60 72 });
61 73 });
... ...
src/app/article/comment/comments.component.ts
... ... @@ -15,6 +15,8 @@ export class CommentsComponent {
15 15 @Input() showForm = true;
16 16 @Input() article: noosfero.Article;
17 17 @Input() parent: noosfero.Comment;
  18 + private page = 1;
  19 + private perPage = 5;
18 20  
19 21 constructor(private commentService: CommentService, private $rootScope: ng.IScope) {
20 22 $rootScope.$on(PostCommentComponent.EVENT_COMMENT_RECEIVED, (event: ng.IAngularEvent, comment: noosfero.Comment) => {
... ... @@ -29,9 +31,14 @@ export class CommentsComponent {
29 31 if (this.parent) {
30 32 this.comments = this.parent.replies;
31 33 } else {
32   - this.commentService.getByArticle(this.article).then((result: noosfero.RestResult<noosfero.Comment[]>) => {
33   - this.comments = result.data;
34   - });
  34 + this.loadNextPage();
35 35 }
36 36 }
  37 +
  38 + loadNextPage() {
  39 + this.commentService.getByArticle(this.article, { page: this.page, per_page: this.perPage }).then((result: noosfero.RestResult<noosfero.Comment[]>) => {
  40 + this.comments = this.comments.concat(result.data);
  41 + this.page++;
  42 + });
  43 + }
37 44 }
... ...
src/app/article/comment/comments.html
... ... @@ -2,6 +2,7 @@
2 2 <noosfero-post-comment ng-if="ctrl.showForm" [article]="ctrl.article" [parent]="ctrl.parent"></noosfero-post-comment>
3 3  
4 4 <div class="comments-list">
5   - <noosfero-comment ng-repeat="comment in ctrl.comments | orderBy: 'created_at':true"" [comment]="comment" [article]="ctrl.article"></noosfero-comment>
  5 + <noosfero-comment ng-repeat="comment in ctrl.comments | orderBy: 'created_at':true" [comment]="comment" [article]="ctrl.article"></noosfero-comment>
6 6 </div>
  7 + <button type="button" ng-if="!ctrl.parent" class="more-comments btn btn-default btn-block" ng-click="ctrl.loadNextPage()">{{"comment.pagination.more" | translate}}</button>
7 8 </div>
... ...
src/languages/en.json
... ... @@ -32,5 +32,6 @@
32 32 "notification.http_error.500.message": "Server error",
33 33 "comment.post": "Post a comment",
34 34 "comment.post.placeholder": "Join the discussion...",
  35 + "comment.pagination.more": "More",
35 36 "comment.reply": "reply"
36 37 }
... ...
src/languages/pt.json
... ... @@ -32,5 +32,6 @@
32 32 "notification.http_error.500.message": "Erro no servidor",
33 33 "comment.post": "Commentar",
34 34 "comment.post.placeholder": "Participe da discussão...",
  35 + "comment.pagination.more": "Mais",
35 36 "comment.reply": "responder"
36 37 }
... ...