@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
48 lines (45 loc) • 1.59 kB
JavaScript
import { DashboardVisualisationType } from '../dashboard-visualisation/types.js';
const mergeScorecardsIntoGroup = (visualisations, isEnabled) => {
const groupedScorecardIndexes = visualisations
// get scorecard indexes
.reduce((acc, vis, i) => {
if (vis.type === DashboardVisualisationType.SCORECARD)
acc.push(i);
return acc;
}, [])
// group adjacent indexes
.reduce((r, n) => {
const lastSubArray = r[r.length - 1];
if (!lastSubArray || lastSubArray[lastSubArray.length - 1] !== n - 1)
r.push([]);
r[r.length - 1].push(n);
return r;
}, []);
groupedScorecardIndexes.reverse().forEach((group) => {
const spliceAtIndex = group[0];
const scorecardGroup = group
.map((scIndex) => {
return visualisations[scIndex].data;
})
.filter((scorecard) => !!scorecard);
while (group.length) {
const i = group.pop();
if (i !== undefined)
visualisations.splice(i, 1);
}
if (scorecardGroup.length) {
visualisations.splice(spliceAtIndex, 0, {
id: `${spliceAtIndex}`,
type: DashboardVisualisationType.SCORECARD_GROUP,
data: [{ scorecards: scorecardGroup }],
isEnabled,
});
}
});
return visualisations;
};
var ScorecardsUtils = {
mergeScorecardsIntoGroup,
};
export { ScorecardsUtils as default, mergeScorecardsIntoGroup };
//# sourceMappingURL=utils.js.map