import _ from 'lodash'; export function dedupAnnotations(annotations: any) { let dedup = []; // Split events by annotationId property existence const events = _.partition(annotations, 'id'); const eventsById = _.groupBy(events[0], 'id'); dedup = _.map(eventsById, eventGroup => { if (eventGroup.length > 1 && !_.every(eventGroup, isPanelAlert)) { // Get first non-panel alert return _.find(eventGroup, event => { return event.eventType !== 'panel-alert'; }); } else { return _.head(eventGroup); } }); dedup = _.concat(dedup, events[1]); return dedup; } function isPanelAlert(event: { eventType: string }) { return event.eventType === 'panel-alert'; }