mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 08:52:39 +01:00
Remove unreachable DifferentialRevisionStatsView
Summary: Ref T2222. I wiped out the Differential-specific stats page a long time ago, but missed this. It turned up recently in `grep`. Facts will eventually fill this role; this code is unreachable; it probably doesn't work now and definitely won't work in a day or two after ApplicationTransactions. Test Plan: Used `grep` to look for callsites. Reviewers: btrahan, chad Reviewed By: btrahan CC: aran Maniphest Tasks: T2222 Differential Revision: https://secure.phabricator.com/D8208
This commit is contained in:
parent
3a252fc311
commit
143b89286a
2 changed files with 0 additions and 205 deletions
|
@ -452,7 +452,6 @@ phutil_register_library_map(array(
|
||||||
'DifferentialRevisionMailReceiver' => 'applications/differential/mail/DifferentialRevisionMailReceiver.php',
|
'DifferentialRevisionMailReceiver' => 'applications/differential/mail/DifferentialRevisionMailReceiver.php',
|
||||||
'DifferentialRevisionQuery' => 'applications/differential/query/DifferentialRevisionQuery.php',
|
'DifferentialRevisionQuery' => 'applications/differential/query/DifferentialRevisionQuery.php',
|
||||||
'DifferentialRevisionSearchEngine' => 'applications/differential/query/DifferentialRevisionSearchEngine.php',
|
'DifferentialRevisionSearchEngine' => 'applications/differential/query/DifferentialRevisionSearchEngine.php',
|
||||||
'DifferentialRevisionStatsView' => 'applications/differential/view/DifferentialRevisionStatsView.php',
|
|
||||||
'DifferentialRevisionStatus' => 'applications/differential/constants/DifferentialRevisionStatus.php',
|
'DifferentialRevisionStatus' => 'applications/differential/constants/DifferentialRevisionStatus.php',
|
||||||
'DifferentialRevisionStatusFieldSpecification' => 'applications/differential/field/specification/DifferentialRevisionStatusFieldSpecification.php',
|
'DifferentialRevisionStatusFieldSpecification' => 'applications/differential/field/specification/DifferentialRevisionStatusFieldSpecification.php',
|
||||||
'DifferentialRevisionUpdateHistoryView' => 'applications/differential/view/DifferentialRevisionUpdateHistoryView.php',
|
'DifferentialRevisionUpdateHistoryView' => 'applications/differential/view/DifferentialRevisionUpdateHistoryView.php',
|
||||||
|
@ -2972,7 +2971,6 @@ phutil_register_library_map(array(
|
||||||
'DifferentialRevisionMailReceiver' => 'PhabricatorObjectMailReceiver',
|
'DifferentialRevisionMailReceiver' => 'PhabricatorObjectMailReceiver',
|
||||||
'DifferentialRevisionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'DifferentialRevisionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'DifferentialRevisionSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'DifferentialRevisionSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'DifferentialRevisionStatsView' => 'AphrontView',
|
|
||||||
'DifferentialRevisionStatusFieldSpecification' => 'DifferentialFieldSpecification',
|
'DifferentialRevisionStatusFieldSpecification' => 'DifferentialFieldSpecification',
|
||||||
'DifferentialRevisionUpdateHistoryView' => 'AphrontView',
|
'DifferentialRevisionUpdateHistoryView' => 'AphrontView',
|
||||||
'DifferentialRevisionViewController' => 'DifferentialController',
|
'DifferentialRevisionViewController' => 'DifferentialController',
|
||||||
|
|
|
@ -1,203 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Render some distracting statistics on revisions
|
|
||||||
*/
|
|
||||||
final class DifferentialRevisionStatsView extends AphrontView {
|
|
||||||
private $comments;
|
|
||||||
private $revisions;
|
|
||||||
private $diffs;
|
|
||||||
private $filter;
|
|
||||||
|
|
||||||
public function setRevisions(array $revisions) {
|
|
||||||
assert_instances_of($revisions, 'DifferentialRevision');
|
|
||||||
$this->revisions = $revisions;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setComments(array $comments) {
|
|
||||||
assert_instances_of($comments, 'DifferentialComment');
|
|
||||||
$this->comments = $comments;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setDiffs(array $diffs) {
|
|
||||||
assert_instances_of($diffs, 'DifferentialDiff');
|
|
||||||
$this->diffs = $diffs;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setFilter($filter) {
|
|
||||||
$this->filter = $filter;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function render() {
|
|
||||||
$user = $this->user;
|
|
||||||
if (!$user) {
|
|
||||||
throw new Exception("Call setUser() before render()!");
|
|
||||||
}
|
|
||||||
|
|
||||||
$id_to_revision_map = array();
|
|
||||||
foreach ($this->revisions as $rev) {
|
|
||||||
$id_to_revision_map[$rev->getID()] = $rev;
|
|
||||||
}
|
|
||||||
$revisions_seen = array();
|
|
||||||
|
|
||||||
$dates = array();
|
|
||||||
$counts = array();
|
|
||||||
$days_with_diffs = array();
|
|
||||||
$count_active = array();
|
|
||||||
$response_time = array();
|
|
||||||
$response_count = array();
|
|
||||||
$now = time();
|
|
||||||
$row_array = array();
|
|
||||||
|
|
||||||
foreach (array(
|
|
||||||
'1 week', '2 weeks', '3 weeks',
|
|
||||||
'1 month', '2 months', '3 months', '6 months', '9 months',
|
|
||||||
'1 year', '18 months',
|
|
||||||
'2 years', '3 years', '4 years', '5 years',
|
|
||||||
) as $age) {
|
|
||||||
$dates[$age] = strtotime($age . ' ago 23:59:59');
|
|
||||||
$counts[$age] = 0;
|
|
||||||
$count_active[$age] = 0;
|
|
||||||
$response_time[$age] = array();
|
|
||||||
}
|
|
||||||
|
|
||||||
$revision_diffs_map = mgroup($this->diffs, 'getRevisionID');
|
|
||||||
foreach ($revision_diffs_map as $revision_id => $diffs) {
|
|
||||||
$revision_diffs_map[$revision_id] = msort($diffs, 'getID');
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($this->comments as $comment) {
|
|
||||||
$comment_date = $comment->getDateCreated();
|
|
||||||
|
|
||||||
$day = phabricator_date($comment_date, $user);
|
|
||||||
$old_daycount = idx($days_with_diffs, $day, 0);
|
|
||||||
$days_with_diffs[$day] = $old_daycount + 1;
|
|
||||||
|
|
||||||
$rev_id = $comment->getRevisionID();
|
|
||||||
|
|
||||||
if (idx($revisions_seen, $rev_id)) {
|
|
||||||
$revision_seen = true;
|
|
||||||
$rev = null;
|
|
||||||
} else {
|
|
||||||
$revision_seen = false;
|
|
||||||
$rev = $id_to_revision_map[$rev_id];
|
|
||||||
$revisions_seen[$rev_id] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($dates as $age => $cutoff) {
|
|
||||||
if ($cutoff >= $comment_date) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$revision_seen) {
|
|
||||||
$counts[$age]++;
|
|
||||||
if (!$old_daycount) {
|
|
||||||
$count_active[$age]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$diffs = $revision_diffs_map[$rev_id];
|
|
||||||
$target_diff = $this->findTargetDiff($diffs, $comment);
|
|
||||||
if ($target_diff) {
|
|
||||||
$response_time[$age][] =
|
|
||||||
$comment_date - $target_diff->getDateCreated();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$old_count = 0;
|
|
||||||
foreach (array_reverse($dates) as $age => $cutoff) {
|
|
||||||
$weeks = ceil(($now - $cutoff) / (60 * 60 * 24)) / 7;
|
|
||||||
if ($old_count == $counts[$age] && count($row_array) == 1) {
|
|
||||||
unset($dates[last_key($row_array)]);
|
|
||||||
$row_array = array();
|
|
||||||
}
|
|
||||||
$old_count = $counts[$age];
|
|
||||||
|
|
||||||
$row_array[$age] = array(
|
|
||||||
pht('Revisions per week') => number_format($counts[$age] / $weeks, 2),
|
|
||||||
pht('Active days per week') =>
|
|
||||||
number_format($count_active[$age] / $weeks, 1),
|
|
||||||
pht('Revisions') => number_format($counts[$age]),
|
|
||||||
pht('Active days') => number_format($count_active[$age]),
|
|
||||||
);
|
|
||||||
|
|
||||||
switch ($this->filter) {
|
|
||||||
case DifferentialAction::ACTION_CLOSE:
|
|
||||||
case DifferentialAction::ACTION_UPDATE:
|
|
||||||
case DifferentialAction::ACTION_COMMENT:
|
|
||||||
break;
|
|
||||||
case DifferentialAction::ACTION_ACCEPT:
|
|
||||||
case DifferentialAction::ACTION_REJECT:
|
|
||||||
$count = count($response_time[$age]);
|
|
||||||
if ($count) {
|
|
||||||
rsort($response_time[$age]);
|
|
||||||
$median = $response_time[$age][round($count / 2) - 1];
|
|
||||||
$average = array_sum($response_time[$age]) / $count;
|
|
||||||
} else {
|
|
||||||
$median = 0;
|
|
||||||
$average = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
$row_array[$age]['Response hours (median|average)'] =
|
|
||||||
number_format($median / 3600, 1).
|
|
||||||
' | '.
|
|
||||||
number_format($average / 3600, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$rows = array();
|
|
||||||
$row_names = array_keys(head($row_array));
|
|
||||||
foreach ($row_names as $row_name) {
|
|
||||||
$rows[] = array($row_name);
|
|
||||||
}
|
|
||||||
foreach (array_keys($dates) as $age) {
|
|
||||||
$i = 0;
|
|
||||||
foreach ($row_names as $row_name) {
|
|
||||||
$rows[$i][] = idx(idx($row_array, $age), $row_name, '-');
|
|
||||||
++$i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$table = new AphrontTableView($rows);
|
|
||||||
$table->setColumnClasses(
|
|
||||||
array(
|
|
||||||
'wide pri',
|
|
||||||
));
|
|
||||||
|
|
||||||
$table->setHeaders(
|
|
||||||
array_merge(
|
|
||||||
array(
|
|
||||||
'Metric',
|
|
||||||
),
|
|
||||||
array_keys($dates)));
|
|
||||||
|
|
||||||
return $table->render();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function findTargetDiff(array $diffs,
|
|
||||||
DifferentialComment $comment) {
|
|
||||||
switch ($this->filter) {
|
|
||||||
case DifferentialAction::ACTION_CLOSE:
|
|
||||||
case DifferentialAction::ACTION_UPDATE:
|
|
||||||
case DifferentialAction::ACTION_COMMENT:
|
|
||||||
return null;
|
|
||||||
case DifferentialAction::ACTION_ACCEPT:
|
|
||||||
case DifferentialAction::ACTION_REJECT:
|
|
||||||
$result = head($diffs);
|
|
||||||
foreach ($diffs as $diff) {
|
|
||||||
if ($diff->getDateCreated() >= $comment->getDateCreated()) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
$result = $diff;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue