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: `
+
+
+
-
-
факты
+
+ факты
+ Администратору
`,
- 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%;
+ }
+}