department-of-veterans-affairs/vets-website

View on GitHub
src/applications/coronavirus-research/update/config/form.js

Summary

Maintainability
A
0 mins
Test Coverage
import environment from 'platform/utilities/environment';
// import fullSchema from 'vets-json-schema/dist/COVID-VACCINE-TRIAL-schema.json';
import fullSchema from './temp-COVID-VACCINE-TRIAL-UPDATE-schema.json';

import definitions from 'vets-json-schema/dist/definitions.json';

import IntroductionPage from '../containers/IntroductionPage';
import ConfirmationPage from '../containers/ConfirmationPage';

import { uiSchema } from '../pages/covidResearchUISchema';
import { VA_FORM_IDS } from 'platform/forms/constants';
import {
  ConsentNotice,
  ConsentLabel,
  ConsentError,
} from '../containers/ConsentFormContent';
import submitForm from './submitForm';

import { updateData, transform } from './formHelper';
import manifest from '../manifest.json';

const { date, usaPostalCode } = definitions;

const getSubmissionIdFromUrl = (window, key = 'id') => {
  if (!window) return null;
  if (!window.location) return null;
  const urlParams = new URLSearchParams(window.location.search);
  const paramId = urlParams.get(key);
  if (paramId === null) {
    window.location.replace(`${environment.BASE_URL}/coronavirus-research/`);
  }
  return paramId;
};

const submissionId = getSubmissionIdFromUrl(window);

const formConfig = {
  rootUrl: manifest.rootUrl,
  urlPrefix: '/',
  submitUrl: `${environment.API_URL}/covid-research/volunteer/update`,
  trackingPrefix: 'covid-research-volunteer-',
  introduction: IntroductionPage,
  confirmation: ConfirmationPage,
  // onFormLoaded: ({ formData, savedForms, returnUrl, formConfig, router }) => {
  //   console.log('On Form Loaded. router: ', router);
  // },
  transformForSubmit: transform,

  // TODO - Add new form ID to VA_FORM_IDS
  formId: VA_FORM_IDS.FORM_COVID_VACCINE_TRIAL_UPDATE,
  saveInProgress: {
    // messages: {
    //   inProgress: 'Your [savedFormDescription] is in progress.',
    //   expired: 'Your saved [savedFormDescription] has expired. If you want to apply for [benefitType], please start a new [appType].',
    //   saved: 'Your [benefitType] [appType] has been saved.',
    // },
  },
  version: 0,
  prefillEnabled: true,
  customText: {
    reviewPageTitle: 'Review information',
    appType: 'volunteer form',
  },
  savedFormMessages: {
    notFound:
      'Please start over to sign up for our coronavirus research volunteer list.',
    noAuth:
      'Please sign in again to continue to sign up for our coronavirus research volunteer list.',
  },
  title: 'Coronavirus research volunteer list survey update',
  defaultDefinitions: {},
  preSubmitInfo: {
    required: true,
    field: 'consentAgreementAccepted',
    label: ConsentLabel(),
    notice: ConsentNotice(),
    error: ConsentError(),
  },
  submit: (form, config) => {
    return submitForm(form, config, submissionId);
  },
  chapters: {
    chapter1: {
      title: 'Update your information',
      pages: {
        page1: {
          path: 'update-form',
          title: 'Your information - page 1',
          updateFormData: updateData,
          uiSchema,
          schema: {
            required: fullSchema.required,
            type: 'object',
            properties: {
              descriptionText: {
                type: 'object',
                properties: {
                  'view:descriptionText': {
                    type: 'object',
                    properties: {},
                  },
                },
              },
              formCompleteTimeText: {
                type: 'object',
                properties: {
                  'view:formCompleteTimeText': {
                    type: 'object',
                    properties: {},
                  },
                },
              },
              vaccinated: fullSchema.properties.vaccinated,
              VACCINATED_PLAN: fullSchema.properties.VACCINATED_PLAN,
              VACCINATED_DETAILS: fullSchema.properties.VACCINATED_DETAILS,
              VACCINATED_DATE1: date,
              VACCINATED_DATE2: date,
              VACCINATED_SECOND: fullSchema.properties.VACCINATED_SECOND,
              VACCINATED_ADDITIONAL1:
                fullSchema.properties.VACCINATED_ADDITIONAL1,
              VACCINATED_ADDITIONAL_DETAILS1:
                fullSchema.properties.VACCINATED_ADDITIONAL_DETAILS1,
              VACCINATED_ADDITIONAL_OTHER1:
                fullSchema.properties.VACCINATED_ADDITIONAL_OTHER1,
              VACCINATED_ADDITIONAL_DATE1: date,
              VACCINATED_ADDITIONAL2:
                fullSchema.properties.VACCINATED_ADDITIONAL2,
              VACCINATED_ADDITIONAL_DETAILS2:
                fullSchema.properties.VACCINATED_ADDITIONAL_DETAILS2,
              VACCINATED_ADDITIONAL_OTHER2:
                fullSchema.properties.VACCINATED_ADDITIONAL_OTHER2,
              VACCINATED_ADDITIONAL_DATE2: date,
              VACCINATED_ADDITIONAL3:
                fullSchema.properties.VACCINATED_ADDITIONAL3,
              VACCINATED_ADDITIONAL_DETAILS3:
                fullSchema.properties.VACCINATED_ADDITIONAL_DETAILS3,
              VACCINATED_ADDITIONAL_OTHER3:
                fullSchema.properties.VACCINATED_ADDITIONAL_OTHER3,
              VACCINATED_ADDITIONAL_DATE3: date,
              VACCINATED_ADDITIONAL4:
                fullSchema.properties.VACCINATED_ADDITIONAL4,
              VACCINATED_ADDITIONAL_DETAILS4:
                fullSchema.properties.VACCINATED_ADDITIONAL_DETAILS4,
              VACCINATED_ADDITIONAL_OTHER4:
                fullSchema.properties.VACCINATED_ADDITIONAL_OTHER4,
              VACCINATED_ADDITIONAL_DATE4: date,
              VACCINATED_ADDITIONAL5:
                fullSchema.properties.VACCINATED_ADDITIONAL5,
              VACCINATED_ADDITIONAL_DETAILS5:
                fullSchema.properties.VACCINATED_ADDITIONAL_DETAILS5,
              VACCINATED_ADDITIONAL_OTHER5:
                fullSchema.properties.VACCINATED_ADDITIONAL_OTHER5,
              VACCINATED_ADDITIONAL_DATE5: date,
              diagnosed: fullSchema.properties.diagnosed,
              DIAGNOSED_DETAILS: fullSchema.properties.DIAGNOSED_DETAILS,
              DIAGNOSED_SYMPTOMS: fullSchema.properties.DIAGNOSED_SYMPTOMS,
              ELIGIBLE: fullSchema.properties.ELIGIBLE,
              FACILITY: fullSchema.properties.FACILITY,
              zipCode: usaPostalCode,
              vaLocation: fullSchema.properties.vaLocation,
            },
          },
        },
      },
    },
  },
};

export default formConfig;