import { Project } from "../models/project"; import { useState, useEffect } from "preact/hooks"; import { getProjectWeightedMean, getProjectStandardDeviation } from "../util/stat"; export interface Estimation { e: number sd: number } export interface ProjetEstimations { p99: Estimation p90: Estimation p68: Estimation } export function useProjectEstimations(p :Project): ProjetEstimations { const [ estimations, setEstimations ] = useState({ p99: { e: 0, sd: 0 }, p90: { e: 0, sd: 0 }, p68: { e: 0, sd: 0 }, }); useEffect(() => { const projectWeightedMean = getProjectWeightedMean(p) const projectStandardDeviation = getProjectStandardDeviation(p); setEstimations({ p99: { e: projectWeightedMean, sd: (projectStandardDeviation * 3) }, p90: { e: projectWeightedMean, sd: (projectStandardDeviation * 1.645) }, p68: { e: projectWeightedMean, sd: (projectStandardDeviation) }, }) }, [p.tasks]); return estimations; }