@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
JavaScript
;
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,
};