瀏覽代碼

fix armory

master
peter 5 年之前
父節點
當前提交
1cd453b382

+ 5
- 4
src/frontend/src/app/frontcraft/pages/armory/armory.component.ts 查看文件

@@ -27,13 +27,14 @@ export class FrontcraftArmoryComponent implements OnInit {
27 27
 
28 28
     fetch(dataLink).then(raw => raw.json().then(async (json: any[]) => {
29 29
       if (json.length < 1) return
30
-      let min = -1
31 30
       let data
31
+      let min = -1
32 32
 
33 33
       for (let i = json.length - 1; i > 0; i--) {
34
-        if (json[i].startTime > min && json[i].gear[0].name != "Unknown Item") {
34
+        const start = Number.parseInt(json[i].startTime)
35
+        if (start > min && json[i].gear[0].name != "Unknown Item") {
36
+          min = start
35 37
           data = json[i]
36
-          break
37 38
         }
38 39
       }
39 40
       if (!data) {
@@ -59,7 +60,7 @@ export class FrontcraftArmoryComponent implements OnInit {
59 60
   }
60 61
 }
61 62
 
62
-function sumStats(stat1: Stats, stat2: Stats):Stats{
63
+function sumStats(stat1: Stats, stat2: Stats): Stats {
63 64
   const ret = {} as any
64 65
   Object.keys(stat1).forEach(key => {
65 66
     ret[key] = stat1[key] + stat2[key]

+ 51
- 56
src/frontend/src/app/frontcraft/pages/character/character.component.ts 查看文件

@@ -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
 }

Loading…
取消
儲存