feat(herowars): migrate JSON static imports to HttpClient assets

Replace all TypeScript JSON imports with an HWDataService that loads
6 data files from /assets/files-data/ via HttpClient with shareReplay(1).
Update all 9 consumer components to subscribe asynchronously. Remove
unused qcm-bpa.json import and dead methods from QcmComponent.
Add ADR 0013 documenting the decision.
This commit is contained in:
2026-04-26 23:46:35 +02:00
parent 86c075db10
commit fa00719a3e
23 changed files with 89071 additions and 551 deletions
@@ -17,9 +17,6 @@ import { ClanViewModel, MembersViewModel } from '@viewmodels/herowars';
import { HWClanService, HWMemberService, UtilitiesService } from '@services';
import { MAX_CLAN_MEMBERS } from '@constants';
import guildData from '@data/hw-guild-data.json'; // page Membres
import guildStatistics from '@data/hw-guild-statistics.json'; // page Overview -> Statistics
@Component({
selector: 'app-herowars-guildwar',
imports: [
@@ -93,29 +90,35 @@ export class HerowarsGuildwarComponent implements OnInit {
}
loadClan(): void {
this._guildClan = this._clanService.loadClan();
this.clanViewModel = new ClanViewModel(this._guildClan);
this.clanLoaded = true;
this._clanService.loadClan().subscribe((clan) => {
this._guildClan = clan;
this.clanViewModel = new ClanViewModel(this._guildClan);
this.clanLoaded = true;
});
}
loadData(): void {
this._guildClan = this._clanService.loadClan();
this._guildMembers = this._memberService.loadMembers(this._guildClan);
this._guildClan = this._clanService.loadClanStats(this._guildClan, this._guildMembers);
this.daysToWarn = parseInt(this._guildClan.daysToKick) / 2;
this.clanViewModel = new ClanViewModel(this._guildClan);
this.clanLoaded = true;
this.membersViewModel = new MembersViewModel(this._guildMembers);
this.membersLoaded = true;
console.log(this._guildClan);
console.log(this._guildMembers);
this._clanService.loadClan().subscribe((clan) => {
this._guildClan = clan;
this._memberService.loadMembers(this._guildClan).subscribe((members) => {
this._guildMembers = members;
this._guildClan = this._clanService.loadClanStats(this._guildClan, this._guildMembers);
this.daysToWarn = parseInt(this._guildClan.daysToKick) / 2;
this.clanViewModel = new ClanViewModel(this._guildClan);
this.clanLoaded = true;
this.membersViewModel = new MembersViewModel(this._guildMembers);
this.membersLoaded = true;
});
});
}
loadMembers(): void {
this._guildMembers = this._memberService.loadMembers(this._guildClan);
this.membersViewModel = new MembersViewModel(this._guildMembers);
this._guildClan = this._clanService.loadClanStats(this._guildClan, this._guildMembers);
this.membersLoaded = true;
this._memberService.loadMembers(this._guildClan).subscribe((members) => {
this._guildMembers = members;
this.membersViewModel = new MembersViewModel(this._guildMembers);
this._guildClan = this._clanService.loadClanStats(this._guildClan, this._guildMembers);
this.membersLoaded = true;
});
}
getMembers(): HWMember[] {
@@ -124,11 +127,9 @@ export class HerowarsGuildwarComponent implements OnInit {
syncClan(): void {
console.log(this._guildClan);
console.log(guildData);
}
syncMembers(): void {
console.log(this._guildMembers);
console.log(guildStatistics);
}
}