Page MenuHomePhabricator

D21390.diff
No OneTemporary

D21390.diff

diff --git a/src/repository/graph/view/ArcanistCommitGraphSetView.php b/src/repository/graph/view/ArcanistCommitGraphSetView.php
--- a/src/repository/graph/view/ArcanistCommitGraphSetView.php
+++ b/src/repository/graph/view/ArcanistCommitGraphSetView.php
@@ -253,7 +253,6 @@
private function drawMarkerCell(array $items) {
$api = $this->getRepositoryAPI();
- $depth = $this->getViewDepth();
$marker_refs = $this->getMarkerRefs();
$commit_refs = $this->getCommitRefs();
@@ -276,54 +275,120 @@
substr($max->getCommitHash(), 0, 7));
}
+ $member_views = $this->getMemberViews();
+ $member_count = count($member_views);
+ if ($member_count > 1) {
+ $items[] = array(
+ 'group' => $member_views,
+ );
+ }
+
$terminal_width = phutil_console_get_terminal_width();
$max_depth = (int)floor(3 + (max(0, $terminal_width - 72) / 6));
+
+ $depth = $this->getViewDepth();
+
if ($depth <= $max_depth) {
- $indent = str_repeat(' ', ($depth * 2));
+ $display_depth = ($depth * 2);
+ $is_squished = false;
} else {
- $more = ' ... ';
- $indent = str_repeat(' ', ($max_depth * 2) - strlen($more)).$more;
+ $display_depth = ($max_depth * 2);
+ $is_squished = true;
}
- $indent .= '- ';
-
- $empty_indent = str_repeat(' ', strlen($indent));
$max_width = ($max_depth * 2) + 16;
- $available_width = $max_width - (min($max_depth, $depth) * 2);
+ $available_width = $max_width - $display_depth;
+
+ $mark_ne = "\xE2\x94\x97";
+ $mark_ew = "\xE2\x94\x81";
+ $mark_esw = "\xE2\x94\xB3";
+ $mark_sw = "\xE2\x94\x93";
+ $mark_bullet = "\xE2\x80\xA2";
+ $mark_ns_light = "\xE2\x94\x82";
+ $mark_ne_light = "\xE2\x94\x94";
+ $mark_esw_light = "\xE2\x94\xAF";
+
+ $has_children = $this->getChildViews();
$is_first = true;
+ $last_key = last_key($items);
$cell = array();
- foreach ($items as $item) {
+ foreach ($items as $item_key => $item) {
$marker_ref = idx($item, 'marker');
+ $group_ref = idx($item, 'group');
+
+ $is_last = ($item_key === $last_key);
if ($marker_ref) {
$marker_name = $marker_ref->getName();
+ $is_active = $marker_ref->getIsActive();
+
+ if ($is_active) {
+ $marker_width = $available_width - 4;
+ } else {
+ $marker_width = $available_width;
+ }
$marker_name = id(new PhutilUTF8StringTruncator())
- ->setMaximumGlyphs($available_width)
+ ->setMaximumGlyphs($marker_width)
->truncateString($marker_name);
if ($marker_ref->getIsActive()) {
$label = tsprintf(
- '<bg:green>**%s**</bg>',
+ '<bg:green>**%s**</bg> **%s**',
+ ' * ',
$marker_name);
} else {
$label = tsprintf(
'**%s**',
$marker_name);
}
+ } else if ($group_ref) {
+ $label = pht(
+ '(... %s more revisions ...)',
+ new PhutilNumber(count($group_ref) - 1));
} else if ($is_first) {
$label = $commit_label;
} else {
$label = '';
}
+ if ($display_depth > 2) {
+ $indent = str_repeat(' ', $display_depth - 2);
+ } else {
+ $indent = '';
+ }
+
if ($is_first) {
- $indent_text = $indent;
+ if ($display_depth === 0) {
+ $path = $mark_bullet.' ';
+ } else {
+ if ($has_children) {
+ $path = $mark_ne.$mark_ew.$mark_esw.' ';
+ } else if (!$is_last) {
+ $path = $mark_ne.$mark_ew.$mark_esw_light.' ';
+ } else {
+ $path = $mark_ne.$mark_ew.$mark_ew.' ';
+ }
+ }
+ } else if ($group_ref) {
+ $path = $mark_ne.'/'.$mark_sw.' ';
} else {
- $indent_text = $empty_indent;
+ if ($is_last && !$has_children) {
+ $path = $mark_ne_light.' ';
+ } else {
+ $path = $mark_ns_light.' ';
+ }
+ if ($display_depth > 0) {
+ $path = ' '.$path;
+ }
}
+ $indent_text = sprintf(
+ '%s%s',
+ $indent,
+ $path);
+
$cell[] = tsprintf(
"%s%s\n",
$indent_text,
@@ -332,17 +397,6 @@
$is_first = false;
}
- $member_views = $this->getMemberViews();
- $member_count = count($member_views);
- if ($member_count > 1) {
- $cell[] = tsprintf(
- "%s%s\n",
- $empty_indent,
- pht(
- '- <... %s more revisions ...>',
- new PhutilNumber($member_count - 1)));
- }
-
return $cell;
}

File Metadata

Mime Type
text/plain
Expires
Thu, Nov 28, 6:15 PM (2 h, 35 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6801686
Default Alt Text
D21390.diff (4 KB)

Event Timeline