Page MenuHomePhabricator

D14951.diff
No OneTemporary

D14951.diff

diff --git a/src/applications/diffusion/controller/DiffusionRepositoryController.php b/src/applications/diffusion/controller/DiffusionRepositoryController.php
--- a/src/applications/diffusion/controller/DiffusionRepositoryController.php
+++ b/src/applications/diffusion/controller/DiffusionRepositoryController.php
@@ -223,7 +223,12 @@
if (!$repository->isTracked()) {
$header->setStatus('fa-ban', 'dark', pht('Inactive'));
} else if ($repository->isImporting()) {
- $header->setStatus('fa-clock-o', 'indigo', pht('Importing...'));
+ $ratio = $repository->loadImportProgress();
+ $percentage = sprintf('%.2f%%', 100 * $ratio);
+ $header->setStatus(
+ 'fa-clock-o',
+ 'indigo',
+ pht('Importing (%s)...', $percentage));
} else {
$header->setStatus('fa-check', 'bluegrey', pht('Active'));
}
diff --git a/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php b/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
--- a/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
+++ b/src/applications/diffusion/controller/DiffusionRepositoryEditMainController.php
@@ -1137,45 +1137,8 @@
}
if ($repository->isImporting()) {
- $progress = queryfx_all(
- $repository->establishConnection('r'),
- 'SELECT importStatus, count(*) N FROM %T WHERE repositoryID = %d
- GROUP BY importStatus',
- id(new PhabricatorRepositoryCommit())->getTableName(),
- $repository->getID());
-
- $done = 0;
- $total = 0;
- foreach ($progress as $row) {
- $total += $row['N'] * 4;
- $status = $row['importStatus'];
- if ($status & PhabricatorRepositoryCommit::IMPORTED_MESSAGE) {
- $done += $row['N'];
- }
- if ($status & PhabricatorRepositoryCommit::IMPORTED_CHANGE) {
- $done += $row['N'];
- }
- if ($status & PhabricatorRepositoryCommit::IMPORTED_OWNERS) {
- $done += $row['N'];
- }
- if ($status & PhabricatorRepositoryCommit::IMPORTED_HERALD) {
- $done += $row['N'];
- }
- }
-
- if ($total) {
- $percentage = 100 * ($done / $total);
- } else {
- $percentage = 0;
- }
-
- // Cap this at "99.99%", because it's confusing to users when the actual
- // fraction is "99.996%" and it rounds up to "100.00%".
- if ($percentage > 99.99) {
- $percentage = 99.99;
- }
-
- $percentage = sprintf('%.2f%%', $percentage);
+ $ratio = $repository->loadImportProgress();
+ $percentage = sprintf('%.2f%%', 100 * $ratio);
$view->addItem(
id(new PHUIStatusItemView())
diff --git a/src/applications/repository/query/PhabricatorRepositorySearchEngine.php b/src/applications/repository/query/PhabricatorRepositorySearchEngine.php
--- a/src/applications/repository/query/PhabricatorRepositorySearchEngine.php
+++ b/src/applications/repository/query/PhabricatorRepositorySearchEngine.php
@@ -205,7 +205,7 @@
$item->setDisabled(true);
$item->addIcon('disable-grey', pht('Inactive'));
} else if ($repository->isImporting()) {
- $item->addIcon('fa-clock-o violet', pht('Importing...'));
+ $item->addIcon('fa-clock-o indigo', pht('Importing...'));
}
$list->addItem($item);
diff --git a/src/applications/repository/storage/PhabricatorRepository.php b/src/applications/repository/storage/PhabricatorRepository.php
--- a/src/applications/repository/storage/PhabricatorRepository.php
+++ b/src/applications/repository/storage/PhabricatorRepository.php
@@ -867,6 +867,47 @@
return (bool)$this->getDetail('importing', false);
}
+ public function loadImportProgress() {
+ $progress = queryfx_all(
+ $this->establishConnection('r'),
+ 'SELECT importStatus, count(*) N FROM %T WHERE repositoryID = %d
+ GROUP BY importStatus',
+ id(new PhabricatorRepositoryCommit())->getTableName(),
+ $this->getID());
+
+ $done = 0;
+ $total = 0;
+ foreach ($progress as $row) {
+ $total += $row['N'] * 4;
+ $status = $row['importStatus'];
+ if ($status & PhabricatorRepositoryCommit::IMPORTED_MESSAGE) {
+ $done += $row['N'];
+ }
+ if ($status & PhabricatorRepositoryCommit::IMPORTED_CHANGE) {
+ $done += $row['N'];
+ }
+ if ($status & PhabricatorRepositoryCommit::IMPORTED_OWNERS) {
+ $done += $row['N'];
+ }
+ if ($status & PhabricatorRepositoryCommit::IMPORTED_HERALD) {
+ $done += $row['N'];
+ }
+ }
+
+ if ($total) {
+ $ratio = ($done / $total);
+ } else {
+ $ratio = 0;
+ }
+
+ // Cap this at "99.99%", because it's confusing to users when the actual
+ // fraction is "99.996%" and it rounds up to "100.00%".
+ if ($ratio > 0.9999) {
+ $ratio = 0.9999;
+ }
+
+ return $ratio;
+ }
/**
* Should this repository publish feed, notifications, audits, and email?

File Metadata

Mime Type
text/plain
Expires
Mar 14 2025, 1:56 AM (5 w, 18 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7640377
Default Alt Text
D14951.diff (4 KB)

Event Timeline