]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-9496 group changelog events by action and date
authorStas Vilchik <stas.vilchik@sonarsource.com>
Tue, 3 Oct 2017 16:55:27 +0000 (18:55 +0200)
committerStas Vilchik <stas.vilchik@sonarsource.com>
Wed, 4 Oct 2017 08:35:13 +0000 (10:35 +0200)
server/sonar-web/src/main/js/apps/quality-profiles/changelog/Changelog.tsx

index 021f1d3dca0c7ac826786429f3339888ce526cca..422ee1b8a81befff8901a5796e16d89213e92dec 100644 (file)
  */
 import * as React from 'react';
 import { Link } from 'react-router';
+import { sortBy } from 'lodash';
+import { isSameMinute, startOfMinute } from 'date-fns';
 import ChangesList from './ChangesList';
 import DateTimeFormatter from '../../../components/intl/DateTimeFormatter';
 import { translate } from '../../../helpers/l10n';
 import { getRulesUrl } from '../../../helpers/urls';
-import { differenceInSeconds, parseDate } from '../../../helpers/dates';
+import { parseDate } from '../../../helpers/dates';
 import { ProfileChangelogEvent } from '../types';
 
 interface Props {
@@ -33,11 +35,16 @@ interface Props {
 
 export default function Changelog(props: Props) {
   let isEvenRow = false;
+  const sortedRows = sortBy(
+    props.events,
+    // sort events by date, rounded to a minute, recent events first
+    e => -Number(startOfMinute(parseDate(e.date))),
+    e => e.action
+  );
 
-  const rows = props.events.map((event, index) => {
-    const prev = index > 0 ? props.events[index - 1] : null;
-    const isSameDate =
-      prev != null && differenceInSeconds(parseDate(prev.date), parseDate(event.date)) < 10;
+  const rows = sortedRows.map((event, index) => {
+    const prev = index > 0 ? sortedRows[index - 1] : null;
+    const isSameDate = prev != null && isSameMinute(parseDate(prev.date), parseDate(event.date));
     const isBulkChange =
       prev != null &&
       isSameDate &&