import { Component } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { SpinnerService } from '@core/services/spinner.service'; import { BaseApplication } from '@core/typings/application.typing'; import { ClientSettingsService } from '@features/client-settings/client-settings.service'; import { BaseApplicationForLogic, Form, FormTypes } from '@features/configure-forms/form.typing'; import { FormHelperService } from '@features/formio/services/form-helper/form-helper.service'; import { FormLogicService } from '@features/formio/services/form-logic/form-logic.service'; import { LogicState } from '@features/logic-builder/logic-builder.typing'; import { ModalFactory } from '@yourcause/common/modals'; import { DownloadFormModalComponent } from '../download-form-modal/download-form-modal.component'; import { FormDownloadService } from '../services/form-download/form-download.service'; import { FormsService } from '../services/forms/forms.service'; @Component({ selector: 'gc-preview-form', templateUrl: './preview-form.component.html', styleUrls: ['./preview-form.component.scss'] }) export class PreviewFormComponent { form: Form; FormTypes = FormTypes; formId: number; sampleExternalFields: Partial = { amountRequested: null, currencyRequestedAmountEquivalent: null, amountRequestedForEdit: null, currencyRequested: this.clientSettingsService.defaultCurrency, referenceFields: {}, reviewerRecommendedFundingAmount: null }; conditionalVisibilityState: LogicState; constructor ( activatedRoute: ActivatedRoute, private formService: FormsService, private modalFactory: ModalFactory, private spinnerService: SpinnerService, private formDownloadService: FormDownloadService, private formHelperService: FormHelperService, private clientSettingsService: ClientSettingsService, private formLogicService: FormLogicService ) { const snapshot = activatedRoute.snapshot.paramMap; this.formId = +snapshot.get('id'); this.form = this.formLogicService.getFormDetail( this.formId, +snapshot.get('revisionId') ); } async downloadFormModal () { const response = await this.modalFactory.open( DownloadFormModalComponent, { formName: this.form.name } ); if (response) { this.spinnerService.startSpinner(); let revisionVersion: string; if (response.includeFormVersion) { const foundForm = this.formService.forms.find((form) => { return +form.formId === +this.formId; }); revisionVersion = foundForm?.revisionVersion ? `v${foundForm.revisionVersion}` : ''; } await this.formHelperService.prepareInKindForForm(this.form.formDefinition); const formComponentsByTab = this.formHelperService.getFormComponentsByTab( response.visibility, this.form, this.conditionalVisibilityState ); await this.formDownloadService.handleFormDownload( revisionVersion, this.form, formComponentsByTab ); this.spinnerService.stopSpinner(); } } }