Added level icons
This commit is contained in:
parent
a917803eff
commit
f209e45905
@ -2,6 +2,10 @@ from datetime import datetime
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from cpl_core.database import TableABC
|
from cpl_core.database import TableABC
|
||||||
|
from cpl_core.dependency_injection import ServiceProviderABC
|
||||||
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
from cpl_query.extension import List
|
||||||
|
from discord import Role
|
||||||
|
|
||||||
from bot_data.model.server import Server
|
from bot_data.model.server import Server
|
||||||
|
|
||||||
@ -33,6 +37,13 @@ class Level(TableABC):
|
|||||||
def id(self) -> int:
|
def id(self) -> int:
|
||||||
return self._id
|
return self._id
|
||||||
|
|
||||||
|
@property
|
||||||
|
@ServiceProviderABC.inject
|
||||||
|
def icon_url(self, bot: DiscordBotServiceABC) -> str:
|
||||||
|
guild = bot.get_guild(self.server.discord_id)
|
||||||
|
role = List(Role, guild.roles).where(lambda x: x.name == self._name).first_or_default()
|
||||||
|
return None if role is None else role.icon
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self) -> str:
|
def name(self) -> str:
|
||||||
return self._name
|
return self._name
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
type Level implements TableWithHistoryQuery {
|
type Level implements TableWithHistoryQuery {
|
||||||
id: ID
|
id: ID
|
||||||
|
iconURL: String
|
||||||
name: String
|
name: String
|
||||||
color: String
|
color: String
|
||||||
minXp: Int
|
minXp: Int
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
from cpl_core.database.context import DatabaseContextABC
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
|
||||||
from bot_data.model.level import Level
|
|
||||||
from bot_data.model.level_history import LevelHistory
|
from bot_data.model.level_history import LevelHistory
|
||||||
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
|
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
|
||||||
|
|
||||||
@ -9,33 +8,13 @@ class LevelQuery(DataQueryWithHistoryABC):
|
|||||||
def __init__(self, db: DatabaseContextABC):
|
def __init__(self, db: DatabaseContextABC):
|
||||||
DataQueryWithHistoryABC.__init__(self, "Level", "LevelsHistory", LevelHistory, db)
|
DataQueryWithHistoryABC.__init__(self, "Level", "LevelsHistory", LevelHistory, db)
|
||||||
|
|
||||||
self.set_field("id", self.resolve_id)
|
self.set_field("id", lambda x, *_: x.id)
|
||||||
self.set_field("name", self.resolve_name)
|
self.set_field(
|
||||||
self.set_field("color", self.resolve_color)
|
"iconURL",
|
||||||
self.set_field("minXp", self.resolve_min_xp)
|
lambda x, *_: "https://cdn.discordapp.com/emojis/1170348708894875659.webp?size=32&quality=lossless",
|
||||||
self.set_field("permissions", self.resolve_permissions)
|
)
|
||||||
self.set_field("server", self.resolve_server)
|
self.set_field("name", lambda x, *_: x.name)
|
||||||
|
self.set_field("color", lambda x, *_: x.color)
|
||||||
@staticmethod
|
self.set_field("minXp", lambda x, *_: x.min_xp)
|
||||||
def resolve_id(level: Level, *_):
|
self.set_field("permissions", lambda x, *_: x.permissions)
|
||||||
return level.id
|
self.set_field("server", lambda x, *_: x.server)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def resolve_name(level: Level, *_):
|
|
||||||
return level.name
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def resolve_color(level: Level, *_):
|
|
||||||
return level.color
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def resolve_min_xp(level: Level, *_):
|
|
||||||
return level.min_xp
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def resolve_permissions(level: Level, *_):
|
|
||||||
return level.permissions
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def resolve_server(level: Level, *_):
|
|
||||||
return level.server
|
|
||||||
|
@ -155,6 +155,7 @@ export class Queries {
|
|||||||
levelCount
|
levelCount
|
||||||
levels(filter: $filter, page: $page, sort: $sort) {
|
levels(filter: $filter, page: $page, sort: $sort) {
|
||||||
id
|
id
|
||||||
|
iconURL
|
||||||
name
|
name
|
||||||
color
|
color
|
||||||
minXp
|
minXp
|
||||||
|
@ -45,6 +45,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</th>
|
</th>
|
||||||
|
|
||||||
|
<th hideable-th="icon" [parent]="this" [sortable]="true">
|
||||||
|
<div class="table-header-label">
|
||||||
|
<div class="table-header-text">{{'common.icon' | translate}}</div>
|
||||||
|
<p-sortIcon field="id" class="table-header-icon"></p-sortIcon>
|
||||||
|
</div>
|
||||||
|
</th>
|
||||||
|
|
||||||
<th hideable-th="name" [parent]="this" [sortable]="true">
|
<th hideable-th="name" [parent]="this" [sortable]="true">
|
||||||
<div class="table-header-label">
|
<div class="table-header-label">
|
||||||
<div class="table-header-text">{{'common.name' | translate}}</div>
|
<div class="table-header-text">{{'common.name' | translate}}</div>
|
||||||
@ -99,6 +106,8 @@
|
|||||||
placeholder="{{'common.id' | translate}}">
|
placeholder="{{'common.id' | translate}}">
|
||||||
</form>
|
</form>
|
||||||
</th>
|
</th>
|
||||||
|
<th hideable-th="icon" [parent]="this" class="table-header-small">
|
||||||
|
</th>
|
||||||
<th hideable-th="name" [parent]="this">
|
<th hideable-th="name" [parent]="this">
|
||||||
<form [formGroup]="filterForm">
|
<form [formGroup]="filterForm">
|
||||||
<input type="text" pInputText formControlName="name"
|
<input type="text" pInputText formControlName="name"
|
||||||
@ -128,6 +137,10 @@
|
|||||||
</p-cellEditor>
|
</p-cellEditor>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
|
<td hideable-th="icon" [parent]="this">
|
||||||
|
<img width="32px" height="32px" *ngIf="level ? level.iconURL : ''" [src]="level ? level.iconURL : ''">
|
||||||
|
</td>
|
||||||
|
|
||||||
<td hideable-th="name" [parent]="this">
|
<td hideable-th="name" [parent]="this">
|
||||||
<span class="p-column-title">{{'common.name' | translate}}:</span>
|
<span class="p-column-title">{{'common.name' | translate}}:</span>
|
||||||
<p-cellEditor>
|
<p-cellEditor>
|
||||||
|
@ -19,7 +19,7 @@ import { Table } from "primeng/table";
|
|||||||
import { User } from "../../../../../../models/data/user.model";
|
import { User } from "../../../../../../models/data/user.model";
|
||||||
import { LevelMutationResult, UpdateUserMutationResult } from "../../../../../../models/graphql/result.model";
|
import { LevelMutationResult, UpdateUserMutationResult } from "../../../../../../models/graphql/result.model";
|
||||||
import { Mutations } from "../../../../../../models/graphql/mutations.model";
|
import { Mutations } from "../../../../../../models/graphql/mutations.model";
|
||||||
import { forkJoin, Subject, throwError } from "rxjs";
|
import { Subject, throwError } from "rxjs";
|
||||||
import { Server } from "../../../../../../models/data/server.model";
|
import { Server } from "../../../../../../models/data/server.model";
|
||||||
import { UserDTO } from "../../../../../../models/auth/auth-user.dto";
|
import { UserDTO } from "../../../../../../models/auth/auth-user.dto";
|
||||||
import { ComponentWithTable } from "../../../../../../base/component-with-table";
|
import { ComponentWithTable } from "../../../../../../base/component-with-table";
|
||||||
@ -72,7 +72,7 @@ export class LevelsComponent extends ComponentWithTable implements OnInit, OnDes
|
|||||||
private sidebar: SidebarService,
|
private sidebar: SidebarService,
|
||||||
private route: ActivatedRoute
|
private route: ActivatedRoute
|
||||||
) {
|
) {
|
||||||
super("level", ["id", "name", "color", "min_xp", "permissions"], (oldElement: Level, newElement: Level) => {
|
super("level", ["id", "icon", "name", "color", "min_xp", "permissions"], (oldElement: Level, newElement: Level) => {
|
||||||
return oldElement.name === newElement.name;
|
return oldElement.name === newElement.name;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -180,6 +180,7 @@
|
|||||||
"value": "Wert",
|
"value": "Wert",
|
||||||
"xp": "XP"
|
"xp": "XP"
|
||||||
},
|
},
|
||||||
|
"icon": "Icon",
|
||||||
"id": "Id",
|
"id": "Id",
|
||||||
"import": "Importieren",
|
"import": "Importieren",
|
||||||
"interval": "Interval",
|
"interval": "Interval",
|
||||||
|
@ -180,6 +180,7 @@
|
|||||||
"value": "Value",
|
"value": "Value",
|
||||||
"xp": "XP"
|
"xp": "XP"
|
||||||
},
|
},
|
||||||
|
"icon": "Icon",
|
||||||
"id": "Id",
|
"id": "Id",
|
||||||
"import": "Import",
|
"import": "Import",
|
||||||
"interval": "interval",
|
"interval": "interval",
|
||||||
|
Loading…
Reference in New Issue
Block a user