Files
SkydiveLogs/Front/skydivelogs-app/src/app/new-jump/new-jump.component.ts
2020-01-28 17:25:26 +01:00

128 lines
3.8 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { JumpTypeResp } from '../../models/jumpType';
import { AircraftResp } from '../../models/aircraft';
import { DropZoneResp } from '../../models/dropzone';
import { DateService } from '../../services/date.service';
import { GearResp } from '../../models/gear';
import { ServiceComm } from '../../services/service-comm.service';
import { DropzoneService } from '../../services/dropzone.service';
import { AircraftService } from '../../services/aircraft.service';
import { JumpService } from '../../services/jump.service';
import { JumpTypeService } from '../../services/jump-type.service';
import { GearService } from '../../services/gear.service';
import { isNumber } from 'util';
@Component({
selector: 'app-new-jump',
templateUrl: './new-jump.component.html',
styleUrls: ['./new-jump.component.css']
})
export class NewJumpComponent implements OnInit {
beginDate: Date;
endDate: Date;
exitAltitude: number;
deployAltitude: number;
countOfJumps: number;
selectedDz: DropZoneResp;
selectedGear: GearResp;
selectedAircraft: AircraftResp;
selectedJumpType: JumpTypeResp;
withCutaway: boolean;
listOfJumpType: Array<JumpTypeResp>;
listOfAircraft: Array<AircraftResp>;
private listOfDropZone: Array<DropZoneResp>;
listOfFilteredDropZone: Array<DropZoneResp>;
listOfGear: Array<GearResp>;
constructor(
private serviceComm: ServiceComm,
private serviceJump: JumpService,
private serviceJumpType: JumpTypeService,
private serviceAircraft: AircraftService,
private serviceDropzone: DropzoneService,
private serviceGear: GearService,
private dateService: DateService
) { }
ngOnInit() {
this.serviceComm.UpdatedComponentTitle('Add a new jump');
this.endDate = new Date();
this.beginDate = this.dateService.AddDays(new Date(), -1);
this.exitAltitude = 4000;
this.deployAltitude = 1500;
this.countOfJumps = 1;
this.getListOfJumpTypes();
}
onFormSubmit() {
this.serviceJump.AddListOfJump(
this.selectedJumpType.id,
this.selectedAircraft.id,
this.selectedDz.id,
this.selectedGear.id,
this.withCutaway,
this.beginDate,
this.endDate,
this.exitAltitude,
this.deployAltitude,
this.countOfJumps
);
}
public isValidatedForm(): boolean {
return (
this.selectedDz !== undefined &&
this.selectedGear !== undefined &&
this.selectedAircraft !== undefined &&
this.selectedJumpType !== undefined &&
this.exitAltitude !== undefined && isNumber(this.exitAltitude) &&
this.deployAltitude !== undefined && isNumber(this.deployAltitude) &&
this.countOfJumps !== undefined && isNumber(this.countOfJumps)
);
}
private getListOfJumpTypes() {
this.serviceJumpType.getListOfJumpTypes().subscribe(data => {
this.listOfJumpType = data;
this.getListOfAircrafts();
this.getListOfDropZones();
this.getListOfGears();
});
}
private getListOfAircrafts() {
this.serviceAircraft.getListOfAircrafts().subscribe(data => {
this.listOfAircraft = data;
});
}
private getListOfDropZones() {
this.serviceDropzone.getListOfDropZones().subscribe(data => {
data.sort((a, b) => (b.isFavorite ? 1 : 0) - (a.isFavorite ? 1 : 0));
this.listOfDropZone = data;
this.listOfFilteredDropZone = data;
});
}
private getListOfGears() {
this.serviceGear.getListOfGears().subscribe(data => {
this.listOfGear = data;
});
}
public displayFn(data?: JumpTypeResp): string | undefined {
return data ? data.name : undefined;
}
public onChangeDz(event: string) {
const filterValue = event.toLowerCase();
this.listOfFilteredDropZone = this.listOfDropZone;
this.listOfFilteredDropZone = this.listOfFilteredDropZone.filter(option => option.name.toLowerCase().includes(filterValue));
}
}