Added played_on_game_server achievement logic #268_achievements
This commit is contained in:
@@ -4,6 +4,11 @@ import {Level} from "./level.model";
|
||||
import {Client} from "./client.model";
|
||||
import { AutoRole } from "./auto_role.model";
|
||||
|
||||
export interface GameServer {
|
||||
id?: number;
|
||||
name?: string;
|
||||
}
|
||||
|
||||
export interface Server extends Data {
|
||||
id?: number;
|
||||
discordId?: String;
|
||||
|
@@ -46,6 +46,16 @@ export class Queries {
|
||||
}
|
||||
`;
|
||||
|
||||
static gameServerQuery = `
|
||||
query GameServersList($serverId: ID) {
|
||||
servers(filter: {id: $serverId}) {
|
||||
gameServers {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
|
||||
static levelQuery = `
|
||||
query LevelsList($serverId: ID, $filter: LevelFilter, $page: Page, $sort: Sort) {
|
||||
servers(filter: {id: $serverId}) {
|
||||
@@ -92,8 +102,8 @@ export class Queries {
|
||||
|
||||
static achievementTypeQuery = `
|
||||
query AchievementType {
|
||||
AchievementOperators
|
||||
AchievementAttributes {
|
||||
achievementOperators
|
||||
achievementAttributes {
|
||||
name
|
||||
type
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { Server } from "../data/server.model";
|
||||
import { GameServer, Server } from "../data/server.model";
|
||||
import { User } from "../data/user.model";
|
||||
import { AutoRole, AutoRoleRule } from "../data/auto_role.model";
|
||||
import { Guild } from "../data/discord.model";
|
||||
@@ -19,14 +19,19 @@ export interface UserListQuery {
|
||||
users: User[];
|
||||
}
|
||||
|
||||
export interface GameServerListQuery {
|
||||
gameServerCount: number;
|
||||
gameServers: GameServer[];
|
||||
}
|
||||
|
||||
export interface LevelListQuery {
|
||||
levelCount: number;
|
||||
levels: Level[];
|
||||
}
|
||||
|
||||
export interface AchievementTypeQuery {
|
||||
AchievementAttributes: AchievementAttribute[];
|
||||
AchievementOperators: string[];
|
||||
achievementAttributes: AchievementAttribute[];
|
||||
achievementOperators: string[];
|
||||
}
|
||||
|
||||
export interface AchievementListQuery {
|
||||
|
@@ -153,7 +153,7 @@
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<p-cellEditor *ngIf="getAchievementAttributeByName(achievement.attribute).type === 'number'">
|
||||
<p-cellEditor *ngIf="getAchievementAttributeByName(achievement.attribute)?.type === 'number'">
|
||||
<ng-template pTemplate="input">
|
||||
<input class="table-edit-input" pInputText min="0" type="number" [(ngModel)]="achievement.value">
|
||||
</ng-template>
|
||||
@@ -162,7 +162,7 @@
|
||||
</ng-template>
|
||||
</p-cellEditor>
|
||||
|
||||
<p-cellEditor *ngIf="getAchievementAttributeByName(achievement.attribute).type === 'Level'">
|
||||
<p-cellEditor *ngIf="getAchievementAttributeByName(achievement.attribute)?.type === 'Level'">
|
||||
<ng-template pTemplate="input">
|
||||
<p-dropdown [options]="levels" [(ngModel)]="achievement.value" placeholder="{{'view.server.members.headers.level' | translate}}"></p-dropdown>
|
||||
</ng-template>
|
||||
@@ -170,6 +170,15 @@
|
||||
{{achievement.value}}
|
||||
</ng-template>
|
||||
</p-cellEditor>
|
||||
|
||||
<p-cellEditor *ngIf="getAchievementAttributeByName(achievement.attribute)?.type === 'GameServer'">
|
||||
<ng-template pTemplate="input">
|
||||
<p-dropdown [options]="gameServers" [(ngModel)]="achievement.value" placeholder="{{'view.server.profile.joined_game_server.name' | translate}}"></p-dropdown>
|
||||
</ng-template>
|
||||
<ng-template pTemplate="output">
|
||||
{{achievement.value}}
|
||||
</ng-template>
|
||||
</p-cellEditor>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
@@ -15,7 +15,7 @@ import { TranslateService } from "@ngx-translate/core";
|
||||
import { DataService } from "../../../../../../services/data/data.service";
|
||||
import { SidebarService } from "../../../../../../services/sidebar/sidebar.service";
|
||||
import { ActivatedRoute } from "@angular/router";
|
||||
import { AchievementListQuery, AchievementTypeQuery, LevelListQuery, Query } from "../../../../../../models/graphql/query.model";
|
||||
import { AchievementListQuery, AchievementTypeQuery, GameServerListQuery, LevelListQuery, Query } from "../../../../../../models/graphql/query.model";
|
||||
import { catchError, debounceTime, takeUntil } from "rxjs/operators";
|
||||
import { LazyLoadEvent, MenuItem } from "primeng/api";
|
||||
import { Table } from "primeng/table";
|
||||
@@ -63,7 +63,9 @@ export class AchievementComponent implements OnInit, OnDestroy {
|
||||
public operators: string[] = [];
|
||||
public attributes: MenuItem[] = [];
|
||||
private achievementsAttributes: AchievementAttribute[] = [];
|
||||
levels!: MenuItem[];
|
||||
|
||||
public levels!: MenuItem[];
|
||||
public gameServers!: MenuItem[];
|
||||
|
||||
query: string = Queries.achievementWithHistoryQuery;
|
||||
|
||||
@@ -94,7 +96,6 @@ export class AchievementComponent implements OnInit, OnDestroy {
|
||||
this.unsubscriber.complete();
|
||||
}
|
||||
|
||||
|
||||
private loadLevels() {
|
||||
this.data.query<LevelListQuery>(Queries.levelQuery, {
|
||||
serverId: this.server.id
|
||||
@@ -109,6 +110,20 @@ export class AchievementComponent implements OnInit, OnDestroy {
|
||||
});
|
||||
}
|
||||
|
||||
private loadGameServers() {
|
||||
this.data.query<GameServerListQuery>(Queries.gameServerQuery, {
|
||||
serverId: this.server.id
|
||||
},
|
||||
(data: Query) => {
|
||||
return data.servers[0];
|
||||
}
|
||||
).subscribe(data => {
|
||||
this.gameServers = data.gameServers.map(gameServer => {
|
||||
return { label: gameServer.name, value: gameServer.name };
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private loadNextData() {
|
||||
this.data.query<AchievementListQuery>(Queries.achievementQuery, {
|
||||
serverId: this.server.id, filter: this.filter, page: this.page, sort: this.sort
|
||||
@@ -127,12 +142,13 @@ export class AchievementComponent implements OnInit, OnDestroy {
|
||||
public loadNextPage(): void {
|
||||
this.data.query<AchievementTypeQuery>(Queries.achievementTypeQuery
|
||||
).subscribe(data => {
|
||||
this.operators = data.AchievementOperators;
|
||||
this.achievementsAttributes = data.AchievementAttributes;
|
||||
this.attributes = data.AchievementAttributes.map(attribute => {
|
||||
this.operators = data.achievementOperators;
|
||||
this.achievementsAttributes = data.achievementAttributes;
|
||||
this.attributes = data.achievementAttributes.map(attribute => {
|
||||
return { label: attribute.name, value: attribute.name };
|
||||
});
|
||||
this.loadLevels();
|
||||
this.loadGameServers();
|
||||
this.loadNextData();
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user