import { FunctionalComponent, h } from "preact"; import { Project } from "../../models/project"; import { Task } from "../../models/task"; import { useState, useEffect } from "preact/hooks"; import { getProjectWeightedMean, getProjectStandardDeviation } from "../../util/stat"; export interface TimePreviewProps { project: Project } const TimePreview: FunctionalComponent = ({ project }) => { const [ estimations, setEstimations ] = useState({ p99: { e: '0', sd: '0' }, p90: { e: '0', sd: '0' }, p68: { e: '0', sd: '0' }, }); useEffect(() => { const projectWeightedMean = getProjectWeightedMean(project).toFixed(2); const projectStandardDeviation = getProjectStandardDeviation(project); setEstimations({ p99: { e: projectWeightedMean, sd: (projectStandardDeviation * 3).toFixed(2) }, p90: { e: projectWeightedMean, sd: (projectStandardDeviation * 1.645).toFixed(2) }, p68: { e: projectWeightedMean, sd: (projectStandardDeviation).toFixed(2) }, }) }, [project.tasks]); return (
Prévisionnel temps
Niveau de confiance Estimation
>= 99.7% {`${estimations.p99.e} ± ${estimations.p99.sd} j/h`}
>= 90% {`${estimations.p90.e} ± ${estimations.p90.sd} j/h`}
>= 68% {`${estimations.p68.e} ± ${estimations.p68.sd} j/h`}
❓ Estimation à 3 points
); }; export default TimePreview;