import { Component, OnInit, ViewChild } from '@angular/core'; import { FeedbackPanelComponent } from 'src/app/shared/components/feedback-panel/feedback-panel.component'; import { GameSystem, GameSystemArmyList } from 'tournee.businesslogic'; import { LookupsService } from 'src/app/shared/services/lookups.service'; @Component({ selector: 'app-system-admin-lookups-game-system-army-lists', templateUrl: './system-admin-lookups-game-system-army-lists.component.html', styleUrls: ['./system-admin-lookups-game-system-army-lists.component.css'] }) export class SystemAdminLookupsGameSystemArmyListsComponent implements OnInit { @ViewChild('FeedbackPanel') FeedbackPanel:FeedbackPanelComponent; isWorking: boolean = false; Expanded: boolean = false; GameSystems: Array = []; EditModel: GameSystemArmyList = GameSystemArmyList.create(); constructor(private _lookups: LookupsService) { } ngOnInit() { this.load() } toggle() { this.Expanded = !this.Expanded; } load() { if (this.isWorking) { return; } this.isWorking = true; this._lookups.get("gamesystem") .then((result) => { this.GameSystems = result.result.map((gs) => { return new GameSystem(gs); }); this.isWorking = false; }) .catch((err) => { this.isWorking = false; console.log(err); }); } save() { if (this.isWorking) { return; } this.FeedbackPanel.reset(); this.isWorking = true; let selectedGameSystem = this.GameSystems.find((gs) => { return gs.id == this.EditModel.game_system_id; }); if (!selectedGameSystem) { this.FeedbackPanel.triggerError(new Error("You cannot do that - you have not selected a valid Game System")); this.isWorking = false; } else { this._lookups.update(this.EditModel) .then(() => { return this._lookups.get("gamesystem"); }) .then((result) => { this.EditModel = GameSystemArmyList.create(); this.GameSystems = result.result.map((gs) => { return new GameSystem(gs); }); this.isWorking = false; }) .catch((err) => { this.FeedbackPanel.triggerError(err); this.isWorking = false; }); } } delete(item: GameSystemArmyList) { if (this.isWorking) { return; } this.isWorking = true; this.FeedbackPanel.reset(); this._lookups.delete(item) .then(() => {return this._lookups.get("gamesystem"); }) .then((result) => { this.EditModel = GameSystemArmyList.create(); this.GameSystems = result.result.map((gs) => { return new GameSystem(gs); }); this.isWorking = false; }) .catch((err) => { this.FeedbackPanel.triggerError(err); this.isWorking = false; }); } beginEdit(item: GameSystemArmyList) { this.EditModel = new GameSystemArmyList(JSON.parse(JSON.stringify(item))); } reset() { this.EditModel = GameSystemArmyList.create(); } }