mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-30 12:11:56 +00:00
42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { Pipe, PipeTransform } from '@angular/core'
|
|
import { InstallProgress } from '../services/patch-db/data-model'
|
|
|
|
@Pipe({
|
|
name: 'installState',
|
|
})
|
|
export class InstallState implements PipeTransform {
|
|
|
|
transform (loadData: InstallProgress): ProgressData {
|
|
let { downloaded, validated, unpacked, size, 'download-complete': downloadComplete, 'validation-complete': validationComplete, 'unpack-complete': unpackComplete } = loadData
|
|
downloaded = downloadComplete ? size : downloaded
|
|
validated = validationComplete ? size : validated
|
|
unpacked = unpackComplete ? size : unpacked
|
|
|
|
const downloadWeight = 1
|
|
const validateWeight = .2
|
|
const unpackWeight = .7
|
|
|
|
const numerator = Math.floor(
|
|
downloadWeight * downloaded +
|
|
validateWeight * validated +
|
|
unpackWeight * unpacked)
|
|
|
|
const denominator = Math.floor(loadData.size * (downloadWeight + validateWeight + unpackWeight))
|
|
|
|
return {
|
|
totalProgress: Math.round(100 * numerator / denominator),
|
|
downloadProgress: Math.round(100 * downloaded / size),
|
|
validateProgress: Math.round(100 * validated / size),
|
|
unpackProgress: Math.round(100 * unpacked / size),
|
|
isComplete: downloadComplete && validationComplete && unpackComplete,
|
|
}
|
|
}
|
|
}
|
|
|
|
export interface ProgressData {
|
|
totalProgress: number
|
|
downloadProgress: number
|
|
validateProgress: number
|
|
unpackProgress: number
|
|
isComplete: boolean
|
|
} |