diff --git a/src/backend/Components/PubSub/Interface.ts b/src/backend/Components/PubSub/Interface.ts index 7b6da86..86aab0c 100644 --- a/src/backend/Components/PubSub/Interface.ts +++ b/src/backend/Components/PubSub/Interface.ts @@ -2,6 +2,6 @@ import { SubscriptionResponse } from "rpclibrary" export class IPubSub{ publish: (topic: string, p: UpdateType) => Promise - subscribe: (topic:string, callback: (p:UpdateType)=>any) => Promise + subscribe: (topic:string, callback: (p:UpdateType)=>any) => Promise unsubscribe: (uuid: string) => Promise } diff --git a/src/frontend/src/app/frontcraft/pages/armory/armory.component.html b/src/frontend/src/app/frontcraft/pages/armory/armory.component.html index b231a34..ef0e237 100644 --- a/src/frontend/src/app/frontcraft/pages/armory/armory.component.html +++ b/src/frontend/src/app/frontcraft/pages/armory/armory.component.html @@ -9,7 +9,8 @@ status="control">
- + + {{sv}} diff --git a/src/frontend/src/app/frontcraft/pages/armory/armory.component.ts b/src/frontend/src/app/frontcraft/pages/armory/armory.component.ts index 38fd7ba..6b18f4b 100644 --- a/src/frontend/src/app/frontcraft/pages/armory/armory.component.ts +++ b/src/frontend/src/app/frontcraft/pages/armory/armory.component.ts @@ -1,5 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { Item } from '../../../../../../backend/Types/Types'; +import { NbToastrService } from '@nebular/theme'; @Component({ selector: 'armory', @@ -14,6 +15,7 @@ export class FrontcraftArmoryComponent implements OnInit{ gear:string[] = [] constructor( + private toastr: NbToastrService ){} async submit(){ @@ -22,23 +24,27 @@ export class FrontcraftArmoryComponent implements OnInit{ fetch(dataLink).then(raw => raw.json().then((json:any[]) => { if(json.length < 1) return let min = -1 - let data = null + let data - json.forEach(item => { - if(item.startTime > min){ - if(item.gear[0].name != "Unknown Item"){ - min = item.startTime - data = item - } + for(let i = json.length-1; i > 0; i--){ + if(json[i].startTime > min && json[i].gear[0].name != "Unknown Item"){ + data = json[i] + break } - }) + } + if(!data){ + this.toastr.danger('Unknown character, or no warcraftlogs', "Error", { + duration: 2000 + }) + return + } this.gear = data.gear.map(item => {return { itemname: item.name, iconname: item.icon.replace('.jpg', ''), quality: item.quality.replace(/^\w/, c => c.toUpperCase()), url: "https://classic.wowhead.com/item="+item.id, - }}) + }}).filter(item => item.itemname != "Unknown Item") })) } diff --git a/src/frontend/src/app/frontcraft/pages/character/character.component.html b/src/frontend/src/app/frontcraft/pages/character/character.component.html index c5d02c5..1402ab1 100644 --- a/src/frontend/src/app/frontcraft/pages/character/character.component.html +++ b/src/frontend/src/app/frontcraft/pages/character/character.component.html @@ -35,16 +35,11 @@ status="control">


-

Gear of the last two reported kills (data)

+

Gear of the last reported kill (data)

{{boss2.name}} {{boss2.date | date : 'MMM d @ HH : mm'}}

-
{{boss1.name}} {{boss1.date | date : 'MMM d @ HH : mm'}}
- -
-
- diff --git a/src/frontend/src/app/frontcraft/pages/character/character.component.ts b/src/frontend/src/app/frontcraft/pages/character/character.component.ts index 57e0866..37410be 100644 --- a/src/frontend/src/app/frontcraft/pages/character/character.component.ts +++ b/src/frontend/src/app/frontcraft/pages/character/character.component.ts @@ -48,11 +48,18 @@ export class FrontcraftCharacterComponent implements OnInit{ 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) => { + fetch(this.dataLink).then(raw => raw.json().then((json:any[]) => { if(json.length < 1) return - const data = json[0] + let data + let min = -1 + + for(let i = json.length-1; i > 0; i--){ + if(json[i].startTime > min && json[i].gear[0].name != "Unknown Item"){ + data = json[i] + break + } + } + if(!data) return this.boss2 = { name: data.encounterName, @@ -63,26 +70,6 @@ export class FrontcraftCharacterComponent implements OnInit{ iconname: item.icon.replace('.jpg', ''), quality: item.quality.replace(/^\w/, c => c.toUpperCase()), url: "https://classic.wowhead.com/item="+item.id, - tooltip: "unavailable" - }}).filter(item => item.itemname != "Unknown Item") - })) - - fetch(this.dataLink).then(raw => raw.json().then((json) => { - if(json.length < 2) return - - const data = json[1] - - this.boss1 = { - name: data.encounterName, - date: data.startTime - } - - this.gear1 = data.gear.map(item => {return { - itemname: item.name, - iconname: item.icon.replace('.jpg', ''), - quality: item.quality.replace(/^\w/, c => c.toUpperCase()), - url: "https://classic.wowhead.com/item="+item.id, - tooltip: "unavailable" }}).filter(item => item.itemname != "Unknown Item") })) }