diff --git a/src/app/app.component.ts b/src/app/app.component.ts index b9b0db5..4cc40b4 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -13,6 +13,7 @@ import { CardDisplayComponent } from "./components/card-display/card-display.com import { MatTabsModule } from '@angular/material/tabs'; import { SetService } from './services/set.service'; +import { CardService } from './services/card.service'; @Component({ selector: 'app-root', @@ -27,6 +28,7 @@ export class AppComponent { constructor( private sheets: googleSheetService, private setService: SetService, + private cardService: CardService, private httpClient: HttpClient, @Inject(DOCUMENT) private document: Document ) @@ -46,50 +48,19 @@ export class AppComponent { this.setService.loadSetInfo("assets/sets.json").subscribe(data => { this.sets = data; - + if(this.sets != undefined) { this.selectedSet = this.sets[0] this.sheets.getSet(this.sets[0]).subscribe( values => { let bob = values as any; this.selectedSet.total = bob.values.length; - this.cards = this.convertToCardInfo(this.selectedSet, bob.values as Array); + this.cards = this.cardService.convertToCardInfo(this.selectedSet, bob.values as Array) }) } }); } - - convertToCardInfo(set: SetInfo, data : Array) : Array { - let cards = new Array; - - let hypercount = 0; - for (let index in data) - { - let item = data[index] as Array - let standardInfo = {} as CardInfo; - - standardInfo.setNumber = parseInt(item[0].toString()); - - if(set.noHypers.includes(standardInfo.setNumber) == false) - { - hypercount = hypercount +1; - standardInfo.hyperspaceSetNumber = set.total+hypercount; - } - - standardInfo.setCode = set.code; - standardInfo.isLeader = standardInfo.setNumber <= set.leaders; - standardInfo.isBase = standardInfo.setNumber >= set.leaders && standardInfo.setNumber <= (set.leaders + set.bases); - standardInfo.standardQuantity = item[1] ? parseInt(item[1].toString()) : 0; - standardInfo.foilQuantity = item[2] ? parseInt(item[2].toString()) as number : 0; - standardInfo.hyperspaceQuantity = item[3] ? parseInt(item[3].toString()) as number : 0; - standardInfo.hyperspaceFoilQuantity = item[4] ? parseInt(item[4].toString()) as number : 0; - - cards.push(standardInfo); - } - - return cards; - } - + scrollToTop(): void { this.document.body.scrollIntoView({ behavior: 'smooth', diff --git a/src/app/models/card.model.ts b/src/app/models/card.model.ts index a264a3f..8fe830e 100644 --- a/src/app/models/card.model.ts +++ b/src/app/models/card.model.ts @@ -8,4 +8,5 @@ export class CardInfo { hyperspaceFoilQuantity!: number; isLeader!: boolean; isBase!: boolean; + name!: string; } \ No newline at end of file diff --git a/src/app/services/card.service.ts b/src/app/services/card.service.ts index 161208c..125b9f4 100644 --- a/src/app/services/card.service.ts +++ b/src/app/services/card.service.ts @@ -20,14 +20,14 @@ export class CardService { if(set.isPromo) { info = this.convertPromoCard(set, item, hypercount); - if(info.hyperspaceSetNumber != -1) - { - hypercount = hypercount + 1; - } } else { info = this.convertStandardCard(set, item, hypercount); + if(info.hyperspaceSetNumber != -1) + { + hypercount = hypercount + 1; + } } cards.push(info); @@ -45,19 +45,25 @@ export class CardService { { info.hyperspaceSetNumber = set.total + hypercount + 1; } + else + { + info.hyperspaceSetNumber = -1; + } // The types are included in the last cell. let typesString = data[data.length-1] as string; - let types = typesString.split(/\s*,\s*/); + let types = Array.from(typesString.split(/\s*,\s*/)); info.setCode = set.code; - info.isLeader = "Leader" in types; - info.isBase = "Base" in types; + info.isLeader = types.includes("Leader"); + info.isBase = types.includes("Base"); info.standardQuantity = data[1] ? parseInt(data[1].toString()) : 0; info.foilQuantity = data[2] ? parseInt(data[2].toString()) as number : 0; info.hyperspaceQuantity = data[3] ? parseInt(data[3].toString()) as number : 0; info.hyperspaceFoilQuantity = data[4] ? parseInt(data[4].toString()) as number : 0; + info.name = data[10] as string; + return info; } @@ -66,6 +72,17 @@ export class CardService { info.setNumber = parseInt(data[0].toString()); + // The types are included in the last cell. + let typesString = data[data.length-1] as string; + let types = Array.from(typesString.split(/\s*,\s*/)); + + info.setCode = set.code; + info.isLeader = types.includes("Leader"); + info.isBase = types.includes("Base"); + info.standardQuantity = data[1] ? parseInt(data[1].toString()) : 0; + + info.name = data[10] as string; + return info; } } \ No newline at end of file