diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 66c4d5b..46b122e 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -50,6 +50,8 @@ import {FilterMatChipDateEnd} from "./pages/internal-components/search-filters/b import {FilterMatChipBanId} from "./pages/internal-components/search-filters/FilterMatChipBanId"; import {BanViewDialog} from "./pages/internal-components/dialogs/BanViewDialog"; import {MatDialogModule} from "@angular/material/dialog"; +import {MessageSearchTable} from "./pages/messages-page/message-search-table"; +import {BanlistSearchTable} from "./pages/banlist-page/banlist-search-table"; registerLocaleData(localeRu, "ru") @@ -64,6 +66,9 @@ registerLocaleData(localeRu, "ru") RulesPageComponent, BanlistPageComponent, MessagesPageComponent, + //tables + MessageSearchTable, + BanlistSearchTable, //search filters FilterMatChipAccount, FilterMatChipMessage, diff --git a/src/app/pages/banlist-page/banlist-page.component.html b/src/app/pages/banlist-page/banlist-page.component.html index b11c553..7401c2c 100644 --- a/src/app/pages/banlist-page/banlist-page.component.html +++ b/src/app/pages/banlist-page/banlist-page.component.html @@ -7,102 +7,7 @@
-
- - Искать по... - - - - - - - - - - Обновить - - - - - - - - -
-
-
- -
- Слишком много запросов или сервер не отвечает, обнови страницу. -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
ID бана {{row.id}} - Имя игрока {{row.player_name}} - - - - Время {{row.timestamp | date:"HH:mm dd/MM/yyyy"}} - - - - Причина {{row.ban_reason}} Модератор {{row.banned_by}} Действие - view_headline - - - - -
Бан лист пуст
- - -
+
diff --git a/src/app/pages/banlist-page/banlist-page.component.ts b/src/app/pages/banlist-page/banlist-page.component.ts index aac4904..94d49bf 100644 --- a/src/app/pages/banlist-page/banlist-page.component.ts +++ b/src/app/pages/banlist-page/banlist-page.component.ts @@ -16,60 +16,9 @@ import {BanViewDialog} from "../internal-components/dialogs/BanViewDialog"; templateUrl: './banlist-page.component.html', styleUrls: ['./banlist-page.component.scss'] }) -export class BanlistPageComponent extends AbstractSearchTable{ +export class BanlistPageComponent { displayedColumns: string[] = ['id', 'player_name', 'date', 'reason', 'admin_name', 'action']; - constructor(public override authService: AuthService, - protected override serverService: ServerService, - protected override playerService: PlayerService, - protected override router: Router, - protected override route: ActivatedRoute, - private banService: BanService, - private dialog: MatDialog) { - super(authService, serverService, playerService, route, router); - super.filter = new BanSearchFilter(); - } - - private getBanList(): boolean { - this.filter.updated = false; - this.loading = true; - this.banService.getBanList(this.filter, this.paginator).subscribe( - (res) => { - this.dataSource = new MatTableDataSource(res.data); - this.err = false; - }, (e) => this.err = true, () => this.loading = false - ) - return true; - } - - override updateData() { - super.updateData(); - this.getBanList(); - } - - openBanDialog(ban: Ban) { - this.dialog.open( - BanViewDialog, { - data: ban - } - ); - } - - addAdminIdToSearch(name: string) { - if (this.filter.admin_ids == null) - this.filter.admin_ids = []; - if (this.filter.admin_ids.indexOf(name) == -1) - this.filter.admin_ids.push(name); - this.filter.updated = true; - } - - removeAdminIdFromSearch(name: string) { - if (this.filter.admin_ids == null) return; - this.filter.admin_ids = this.filter.admin_ids.filter(v => v !== name); - this.filter.updated = true; - } - - getCount() { - return this.paginator?.length; + constructor(public authService: AuthService) { } } diff --git a/src/app/pages/banlist-page/banlist-search-table.ts b/src/app/pages/banlist-page/banlist-search-table.ts new file mode 100644 index 0000000..d9da744 --- /dev/null +++ b/src/app/pages/banlist-page/banlist-search-table.ts @@ -0,0 +1,168 @@ +import {Component} from "@angular/core"; +import {AbstractSearchTable} from "../internal-components/abstract-search-table.component"; +import {Ban} from "../../entities/ban/Ban"; +import {BanSearchFilter} from "../../entities/search/BanSearchFilter"; +import {AuthService} from "../../services/auth.service"; +import {ServerService} from "../../services/server.service"; +import {PlayerService} from "../../services/player.service"; +import {ActivatedRoute, Router} from "@angular/router"; +import {BanService} from "../../services/ban.service"; +import {MatDialog} from "@angular/material/dialog"; +import {MatTableDataSource} from "@angular/material/table"; +import {BanViewDialog} from "../internal-components/dialogs/BanViewDialog"; + +@Component({ + selector: "app-banlist-search-table", + template: ` +
+ + Искать по... + + + + + + + + + + Обновить + + + + + + + + +
+
+
+ +
+ Слишком много запросов или сервер не отвечает, обнови страницу. +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
ID бана {{row.id}} + Имя игрока {{row.player_name}} + + + + Время {{row.timestamp | date:"HH:mm dd/MM/yyyy"}} + + + + Причина {{row.ban_reason}} Модератор {{row.banned_by}} Действие + view_headline + + + + +
Бан лист пуст
+ + +
+ ` +}) +export class BanlistSearchTable extends AbstractSearchTable { + displayedColumns: string[] = ['id', 'player_name', 'date', 'reason', 'admin_name', 'action']; + constructor(public override authService: AuthService, + protected override serverService: ServerService, + protected override playerService: PlayerService, + protected override router: Router, + protected override route: ActivatedRoute, + private banService: BanService, + private dialog: MatDialog) { + super(authService, serverService, playerService, route, router); + super.filter = new BanSearchFilter(); + } + + private getBanList(): boolean { + this.filter.updated = false; + this.loading = true; + this.banService.getBanList(this.filter, this.paginator).subscribe( + (res) => { + this.dataSource = new MatTableDataSource(res.data); + this.err = false; + }, (e) => this.err = true, () => this.loading = false + ) + return true; + } + + override updateData() { + super.updateData(); + this.getBanList(); + } + + openBanDialog(ban: Ban) { + this.dialog.open( + BanViewDialog, { + data: ban + } + ); + } + + addAdminIdToSearch(name: string) { + if (this.filter.admin_ids == null) + this.filter.admin_ids = []; + if (this.filter.admin_ids.indexOf(name) == -1) + this.filter.admin_ids.push(name); + this.filter.updated = true; + } + + removeAdminIdFromSearch(name: string) { + if (this.filter.admin_ids == null) return; + this.filter.admin_ids = this.filter.admin_ids.filter(v => v !== name); + this.filter.updated = true; + } + +} diff --git a/src/app/pages/internal-components/abstract-search-table.component.ts b/src/app/pages/internal-components/abstract-search-table.component.ts index e13e853..1b966ac 100644 --- a/src/app/pages/internal-components/abstract-search-table.component.ts +++ b/src/app/pages/internal-components/abstract-search-table.component.ts @@ -1,4 +1,4 @@ -import {AfterViewInit, Component, ViewChild} from "@angular/core"; +import {AfterViewInit, Component, Input, ViewChild} from "@angular/core"; import {MatTableDataSource} from "@angular/material/table"; import {Message} from "../../entities/profile/Message"; import {MatPaginator} from "@angular/material/paginator"; @@ -21,6 +21,9 @@ export abstract class AbstractSearchTable implements A loading: boolean = false; err: boolean = false; + @Input("account_id") + //[U:1:%s] + account_id: number | null = null; protected constructor(public authService: AuthService, protected serverService: ServerService, @@ -32,15 +35,20 @@ export abstract class AbstractSearchTable implements A } public updateData() { - this.router.navigate([], { - relativeTo: this.route, - queryParams: this.filter.createQuery(this.paginator), - queryParamsHandling: "merge" - }) + if (this.account_id == null) + this.router.navigate([], { + relativeTo: this.route, + queryParams: this.filter.createQuery(this.paginator), + queryParamsHandling: "merge" + }) } ngAfterViewInit(): void { - this.filter.fromQuery(this.route.snapshot.queryParamMap, this.paginator); + if (this.account_id == null) + this.filter.fromQuery(this.route.snapshot.queryParamMap, this.paginator); + else + this.filter.addAccountToSearch(`[U:1:${this.account_id}]`); + this.updateData(); this.serverService.getStats("servers").subscribe( (res) => { diff --git a/src/app/pages/internal-components/dialogs/BanViewDialog.ts b/src/app/pages/internal-components/dialogs/BanViewDialog.ts index 6c28feb..a05b56d 100644 --- a/src/app/pages/internal-components/dialogs/BanViewDialog.ts +++ b/src/app/pages/internal-components/dialogs/BanViewDialog.ts @@ -43,7 +43,7 @@ import {AuthService} from "../../../services/auth.service"; - + ` diff --git a/src/app/pages/messages-page/message-search-table.ts b/src/app/pages/messages-page/message-search-table.ts new file mode 100644 index 0000000..64ff750 --- /dev/null +++ b/src/app/pages/messages-page/message-search-table.ts @@ -0,0 +1,146 @@ +import {Component} from "@angular/core"; +import {AbstractSearchTable} from "../internal-components/abstract-search-table.component"; +import {Message} from "../../entities/profile/Message"; +import {MessageSearchFilter} from "../../entities/search/MessageSearchFilter"; +import {AuthService} from "../../services/auth.service"; +import {MessageService} from "../../services/message.service"; +import {ServerService} from "../../services/server.service"; +import {PlayerService} from "../../services/player.service"; +import {ActivatedRoute, Router} from "@angular/router"; +import {MatTableDataSource} from "@angular/material/table"; + +@Component({ + selector: 'app-message-search', + styleUrls: ['messages-page.component.scss'], + template: ` +
+ + Искать по... + + + + + + + + + + + + Обновить + + + + + + + + + + +
+ +
+
+ +
+ Слишком много запросов или сервер не отвечает, обнови страницу. +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
Игрок {{row.account_name}} + + + + Дата {{row.utime*1000 | date:"HH:mm:ss dd/MM/yyyy"}} + + + + + Сообщение {{row.message}} + + + Сервер {{row.serverName}} + + + +
Нет сообщений
+ + +
+ ` +}) +export class MessageSearchTable extends AbstractSearchTable { + displayedColumns: string[] = ['account_name', 'date', 'message', 'serverName']; + + constructor(public override authService: AuthService, + private messageService: MessageService, + protected override serverService: ServerService, + protected override playerService: PlayerService, + protected override router: Router, + protected override route: ActivatedRoute) { + super(authService, serverService, playerService, route, router); + super.filter = new MessageSearchFilter(); + } + + private getMessages(): boolean { + this.filter.updated = false; + this.loading = true; + this.messageService.getMessages(this.filter, this.paginator).subscribe( + (res) => { + this.dataSource = new MatTableDataSource(res.data); + this.err = false; + }, (e) => this.err = true, () => this.loading = false + ) + return true; + } + + override updateData() { + super.updateData(); + this.getMessages(); + } +} diff --git a/src/app/pages/messages-page/messages-page.component.html b/src/app/pages/messages-page/messages-page.component.html deleted file mode 100644 index c273878..0000000 --- a/src/app/pages/messages-page/messages-page.component.html +++ /dev/null @@ -1,110 +0,0 @@ -
-

Сообщения

-

Все что ты пишешь в чате игре, общедоступное достояние

-
- -
-
- -
-
- - Искать по... - - - - - - - - - - - - Обновить - - - - - - - - - - -
- -
-
- -
- Слишком много запросов или сервер не отвечает, обнови страницу. -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
Игрок {{row.account_name}} - - - - Дата {{row.utime*1000 | date:"HH:mm:ss dd/MM/yyyy"}} - - - - - Сообщение {{row.message}} - - - Сервер {{row.serverName}} - - - -
Нет сообщений
- - -
-
-
-
diff --git a/src/app/pages/messages-page/messages-page.component.scss b/src/app/pages/messages-page/messages-page.component.scss index b47270c..666696a 100644 --- a/src/app/pages/messages-page/messages-page.component.scss +++ b/src/app/pages/messages-page/messages-page.component.scss @@ -5,21 +5,3 @@ ::ng-deep .mat-form-field-underline { display: none; } - -.loading-shade { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - background: rgba(0, 0, 0, 0.15); - z-index: 1; - display: flex; - align-items: center; - justify-content: center; -} - -.err { - max-width: 360px; - text-align: center; -} diff --git a/src/app/pages/messages-page/messages-page.component.ts b/src/app/pages/messages-page/messages-page.component.ts index 116e5eb..46b8437 100644 --- a/src/app/pages/messages-page/messages-page.component.ts +++ b/src/app/pages/messages-page/messages-page.component.ts @@ -14,37 +14,24 @@ import {ActivatedRoute, Router} from "@angular/router"; @Component({ selector: 'app-messages-page', - templateUrl: './messages-page.component.html', - styleUrls: ['./messages-page.component.scss'] -}) -export class MessagesPageComponent extends AbstractSearchTable { - - displayedColumns: string[] = ['account_name', 'date', 'message', 'serverName']; - - constructor(public override authService: AuthService, - private messageService: MessageService, - protected override serverService: ServerService, - protected override playerService: PlayerService, - protected override router: Router, - protected override route: ActivatedRoute) { - super(authService, serverService, playerService, route, router); - super.filter = new MessageSearchFilter(); - } + styleUrls: ['./messages-page.component.scss'], + template: ` +
+

Сообщения

+

Все что ты пишешь в чате игре, общедоступное достояние

+
- private getMessages(): boolean { - this.filter.updated = false; - this.loading = true; - this.messageService.getMessages(this.filter, this.paginator).subscribe( - (res) => { - this.dataSource = new MatTableDataSource(res.data); - this.err = false; - }, (e) => this.err = true, () => this.loading = false - ) - return true; - } - - override updateData() { - super.updateData(); - this.getMessages(); +
+
+ +
+ +
+
+
+ ` +}) +export class MessagesPageComponent { + constructor(public authService: AuthService) { } } diff --git a/src/app/pages/profile-page/profile-page.component.html b/src/app/pages/profile-page/profile-page.component.html index 34d0eb8..79bd657 100644 --- a/src/app/pages/profile-page/profile-page.component.html +++ b/src/app/pages/profile-page/profile-page.component.html @@ -114,41 +114,13 @@ - + История банов - - - - - - {{ban.id==getMaxValue()?ban.ban_reason:ban.ban_utime*1000|date}} - - -
- - #{{ban.id}} - ид бана - - - {{ban.ban_reason}} - причина - - - {{ban.ban_length>0?ban.ban_length + ' минут':'навсегда мог'}} - {{ban.ban_length>0?'был':'остаться'}} в бане - - - разбанил модератор - открыть профиль - -
-

Круто у него это получилось

-
-
+
@@ -171,15 +143,13 @@

Табличку с репортом

- + Сообщения пользователя -
-

табличку с поиском сообщений

-
+