@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
67 lines (66 loc) • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const setDateRangeValuesWithinMinMax = (filter, startValue, endValue) => {
const { min, max } = filter;
let start;
if (min) {
start = compareMin(min, startValue);
}
else {
start = startValue;
}
let end;
if (max) {
end = compareMax(max, endValue);
}
else {
end = endValue;
}
return {
start,
end,
};
};
const compareMin = (min, dateValue) => {
const minDate = new Date(min);
const date = new Date(dateValue);
return date < minDate ? min : dateValue;
};
const compareMax = (max, dateValue) => {
const maxDate = new Date(max);
const date = new Date(dateValue);
return date > maxDate ? max : dateValue;
};
const getStartAndEndValueFromDefinition = (filter) => {
const { min, max, defaultValue } = filter;
let startValue;
let endValue;
if (min)
startValue = min;
if (max)
endValue = max;
const dateRegEx = /^\d{1,4}-\d{1,2}-\d{2,2} - \d{1,4}-\d{1,2}-\d{1,2}$/;
let value;
if (defaultValue && defaultValue.match(dateRegEx)) {
;
[startValue, endValue] = defaultValue.split(' - ');
value = setDateRangeValuesWithinMinMax(filter, startValue, endValue);
}
else if (defaultValue) {
value = defaultValue;
}
else {
value = setDateRangeValuesWithinMinMax(filter, startValue, endValue);
}
return value;
};
function isDateRange(value) {
return value.start !== undefined || value.end !== undefined;
}
exports.default = {
compareMax,
compareMin,
isDateRange,
setDateRangeValuesWithinMinMax,
getStartAndEndValueFromDefinition,
};