diff --git a/kdb-web/package.json b/kdb-web/package.json index 4cff7843..8e415632 100644 --- a/kdb-web/package.json +++ b/kdb-web/package.json @@ -1,6 +1,6 @@ { "name": "kdb-web", - "version": "1.0.5", + "version": "1.0.7", "scripts": { "ng": "ng", "update-version": "ts-node-esm update-version.ts", @@ -51,4 +51,4 @@ "tslib": "^2.4.1", "typescript": "~4.9.5" } -} \ No newline at end of file +} diff --git a/kdb-web/src/app/models/data/user.model.ts b/kdb-web/src/app/models/data/user.model.ts index 671da870..fb36964e 100644 --- a/kdb-web/src/app/models/data/user.model.ts +++ b/kdb-web/src/app/models/data/user.model.ts @@ -23,17 +23,6 @@ export interface User extends DataWithHistory { userJoinedGameServerCount?: number; userJoinedGameServers?: UserJoinedGameServer[]; - - // history?: UserHistory[]; -} - -export interface UserHistory extends History { - id?: number; - discordId?: number; - xp?: number; - level?: number; - server?: number; - leftServer?: boolean; } export interface UserFilter { diff --git a/kdb-web/src/app/models/graphql/queries.model.ts b/kdb-web/src/app/models/graphql/queries.model.ts index 29b8dbcf..f3d68257 100644 --- a/kdb-web/src/app/models/graphql/queries.model.ts +++ b/kdb-web/src/app/models/graphql/queries.model.ts @@ -62,6 +62,17 @@ export class Queries { } createdAt modifiedAt + } + } + } + `; + + static levelWithHistoryQuery = ` + query LevelHistory($serverId: ID, $id: ID) { + servers(filter: {id: $serverId}) { + levelCount + levels(filter: {id: $id}) { + id history { id @@ -94,6 +105,29 @@ export class Queries { name } leftServer + + createdAt + modifiedAt + } + } + } + `; + + static userProfile = ` + query UserProfile($serverId: ID, $userId: ID, $page: Page, $sort: Sort) { + servers(filter: {id: $serverId}) { + userCount + users(filter: {id: $userId}, page: $page, sort: $sort) { + id + discordId + name + xp + ontime + level { + id + name + } + leftServer server { id name @@ -124,9 +158,17 @@ export class Queries { joinedOn leavedOn } + } + } + } + `; - createdAt - modifiedAt + static userQueryWithHistory = ` + query UsersWithHistory($serverId: ID, $id: ID) { + servers(filter: {id: $serverId}) { + userCount + users(filter: {id: $id}) { + id history { id @@ -159,6 +201,17 @@ export class Queries { createdAt modifiedAt + } + } + } + `; + + static autoRolesWithHistoryQuery = ` + query AutoRoleWithHistoryQuery($serverId: ID, $id: ID) { + servers(filter: {id: $serverId}) { + autoRoleCount + autoRoles(filter: {id: $id}) { + id history { id @@ -191,6 +244,19 @@ export class Queries { createdAt modifiedAt + } + } + } + } + `; + + static autoRoleRulesHistoryQuery = ` + query AutoRoleRuleHistoryQuery($serverId: ID, $autoRoleId: ID, $id: ID) { + servers(filter: {id: $serverId}) { + autoRoles(filter: {id: $autoRoleId}) { + autoRoleRuleCount + autoRoleRules(filter: {id: $id}) { + id history { id diff --git a/kdb-web/src/app/modules/shared/components/history-btn/history-btn.component.ts b/kdb-web/src/app/modules/shared/components/history-btn/history-btn.component.ts index db89ea41..ca1a2d00 100644 --- a/kdb-web/src/app/modules/shared/components/history-btn/history-btn.component.ts +++ b/kdb-web/src/app/modules/shared/components/history-btn/history-btn.component.ts @@ -1,5 +1,16 @@ import { Component, Input, OnInit } from "@angular/core"; import { History } from "../../../../models/data/data.model"; +import { UserListQuery } from "../../../../models/graphql/query.model"; +import { Server } from "../../../../models/data/server.model"; +import { DataService } from "../../../../services/data/data.service"; +import { AuthService } from "../../../../services/auth/auth.service"; +import { SpinnerService } from "../../../../services/spinner/spinner.service"; +import { ToastService } from "../../../../services/toast/toast.service"; +import { ConfirmationDialogService } from "../../../../services/confirmation-dialog/confirmation-dialog.service"; +import { FormBuilder } from "@angular/forms"; +import { TranslateService } from "@ngx-translate/core"; +import { ActivatedRoute } from "@angular/router"; +import { SidebarService } from "../../../../services/sidebar/sidebar.service"; @Component({ selector: "app-history-btn", @@ -8,19 +19,62 @@ import { History } from "../../../../models/data/data.model"; }) export class HistoryBtnComponent implements OnInit { - @Input() history: History[] = []; + @Input() id: number = 0; + @Input() query: string = ""; @Input() translationKey: string = ""; - public showSidebar: boolean = false; + public history: History[] = []; - public constructor() { + public showSidebar: boolean = false; + private server: Server = {}; + + public constructor( + private authService: AuthService, + private spinner: SpinnerService, + private toastService: ToastService, + private confirmDialog: ConfirmationDialogService, + private fb: FormBuilder, + private translate: TranslateService, + private data: DataService, + private route: ActivatedRoute, + private sidebar: SidebarService + ) { } public ngOnInit(): void { + this.server = this.sidebar.server$.value ?? {}; + } + + private findVal(object: any, key: string) { + var value; + Object.keys(object).some((k: string) => { + if (k === key) { + value = object[k]; + return true; + } + if (object[k] && typeof object[k] === "object") { + value = this.findVal(object[k], key); + return value !== undefined; + } + return null; + }); + return value; } public openHistory(): void { this.showSidebar = true; + this.data.query(this.query, { + serverId: this.server.id, id: this.id + }, + (x: { servers: Server[] }) => { + return x.servers[0]; + } + ).subscribe(data => { + this.history = this.findVal(data, "history") ?? []; + this.spinner.hideSpinner(); + }); + + let oldHistory: Partial = {}; for (const history of this.history) { const attributes = Object.keys(history).map((key) => { diff --git a/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles-rules/auto-roles-rules.component.html b/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles-rules/auto-roles-rules.component.html index 3c389ab5..c44d7208 100644 --- a/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles-rules/auto-roles-rules.component.html +++ b/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles-rules/auto-roles-rules.component.html @@ -160,7 +160,7 @@
- + diff --git a/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles-rules/auto-roles-rules.component.ts b/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles-rules/auto-roles-rules.component.ts index 7f302851..5fab0523 100644 --- a/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles-rules/auto-roles-rules.component.ts +++ b/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles-rules/auto-roles-rules.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from "@angular/core"; +import { Component, OnDestroy, OnInit, Query } from "@angular/core"; import { DataService } from "../../../../../../services/data/data.service"; import { ActivatedRoute, Router } from "@angular/router"; import { AutoRoleRule, AutoRoleRuleFilter } from "../../../../../../models/data/auto_role.model"; @@ -66,6 +66,8 @@ export class AutoRolesRulesComponent implements OnInit, OnDestroy { private unsubscriber = new Subject(); private server: Server = {}; + query: string = Queries.autoRoleRulesHistoryQuery; + constructor( private authService: AuthService, private spinner: SpinnerService, diff --git a/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles/auto-roles.component.html b/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles/auto-roles.component.html index a2677dc0..b30ff372 100644 --- a/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles/auto-roles.component.html +++ b/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles/auto-roles.component.html @@ -126,7 +126,8 @@ - + {{autoRole.channelId}} @@ -191,9 +192,9 @@
- - - + + + diff --git a/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles/auto-roles.component.ts b/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles/auto-roles.component.ts index 12b070c0..77f249ad 100644 --- a/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles/auto-roles.component.ts +++ b/kdb-web/src/app/modules/view/server/auto-role/components/auto-roles/auto-roles.component.ts @@ -63,6 +63,8 @@ export class AutoRolesComponent implements OnInit, OnDestroy { private unsubscriber = new Subject(); private server: Server = {}; + query: string = Queries.autoRolesWithHistoryQuery; + constructor( private authService: AuthService, private spinner: SpinnerService, diff --git a/kdb-web/src/app/modules/view/server/levels/components/levels/levels.component.html b/kdb-web/src/app/modules/view/server/levels/components/levels/levels.component.html index 97be32d8..0c8b1945 100644 --- a/kdb-web/src/app/modules/view/server/levels/components/levels/levels.component.html +++ b/kdb-web/src/app/modules/view/server/levels/components/levels/levels.component.html @@ -184,7 +184,7 @@
- +