*/
import * as React from 'react';
import { Link } from 'react-router';
+import * as difference from 'date-fns/difference_in_milliseconds';
import ProjectCardQualityGate from './ProjectCardQualityGate';
import ProjectCardLeakMeasures from './ProjectCardLeakMeasures';
import ProjectCardOrganizationContainer from './ProjectCardOrganizationContainer';
export default function ProjectCardLeak({ height, organization, project }: Props) {
const { measures } = project;
const hasTags = project.tags.length > 0;
- const period = project.leakPeriodDate
- ? new Date().getTime() - new Date(project.leakPeriodDate).getTime()
- : 0;
+ const periodMs = project.leakPeriodDate ? difference(Date.now(), project.leakPeriodDate) : 0;
+
return (
<div className="boxed-group project-card" data-key={project.key} style={{ height }}>
<div className="boxed-group-header clearfix">
project.leakPeriodDate && (
<div className="project-card-dates note text-right pull-right">
<span className="project-card-leak-date pull-right">
- {translateWithParameters('projects.new_code_period_x', formatDuration(period))}
+ {translateWithParameters('projects.new_code_period_x', formatDuration(periodMs))}
</span>
<DateTimeFormatter date={project.analysisDate}>
{formattedDate => (
import ProjectCardLeak from '../ProjectCardLeak';
import { Visibility } from '../../../../app/types';
+jest.mock(
+ 'date-fns/difference_in_milliseconds',
+ () => () => 1000 * 60 * 60 * 24 * 30 * 8 // ~ 8 months
+);
+
+/* eslint-disable camelcase */
const MEASURES = {
alert_status: 'OK',
reliability_rating: '1.0',
<span
className="project-card-leak-date pull-right"
>
- projects.new_code_period_x.duration.years.1 duration.months.8
+ projects.new_code_period_x.duration.months.8
</span>
<DateTimeFormatter
date="2017-01-01"
return result;
}
-export function formatDuration(value: number) {
- if (value < ONE_MINUTE) {
+export function formatDuration(ms: number) {
+ if (ms < ONE_MINUTE) {
return translate('duration.seconds');
}
- const years = Math.floor(value / ONE_YEAR);
- value -= years * ONE_YEAR;
- const months = Math.floor(value / ONE_MONTH);
- value -= months * ONE_MONTH;
- const days = Math.floor(value / ONE_DAY);
- value -= days * ONE_DAY;
- const hours = Math.floor(value / ONE_HOUR);
- value -= hours * ONE_HOUR;
- const minutes = Math.floor(value / ONE_MINUTE);
+ const years = Math.floor(ms / ONE_YEAR);
+ ms -= years * ONE_YEAR;
+ const months = Math.floor(ms / ONE_MONTH);
+ ms -= months * ONE_MONTH;
+ const days = Math.floor(ms / ONE_DAY);
+ ms -= days * ONE_DAY;
+ const hours = Math.floor(ms / ONE_HOUR);
+ ms -= hours * ONE_HOUR;
+ const minutes = Math.floor(ms / ONE_MINUTE);
return format([
{ value: years, label: 'duration.years' },
{ value: months, label: 'duration.months' },