*** origProjectPlannerPlugin.pm 2007-02-14 12:35:05.000000000 +0000 --- ProjectPlannerPlugin.pm 2007-03-02 09:15:12.000000000 +0000 *************** *** 1127,1147 **** my $projTotalTasks = 0; my $projEstDays = 0; my $projSpentDays = 0; my %projModuleTotal; my %projModuleDone; my %projModuleInP; my %projModuleWait; my %projModuleNS; my %prioTotal; my %prioDone; my %prioInP; my %prioWait; my %prioNS; my ($summary, $ids, $planText); my $list = "

All plans for project $project

\n\n"; ! $list .= "| *Plan* | *Summary* | *Status By Tasks* | *Done Tasks* | *Total Tasks* | *Status By Days* | *Spent Days* | *Estimated Days* | \n"; foreach my $eachPl (split(/;/, $cachedProjPlans{$project})) { if (&TWiki::Func::topicExists($web, $eachPl)) { (undef, $planText) = TWiki::Func::readTopic($web, $eachPl); --- 1127,1150 ---- my $projTotalTasks = 0; my $projEstDays = 0; my $projSpentDays = 0; + my $projRemainingDays = 0; my %projModuleTotal; my %projModuleDone; my %projModuleInP; my %projModuleWait; my %projModuleNS; + my %projModuleRem; my %prioTotal; my %prioDone; my %prioInP; my %prioWait; my %prioNS; + my %prioRem; my ($summary, $ids, $planText); my $list = "

All plans for project $project

