-
-
-
-
+
+
+
+
{
this.names = names;
});
- const state = {
- searchTerm: this.searchTerm,
- page: this.page,
- userType: this.userType,
- punishmentType: this.punishmentType
- };
- const title = 'Altitude Bans';
- const url = window.location.href;
- window.history.pushState(state, title, url)
+ this.historyApi.getTotalPunishments().subscribe(totalPunishments => {
+ this.historyCount = totalPunishments;
+ })
+
+ this.pushState();
window.addEventListener('popstate', (event) => {
if (event.state && event.state.searchTerm !== undefined) {
@@ -73,6 +75,40 @@ export class BansComponent implements OnInit {
}
public search() {
+ this.pushState()
+ this.finalSearchTerm = this.searchTerm;
+ }
+
+ public changeHistoryType(type: 'player' | 'staff') {
+ this.pushState();
+ this.userType = type;
+ }
+
+ public changeHistoryPunishment(type: 'all' | 'ban' | 'mute' | 'kick' | 'warn') {
+ this.pushState();
+ this.punishmentType = type;
+ }
+
+ public nextPage() {
+ if (this.page === this.getMaxPage() - 1) {
+ return;
+ }
+ this.setPage(this.page++)
+ }
+
+ public previousPage() {
+ if (this.page === 0) {
+ return;
+ }
+ this.setPage(this.page--)
+ }
+
+ public setPage(page: number) {
+ this.pushState();
+ this.page = page
+ }
+
+ private pushState() {
const state = {
searchTerm: this.searchTerm,
page: this.page,
@@ -82,6 +118,23 @@ export class BansComponent implements OnInit {
const title = 'Altitude Bans';
const url = window.location.href;
window.history.pushState(state, title, url);
- this.finalSearchTerm = this.searchTerm;
+ }
+
+ public getMaxPage() {
+ const all = this.historyCount.bans + this.historyCount.mutes + this.historyCount.warnings;
+ switch (this.punishmentType) {
+ case 'all':
+ return Math.ceil(all / 10);
+ case 'ban':
+ return Math.ceil(this.historyCount.bans / 10);
+ case 'mute':
+ return Math.ceil(this.historyCount.mutes / 10);
+ case 'kick':
+ return Math.ceil(this.historyCount.kicks / 10);
+ case 'warn':
+ return Math.ceil(this.historyCount.warnings / 10);
+ default:
+ return 0;
+ }
}
}