UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

41 lines (34 loc) 1.43 kB
import { components } from '../../../types/api' import { Column, Columns } from './types' import { distinct } from '../../../utils/arrayUtils' const mandatoryColumns = (fields: Array<components['schemas']['FieldDefinition']>) => fields.filter((field) => field.mandatory).map((field) => field.name) const visibleColumns = (fields: Array<components['schemas']['FieldDefinition']>) => fields.filter((field) => field.visible).map((field) => field.name) const ensureMandatoryColumns = (fields: Array<components['schemas']['FieldDefinition']>, queryColumns: string[]) => [...mandatoryColumns(fields), ...queryColumns].reduce(distinct, []) export default { /** * Converts the columns from a DPD into a column readable format * * @param specification * @param requestedColumns */ getColumns: (specification: components['schemas']['Specification'], requestedColumns: string[] = null): Columns => { const { fields } = specification const options: Column[] = fields .filter((field) => !specification.sections || !specification.sections.includes(field.name)) .map((field) => ({ text: field.display, value: field.name, disabled: field.mandatory, })) return { name: 'columns', options, text: 'Select report columns', value: ensureMandatoryColumns(fields, requestedColumns ?? visibleColumns(fields)), } }, ensureMandatoryColumns, }