diff options
Diffstat (limited to 'server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.js')
-rw-r--r-- | server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.js | 75 |
1 files changed, 55 insertions, 20 deletions
diff --git a/server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.js b/server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.js index 113568e1212..f2f88dc0f09 100644 --- a/server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.js +++ b/server/sonar-web/src/main/js/apps/overview/components/LeakPeriodLegend.js @@ -17,30 +17,65 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +// @flow import React from 'react'; import moment from 'moment'; import { getPeriodDate, getPeriodLabel } from '../../../helpers/periods'; import { translateWithParameters } from '../../../helpers/l10n'; -const LeakPeriodLegend = ({ period }) => { - const leakPeriodLabel = getPeriodLabel(period); - const leakPeriodDate = getPeriodDate(period); - - const momentDate = moment(leakPeriodDate); - const fromNow = momentDate.fromNow(); - const tooltip = translateWithParameters( - 'overview.started_on_x', - momentDate.format('LL')); - - return ( - <div className="overview-legend" title={tooltip} data-toggle="tooltip"> - {translateWithParameters('overview.leak_period_x', leakPeriodLabel)} - <br/> - <span className="note"> - {translateWithParameters('overview.started_x', fromNow)} - </span> - </div> - ); +type DaysPeriod = { + date: string, + mode: 'days', + parameter: string }; -export default LeakPeriodLegend; +type DatePeriod = { + date: string, + mode: 'date', + parameter: string +}; + +type VersionPeriod = { + date: string, + mode: 'version', + parameter: string +}; + +type PreviousAnalysisPeriod = { + date: string, + mode: 'previous_analysis' +}; + +type PreviousVersionPeriod = { + date: string, + mode: 'previous_version' +}; + +type Period = DaysPeriod | DatePeriod | VersionPeriod | PreviousAnalysisPeriod | PreviousVersionPeriod; + +export default class LeakPeriodLegend extends React.Component { + props: { period: Period }; + + render () { + const { period } = this.props; + const leakPeriodLabel = getPeriodLabel(period); + const leakPeriodDate = getPeriodDate(period); + + const momentDate = moment(leakPeriodDate); + const fromNow = momentDate.fromNow(); + const note = ['date', 'days'].includes(period.mode) ? + translateWithParameters('overview.last_analysis_x', fromNow) : + translateWithParameters('overview.started_x', fromNow); + const tooltip = ['date', 'days'].includes(period.mode) ? + translateWithParameters('overview.last_analysis_on_x', momentDate.format('LL')) : + translateWithParameters('overview.started_on_x', momentDate.format('LL')); + + return ( + <div className="overview-legend" title={tooltip} data-toggle="tooltip"> + {translateWithParameters('overview.leak_period_x', leakPeriodLabel)} + <br/> + <span className="note">{note}</span> + </div> + ); + } +} |