import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; import {AbstractCreateDataComponent} from "@app/_interfaces/AbstractCreateDataComponent"; import { ShippingCompanyService, VesselJsonld, VesselService, } from "@app/core/api/v1"; import {ModalStatus} from "@app/_helpers/modal.states"; import {FormGroup} from "@angular/forms"; import {vesselForm} from "@app/_forms/apiForms"; import {ListColDefinition} from "@app/_components/list/list-col-definition"; import {SearchSelectComponent} from "@app/_components/search-select/search-select.component"; import {ListGetDataFunctionType} from "@app/_components/list/list-get-data-function-type"; @Component({ selector: 'app-vessel-new', templateUrl: './vessel-new.component.html', styleUrl: './vessel-new.component.scss' }) export class VesselNewComponent extends AbstractCreateDataComponent implements OnInit { @Input() public override data!: VesselJsonld; @Output() public override submit: EventEmitter = new EventEmitter(); protected readonly SearchSelectComponent = SearchSelectComponent; override form: FormGroup = vesselForm; protected shippingCompanyColDefinitions: ListColDefinition[]; constructor( private vesselService: VesselService, private shippingCompanyService: ShippingCompanyService, ) { super(); this.shippingCompanyColDefinitions = SearchSelectComponent.getDefaultColDefShippingCompanies(); } override ngOnInit() { if (this.data) { this.form.patchValue(this.data); } } getInitialData(): VesselJsonld { return {} as VesselJsonld; } getShippingCompanies: ListGetDataFunctionType = (index: number, pageSize: number, term?: string) => { return this.shippingCompanyService.shippingCompaniesGetCollection( index, pageSize, term ); } onSubmit() { if (this.form.valid) { this.vesselService.vesselsPost( this.form.value as VesselJsonld ).subscribe( data => { this.form.reset(); this.submit.emit(ModalStatus.Submitted); } ); } } }