frontend/app/ProjectDeliverables/DurationFormatter.tsx (22 lines of code) (raw):
import React, { useEffect, useState } from "react";
import { Typography } from "@material-ui/core";
interface DurationFormatterProps {
durationSeconds: number;
frameRate?: number;
}
const DurationFormatter: React.FC<DurationFormatterProps> = (props) => {
const [timeString, setTimeString] = useState<string>("-");
/**
* break down the number into hours, minutes, seconds, frames parts
*/
useEffect(() => {
const hours = Math.floor(props.durationSeconds / 3600);
const mins = Math.floor((props.durationSeconds - hours * 3600) / 60);
const seconds = Math.floor(
props.durationSeconds - hours * 3600 - mins * 60
);
const finalString = `${hours
.toString()
.padStart(2, "0")}:${mins
.toString()
.padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
setTimeString(finalString);
}, []);
return <Typography>{timeString}</Typography>;
};
export default DurationFormatter;