Browse Source

Move card interpritation to a service

master
Quildra 2 years ago
parent
commit
61b1a0cd1d
  1. 39
      src/app/app.component.ts
  2. 1
      src/app/models/card.model.ts
  3. 31
      src/app/services/card.service.ts

39
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<Object>);
this.cards = this.cardService.convertToCardInfo(this.selectedSet, bob.values as Array<Object>)
})
}
});
}
convertToCardInfo(set: SetInfo, data : Array<Object>) : Array<CardInfo> {
let cards = new Array<CardInfo>;
let hypercount = 0;
for (let index in data)
{
let item = data[index] as Array<number>
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',

1
src/app/models/card.model.ts

@ -8,4 +8,5 @@ export class CardInfo {
hyperspaceFoilQuantity!: number;
isLeader!: boolean;
isBase!: boolean;
name!: string;
}

31
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;
}
}
Loading…
Cancel
Save