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.

48 lines (45 loc) 1.59 kB
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