grafana/public/app/features/explore/Time.tsx

37 lines
812 B
TypeScript

import React from 'react';
import { toDuration } from '@grafana/data';
export interface TimeProps {
timeInMs: number;
className?: string;
humanize?: boolean;
}
export const Time = ({ timeInMs, className, humanize }: TimeProps) => {
return <span className={className}>{formatTime(timeInMs, humanize)}</span>;
};
const formatTime = (timeInMs: number, humanize = false): string => {
const inSeconds = timeInMs / 1000;
if (!humanize) {
return `${inSeconds.toFixed(1)}s`;
}
const duration = toDuration(inSeconds, 'seconds');
const hours = duration.hours();
const minutes = duration.minutes();
const seconds = duration.seconds();
if (hours) {
return `${hours}h ${minutes}m ${seconds}s`;
}
if (minutes) {
return `${minutes}m ${seconds}s`;
}
return `${seconds}s`;
};