fix armory

This commit is contained in:
peter
2020-03-26 01:44:09 +01:00
parent 236a4042c9
commit 1cd453b382
2 changed files with 58 additions and 62 deletions
@@ -27,13 +27,14 @@ export class FrontcraftArmoryComponent implements OnInit {
fetch(dataLink).then(raw => raw.json().then(async (json: any[]) => { fetch(dataLink).then(raw => raw.json().then(async (json: any[]) => {
if (json.length < 1) return if (json.length < 1) return
let min = -1
let data let data
let min = -1
for (let i = json.length - 1; i > 0; i--) { for (let i = json.length - 1; i > 0; i--) {
if (json[i].startTime > min && json[i].gear[0].name != "Unknown Item") { const start = Number.parseInt(json[i].startTime)
if (start > min && json[i].gear[0].name != "Unknown Item") {
min = start
data = json[i] data = json[i]
break
} }
} }
if (!data) { if (!data) {
@@ -59,7 +60,7 @@ export class FrontcraftArmoryComponent implements OnInit {
} }
} }
function sumStats(stat1: Stats, stat2: Stats):Stats{ function sumStats(stat1: Stats, stat2: Stats): Stats {
const ret = {} as any const ret = {} as any
Object.keys(stat1).forEach(key => { Object.keys(stat1).forEach(key => {
ret[key] = stat1[key] + stat2[key] ret[key] = stat1[key] + stat2[key]
@@ -9,70 +9,65 @@ import { IApiService } from '../../services/ApiService';
selector: 'character', selector: 'character',
templateUrl: './character.component.html', templateUrl: './character.component.html',
}) })
export class FrontcraftCharacterComponent implements OnInit{ export class FrontcraftCharacterComponent implements OnInit {
@Input() name?: string @Input() name?: string
@Input() link?: "owner" | "character" = 'owner' @Input() link?: "owner" | "character" = 'owner'
char : (Character & User & Spec) = { char: (Character & User & Spec) = {
race: 'Human', race: 'Human',
class: 'Warrior' class: 'Warrior'
} as any } as any
color : string color: string
tokens tokens
dataLink = "" dataLink = ""
boss1 = {} boss1 = {}
gear1:string[] = [] gear1: string[] = []
boss2= {name: undefined, date:undefined} boss2 = { name: undefined, date: undefined }
gear2:string[] = [] gear2: Item[] = []
constructor( constructor(
private api: IApiService, private api: IApiService,
private route: ActivatedRoute, private route: ActivatedRoute,
){} ) { }
async ngOnInit(){ async ngOnInit() {
const param = this.name || this.route.snapshot.paramMap.get('name'); const param = this.name || this.route.snapshot.paramMap.get('name');
if(!param) return if (!param) return
this.api.get('CharacterManager') const char = await this.api.get('CharacterManager').getCharacterByName(param)
.getCharacterByName(param) if (char) {
.then((char) => {
if(char){
this.color = getClassColor(char.class) this.color = getClassColor(char.class)
this.char = char this.char = char
this.api.get('ItemManager').getTokens(this.char, _Tiers, true).then(tokens => { this.api.get('ItemManager').getTokens(this.char, _Tiers, true).then(tokens => {
this.tokens = tokens this.tokens = tokens
}) })
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" 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"
fetch(this.dataLink).then(raw => raw.json().then((json:any[]) => { const json: any[] = await fetch(this.dataLink).then(raw => raw.json())
if(json.length < 1) return if (json.length < 1) return
let data let data
let min = -1 let min = -1
for(let i = json.length-1; i > 0; i--){ for (let i = json.length - 1; i > 0; i--) {
if(json[i].startTime > min && json[i].gear[0].name != "Unknown Item"){ const start = Number.parseInt(json[i].startTime)
if (start > min && json[i].gear[0].name != "Unknown Item") {
min = start
data = json[i] data = json[i]
break
} }
} }
if(!data) return if (!data) return
this.boss2 = { this.boss2 = {
name: data.encounterName, name: data.encounterName,
date: data.startTime date: data.startTime
} }
this.gear2 = data.gear.map(item => {return <Item>{
itemname: item.name, 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)))
iconname: item.icon.replace('.jpg', ''), const geardata = maybeItems.filter(maybeItem => maybeItem != null)
quality: item.quality.replace(/^\w/, c => c.toUpperCase()), this.gear2 = geardata
url: "https://classic.wowhead.com/item="+item.id,
}}).filter(item => item.itemname != "Unknown Item")
}))
} }
})
} }
} }