You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

67 lines
2.2 KiB

  1. import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
  2. import {AbstractCreateDataComponent} from "@app/_interfaces/AbstractCreateDataComponent";
  3. import {
  4. ShippingCompanyService,
  5. VesselJsonld,
  6. VesselService,
  7. } from "@app/core/api/v1";
  8. import {ModalStatus} from "@app/_helpers/modal.states";
  9. import {FormGroup} from "@angular/forms";
  10. import {vesselForm} from "@app/_forms/apiForms";
  11. import {ListColDefinition} from "@app/_components/list/list-col-definition";
  12. import {SearchSelectComponent} from "@app/_components/search-select/search-select.component";
  13. import {ListGetDataFunctionType} from "@app/_components/list/list-get-data-function-type";
  14. @Component({
  15. selector: 'app-vessel-new',
  16. templateUrl: './vessel-new.component.html',
  17. styleUrl: './vessel-new.component.scss'
  18. })
  19. export class VesselNewComponent extends AbstractCreateDataComponent<VesselJsonld> implements OnInit {
  20. @Input() public override data!: VesselJsonld;
  21. @Output() public override submit: EventEmitter<ModalStatus> = new EventEmitter<ModalStatus>();
  22. protected readonly SearchSelectComponent = SearchSelectComponent;
  23. override form: FormGroup = vesselForm;
  24. protected shippingCompanyColDefinitions: ListColDefinition[];
  25. constructor(
  26. private vesselService: VesselService,
  27. private shippingCompanyService: ShippingCompanyService,
  28. ) {
  29. super();
  30. this.shippingCompanyColDefinitions = SearchSelectComponent.getDefaultColDefShippingCompanies();
  31. }
  32. override ngOnInit() {
  33. if (this.data) {
  34. this.form.patchValue(this.data);
  35. }
  36. }
  37. getInitialData(): VesselJsonld {
  38. return {} as VesselJsonld;
  39. }
  40. getShippingCompanies: ListGetDataFunctionType = (index: number, pageSize: number, term?: string) => {
  41. return this.shippingCompanyService.shippingCompaniesGetCollection(
  42. index,
  43. pageSize,
  44. term
  45. );
  46. }
  47. onSubmit() {
  48. if (this.form.valid) {
  49. this.vesselService.vesselsPost(
  50. this.form.value as VesselJsonld
  51. ).subscribe(
  52. data => {
  53. this.form.reset();
  54. this.submit.emit(ModalStatus.Submitted);
  55. }
  56. );
  57. }
  58. }
  59. }