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.

51 lines (50 loc) 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const setValueFromRequest = (filter, req, prefix) => { const queryValue = req.query[`${prefix}${filter.name}`]; let valueArr; let valueString; if (queryValue === null || queryValue === void 0 ? void 0 : queryValue.length) { valueArr = Array.isArray(queryValue) ? queryValue : [queryValue]; valueString = valueArr.join(','); } return { requestfilterValue: valueString || null, requestfilterValues: valueArr || [], }; }; const getQueryFromDefinition = (filter, name, filterPrefix) => { const values = filter.defaultValue ? filter.defaultValue.split(',') : []; return values .map((val) => { return `${filterPrefix}${name}=${val}`; }) .join('&'); }; const getMultiselectValues = (f, prefix) => { const MAX_VALUES = 3; const splitValues = f.value.split(','); let displayValue = splitValues .map((v) => { const displayOption = f.options.find((opt) => opt.value === v); return displayOption.text; }) .filter((v, i) => { return i < MAX_VALUES; }) .join(', '); displayValue = splitValues.length > MAX_VALUES ? `${displayValue} + ${splitValues.length - MAX_VALUES} more` : displayValue; const value = splitValues.map((v) => `"${v}"`); const key = [`${prefix}${f.name}`]; return { key, value, displayValue, }; }; exports.default = { getQueryFromDefinition, setValueFromRequest, getMultiselectValues, };