Browse Source

===>>>

master
gsd 3 weeks ago
parent
commit
a5bf436245
  1. 6
      src/app/app.module.ts
  2. 47
      src/app/entities/search/BanSearchFilter.ts
  3. 17
      src/app/pages/banlist-page/banlist-search-table.ts
  4. 18
      src/app/pages/internal-components/search-filters/ban/FilterMatChipActiveBan.ts
  5. 28
      src/app/pages/internal-components/search-filters/ban/FilterMatChipAdmins.ts
  6. 2
      src/app/pages/internal-components/search-filters/ban/FilterMatChipBanId.ts
  7. 3
      src/app/pages/messages-page/message-search-table.ts

6
src/app/app.module.ts

@ -47,11 +47,13 @@ import {FilterMatChipMessage} from "./pages/internal-components/search-filters/F
import {FilterMatChipServer} from "./pages/internal-components/search-filters/base/FilterMatChipServer";
import {FilterMatChipDateBegin} from "./pages/internal-components/search-filters/base/FilterMatChipDateBegin";
import {FilterMatChipDateEnd} from "./pages/internal-components/search-filters/base/FilterMatChipDateEnd";
import {FilterMatChipBanId} from "./pages/internal-components/search-filters/FilterMatChipBanId";
import {FilterMatChipBanId} from "./pages/internal-components/search-filters/ban/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";
import {FilterMatChipActiveBan} from "./pages/internal-components/search-filters/ban/FilterMatChipActiveBan";
import {FilterMatChipAdmins} from "./pages/internal-components/search-filters/ban/FilterMatChipAdmins";
registerLocaleData(localeRu, "ru")
@ -76,6 +78,8 @@ registerLocaleData(localeRu, "ru")
FilterMatChipDateBegin,
FilterMatChipDateEnd,
FilterMatChipBanId,
FilterMatChipActiveBan,
FilterMatChipAdmins,
//dialogs
BanViewDialog
],

47
src/app/entities/search/BanSearchFilter.ts

