The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/public/app/features/explore/ElapsedTime.tsx

23 lines
935 B

import { useState, useEffect } from 'react';
import { useInterval } from 'react-use';
import { Time, TimeProps } from './Time';
const INTERVAL = 150;
export interface ElapsedTimeProps extends Omit<TimeProps, 'timeInMs'> {
// Use this to reset the timer. Any value is allowed just need to be !== from the previous.
// Keep in mind things like [] !== [] or {} !== {}.
resetKey?: unknown;
}
export const ElapsedTime = ({ resetKey, humanize, className }: ElapsedTimeProps) => {
const [elapsed, setElapsed] = useState(0); // the current value of elapsed
// hook that will schedule a interval and then update the elapsed value on every tick.
useInterval(() => setElapsed(elapsed + INTERVAL), INTERVAL);
// this effect will only be run when resetKey changes. This will reset the elapsed to 0.
useEffect(() => setElapsed(0), [resetKey]);
return <Time timeInMs={elapsed} className={className} humanize={humanize} />;
};