diff --git a/src/applications/maniphest/controller/ManiphestReportController.php b/src/applications/maniphest/controller/ManiphestReportController.php --- a/src/applications/maniphest/controller/ManiphestReportController.php +++ b/src/applications/maniphest/controller/ManiphestReportController.php @@ -192,11 +192,6 @@ $data = array_values($data); $data = isort($data, 'dateCreated'); - $stats = array(); - $day_buckets = array(); - - $open_tasks = array(); - foreach ($data as $key => $row) { switch ($row['transactionType']) { case ManiphestTaskStatusTransaction::TRANSACTIONTYPE: @@ -230,157 +225,8 @@ $data[$key]['_is_open'] = $is_open; $data[$key]['_is_close'] = $is_close; - - if (!$is_open && !$is_close) { - // This is either some kind of bogus event, or a resolution change - // (e.g., resolved -> invalid). Just skip it. - continue; - } - - $day_bucket = phabricator_format_local_time( - $row['dateCreated'], - $viewer, - 'Yz'); - $day_buckets[$day_bucket] = $row['dateCreated']; - if (empty($stats[$day_bucket])) { - $stats[$day_bucket] = array( - 'open' => 0, - 'close' => 0, - ); - } - $stats[$day_bucket][$is_close ? 'close' : 'open']++; - } - - $template = array( - 'open' => 0, - 'close' => 0, - ); - - $rows = array(); - $rowc = array(); - $last_month = null; - $last_month_epoch = null; - $last_week = null; - $last_week_epoch = null; - $week = null; - $month = null; - - $last = last_key($stats) - 1; - $period = $template; - - foreach ($stats as $bucket => $info) { - $epoch = $day_buckets[$bucket]; - - $week_bucket = phabricator_format_local_time( - $epoch, - $viewer, - 'YW'); - if ($week_bucket != $last_week) { - if ($week) { - $rows[] = $this->formatBurnRow( - pht('Week of %s', phabricator_date($last_week_epoch, $viewer)), - $week); - $rowc[] = 'week'; - } - $week = $template; - $last_week = $week_bucket; - $last_week_epoch = $epoch; - } - - $month_bucket = phabricator_format_local_time( - $epoch, - $viewer, - 'Ym'); - if ($month_bucket != $last_month) { - if ($month) { - $rows[] = $this->formatBurnRow( - phabricator_format_local_time($last_month_epoch, $viewer, 'F, Y'), - $month); - $rowc[] = 'month'; - } - $month = $template; - $last_month = $month_bucket; - $last_month_epoch = $epoch; - } - - $rows[] = $this->formatBurnRow(phabricator_date($epoch, $viewer), $info); - $rowc[] = null; - $week['open'] += $info['open']; - $week['close'] += $info['close']; - $month['open'] += $info['open']; - $month['close'] += $info['close']; - $period['open'] += $info['open']; - $period['close'] += $info['close']; - } - - if ($week) { - $rows[] = $this->formatBurnRow( - pht('Week To Date'), - $week); - $rowc[] = 'week'; - } - - if ($month) { - $rows[] = $this->formatBurnRow( - pht('Month To Date'), - $month); - $rowc[] = 'month'; - } - - $rows[] = $this->formatBurnRow( - pht('All Time'), - $period); - $rowc[] = 'aggregate'; - - $rows = array_reverse($rows); - $rowc = array_reverse($rowc); - - $table = new AphrontTableView($rows); - $table->setRowClasses($rowc); - $table->setHeaders( - array( - pht('Period'), - pht('Opened'), - pht('Closed'), - pht('Change'), - )); - $table->setColumnClasses( - array( - 'right wide', - 'n', - 'n', - 'n', - )); - - if ($handle) { - $inst = pht( - 'NOTE: This table reflects tasks currently in '. - 'the project. If a task was opened in the past but added to '. - 'the project recently, it is counted on the day it was '. - 'opened, not the day it was categorized. If a task was part '. - 'of this project in the past but no longer is, it is not '. - 'counted at all. This table may not agree exactly with the chart '. - 'above.'); - $header = pht('Task Burn Rate for Project %s', $handle->renderLink()); - $caption = phutil_tag('p', array(), $inst); - } else { - $header = pht('Task Burn Rate for All Tasks'); - $caption = null; - } - - if ($caption) { - $caption = id(new PHUIInfoView()) - ->appendChild($caption) - ->setSeverity(PHUIInfoView::SEVERITY_NOTICE); } - $panel = new PHUIObjectBoxView(); - $panel->setHeaderText($header); - if ($caption) { - $panel->setInfoView($caption); - } - $panel->setTable($table); - $tokens = array(); if ($handle) { $tokens = array($handle); @@ -388,18 +234,6 @@ $filter = $this->renderReportFilters($tokens, $has_window = false); - $id = celerity_generate_unique_node_id(); - $chart = phutil_tag( - 'div', - array( - 'id' => $id, - 'style' => 'border: 1px solid #BFCFDA; '. - 'background-color: #fff; '. - 'margin: 8px 16px; '. - 'height: 400px; ', - ), - ''); - list($burn_x, $burn_y) = $this->buildSeries($data); if ($project_phid) { @@ -490,33 +324,7 @@ } /** - * @param $label string Time representation for the row, e.g. "Feb 29 2024", - * "All Time", "Week of May 10 2024", "Month To Date", etc. - * @param $info array open|close; number of tasks in timespan - * @return array Row text label; number - * of open tasks as string; number of closed tasks as string; - * PhutilSafeHTML such as "+144" - */ - private function formatBurnRow($label, $info) { - $delta = $info['open'] - $info['close']; - $fmt = number_format($delta); - if ($delta > 0) { - $fmt = '+'.$fmt; - $fmt = phutil_tag('span', array('class' => 'red'), $fmt); - } else { - $fmt = phutil_tag('span', array('class' => 'green'), $fmt); - } - - return array( - $label, - number_format($info['open']), - number_format($info['close']), - $fmt, - ); - } - - /** - * @return int 50 + * @return int 50, the default value of the default "normal" Priority */ private function getAveragePriority() { // TODO: This is sort of a hard-code for the default "normal" status.