Ajout de composants Hero Wars

This commit is contained in:
2025-11-27 10:35:38 +01:00
parent 8e3bd16b60
commit 8a1c19e011
66 changed files with 4137 additions and 7 deletions
@@ -0,0 +1,16 @@
export interface HWClanListConfig {
type: string;
filters: HWClanListFilters;
}
export interface HWClanListFilters {
id?: string;
title?: string;
country?: string;
level?: string;
minLevel?: string;
ownerId?: string;
serverId?: string;
topActivity?: string;
topDungeon?: string;
}
@@ -0,0 +1,6 @@
import { HWClan } from './clan.model';
export interface HWClanList {
clans: Array<HWClan>;
clansCount: number;
}
@@ -0,0 +1,84 @@
import { HWMember } from './member.model';
import { HWActivityStat, HWGuildStat, HWMemberStat } from './stat.model';
import { PageLinks, PageMeta } from '../shared.model';
export interface HWGuildClan {
id: string;
ownerId: string;
level: string;
title: string;
description: string;
icon: {
flagColor1: number;
flagColor2: number;
flagShape: number;
iconColor: number;
iconShape: number;
};
country: string;
minLevel: string;
serverId: string;
membersCount: string;
disbanding: boolean;
topActivity: string;
topDungeon: string;
roleNames: never[];
frameId: number;
members: {[key: string]: HWMember};
news: string;
activityPoints: number;
dungeonPoints: number;
blackList: {[key: string]: number};
warriors: number[];
giftsCount: number;
daysToKick: string;
league: string;
sumAverages: HWActivityStat;
sumTotal: HWActivityStat;
todayAverages: HWActivityStat;
todayTotal: HWActivityStat;
}
export interface HWGuildData {
clan: HWGuildClan;
slots: {[key: string]: number};
membersStat: HWMemberStat[];
stat: HWGuildStat;
serverResetTime: number;
clanWarEndSeasonTime: number;
freeClanChangeInterval: {
start: number;
end: number;
};
giftUids: string[];
}
export interface HWClan {
id: string;
country: string;
description: string;
disbanding: boolean;
frameId: number;
icon: {
flagColor1: number;
flagColor2: number;
flagShape: number;
iconColor: number;
iconShape: number;
};
level: string;
members: {[key: string]: HWMember};
membersCount: string;
minLevel: string;
ownerId: string;
/*roleNames: never[];*/
serverId: string;
title: string;
topActivity: string;
topDungeon: string;
}
export interface HWClanPageData {
clan: HWClan;
_links: PageLinks;
_meta: PageMeta;
}
@@ -0,0 +1,10 @@
import { HWMember } from './member.model';
export interface HWGuildWarFortification {
name: string;
type: string;
count: number;
teams: HWMember[];
positions: number[];
slots: number[];
}
@@ -0,0 +1,80 @@
export interface HWGuildWarHeroTeam {
id: number;
level: number;
color: number;
star: number;
power: number;
}
export interface HWGuildWarTitanTeam {
id: number;
level: number;
star: number;
element: string;
elementSpiritLevel: number;
elementSpiritStar: number;
elementSpiritSkills: {
skillId: number;
level: number;
tierScale: number;
}[];
elementAffinityPower: number;
power: number;
}
export interface HWGuildWarEnemyTeam {
element: string;
elementSpiritLevel: number;
elementSpiritStar: number;
elementSpiritSkills: {
skillId: number;
level: number;
tierScale: number;
}[];
elementAffinityPower: number;
state: {
isDead: boolean;
hp: number;
energy: number;
maxHp: number;
};
id: number;
star: number;
color: number;
level: number;
power: number;
type: string;
}
export interface HWGuildWarSlots {
[key: string]: number[];
}
export interface HWGuildWarEnemySlot {
attackerId: number;
status: string;
user: {
id: string;
name: string;
lastLoginTime: string;
serverId: string;
level: string;
clanId: string;
clanRole: string;
commander: boolean;
avatarId: string;
isChatModerator: boolean;
frameId: number;
leagueId: number;
allowPm: string;
clanTitle: string;
clanIcon: {
flagColor1: number;
flagColor2: number;
flagShape: number;
iconColor: number;
iconShape: number;
};
};
pointsFarmed: number;
slotId: number;
totalPoints: number;
teams: HWGuildWarEnemyTeam[];
}
+264
View File
@@ -0,0 +1,264 @@
export interface HWMember {
id: string;
name: string;
lastLoginTime: string;
serverId: string;
level: string;
clanId: string;
clanRole: string;
commander: boolean;
avatarId: string;
isChatModerator: boolean;
frameId: number;
leagueId: number;
allowPm: string;
showProfile: boolean;
clanTitle: string;
clanIcon: {
flagColor1: number;
flagColor2: number;
flagShape: number;
iconColor: number;
iconShape: number;
};
champion: boolean;
heroes: {
power: number;
teams: HWGuildWarHeroTeam[];
};
titans: {
power: number;
teams: HWGuildWarTitanTeam[];
};
stat: HWMemberStat;
inactivity: {
daysLeft: number,
timeLeft: number,
dropDate: number;
dropDelay: string;
}
adventureSum: number;
clanGiftsSum: number;
clanWarSum: number;
weekStat: HWWeekStat;
score: number;
scoreGifts: number;
warGifts: number;
rewards: number;
raids: HWGuildRaid[];
raidsInfo: {
variationAvg: number;
variationSum: number;
}
}
export interface HWGuildWarHeroTeam {
id: number;
level: number;
color: number;
star: number;
power: number;
}
export interface HWGuildWarTitanTeam {
id: number;
level: number;
star: number;
element: string;
elementSpiritLevel: number;
elementSpiritStar: number;
elementSpiritSkills: {
skillId: number;
level: number;
tierScale: number;
}[];
elementAffinityPower: number;
power: number;
}
export interface HWGuildWarFortification {
name: string;
type: string;
count: number;
teams: HWMember[];
positions: number[];
slots: number[];
}
export interface HWGuildStat {
todayActivity: number;
activitySum: number;
dungeonActivitySum: number;
todayRaid: never[];
todayItemsActivity: number;
todayDungeonActivity: number;
activityForRuneAvailable: boolean;
adventureStat: number;
clanWarStat: number;
}
export interface HWGuildClan {
id: string;
ownerId: string;
level: string;
title: string;
description: string;
icon: {
flagColor1: number;
flagColor2: number;
flagShape: number;
iconColor: number;
iconShape: number;
};
country: string;
minLevel: string;
serverId: string;
membersCount: string;
disbanding: boolean;
topActivity: string;
topDungeon: string;
roleNames: never[];
frameId: number;
members: {[key: string]: HWMember};
news: string;
activityPoints: number;
dungeonPoints: number;
blackList: {[key: string]: number};
warriors: number[];
giftsCount: number;
daysToKick: string;
league: string;
}
export interface HWGuildData {
clan: HWGuildClan;
slots: {[key: string]: number};
membersStat: HWMemberStat[];
stat: HWGuildStat;
serverResetTime: number;
clanWarEndSeasonTime: number;
freeClanChangeInterval: {
start: number;
end: number;
};
giftUids: string[];
}
export interface HWActivityStat {
activity: number;
prestige: number;
titanite: number;
war: number;
adventure: number;
gifts: number;
score: number;
scoreGifts: number;
warGifts: number;
rewards: number;
}
export interface HWWeekStat {
activity: number[];
dungeonActivity: number[];
adventureStat: number[];
clanWarStat: number[];
prestigeStat: number[];
clanGifts: number[];
}
export interface HWMemberStat {
activitySum: number;
todayActivity: number;
dungeonActivitySum: number;
todayDungeonActivity: number;
raidSum: number;
wasChampion: boolean;
todayPrestige: number;
prestigeSum: number;
}
export interface HWGuildRaidAttacker {
id: number;
power: number;
type: string;
}
export interface HWGuildRaidStage {
num: number;
name: string;
maxPower: number;
duration: number;
startTime: number;
endTime: number;
}
export interface HWGuildRaid {
userId: string;
userName: string;
power: number;
variation: {
value: number;
percent: number;
color: string;
};
tooltip: string;
startTime: string;
endTime: string;
damage: {
"1": number;
"2": number;
};
level: string;
attackers: HWGuildRaidAttacker[];
stage: HWGuildRaidStage;
}
export interface HWGuildRaidAttackers {
[key: string]: HWGuildRaidAttacker;
}
export interface HWGuildWarEnemySlot {
attackerId: number;
status: string;
user: {
id: string;
name: string;
lastLoginTime: string;
serverId: string;
level: string;
clanId: string;
clanRole: string;
commander: boolean;
avatarId: string;
isChatModerator: boolean;
frameId: number;
leagueId: number;
allowPm: string;
clanTitle: string;
clanIcon: {
flagColor1: number;
flagColor2: number;
flagShape: number;
iconColor: number;
iconShape: number;
};
};
pointsFarmed: number;
slotId: number;
totalPoints: number;
teams: HWGuildWarEnemyTeam[];
}
export interface HWGuildWarEnemyTeam {
element: string;
elementSpiritLevel: number;
elementSpiritStar: number;
elementSpiritSkills: {
skillId: number;
level: number;
tierScale: number;
}[];
elementAffinityPower: number;
state: {
isDead: boolean;
hp: number;
energy: number;
maxHp: number;
};
id: number;
star: number;
color: number;
level: number;
power: number;
type: string;
}
export interface HWGuildWarSlots {
[key: string]: number[];
}
+9
View File
@@ -0,0 +1,9 @@
export * from './clan-list-config.model';
export * from './clan-list.model';
export * from './clan.model';
export * from './fortification.model';
export * from './guildwar.model';
//export * from './hw.model';
export * from './member.model';
export * from './raid.model';
export * from './stat.model';
@@ -0,0 +1,57 @@
import { HWGuildRaid } from './raid.model';
import { HWMemberStat, HWWeekStat } from './stat.model';
import { HWGuildWarHeroTeam, HWGuildWarTitanTeam } from './guildwar.model';
export interface HWMember {
id: string;
allowPm: string;
avatarId: string;
clanIcon: {
flagColor1: number;
flagColor2: number;
flagShape: number;
iconColor: number;
iconShape: number;
};
clanId: string;
clanRole: string;
clanTitle: string;
commander: boolean;
frameId: number;
isChatModerator: boolean;
lastLoginTime: string;
leagueId: number;
level: string;
name: string;
serverId: string;
showProfile: boolean;
champion: boolean;
heroes: {
power: number;
teams: HWGuildWarHeroTeam[];
};
titans: {
power: number;
teams: HWGuildWarTitanTeam[];
};
stat: HWMemberStat;
inactivity: {
daysLeft: number,
timeLeft: number,
dropDate: number;
dropDelay: string;
}
adventureSum: number;
clanGiftsSum: number;
clanWarSum: number;
weekStat: HWWeekStat;
score: number;
scoreGifts: number;
warGifts: number;
rewards: number;
raids: HWGuildRaid[];
raidsInfo: {
variationAvg: number;
variationSum: number;
}
}
@@ -0,0 +1,38 @@
export interface HWGuildRaidAttacker {
id: number;
power: number;
type: string;
}
export interface HWGuildRaidStage {
num: number;
name: string;
maxPower: number;
duration: number;
startTime: number;
endTime: number;
}
export interface HWGuildRaid {
userId: string;
userName: string;
power: number;
variation: {
value: number;
percent: number;
color: string;
};
tooltip: string;
startTime: string;
endTime: string;
damage: {
"1": number;
"2": number;
};
level: string;
attackers: HWGuildRaidAttacker[];
stage: HWGuildRaidStage;
}
export interface HWGuildRaidAttackers {
[key: string]: HWGuildRaidAttacker;
}
@@ -0,0 +1,42 @@
export interface HWGuildStat {
todayActivity: number;
activitySum: number;
dungeonActivitySum: number;
todayRaid: never[];
todayItemsActivity: number;
todayDungeonActivity: number;
activityForRuneAvailable: boolean;
adventureStat: number;
clanWarStat: number;
}
export interface HWActivityStat {
activity: number;
prestige: number;
titanite: number;
war: number;
adventure: number;
gifts: number;
score: number;
scoreGifts: number;
warGifts: number;
rewards: number;
}
export interface HWWeekStat {
activity: number[];
dungeonActivity: number[];
adventureStat: number[];
clanWarStat: number[];
prestigeStat: number[];
clanGifts: number[];
}
export interface HWMemberStat {
activitySum: number;
todayActivity: number;
dungeonActivitySum: number;
todayDungeonActivity: number;
raidSum: number;
wasChampion: boolean;
todayPrestige: number;
prestigeSum: number;
}
+1 -1
View File
@@ -13,7 +13,7 @@ export * from './category.model';
export * from './chart.model';
export * from './dropzone.model';
export * from './errors.model';
export * from './hw.model';
export * from './herowars/';
export * from './jump.model';
export * from './jump-list.model';
export * from './jump-list-config.model';
+60
View File
@@ -0,0 +1,60 @@
import { Injectable } from '@angular/core';
import { HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { ApiService } from './api.service';
import {
HWClan, HWClanList, HWClanListConfig, HWClanListFilters, HWClanPageData
} from 'src/app/core/models';
@Injectable({ providedIn: 'root' })
export class HWClanService {
constructor(
private apiService: ApiService
) { }
query(config: HWClanListConfig): Observable<HWClanList> {
// Convert any filters over to Angular's URLSearchParams
const params: HWClanListFilters = {} as HWClanListFilters;
Object.assign(params, config.filters);
return this.apiService
.get(
'/clans',
new HttpParams({ fromObject: <{
[param: string]: string | number | boolean | readonly (string | number | boolean)[];
}>params })
);
}
get(id: string): Observable<HWClanPageData> {
return this.apiService.get(`/clans/${id}`);
}
getAll(): Observable<Array<HWClan>> {
return this.apiService.get('/clans').pipe(map(data => data.clans));
}
create(clan: HWClan): Observable<HWClan> {
return this.apiService.post('/clans/', { clan: clan }).pipe(map(data => data.clan));
}
update(clan: HWClan): Observable<HWClan> {
return this.apiService.put(`/clans/${clan.id}`, { clan: clan }).pipe(map(data => data.clan));
}
destroy(id: string): Observable<boolean> {
return this.apiService.delete(`/clans/${id}`).pipe(map(data => data.deleted));
}
save(clan: HWClan): Observable<HWClan> {
// If we're updating an existing clan
if (clan.id) {
return this.apiService.put(`/clans/${clan.id}`, { clan: clan }).pipe(map(data => data.clan));
// Otherwise, create a new clan
} else {
return this.apiService.post('/clans/', { clan: clan }).pipe(map(data => data.clan));
}
}
}
+60
View File
@@ -0,0 +1,60 @@
import { Injectable } from '@angular/core';
import { HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { ApiService } from './api.service';
import {
HWClan, HWClanList, HWClanListConfig, HWClanListFilters, HWClanPageData
} from 'src/app/core/models';
@Injectable({ providedIn: 'root' })
export class HWClanService {
constructor(
private apiService: ApiService
) { }
query(config: HWClanListConfig): Observable<HWClanList> {
// Convert any filters over to Angular's URLSearchParams
const params: HWClanListFilters = {} as HWClanListFilters;
Object.assign(params, config.filters);
return this.apiService
.get(
'/clans',
new HttpParams({ fromObject: <{
[param: string]: string | number | boolean | readonly (string | number | boolean)[];
}>params })
);
}
get(id: string): Observable<HWClanPageData> {
return this.apiService.get(`/clans/${id}`);
}
getAll(): Observable<Array<HWClan>> {
return this.apiService.get('/clans').pipe(map(data => data.clans));
}
create(clan: HWClan): Observable<HWClan> {
return this.apiService.post('/clans/', { clan: clan }).pipe(map(data => data.clan));
}
update(clan: HWClan): Observable<HWClan> {
return this.apiService.put(`/clans/${clan.id}`, { clan: clan }).pipe(map(data => data.clan));
}
destroy(id: string): Observable<boolean> {
return this.apiService.delete(`/clans/${id}`).pipe(map(data => data.deleted));
}
save(clan: HWClan): Observable<HWClan> {
// If we're updating an existing clan
if (clan.id) {
return this.apiService.put(`/clans/${clan.id}`, { clan: clan }).pipe(map(data => data.clan));
// Otherwise, create a new clan
} else {
return this.apiService.post('/clans/', { clan: clan }).pipe(map(data => data.clan));
}
}
}