1
0
mirror of https://github.com/upscayl/upscayl.git synced 2024-12-21 11:55:53 +01:00
upscayl/renderer/components/upscayl-tab/view/ProgressBar.tsx

60 lines
1.7 KiB
TypeScript
Raw Normal View History

2023-10-21 16:14:42 +02:00
import React, { useEffect } from "react";
2023-07-22 13:07:53 +02:00
import Spinner from "../../icons/Spinner";
2022-11-11 21:39:28 +01:00
function ProgressBar({
progress,
doubleUpscaylCounter,
stopHandler,
batchMode,
2023-10-21 15:43:03 +02:00
}: {
progress: string;
doubleUpscaylCounter: number;
stopHandler: () => void;
batchMode: boolean;
}) {
2023-09-09 14:18:00 +02:00
const [batchProgress, setBatchProgress] = React.useState(0);
2023-10-21 16:14:42 +02:00
useEffect(() => {
2023-10-21 15:43:03 +02:00
const progressString = progress.trim().replace(/\n/g, "");
// Remove trailing and leading spaces
2023-10-21 16:14:42 +02:00
if (progressString.includes("Successful")) {
2023-09-09 14:18:00 +02:00
setBatchProgress((prev) => prev + 1);
}
}, [progress]);
2022-11-11 21:39:28 +01:00
return (
2023-03-12 08:59:07 +01:00
<div className="absolute flex h-full w-full flex-col items-center justify-center bg-base-300/50 backdrop-blur-lg">
2024-01-15 14:32:21 +01:00
<div className="flex flex-col items-center bg-base-100/50 backdrop-blur-lg p-4 rounded-btn">
<img
src="icon.png"
alt="Upscayl Icon"
2024-01-15 14:32:21 +01:00
className="w-12 h-12 spinner mb-4"
/>
2024-01-15 14:32:21 +01:00
<p className="rounded-full px-2 font-bold pb-2">
2023-09-09 14:18:00 +02:00
{batchMode && "Batch Upscale In Progress: " + batchProgress}
{!batchMode &&
(doubleUpscaylCounter > 0
? `${progress}\nPass ${doubleUpscaylCounter}`
: `${progress}`)}
2022-11-11 21:39:28 +01:00
</p>
2024-01-15 14:32:21 +01:00
<p className="rounded-full px-2 text-sm font-medium pb-3 animate-pulse">
2023-03-12 08:59:07 +01:00
Doing the Upscayl magic...
</p>
{batchMode && (
2024-01-15 14:32:21 +01:00
<p className="text-xs rounded-btn text-base-content/70 text-center pb-4 w-64">
Info: The images will be converted and scaled after the upscaling
process.
</p>
)}
2024-01-15 14:32:21 +01:00
<button onClick={stopHandler} className="btn-outline btn">
2023-04-29 19:12:40 +02:00
STOP
</button>
2022-11-11 21:39:28 +01:00
</div>
</div>
);
}
export default ProgressBar;