mirror of
https://github.com/LinoSchmidt/StickExporterTX.git
synced 2026-03-23 02:26:11 +01:00
Added extra file for progress
This commit is contained in:
92
src/components/progressController.ts
Normal file
92
src/components/progressController.ts
Normal file
@@ -0,0 +1,92 @@
|
||||
import {setProgress} from "../renderer";
|
||||
import {getLogSize} from "./logReader";
|
||||
import {getInOutSettings} from "./settings";
|
||||
import { setRenderDisplayProgress, setPastTimeNow, setRemainingTimeNow } from "./ui/renderingPage";
|
||||
|
||||
const estimatedRenderPortion = 0.97;
|
||||
|
||||
const renderInfo = {
|
||||
time: "0min 0sec",
|
||||
startTime: 0,
|
||||
endTime: 0
|
||||
}
|
||||
|
||||
let logPortionList:number[] = [];
|
||||
let currentLogPortion = 0;
|
||||
|
||||
function setRenderProgress(log:number, init:boolean, frameCount:number, frame:number) {
|
||||
let progress = 0;
|
||||
if(init) {
|
||||
progress = logPortionList[log-1] * (frame / frameCount * (1 - estimatedRenderPortion)) + currentLogPortion;
|
||||
} else {
|
||||
progress = logPortionList[log-1] * (frame / frameCount * estimatedRenderPortion + (1 - estimatedRenderPortion)) + currentLogPortion;
|
||||
}
|
||||
setProgress(progress);
|
||||
setRenderDisplayProgress(parseFloat((progress*100).toFixed(2)));
|
||||
|
||||
const timeNow = new Date().getTime();
|
||||
const timeDiff = timeNow - renderInfo.startTime;
|
||||
let timeDiffSeconds = timeDiff / 1000;
|
||||
let timeDiffMinutes = 0;
|
||||
while(timeDiffSeconds > 60) {
|
||||
timeDiffMinutes++;
|
||||
timeDiffSeconds -= 60;
|
||||
}
|
||||
renderInfo.time = timeDiffMinutes + "m " + timeDiffSeconds.toFixed(0) + "s";
|
||||
setPastTimeNow(renderInfo.time);
|
||||
|
||||
if(progress > 0) {
|
||||
const timeRemaining = (timeDiff / progress) * (1 - progress);
|
||||
timeDiffSeconds = timeRemaining / 1000;
|
||||
timeDiffMinutes = 0;
|
||||
while(timeDiffSeconds > 60) {
|
||||
timeDiffMinutes++;
|
||||
timeDiffSeconds -= 60;
|
||||
}
|
||||
setRemainingTimeNow(timeDiffMinutes + "m " + timeDiffSeconds.toFixed(0) + "s");
|
||||
}
|
||||
}
|
||||
|
||||
function resetRenderProgress() {
|
||||
logPortionList = [];
|
||||
currentLogPortion = 0;
|
||||
|
||||
const logSizeList:number[] = [];
|
||||
getInOutSettings().logs.forEach(function (value, index) {
|
||||
logSizeList.push(getLogSize(index));
|
||||
});
|
||||
|
||||
let fullLogSize = 0;
|
||||
for(let i = 0; i < logSizeList.length; i++) {
|
||||
fullLogSize += logSizeList[i];
|
||||
}
|
||||
|
||||
logSizeList.forEach(function (value) {
|
||||
logPortionList.push(value / fullLogSize);
|
||||
});
|
||||
|
||||
setPastTimeNow("0min 0sec");
|
||||
setRemainingTimeNow("calculating...");
|
||||
}
|
||||
|
||||
function setLog(log:number) {
|
||||
currentLogPortion += logPortionList[log-2];
|
||||
}
|
||||
|
||||
function stopProgress() {
|
||||
renderInfo.endTime = new Date().getTime();
|
||||
}
|
||||
|
||||
function startProgress() {
|
||||
renderInfo.startTime = new Date().getTime();
|
||||
resetRenderProgress();
|
||||
}
|
||||
|
||||
export {
|
||||
setRenderProgress,
|
||||
resetRenderProgress,
|
||||
setLog,
|
||||
stopProgress,
|
||||
startProgress,
|
||||
renderInfo
|
||||
}
|
||||
Reference in New Issue
Block a user