|
|
@@ -9,70 +9,65 @@ import { IApiService } from '../../services/ApiService';
|
|
9
|
9
|
selector: 'character',
|
|
10
|
10
|
templateUrl: './character.component.html',
|
|
11
|
11
|
})
|
|
12
|
|
-export class FrontcraftCharacterComponent implements OnInit{
|
|
|
12
|
+export class FrontcraftCharacterComponent implements OnInit {
|
|
13
|
13
|
|
|
14
|
|
- @Input() name?: string
|
|
15
|
|
- @Input() link?: "owner" | "character" = 'owner'
|
|
|
14
|
+ @Input() name?: string
|
|
|
15
|
+ @Input() link?: "owner" | "character" = 'owner'
|
|
16
|
16
|
|
|
17
|
|
- char : (Character & User & Spec) = {
|
|
18
|
|
- race: 'Human',
|
|
19
|
|
- class: 'Warrior'
|
|
20
|
|
- } as any
|
|
21
|
|
- color : string
|
|
22
|
|
- tokens
|
|
23
|
|
- dataLink = ""
|
|
24
|
|
- boss1 = {}
|
|
25
|
|
- gear1:string[] = []
|
|
26
|
|
-
|
|
27
|
|
- boss2= {name: undefined, date:undefined}
|
|
28
|
|
- gear2:string[] = []
|
|
|
17
|
+ char: (Character & User & Spec) = {
|
|
|
18
|
+ race: 'Human',
|
|
|
19
|
+ class: 'Warrior'
|
|
|
20
|
+ } as any
|
|
|
21
|
+ color: string
|
|
|
22
|
+ tokens
|
|
|
23
|
+ dataLink = ""
|
|
|
24
|
+ boss1 = {}
|
|
|
25
|
+ gear1: string[] = []
|
|
29
|
26
|
|
|
30
|
|
- constructor(
|
|
31
|
|
- private api: IApiService,
|
|
32
|
|
- private route: ActivatedRoute,
|
|
33
|
|
- ){}
|
|
|
27
|
+ boss2 = { name: undefined, date: undefined }
|
|
|
28
|
+ gear2: Item[] = []
|
|
34
|
29
|
|
|
35
|
|
- async ngOnInit(){
|
|
36
|
|
- const param = this.name || this.route.snapshot.paramMap.get('name');
|
|
37
|
|
- if(!param) return
|
|
38
|
|
-
|
|
39
|
|
- this.api.get('CharacterManager')
|
|
40
|
|
- .getCharacterByName(param)
|
|
41
|
|
- .then((char) => {
|
|
42
|
|
- if(char){
|
|
43
|
|
- this.color = getClassColor(char.class)
|
|
44
|
|
- this.char = char
|
|
45
|
|
- this.api.get('ItemManager').getTokens(this.char, _Tiers, true).then(tokens => {
|
|
46
|
|
- this.tokens = tokens
|
|
47
|
|
- })
|
|
|
30
|
+ constructor(
|
|
|
31
|
+ private api: IApiService,
|
|
|
32
|
+ private route: ActivatedRoute,
|
|
|
33
|
+ ) { }
|
|
48
|
34
|
|
|
49
|
|
- this.dataLink = "https://classic.warcraftlogs.com:443/v1/parses/character/"+this.char.charactername.replace(/^\w/, c => c.toUpperCase())+"/Gandling/EU?api_key=c698515ab4f592cdb848d80b3abe616c&metric=dps"
|
|
|
35
|
+ async ngOnInit() {
|
|
|
36
|
+ const param = this.name || this.route.snapshot.paramMap.get('name');
|
|
|
37
|
+ if (!param) return
|
|
50
|
38
|
|
|
51
|
|
- fetch(this.dataLink).then(raw => raw.json().then((json:any[]) => {
|
|
52
|
|
- if(json.length < 1) return
|
|
53
|
|
- let data
|
|
54
|
|
- let min = -1
|
|
|
39
|
+ const char = await this.api.get('CharacterManager').getCharacterByName(param)
|
|
|
40
|
+ if (char) {
|
|
|
41
|
+ this.color = getClassColor(char.class)
|
|
|
42
|
+ this.char = char
|
|
|
43
|
+ this.api.get('ItemManager').getTokens(this.char, _Tiers, true).then(tokens => {
|
|
|
44
|
+ this.tokens = tokens
|
|
|
45
|
+ })
|
|
|
46
|
+
|
|
|
47
|
+ this.dataLink = "https://classic.warcraftlogs.com:443/v1/parses/character/" + this.char.charactername.replace(/^\w/, c => c.toUpperCase()) + "/Gandling/EU?api_key=c698515ab4f592cdb848d80b3abe616c&metric=dps"
|
|
55
|
48
|
|
|
56
|
|
- for(let i = json.length-1; i > 0; i--){
|
|
57
|
|
- if(json[i].startTime > min && json[i].gear[0].name != "Unknown Item"){
|
|
58
|
|
- data = json[i]
|
|
59
|
|
- break
|
|
60
|
|
- }
|
|
61
|
|
- }
|
|
62
|
|
- if(!data) return
|
|
|
49
|
+ const json: any[] = await fetch(this.dataLink).then(raw => raw.json())
|
|
|
50
|
+ if (json.length < 1) return
|
|
|
51
|
+ let data
|
|
|
52
|
+ let min = -1
|
|
63
|
53
|
|
|
64
|
|
- this.boss2 = {
|
|
65
|
|
- name: data.encounterName,
|
|
66
|
|
- date: data.startTime
|
|
67
|
|
- }
|
|
68
|
|
- this.gear2 = data.gear.map(item => {return <Item>{
|
|
69
|
|
- itemname: item.name,
|
|
70
|
|
- iconname: item.icon.replace('.jpg', ''),
|
|
71
|
|
- quality: item.quality.replace(/^\w/, c => c.toUpperCase()),
|
|
72
|
|
- url: "https://classic.wowhead.com/item="+item.id,
|
|
73
|
|
- }}).filter(item => item.itemname != "Unknown Item")
|
|
74
|
|
- }))
|
|
|
54
|
+ for (let i = json.length - 1; i > 0; i--) {
|
|
|
55
|
+ const start = Number.parseInt(json[i].startTime)
|
|
|
56
|
+ if (start > min && json[i].gear[0].name != "Unknown Item") {
|
|
|
57
|
+ min = start
|
|
|
58
|
+ data = json[i]
|
|
75
|
59
|
}
|
|
76
|
|
- })
|
|
|
60
|
+ }
|
|
|
61
|
+ if (!data) return
|
|
|
62
|
+
|
|
|
63
|
+ this.boss2 = {
|
|
|
64
|
+ name: data.encounterName,
|
|
|
65
|
+ date: data.startTime
|
|
|
66
|
+ }
|
|
|
67
|
+
|
|
|
68
|
+ const maybeItems: (Item | undefined)[] = await Promise.all(data.gear.filter(item => item.name != "Unknown Item").map(async item => await this.api.get('ItemManager').getItem(item.name)))
|
|
|
69
|
+ const geardata = maybeItems.filter(maybeItem => maybeItem != null)
|
|
|
70
|
+ this.gear2 = geardata
|
|
77
|
71
|
}
|
|
|
72
|
+ }
|
|
78
|
73
|
}
|