diff --git a/src/app/admin-pages/admin-main-page/admin-main-page.component.scss b/src/app/admin-pages/admin-main-page/admin-main-page.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/admin-pages/admin-main-page/admin-main-page.component.ts b/src/app/admin-pages/admin-main-page/admin-main-page.component.ts new file mode 100644 index 0000000..09b6263 --- /dev/null +++ b/src/app/admin-pages/admin-main-page/admin-main-page.component.ts @@ -0,0 +1,57 @@ +import { Component, OnInit } from '@angular/core'; +import {Router} from "@angular/router"; +import {AuthService} from "../../services/auth.service"; + +@Component({ + selector: 'app-admin-main-page', + styleUrls: ['./admin-main-page.component.scss'], + template: ` + +
+
+ + +
+ +
+
+
+ +
+
+

ПРИВЕТ ПЕЛЬМЕНЬ, ЕСЛИ ТЫ ЭТО ЧИТАЕШЬ ЛУЧШЕ ВЫЙДИ С ЭТОЙ СТРАНИЦЫ ТУТ МНОГО НЕПОНЯТНЫХ ДЛЯ ТЕБЯ КНОПОЧЕК

+
+
+ ` +}) +export class AdminMainPageComponent implements OnInit { + + go2urls: {ico: string, name: string, url: string}[] = [ + {ico: 'business', name: 'Файлы', url: 'admin/files'} + ] + + constructor(private router: Router, + public authService: AuthService) { } + + ngOnInit(): void { + if (!this.authService.isAdmin()) { + this.router.navigate(['putisRun']) + } + } + + go2url(url:string) { + this.router.navigate([url]) + } + +} diff --git a/src/app/admin-pages/files-page/FilesSearchTable.ts b/src/app/admin-pages/files-page/FilesSearchTable.ts new file mode 100644 index 0000000..a4f6055 --- /dev/null +++ b/src/app/admin-pages/files-page/FilesSearchTable.ts @@ -0,0 +1,10 @@ +import {Component} from "@angular/core"; + +@Component({ + selector: 'app-files-search-table', + template: ` + ` +}) +export class FilesSearchTable { + +} diff --git a/src/app/admin-pages/files-page/FilesUploader.ts b/src/app/admin-pages/files-page/FilesUploader.ts new file mode 100644 index 0000000..ec66250 --- /dev/null +++ b/src/app/admin-pages/files-page/FilesUploader.ts @@ -0,0 +1,10 @@ +import {Component} from "@angular/core"; + +@Component({ + selector: 'app-files-uploader', + template: ` + ` +}) +export class FilesUploader { + +} diff --git a/src/app/admin-pages/files-page/files-page.component.scss b/src/app/admin-pages/files-page/files-page.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/admin-pages/files-page/files-page.component.ts b/src/app/admin-pages/files-page/files-page.component.ts new file mode 100644 index 0000000..cc11207 --- /dev/null +++ b/src/app/admin-pages/files-page/files-page.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; +import {Router} from "@angular/router"; +import {AuthService} from "../../services/auth.service"; + +@Component({ + selector: 'app-files-page', + styleUrls: ['./files-page.component.scss'], + template: ` +
+

Прикольные файлы которые можно получить через API

+

Лучше этим говном даже не пользоваться, опасно шо пиздец, ты понял меня пельмень??

+
+ +
+
+ +
+
+ +
+
+ ` +}) +export class FilesPageComponent implements OnInit { + + constructor(private router: Router, + public authService: AuthService) { } + + ngOnInit(): void { + if (!this.authService.isAdmin()) { + this.router.navigate(['putisRun']) + } + } + +} diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 62218ac..9856204 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -12,6 +12,8 @@ import {StatisticPageComponent} from "./pages/statistic-page/statistic-page.comp import {AboutPageComponent} from "./pages/about-page/about-page.component"; import {KillfeedPageComponent} from "./pages/killfeed-page/killfeed-page.component"; import {ReportsPageComponent} from "./pages/reports-page/reports-page.component"; +import {AdminMainPageComponent} from "./admin-pages/admin-main-page/admin-main-page.component"; +import {FilesPageComponent} from "./admin-pages/files-page/files-page.component"; const routes: Routes = [ { path: "", component: MainPageComponent}, @@ -24,7 +26,9 @@ const routes: Routes = [ { path: "putisRun", component: DowngamePageComponent }, { path: "reports", component: ReportsPageComponent }, { path: "about", component: AboutPageComponent }, - { path: "killfeed", component: KillfeedPageComponent } + { path: "killfeed", component: KillfeedPageComponent }, + { path: "admin", component: AdminMainPageComponent }, + { path: "admin/files", component: FilesPageComponent } ]; @NgModule({ diff --git a/src/app/app.component.html b/src/app/app.component.html index bb47d67..99c46d2 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,6 +1,7 @@
-
- факты13 +
+ факты13 + Администратору
`, - styleUrls: ["servers-page.component.scss"] + styleUrls: ["servers-page.component.scss"], + styles: ['.red path {color: #b8383b !important;}', '.blu path {color: #5885a2 !important;}', '.unk path {color: #b0b0b0 !important;}'] }) export class LivetimeServerMap implements AfterViewInit { @Input("server") @@ -222,12 +223,14 @@ export class LivetimeServerMap implements AfterViewInit { } } - private getPlayerEmblem(player: Player): L.Icon { + private getPlayerEmblem(player: Player): any { const c = Player.getClassName(player.clz); const t = Player.getTeamName(player.team); + if (c == null || t == null) { - return new L.Icon({iconUrl: "assets/images/emblems/unknown/Unk_emblem_UNK.png", className: 'pm_icon'}); + return new L.Icon({iconUrl: "assets/images/emblems/svg/Unk_emblem.svg", className: 'unk'}); } - return new L.Icon({iconUrl: `assets/images/emblems/${t.toLowerCase()}/${c}_emblem_${t}.png`, className: 'pm_icon'}); + //${t.toLowerCase()} + return new L.Icon({iconUrl: `assets/images/emblems/svg/${c}_emblem.svg`, className: t.toLowerCase()}); } } diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 6d3b2ff..4ad98af 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -66,11 +66,11 @@ export class AuthService { } isAdmin() { - return this.permition?.flags.indexOf("z") != -1; + return this.permition && this.permition?.flags.indexOf("z") != -1; } isModerator() { - return this.isAdmin() || this.permition?.flags.indexOf("cde") != -1; + return this.isAdmin() || (this.permition && this.permition?.flags.indexOf("cde") != -1); } searchPlayer(account: number|string|undefined) { diff --git a/src/app/services/file.service.ts b/src/app/services/file.service.ts new file mode 100644 index 0000000..8f85ee1 --- /dev/null +++ b/src/app/services/file.service.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {SearchFilter} from "../entities/search/SearchFilter"; +import {MatPaginator} from "@angular/material/paginator"; +import {map, Observable} from "rxjs"; +import {PagingAndSortingPaginator} from "../entities/PagingAndSortingPaginator"; +import {DbFile} from "../entities/DbFile"; + +@Injectable({ + providedIn: 'root' +}) +export class FileService { + + constructor(private http: HttpClient) { } + + getFiles(filters: SearchFilter, paginator: MatPaginator | undefined) { + return this.http.post(`api/file/search`, filters, + {params: {size: paginator?paginator.pageSize:20, page: paginator?paginator.pageIndex:0}}).pipe( + map((res) => PagingAndSortingPaginator.newObj().fromData(res).updatePaginator(paginator)) + ); + } + + getFile(uuid: string): Observable { + return this.http.get(`api/file/edit/${uuid}`).pipe( + map((res) => DbFile.fromData(res)) + ) + } + + editFile(file: DbFile) { + return this.http.post(`api/file/edit`, file); + } + + uploadFile(file: File): Observable { + const formData = new FormData(); + formData.append('file', file, file.name); + return this.http.post(`api/file`, formData).pipe( + map((res) => `${res}`) + ) + } +} diff --git a/src/assets/images/emblems/blu/Demoman_emblem_BLU.png b/src/assets/images/emblems/blu/Demoman_emblem_BLU.png deleted file mode 100644 index d3d2ad7..0000000 Binary files a/src/assets/images/emblems/blu/Demoman_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/blu/Engineer_emblem_BLU.png b/src/assets/images/emblems/blu/Engineer_emblem_BLU.png deleted file mode 100644 index f284dc9..0000000 Binary files a/src/assets/images/emblems/blu/Engineer_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/blu/Heavy_emblem_BLU.png b/src/assets/images/emblems/blu/Heavy_emblem_BLU.png deleted file mode 100644 index 78a8c1a..0000000 Binary files a/src/assets/images/emblems/blu/Heavy_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/blu/Medic_emblem_BLU.png b/src/assets/images/emblems/blu/Medic_emblem_BLU.png deleted file mode 100644 index 769bd63..0000000 Binary files a/src/assets/images/emblems/blu/Medic_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/blu/Pyro_emblem_BLU.png b/src/assets/images/emblems/blu/Pyro_emblem_BLU.png deleted file mode 100644 index e9d2080..0000000 Binary files a/src/assets/images/emblems/blu/Pyro_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/blu/Scout_emblem_BLU.png b/src/assets/images/emblems/blu/Scout_emblem_BLU.png deleted file mode 100644 index 2ead805..0000000 Binary files a/src/assets/images/emblems/blu/Scout_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/blu/Sniper_emblem_BLU.png b/src/assets/images/emblems/blu/Sniper_emblem_BLU.png deleted file mode 100644 index 95e4716..0000000 Binary files a/src/assets/images/emblems/blu/Sniper_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/blu/Soldier_emblem_BLU.png b/src/assets/images/emblems/blu/Soldier_emblem_BLU.png deleted file mode 100644 index 45e4d0c..0000000 Binary files a/src/assets/images/emblems/blu/Soldier_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/blu/Spy_emblem_BLU.png b/src/assets/images/emblems/blu/Spy_emblem_BLU.png deleted file mode 100644 index 877fab3..0000000 Binary files a/src/assets/images/emblems/blu/Spy_emblem_BLU.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Demoman_emblem_RED.png b/src/assets/images/emblems/red/Demoman_emblem_RED.png deleted file mode 100644 index 8eaec5b..0000000 Binary files a/src/assets/images/emblems/red/Demoman_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Engineer_emblem_RED.png b/src/assets/images/emblems/red/Engineer_emblem_RED.png deleted file mode 100644 index 72e600d..0000000 Binary files a/src/assets/images/emblems/red/Engineer_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Heavy_emblem_RED.png b/src/assets/images/emblems/red/Heavy_emblem_RED.png deleted file mode 100644 index 183b83d..0000000 Binary files a/src/assets/images/emblems/red/Heavy_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Medic_emblem_RED.png b/src/assets/images/emblems/red/Medic_emblem_RED.png deleted file mode 100644 index d95da65..0000000 Binary files a/src/assets/images/emblems/red/Medic_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Pyro_emblem_RED.png b/src/assets/images/emblems/red/Pyro_emblem_RED.png deleted file mode 100644 index 5249a1a..0000000 Binary files a/src/assets/images/emblems/red/Pyro_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Scout_emblem_RED.png b/src/assets/images/emblems/red/Scout_emblem_RED.png deleted file mode 100644 index a2b0c45..0000000 Binary files a/src/assets/images/emblems/red/Scout_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Sniper_emblem_RED.png b/src/assets/images/emblems/red/Sniper_emblem_RED.png deleted file mode 100644 index ec76b01..0000000 Binary files a/src/assets/images/emblems/red/Sniper_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Soldier_emblem_RED.png b/src/assets/images/emblems/red/Soldier_emblem_RED.png deleted file mode 100644 index 68e9271..0000000 Binary files a/src/assets/images/emblems/red/Soldier_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/red/Spy_emblem_RED.png b/src/assets/images/emblems/red/Spy_emblem_RED.png deleted file mode 100644 index 67f91ae..0000000 Binary files a/src/assets/images/emblems/red/Spy_emblem_RED.png and /dev/null differ diff --git a/src/assets/images/emblems/svg/Demoman_emblem.svg b/src/assets/images/emblems/svg/Demoman_emblem.svg new file mode 100644 index 0000000..953a811 --- /dev/null +++ b/src/assets/images/emblems/svg/Demoman_emblem.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/emblems/svg/Engineer_emblem.svg b/src/assets/images/emblems/svg/Engineer_emblem.svg new file mode 100644 index 0000000..df1bb33 --- /dev/null +++ b/src/assets/images/emblems/svg/Engineer_emblem.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/emblems/svg/Heavy_emblem.svg b/src/assets/images/emblems/svg/Heavy_emblem.svg new file mode 100644 index 0000000..3a39664 --- /dev/null +++ b/src/assets/images/emblems/svg/Heavy_emblem.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/images/emblems/svg/Medic_emblem.svg b/src/assets/images/emblems/svg/Medic_emblem.svg new file mode 100644 index 0000000..10e0f98 --- /dev/null +++ b/src/assets/images/emblems/svg/Medic_emblem.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/emblems/svg/Pyro_emblem.svg b/src/assets/images/emblems/svg/Pyro_emblem.svg new file mode 100644 index 0000000..7b53a7b --- /dev/null +++ b/src/assets/images/emblems/svg/Pyro_emblem.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/emblems/svg/README b/src/assets/images/emblems/svg/README new file mode 100644 index 0000000..9d3685e --- /dev/null +++ b/src/assets/images/emblems/svg/README @@ -0,0 +1,16 @@ +If you want to change the color dynamically: + + Open the SVG in a code editor + + Add or rewrite the attribute of fill of every path to fill="currentColor" + + Now, that svg will take the color of your font color, so you can do something like: + + svg { + color : "red"; + } + Note: this will only work if the SVG is inlined in HTML. + +BLU #5885a2 +RED #b8383b +UNK #b0b0b0 diff --git a/src/assets/images/emblems/svg/Scout_emblem.svg b/src/assets/images/emblems/svg/Scout_emblem.svg new file mode 100644 index 0000000..16a1e45 --- /dev/null +++ b/src/assets/images/emblems/svg/Scout_emblem.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/images/emblems/svg/Sniper_emblem.svg b/src/assets/images/emblems/svg/Sniper_emblem.svg new file mode 100644 index 0000000..721878e --- /dev/null +++ b/src/assets/images/emblems/svg/Sniper_emblem.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/emblems/svg/Soldier_emblem.svg b/src/assets/images/emblems/svg/Soldier_emblem.svg new file mode 100644 index 0000000..60ed0c0 --- /dev/null +++ b/src/assets/images/emblems/svg/Soldier_emblem.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/images/emblems/svg/Spy_emblem.svg b/src/assets/images/emblems/svg/Spy_emblem.svg new file mode 100644 index 0000000..3124cec --- /dev/null +++ b/src/assets/images/emblems/svg/Spy_emblem.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/images/emblems/svg/Unk_emblem.svg b/src/assets/images/emblems/svg/Unk_emblem.svg new file mode 100644 index 0000000..3bd41a8 --- /dev/null +++ b/src/assets/images/emblems/svg/Unk_emblem.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/images/emblems/unknown/Unk_emblem_UNK.png b/src/assets/images/emblems/unknown/Unk_emblem_UNK.png deleted file mode 100644 index a944ff5..0000000 Binary files a/src/assets/images/emblems/unknown/Unk_emblem_UNK.png and /dev/null differ diff --git a/src/styles.scss b/src/styles.scss index b8dcfc6..51678bb 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -330,3 +330,62 @@ span { border: 0px solid black; } +.img-in-header { + width: 15%; +} + +.main-content-in-header { + width: 65% +} + +@media only screen and (max-width: 600px) { + .img-in-header { + display: none; + } + + .main-content-in-header { + width: 100%; + } +} + +@media only screen and (min-width: 600px) { + .img-in-header { + display: none; + } + + .main-content-in-header { + width: 100%; + } +} + +@media only screen and (min-width: 768px) { + .img-in-header { + display: none; + } + + .main-content-in-header { + width: 100%; + } +} + +@media only screen and (min-width: 992px) { + .img-in-header { + display: unset; + width: 15%; + } + + .main-content-in-header { + width: 75%; + } +} + +@media only screen and (min-width: 1200px) { + .img-in-header { + display: unset; + width: 15%; + } + + .main-content-in-header { + width: 65%; + } +}