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 @@
Табличку с репортом
-
+
Сообщения пользователя
-
-
табличку с поиском сообщений
-
+