\n\n"; ! $list .= "| *Plan* | *Summary* | *Status By Tasks* | *Done Tasks* | *Total Tasks* | *Status By Days* | *Spent Days* | *Estimated Days* | *Remaining Days* | \n"; foreach my $eachPl (split(/;/, $cachedProjPlans{$project})) { if (&TWiki::Func::topicExists($web, $eachPl)) { (undef, $planText) = TWiki::Func::readTopic($web, $eachPl); *************** *** 1169,1183 **** my $doneDays = 0; my $inProgressDays = 0; my $waitingDays; foreach $line (split(/\n/, $planText)) { if ($line =~ /.*\|\s*PPTASK\s*\|.*/) { - $totalTasks++; my @plantask = split(/\|/, $line); $totalDays += int $plantask[$col_estdays]; $projModuleTotal{$plantask[$col_module]} += int $plantask[$col_estdays]; $prioTotal{$plantask[$col_priority]} += int $plantask[$col_estdays]; ! if (($plantask[$col_status] =~ /.*[d|D]one.*/) ! || ($plantask[$col_status] =~ /.*[c|C]ancelled.*/)) { $doneTasks++; #assume spent days not accurate sp Spent=Est $doneDays += int $plantask[$col_estdays]; --- 1172,1210 ---- my $doneDays = 0; my $inProgressDays = 0; my $waitingDays; + my $remainingDays; foreach $line (split(/\n/, $planText)) { if ($line =~ /.*\|\s*PPTASK\s*\|.*/) { my @plantask = split(/\|/, $line); + if ($plantask[$col_status] =~ /.*[c|C]ancelled.*/) { + next; # cancelled tasks aren't progress! + } + $totalTasks++; $totalDays += int $plantask[$col_estdays]; $projModuleTotal{$plantask[$col_module]} += int $plantask[$col_estdays]; $prioTotal{$plantask[$col_priority]} += int $plantask[$col_estdays]; ! # ! # Calculate the remaining days. For completed ! # tasks, this will be zero. ! # ! ! if (!(($plantask[$col_status] =~ /.*[d|D]one.*/) ! || ($plantask[$col_status] =~ /.*[c|C]ancelled.*/))) ! { ! if ($plantask[$col_spentdays] < ! $plantask[$col_estdays] ) ! { ! my $newRem += $plantask[$col_estdays] ! - $plantask[$col_spentdays]; ! $remainingDays += $newRem; ! $projModuleRem{$plantask[$col_module]} += ! $newRem; ! $prioRem{$plantask[$col_priority]} += ! $newRem; ! } ! } ! ! if ($plantask[$col_status] =~ /.*[d|D]one.*/) { $doneTasks++; #assume spent days not accurate sp Spent=Est $doneDays += int $plantask[$col_estdays]; *************** *** 1221,1233 **** $list .= "| $doneTasks| $totalTasks|"; $list .= gaugeFour($daysDonePer, $daysWaitingPer, $daysInProgressPer); my $totalSpentDays = int ($doneDays + $inProgressDays + $waitingDays); ! $list .= "| $totalSpentDays| $totalDays| \n"; #collect stats for full project $projDoneTasks += $doneTasks; $projTotalTasks += $totalTasks; $projEstDays += $totalDays; $projSpentDays += $totalSpentDays; } else { $list .= "|$eachPl | | | | | | | | \n"; } --- 1248,1261 ---- $list .= "| $doneTasks| $totalTasks|"; $list .= gaugeFour($daysDonePer, $daysWaitingPer, $daysInProgressPer); my $totalSpentDays = int ($doneDays + $inProgressDays + $waitingDays); ! $list .= "| $totalSpentDays| $totalDays| $remainingDays | \n"; #collect stats for full project $projDoneTasks += $doneTasks; $projTotalTasks += $totalTasks; $projEstDays += $totalDays; $projSpentDays += $totalSpentDays; + $projRemainingDays += $remainingDays; } else { $list .= "|$eachPl | | | | | | | | \n"; } *************** *** 1238,1252 **** $projSpentPer = int (100.0 * $projSpentDays / $projEstDays); } $list .= gaugeLite($projSpentPer); ! $list .= "| Total Spent: $projSpentDays| Total Estimated: $projEstDays| \n"; # Build list of modules with data my %mods; foreach my $m (keys %projModuleDone) { $mods{$m} = 1;} foreach my $m (keys %projModuleInP) { $mods{$m} = 1; } foreach my $m (keys %projModuleWait) { $mods{$m} = 1; } foreach my $m (keys %projModuleNS) { $mods{$m} = 1; } ! $list .= "| | | | | *Module* | | | |\n"; foreach my $m (keys %mods) { my $done = 0; --- 1266,1281 ---- $projSpentPer = int (100.0 * $projSpentDays / $projEstDays); } $list .= gaugeLite($projSpentPer); ! $list .= "| Total Spent: $projSpentDays| Total Estimated: $projEstDays| Total Remaining: $projRemainingDays | \n"; # Build list of modules with data my %mods; foreach my $m (keys %projModuleDone) { $mods{$m} = 1;} foreach my $m (keys %projModuleInP) { $mods{$m} = 1; } foreach my $m (keys %projModuleWait) { $mods{$m} = 1; } foreach my $m (keys %projModuleNS) { $mods{$m} = 1; } + foreach my $m (keys %projModuleRem) { $mods{$m} = 1; } ! $list .= "| | | | | *Module* | | | | |\n"; foreach my $m (keys %mods) { my $done = 0; *************** *** 1255,1260 **** --- 1284,1290 ---- $wait += $projModuleWait{$m}; my $inP = 0; $inP += $projModuleInP{$m}; + my $remaining = int $projModuleRem{$m}; my $total = 0; $total = int $projModuleTotal{$m}; my $spent = $done + $wait + $inP; *************** *** 1264,1270 **** my $inPper = int ($inP*100 / $total); $list .= "| | | | | $m |"; $list .= gaugeFour($doneper, $waitper, $inPper); ! $list .= "| $spent| $total| \n"; } } --- 1294,1300 ---- my $inPper = int ($inP*100 / $total); $list .= "| | | | | $m |"; $list .= gaugeFour($doneper, $waitper, $inPper); ! $list .= "| $spent| $total| $remaining| \n"; } } *************** *** 1274,1280 **** foreach my $p (keys %prioInP) { $prios{$p} = 1; } foreach my $p (keys %prioWait) { $prios{$p} = 1; } foreach my $p (keys %prioNS) { $prios{$p} = 1; } ! $list .= "| | | | | *Priority* | | | |\n"; foreach my $p (keys %prios) { my $done = 0; $done += $prioDone{$p}; --- 1304,1311 ---- foreach my $p (keys %prioInP) { $prios{$p} = 1; } foreach my $p (keys %prioWait) { $prios{$p} = 1; } foreach my $p (keys %prioNS) { $prios{$p} = 1; } ! foreach my $p (keys %prioRem) { $prios{$p} = 1; } ! $list .= "| | | | | *Priority* | | | | |\n"; foreach my $p (keys %prios) { my $done = 0; $done += $prioDone{$p}; *************** *** 1282,1287 **** --- 1313,1319 ---- $wait += $prioWait{$p}; my $inP = 0; $inP += $prioInP{$p}; + my $remaining = $prioRem{$p}; my $total = 0; $total = int $prioTotal{$p}; my $spent = $done + $wait + $inP; *************** *** 1291,1297 **** my $inPper = int ($inP*100 / $total); $list .= "| | | | | $p |"; $list .= gaugeFour($doneper, $waitper, $inPper); ! $list .= "| $spent| $total| \n"; } } --- 1323,1329 ---- my $inPper = int ($inP*100 / $total); $list .= "| | | | | $p |"; $list .= gaugeFour($doneper, $waitper, $inPper); ! $list .= "| $spent| $total| $remaining| \n"; } }