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.

258 lines (257 loc) 11.8 kB
import ReportingService from '../services/reportingService'; import { components } from '../types/api'; import { Services } from '../types/Services'; import { Template } from '../types/Templates'; import { ReportType } from '../types/UserReports'; import Dict = NodeJS.Dict; /** * Gets the definition and fields by reportType * * @param {ReportType} reportType * @param {Services} services * @param {string} token * @param {string} reportId * @param {string} id * @param {string} [definitionsPath] */ export declare const getDefinitionByType: (reportType: ReportType, services: Services, token: string, reportId: string, id: string, definitionsPath?: string, queryData?: Dict<string | string[]>) => Promise<{ definition: components["schemas"]["SingleVariantReportDefinition"] | components["schemas"]["DashboardDefinition"]; fields: components["schemas"]["FieldDefinition"][]; }>; /** * Given a field id, gets its filter object * * @param {components['schemas']['FieldDefinition'][]} fields * @param {string} fieldId * @return {*} {(components['schemas']['FilterDefinition'] | undefined)} */ export declare const getFilter: (fields: components["schemas"]["FieldDefinition"][], fieldId: string) => components["schemas"]["FilterDefinition"] | null | undefined; /** * Gets the current varaint definition * * @param {components['schemas']['ReportDefinitionSummary'][]} definitions * @param {string} reportId * @param {string} variantId * @return {*} {(components['schemas']['VariantDefinition'] | undefined)} */ export declare const getCurrentVariantDefinition: (definitions: components["schemas"]["ReportDefinitionSummary"][], reportId: string, variantId: string) => components["schemas"]["VariantDefinition"] | undefined; /** * Gets the display name of a field * * @param {(components['schemas']['FieldDefinition'][] | components['schemas']['SummaryField'][])} fields * @param {string} fieldId * @return {*} */ export declare const getFieldDisplayName: (fields: components["schemas"]["FieldDefinition"][] | components["schemas"]["SummaryField"][], fieldId: string) => string | null | undefined; /** * Gets a single field by its id/name * * @param {components['schemas']['FieldDefinition'][]} fields * @param {string} fieldId * @return {*} */ export declare const getField: (fields: components["schemas"]["FieldDefinition"][], fieldId: string) => { name: string; display: string; wordWrap?: "none" | "normal" | "break-words" | null; filter?: components["schemas"]["FilterDefinition"] | null; sortable: boolean; defaultsort: boolean; sortDirection?: "asc" | "desc" | null; type: "boolean" | "date" | "double" | "HTML" | "long" | "string" | "time" | "timestamp"; mandatory: boolean; visible: boolean; calculated: boolean; header: boolean; fieldSource: "specfield" | "paramfield"; } | undefined; /** * Get all fields from a definition * * @param {components['schemas']['SingleVariantReportDefinition']} definition * @return {*} {components['schemas']['FieldDefinition'][]} */ export declare const getFields: (definition: components["schemas"]["SingleVariantReportDefinition"]) => components["schemas"]["FieldDefinition"][]; /** * Get all fields from a definition * * @param {components['schemas']['SingleVariantReportDefinition']} definition * @return {*} {components['schemas']['FieldDefinition'][]} */ export declare const getDashboardFields: (definition: components["schemas"]["DashboardDefinition"]) => components["schemas"]["FieldDefinition"][]; /** * Gets only the fields that have filters, from the definition * * @param {components['schemas']['SingleVariantReportDefinition']} definition * @return {*} {components['schemas']['FieldDefinition'][]} */ export declare const getFieldsWithFiltersFromDefinition: (definition: components["schemas"]["SingleVariantReportDefinition"]) => components["schemas"]["FieldDefinition"][]; type FieldWithFilter = Omit<components['schemas']['FieldDefinition'], 'filter'> & { filter: components['schemas']['FilterDefinition']; }; /** * Gets only the fields that have filters, from fields * * @param {components['schemas']['FieldDefinition'][]} fields * @return {*} {FieldWithFilter[]} */ export declare const getFieldsWithFilters: (fields: components["schemas"]["FieldDefinition"][]) => FieldWithFilter[]; /** * Gets the template type * * @param {components['schemas']['SingleVariantReportDefinition']} definition * @return {*} {Template} */ export declare const getTemplate: (definition: components["schemas"]["SingleVariantReportDefinition"]) => Template; /** * Gets the filters from a variant * * @param {components['schemas']['FieldDefinition'][]} fields * @return {*} {components['schemas']['FilterDefinition'][]} */ export declare const getFilters: (fields: components["schemas"]["FieldDefinition"][]) => components["schemas"]["FilterDefinition"][]; /** * Given an array of string names, will return the relative field types * * @param {string[]} names * @param {components['schemas']['FieldDefinition'][]} fields * @return {*} {components['schemas']['FieldDefinition'][]} */ export declare const getFieldsByName: (names: string[], fields: components["schemas"]["FieldDefinition"][]) => components["schemas"]["FieldDefinition"][]; /** * Validates the definition * * @param {components['schemas']['SingleVariantReportDefinition']} definition * @return {*} */ export declare const validateDefinition: (definition: components["schemas"]["SingleVariantReportDefinition"]) => { variant: { id: string; name: string; resourceName: string; description?: string | null; specification?: components["schemas"]["Specification"] | null; classification?: string | null; printable?: boolean | null; summaries?: components["schemas"]["ReportSummary"][] | null; interactive?: boolean | null; childVariants?: components["schemas"]["ChildVariantDefinition"][] | null; }; specification: { template: "list" | "list-section" | "list-tab" | "summary" | "summary-section" | "parent-child" | "parent-child-section" | "row-section" | "row-section-child"; fields: components["schemas"]["FieldDefinition"][]; sections: string[]; }; }; /** * Validates that the variant has a `specification` * * @param {components['schemas']['VariantDefinition']} variant * @return {*} */ export declare const validateVariant: (variant: components["schemas"]["VariantDefinition"], defId: string) => { variant: { id: string; name: string; resourceName: string; description?: string | null; specification?: components["schemas"]["Specification"] | null; classification?: string | null; printable?: boolean | null; summaries?: components["schemas"]["ReportSummary"][] | null; interactive?: boolean | null; childVariants?: components["schemas"]["ChildVariantDefinition"][] | null; }; specification: { template: "list" | "list-section" | "list-tab" | "summary" | "summary-section" | "parent-child" | "parent-child-section" | "row-section" | "row-section-child"; fields: components["schemas"]["FieldDefinition"][]; sections: string[]; }; }; /** * Determines whether there are any interactive filters * defined in the definition * * @param {components['schemas']['FieldDefinition'][]} fields * @return {*} */ export declare const hasInteractiveFilters: (fields: components["schemas"]["FieldDefinition"][]) => boolean; export declare const getReportSummary: (reportId: string, reportingService: ReportingService, token: string, definitionPath: string) => Promise<{ id: string; name: string; description?: string | null; variants: components["schemas"]["VariantDefinitionSummary"][]; dashboards?: components["schemas"]["DashboardDefinitionSummary"][] | null; authorised: boolean; }>; export type DefaultFilterQueryStrings = Readonly<{ defaultFiltersSearch: string; interactiveDefaultFiltersSearch: string; }>; /** * Creates a the default filters querystring * * @param {components['schemas']['FieldDefinition'][]} fields * @return {*} {DefaultFilterQueryStrings} */ export declare const getDefaultFiltersQueryString: (fields: components["schemas"]["FieldDefinition"][]) => DefaultFilterQueryStrings; /** * Sets the default sort query string * * @param {components['schemas']['FieldDefinition'][]} fields * @return {*} */ export declare const getDefaultSortQueryString: (fields: components["schemas"]["FieldDefinition"][]) => string; /** * Get the default columns from the DPD * and creates a querystring * * @param {components['schemas']['FieldDefinition'][]} fields * @return {*} */ export declare const getDefaultColumnsQueryString: (fields: components["schemas"]["FieldDefinition"][]) => string; /** * Get the definition path from the query * * @param {Record<string, unknown>} query */ export declare const getDefinitionsPath: (query: Record<string, unknown>) => string | null; declare const _default: { getCurrentVariantDefinition: (definitions: components["schemas"]["ReportDefinitionSummary"][], reportId: string, variantId: string) => components["schemas"]["VariantDefinition"] | undefined; getFieldDisplayName: (fields: components["schemas"]["FieldDefinition"][] | components["schemas"]["SummaryField"][], fieldId: string) => string | null | undefined; getField: (fields: components["schemas"]["FieldDefinition"][], fieldId: string) => { name: string; display: string; wordWrap?: "none" | "normal" | "break-words" | null; filter?: components["schemas"]["FilterDefinition"] | null; sortable: boolean; defaultsort: boolean; sortDirection?: "asc" | "desc" | null; type: "boolean" | "date" | "double" | "HTML" | "long" | "string" | "time" | "timestamp"; mandatory: boolean; visible: boolean; calculated: boolean; header: boolean; fieldSource: "specfield" | "paramfield"; } | undefined; getFields: (definition: components["schemas"]["SingleVariantReportDefinition"]) => components["schemas"]["FieldDefinition"][]; getTemplate: (definition: components["schemas"]["SingleVariantReportDefinition"]) => Template; getFilter: (fields: components["schemas"]["FieldDefinition"][], fieldId: string) => components["schemas"]["FilterDefinition"] | null | undefined; getFilters: (fields: components["schemas"]["FieldDefinition"][]) => components["schemas"]["FilterDefinition"][]; getReportSummary: (reportId: string, reportingService: ReportingService, token: string, definitionPath: string) => Promise<{ id: string; name: string; description?: string | null; variants: components["schemas"]["VariantDefinitionSummary"][]; dashboards?: components["schemas"]["DashboardDefinitionSummary"][] | null; authorised: boolean; }>; hasInteractiveFilters: (fields: components["schemas"]["FieldDefinition"][]) => boolean; getDefaultFiltersQueryString: (fields: components["schemas"]["FieldDefinition"][]) => DefaultFilterQueryStrings; getDefaultColumnsQueryString: (fields: components["schemas"]["FieldDefinition"][]) => string; getDefinitionByType: (reportType: ReportType, services: Services, token: string, reportId: string, id: string, definitionsPath?: string, queryData?: Dict<string | string[]>) => Promise<{ definition: components["schemas"]["SingleVariantReportDefinition"] | components["schemas"]["DashboardDefinition"]; fields: components["schemas"]["FieldDefinition"][]; }>; }; export default _default;