comment period

This commit is contained in:
2021-10-06 18:58:09 +02:00
parent 9157882831
commit 361e1b46c6
19 changed files with 297 additions and 187 deletions
@@ -2,5 +2,5 @@
<div class="container">
<p>{{'user.entriesBy' | i18n}}<a routerLink="/u/{{username}}">{{username}}</a></p>
</div>
<ui-entries fxFlex="1 0 1" [entries]="entries" [refresh]="boundRefresh" [update]="boundUpdate"></ui-entries>
<page-entries [fetch]="boundFetch"></page-entries>
</div>
@@ -1,9 +1,8 @@
import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
import { ActivatedRoute } from '@angular/router';
import { EntriesService } from '../../../services/entries.service';
import { PageEvent } from '@angular/material/paginator';
@Component({
selector: 'page-userentries',
@@ -11,73 +10,18 @@ import { PageEvent } from '@angular/material/paginator';
})
export class PageUserEntries implements OnInit {
username : string;
entries: any;
boundRefresh: Function;
boundUpdate: Function;
init: boolean = true;
username: string;
boundFetch: Function;
constructor(private entriesService: EntriesService, private router: Router, private route: ActivatedRoute) { }
constructor(private entriesService: EntriesService, private route: ActivatedRoute) { }
ngOnInit(): void {
this.username = this.route.snapshot.paramMap.get('username');
this.boundRefresh = this.refresh.bind(this);
this.boundUpdate = this.update.bind(this);
this.route.queryParams.subscribe(params => {
if (this.init) {
this.entries = {};
if (params[ 'p' ]) {
this.entries.number = +params[ 'p' ] - 1;
if (this.entries.number < 0) {
this.entries.number = 0;
}
}
if (params[ 's' ]) {
this.entries.size = +params[ 's' ];
}
this.refresh();
this.init = false;
}
});
this.boundFetch = this.fetch.bind(this);
}
refresh(): void {
if (!this.entries) {
this.entries = {};
}
this.entries.content = null;
this.entriesService.getByUser(this.username, this.entries.number || 0, this.entries.size || 30).subscribe((data: any) => {
this.entries = data;
}, (error) => { })
}
update(event: PageEvent) {
this.entries.content = null;
const params: any = { p: null, s: null };
if (event.pageIndex != 0) {
params.p = event.pageIndex + 1;
}
if (event.pageSize != 30) {
params.s = event.pageSize;
}
this.router.navigate(
[],
{
relativeTo: this.route,
queryParams: params,
queryParamsHandling: 'merge'
});
this.entriesService.getByUser(this.username,event.pageIndex, event.pageSize).subscribe((data: any) => {
this.entries = data;
}, (error) => { })
fetch(page: number, size: number) {
return this.entriesService.getByUser(this.username, page, size);
}
}