mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 20:14:49 +00:00
Refactor AppListPage
This commit is contained in:
committed by
Aiden McClelland
parent
b546eb2504
commit
ee81ca111b
50
ui/src/app/util/package-loading-progress.ts
Normal file
50
ui/src/app/util/package-loading-progress.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { InstallProgress } from "src/app/services/patch-db/data-model";
|
||||
|
||||
export function packageLoadingProgress(
|
||||
loadData: InstallProgress
|
||||
): ProgressData {
|
||||
let {
|
||||
downloaded,
|
||||
validated,
|
||||
unpacked,
|
||||
size,
|
||||
"download-complete": downloadComplete,
|
||||
"validation-complete": validationComplete,
|
||||
"unpack-complete": unpackComplete,
|
||||
} = loadData;
|
||||
|
||||
// only permit 100% when "complete" == true
|
||||
downloaded = downloadComplete ? size : Math.max(downloaded - 1, 0);
|
||||
validated = validationComplete ? size : Math.max(validated - 1, 0);
|
||||
unpacked = unpackComplete ? size : Math.max(unpacked - 1, 0);
|
||||
|
||||
const downloadWeight = 1;
|
||||
const validateWeight = 0.2;
|
||||
const unpackWeight = 0.7;
|
||||
|
||||
const numerator = Math.floor(
|
||||
downloadWeight * downloaded +
|
||||
validateWeight * validated +
|
||||
unpackWeight * unpacked
|
||||
);
|
||||
|
||||
const denominator = Math.floor(
|
||||
size * (downloadWeight + validateWeight + unpackWeight)
|
||||
);
|
||||
|
||||
return {
|
||||
totalProgress: Math.floor((100 * numerator) / denominator),
|
||||
downloadProgress: Math.floor((100 * downloaded) / size),
|
||||
validateProgress: Math.floor((100 * validated) / size),
|
||||
unpackProgress: Math.floor((100 * unpacked) / size),
|
||||
isComplete: downloadComplete && validationComplete && unpackComplete,
|
||||
};
|
||||
}
|
||||
|
||||
export interface ProgressData {
|
||||
totalProgress: number;
|
||||
downloadProgress: number;
|
||||
validateProgress: number;
|
||||
unpackProgress: number;
|
||||
isComplete: boolean;
|
||||
}
|
||||
Reference in New Issue
Block a user