@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
TypeScript
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;