@ -7,6 +7,12 @@ export class BanSearchFilter extends SearchFilter{
active: boolean|null = null;
admin_ids: string[]|null = null;
private active_statuses:{name:string, value:boolean|null}[] = [
{name: "Все баны", value: null},
{name: "В бане", value: true},
{name: "Уже не в бане", value: false}
];
override createQuery(paginator:MatPaginator|undefined): { [p: string]: any } {
let q:{[param: string]: any} = super.createQuery(paginator);
q["ban_ids"] = this.ban_ids?this.ban_ids.join(","):null;
@ -28,7 +34,32 @@ export class BanSearchFilter extends SearchFilter{
super.fromQuery(param, paginator);
}
//admin ids
changeAdminsToSearch(prev: string, name: any) {
//tak nado
if (this.admin_ids == null)
this.admin_ids = [];
this.admin_ids = this.admin_ids.filter(v => v !== prev);
if (this.admin_ids.indexOf(name.target.value) == -1)
this.admin_ids.push(name.target.value);
this.updated = true;
}
addAdminsToSearch(name: string) {
if (this.admin_ids == null)
this.admin_ids = [];
if (this.admin_ids.indexOf(name) == -1)
this.admin_ids.push(name);
this.updated = true;
}
removeAdminsFromSearch(name: string) {
if (this.admin_ids == null) return;
this.admin_ids = this.admin_ids.filter(v => v !== name);
this.updated = true;
}
//ban id
changeBanIdToSearch(prev: number, name: any) {
if (this.ban_ids == null)
this.ban_ids = [];
@ -51,4 +82,20 @@ export class BanSearchFilter extends SearchFilter{
this.ban_ids = this.ban_ids.filter(v => v !== name);
this.updated = true;
}
//actuve ban
getActiveBanName(v: boolean|null):string {
try {
// @ts-ignore
return this.active_statuses.filter(a => a.value == v).pop().name;
} catch (e) {return "";}
}
changeActiveBan(s: boolean|null) {
this.active = s;
this.updated = true;
}
getBanActiveStatuses():{name:string, value:boolean|null}[] {
return this.active_statuses;
}
}

17
src/app/pages/banlist-page/banlist-search-table.ts

@ -18,8 +18,10 @@ import {BanViewDialog} from "../internal-components/dialogs/BanViewDialog";
<mat-chip-list>
<mat-chip [matMenuTriggerFor]="addFilter">Искать по...</mat-chip>
<mat-menu #addFilter>
<button mat-menu-item (click)="filter.addBanIdToSearch(0)">ID бана</button>
<button mat-menu-item (click)="filter.addAccountToSearch('')" [disabled]="account_id!=null">Профилю</button>
<button mat-menu-item [matMenuTriggerFor]="timeSelect">Времени</button>
<button mat-menu-item (click)="filter.addAdminsToSearch('')">Модератору</button>
</mat-menu>
<mat-menu #timeSelect>
<button mat-menu-item (click)="filter.addEndTimeToSearch()">До ...</button>
@ -40,6 +42,12 @@ import {BanViewDialog} from "../internal-components/dialogs/BanViewDialog";
<app-filter-mat-chip-banid
[filter]="filter">
</app-filter-mat-chip-banid>
<app-filter-mat-chip-active-ban
[filter]="filter">
</app-filter-mat-chip-active-ban>
<app-filter-mat-chip-admins
[filter]="filter">
</app-filter-mat-chip-admins>
</mat-chip-list>
</div>
<div>
@ -62,7 +70,8 @@ import {BanViewDialog} from "../internal-components/dialogs/BanViewDialog";
<th mat-header-cell *matHeaderCellDef> Имя игрока </th>
<td mat-cell *matCellDef="let row" [matMenuTriggerFor]="accountMenu"> {{row.player_name}}
<mat-menu #accountMenu>
<button mat-menu-item (click)="filter.addAccountToSearch(row.player_name)">Добавить в поиск</button>
<button mat-menu-item (click)="filter.addAccountToSearch(row.player_name)" [disabled]="!row.player_name">Добавить в поиск</button>
<button mat-menu-item (click)="filter.addAccountToSearch('[U:1:'+row.account_id+']')">Добавить в поиск используя ID</button>
<button mat-menu-item (click)="authService.searchPlayer(row.account_id)">Открыть профиль</button>
</mat-menu></td>
</ng-container>
@ -80,7 +89,11 @@ import {BanViewDialog} from "../internal-components/dialogs/BanViewDialog";
</ng-container>
<ng-container matColumnDef="admin_name">
<th mat-header-cell *matHeaderCellDef> Модератор </th>
<td mat-cell *matCellDef="let row"> {{row.banned_by}}</td>
<td mat-cell *matCellDef="let row" [matMenuTriggerFor]="adminMenu"> {{row.banned_by}}
<mat-menu #adminMenu>
<button mat-menu-item (click)="filter.addAdminsToSearch(row.banned_by_id)">Искать по модератору</button>
</mat-menu>
</td>
</ng-container>
<ng-container matColumnDef="action">
<th mat-header-cell *matHeaderCellDef> Действие </th>

18
src/app/pages/internal-components/search-filters/ban/FilterMatChipActiveBan.ts

@ -0,0 +1,18 @@
import {Component, Input} from "@angular/core";
import {BanSearchFilter} from "../../../../entities/search/BanSearchFilter";
@Component({
selector: "app-filter-mat-chip-active-ban",
template: `
<mat-chip *ngIf="filter" [matMenuTriggerFor]="activeSelect">
Наличие бана: {{filter.getActiveBanName(filter.active)}}
<mat-menu #activeSelect>
<button mat-menu-item *ngFor="let f of filter.getBanActiveStatuses()" (click)="filter.changeActiveBan(f.value)">{{f.name}}</button>
</mat-menu>
</mat-chip>
`
})
export class FilterMatChipActiveBan {
@Input("filter")
filter: BanSearchFilter | undefined;
}

28
src/app/pages/internal-components/search-filters/ban/FilterMatChipAdmins.ts

@ -0,0 +1,28 @@
import {Component, Input} from "@angular/core";
import {BanSearchFilter} from "../../../../entities/search/BanSearchFilter";
@Component({
selector: "app-filter-mat-chip-admins",
template: `
<div *ngIf="filter && filter.admin_ids != null">
<mat-chip
*ngFor="let acId of filter.admin_ids"
(removed)="filter.removeAdminsFromSearch(acId)"
[matMenuTriggerFor]="adminSearch">Модератор: {{acId}}
<button matChipRemove>
<mat-icon>cancel</mat-icon>
</button>
<mat-menu #adminSearch>
<mat-form-field appearance="fill" (click)="$event.stopPropagation()">
<mat-label>Ссылка, имя, все что угодно</mat-label>
<input matInput placeholder="отдыхаем" [ngModel]="acId" (change)="filter.changeAdminsToSearch(acId, $event)">
</mat-form-field>
</mat-menu>
</mat-chip>
</div>`
})
export class FilterMatChipAdmins {
@Input("filter")
filter: BanSearchFilter|undefined;
}

2
src/app/pages/internal-components/search-filters/FilterMatChipBanId.ts → src/app/pages/internal-components/search-filters/ban/FilterMatChipBanId.ts

@ -1,5 +1,5 @@
import {Component, Input} from "@angular/core";
import {BanSearchFilter} from "../../../entities/search/BanSearchFilter";
import {BanSearchFilter} from "../../../../entities/search/BanSearchFilter";
@Component({
selector: "app-filter-mat-chip-banid",

3
src/app/pages/messages-page/message-search-table.ts

@ -63,7 +63,8 @@ import {MatTableDataSource} from "@angular/material/table";
<th mat-header-cell *matHeaderCellDef> Игрок </th>
<td mat-cell *matCellDef="let row" [matMenuTriggerFor]="accountMenu"> {{row.account_name}}
<mat-menu #accountMenu>
<button mat-menu-item (click)="filter.addAccountToSearch(row.account_name)">Добавить в поиск</button>
<button mat-menu-item (click)="filter.addAccountToSearch(row.account_name)" [disabled]="!row.account_name">Добавить в поиск</button>
<button mat-menu-item (click)="filter.addAccountToSearch('[U:1:'+row.account_id+']')">Добавить в поиск используя ID</button>
<button mat-menu-item (click)="authService.searchPlayer(row.account_id)">Открыть профиль</button>
</mat-menu></td>
</ng-container>

Loading…
Cancel
Save