import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { ModalController, NavParams } from '@ionic/angular'; import * as moment from 'moment'; import { PublicationFolder } from 'src/app/models/publicationfolder'; import { PublicationsService } from 'src/app/services/publications.service'; import { ToastService } from 'src/app/services/toast.service'; import { HttpErrorHandle} from 'src/app/services/http-error-handle.service'; import { NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker'; import { NgxMatDateFormats } from '@angular-material-components/datetime-picker'; const CUSTOM_DATE_FORMATS: NgxMatDateFormats = { parse: { dateInput: "YYYY-MMMM-DD HH:mm" }, display: { dateInput: "DD MMM YYYY H:mm", monthYearLabel: "MMM YYYY", dateA11yLabel: "LL", monthYearA11yLabel: "MMMM YYYY" } } @Component({ selector: 'app-edit-action', templateUrl: './edit-action.page.html', styleUrls: ['./edit-action.page.scss'], providers: [ { provide: NGX_MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }, ] }) export class EditActionPage implements OnInit { Form: FormGroup; validateFrom = false public date: any; public disabled = false; public showSpinners = true; public showSeconds = false; public touchUi = false; public enableMeridian = false; public minDate = new Date().toISOString() public maxDate: any; public stepHour = 1; public stepMinute = 15; public stepSecond = 5; currentDate = new Date(); folder: PublicationFolder; folderId: string; @Output() closeDesktopComponent= new EventEmitter(); @Output() updateDesktopComponent= new EventEmitter(); constructor( private publicationsService: PublicationsService, private toastService: ToastService, private navParams: NavParams, private modalController: ModalController, private httpErrorHandle: HttpErrorHandle ) { this.folder = new PublicationFolder(); this.folderId = this.navParams.get('folderId'); } ngOnInit() { this.getPublicationDetail(); } ngOnDestroy() { clearInterval(this.myInterval) } myInterval = setInterval(() => { document.querySelectorAll('.ngx-mat-timepicker input').forEach((e :any) => { if(e) { e.disabled = true; } }) }, 1000); close() { this.modalController.dismiss(); } getPublicationDetail() { this.publicationsService.GetPresidentialAction(this.folderId).subscribe( res => { this.folder = res; }); } get dateValid() { return new Date(this.folder.DateBegin).getTime() < new Date(this.folder.DateEnd).getTime()? 'ok': null } runValidation() { this.validateFrom = true } injectValidation() { this.Form = new FormGroup({ Subject: new FormControl(this.folder.Description, [ Validators.required, // Validators.minLength(4) ]), Date: new FormControl(this.dateValid, [ Validators.required ]), }) } async save() { this.injectValidation() this.runValidation() if(this.Form.invalid) return false let body = { ProcessId: this.folderId, Description: this.folder.Description, Detail: this.folder.Detail, DateBegin: this.folder.DateBegin, DateEnd: this.folder.DateEnd, ActionType: this.folder.ActionType, } const loader = this.toastService.loading() try { await this.publicationsService.UpdatePresidentialAction(body).toPromise() this.close(); this.updateDesktopComponent.emit(); this.httpErrorHandle.httpsSucessMessagge('Editar publicação'); } catch (error) { this.httpErrorHandle.httpStatusHandle(error) } finally { loader.remove() } } }