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.

87 lines (82 loc) 3.1 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var z = require('zod'); const dashboardBucket = z.z.object({ min: z.z.number().optional(), max: z.z.number().optional(), hexColour: z.z.string().optional(), }); const BucketOptionsSchema = z.z.object({ useRagColour: z.z.boolean().default(false), buckets: z.z.array(dashboardBucket).default([]), baseColour: z.z.string().regex(/^#/).optional(), }); const dashboardVisFilter = z.z.object({ id: z.z.string(), equals: z.z.string().nullable(), }); const DashboardVisualisationKeySchema = z.z.object({ id: z.z.string(), display: z.z.string().optional(), optional: z.z.boolean().default(false), type: z.z.string().optional(), }); exports.UnitType = void 0; (function (UnitType) { UnitType["NUMBER"] = "NUMBER"; UnitType["PERCENTAGE"] = "PERCENTAGE"; })(exports.UnitType || (exports.UnitType = {})); const DashboardVisualisationUnitType = z.z.enum(exports.UnitType); exports.AggregateType = void 0; (function (AggregateType) { AggregateType["SUM"] = "sum"; })(exports.AggregateType || (exports.AggregateType = {})); const DashboardVisualisationAggregateType = z.z.enum(exports.AggregateType); const DashboardVisualisationMeasureSchema = z.z.object({ id: z.z.string(), display: z.z.string().optional(), unit: DashboardVisualisationUnitType.optional(), aggregate: DashboardVisualisationAggregateType.optional(), type: z.z.string().optional(), }); const DashboardColumns = z.z.object({ keys: z.z.array(DashboardVisualisationKeySchema).optional(), measures: z.z.array(DashboardVisualisationMeasureSchema, { error: issue => (issue.input === undefined ? 'measures is required' : 'measures must be an array'), }), filters: z.z.array(dashboardVisFilter).min(1).optional(), expectNulls: z.z.boolean().default(false), }); const dashboardOptions = z.z.object({ ...BucketOptionsSchema.shape, showLatest: z.z.boolean().default(true), columnsAsList: z.z.boolean().optional(), }); const DashboardVisualisationSchema = z.z.object({ id: z.z.string(), type: z.z.enum([ 'list', 'doughnut', 'bar', 'bar-timeseries', 'line', 'scorecard', 'scorecard-group', 'matrix-timeseries', 'line-timeseries', ]), display: z.z.string(), description: z.z.string().optional(), options: z.z.object(dashboardOptions.shape).optional(), columns: z.z.object(DashboardColumns.shape), }); const DashboardVisualisationSchemas = { DashboardVisualisationSchema}; exports.BucketOptionsSchema = BucketOptionsSchema; exports.DashboardColumns = DashboardColumns; exports.DashboardVisualisationAggregateType = DashboardVisualisationAggregateType; exports.DashboardVisualisationMeasureSchema = DashboardVisualisationMeasureSchema; exports.DashboardVisualisationSchema = DashboardVisualisationSchema; exports.DashboardVisualisationUnitType = DashboardVisualisationUnitType; exports.default = DashboardVisualisationSchemas; //# sourceMappingURL=Validate.js.map