1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 00:32:42 +01:00

Improve rendering of history graph in "CommitGraphView"

Summary: Ref T13552. In the new combined "table/list" graph view, tidy up the graph rendering.

Test Plan: {F7633504}

Maniphest Tasks: T13552

Differential Revision: https://secure.phabricator.com/D21411
This commit is contained in:
epriestley 2020-07-10 11:41:59 -07:00
parent 46695c76eb
commit 9fa2525384
5 changed files with 71 additions and 38 deletions

View file

@ -15,7 +15,7 @@ return array(
'differential.pkg.css' => '5c459f92', 'differential.pkg.css' => '5c459f92',
'differential.pkg.js' => '218fda21', 'differential.pkg.js' => '218fda21',
'diffusion.pkg.css' => '42c75c37', 'diffusion.pkg.css' => '42c75c37',
'diffusion.pkg.js' => 'a98c0bf7', 'diffusion.pkg.js' => '8ee48a4b',
'maniphest.pkg.css' => '35995d6d', 'maniphest.pkg.css' => '35995d6d',
'maniphest.pkg.js' => 'c9308721', 'maniphest.pkg.js' => 'c9308721',
'rsrc/audio/basic/alert.mp3' => '17889334', 'rsrc/audio/basic/alert.mp3' => '17889334',
@ -73,7 +73,7 @@ return array(
'rsrc/css/application/diffusion/diffusion-icons.css' => '23b31a1b', 'rsrc/css/application/diffusion/diffusion-icons.css' => '23b31a1b',
'rsrc/css/application/diffusion/diffusion-readme.css' => 'b68a76e4', 'rsrc/css/application/diffusion/diffusion-readme.css' => 'b68a76e4',
'rsrc/css/application/diffusion/diffusion-repository.css' => 'b89e8c6c', 'rsrc/css/application/diffusion/diffusion-repository.css' => 'b89e8c6c',
'rsrc/css/application/diffusion/diffusion.css' => 'b54c77b0', 'rsrc/css/application/diffusion/diffusion.css' => 'a54bb336',
'rsrc/css/application/feed/feed.css' => 'd8b6e3f8', 'rsrc/css/application/feed/feed.css' => 'd8b6e3f8',
'rsrc/css/application/files/global-drag-and-drop.css' => '1d2713a4', 'rsrc/css/application/files/global-drag-and-drop.css' => '1d2713a4',
'rsrc/css/application/flag/flag.css' => '2b77be8d', 'rsrc/css/application/flag/flag.css' => '2b77be8d',
@ -390,7 +390,7 @@ return array(
'rsrc/js/application/diffusion/ExternalEditorLinkEngine.js' => '48a8641f', 'rsrc/js/application/diffusion/ExternalEditorLinkEngine.js' => '48a8641f',
'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'b7b73831', 'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'b7b73831',
'rsrc/js/application/diffusion/behavior-commit-branches.js' => '4b671572', 'rsrc/js/application/diffusion/behavior-commit-branches.js' => '4b671572',
'rsrc/js/application/diffusion/behavior-commit-graph.js' => 'ef836bf2', 'rsrc/js/application/diffusion/behavior-commit-graph.js' => '3be6ef4f',
'rsrc/js/application/diffusion/behavior-locate-file.js' => '87428eb2', 'rsrc/js/application/diffusion/behavior-locate-file.js' => '87428eb2',
'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'c715c123', 'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'c715c123',
'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '6a85bc5a', 'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '6a85bc5a',
@ -567,7 +567,7 @@ return array(
'differential-revision-history-css' => '8aa3eac5', 'differential-revision-history-css' => '8aa3eac5',
'differential-revision-list-css' => '93d2df7d', 'differential-revision-list-css' => '93d2df7d',
'differential-table-of-contents-css' => 'bba788b9', 'differential-table-of-contents-css' => 'bba788b9',
'diffusion-css' => 'b54c77b0', 'diffusion-css' => 'a54bb336',
'diffusion-icons-css' => '23b31a1b', 'diffusion-icons-css' => '23b31a1b',
'diffusion-readme-css' => 'b68a76e4', 'diffusion-readme-css' => 'b68a76e4',
'diffusion-repository-css' => 'b89e8c6c', 'diffusion-repository-css' => 'b89e8c6c',
@ -615,7 +615,7 @@ return array(
'javelin-behavior-differential-diff-radios' => '925fe8cd', 'javelin-behavior-differential-diff-radios' => '925fe8cd',
'javelin-behavior-differential-populate' => 'b86ef6c2', 'javelin-behavior-differential-populate' => 'b86ef6c2',
'javelin-behavior-diffusion-commit-branches' => '4b671572', 'javelin-behavior-diffusion-commit-branches' => '4b671572',
'javelin-behavior-diffusion-commit-graph' => 'ef836bf2', 'javelin-behavior-diffusion-commit-graph' => '3be6ef4f',
'javelin-behavior-diffusion-locate-file' => '87428eb2', 'javelin-behavior-diffusion-locate-file' => '87428eb2',
'javelin-behavior-diffusion-pull-lastmodified' => 'c715c123', 'javelin-behavior-diffusion-pull-lastmodified' => 'c715c123',
'javelin-behavior-document-engine' => '243d6c22', 'javelin-behavior-document-engine' => '243d6c22',
@ -1249,6 +1249,11 @@ return array(
'javelin-behavior', 'javelin-behavior',
'phabricator-prefab', 'phabricator-prefab',
), ),
'3be6ef4f' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
),
'3dc5ad43' => array( '3dc5ad43' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-stratcom', 'javelin-stratcom',
@ -2173,11 +2178,6 @@ return array(
'ee77366f' => array( 'ee77366f' => array(
'aphront-dialog-view-css', 'aphront-dialog-view-css',
), ),
'ef836bf2' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
),
'f340a484' => array( 'f340a484' => array(
'javelin-install', 'javelin-install',
'javelin-dom', 'javelin-dom',

View file

@ -82,13 +82,9 @@ final class DiffusionCommitGraphView
} }
public function render() { public function render() {
$viewer = $this->getUser(); $viewer = $this->getViewer();
$drequest = $this->getDiffusionRequest();
$repository = $drequest->getRepository();
require_celerity_resource('diffusion-css'); require_celerity_resource('diffusion-css');
Javelin::initBehavior('phabricator-tooltips');
$show_builds = $this->shouldShowBuilds(); $show_builds = $this->shouldShowBuilds();
$show_revisions = $this->shouldShowRevisions(); $show_revisions = $this->shouldShowRevisions();
@ -107,13 +103,18 @@ final class DiffusionCommitGraphView
$item_date = phabricator_date($item_epoch, $viewer); $item_date = phabricator_date($item_epoch, $viewer);
if ($item_date !== $last_date) { if ($item_date !== $last_date) {
$last_date = $item_date; $last_date = $item_date;
$content[] = $item_date; $content[] = phutil_tag(
'div',
array(
'class' => 'diffusion-commit-graph-date-header',
),
$item_date);
} }
$commit_description = $this->getCommitDescription($commit); $commit_description = $this->getCommitDescription($commit);
$commit_link = $this->getCommitURI($commit, $item_hash); $commit_link = $this->getCommitURI($item_hash);
$short_hash = $this->getCommitObjectName($commit, $item_hash); $short_hash = $this->getCommitObjectName($item_hash);
$is_disabled = $this->getCommitIsDisabled($commit); $is_disabled = $this->getCommitIsDisabled($commit);
$author_view = $this->getCommitAuthorView($commit); $author_view = $this->getCommitAuthorView($commit);
@ -156,29 +157,38 @@ final class DiffusionCommitGraphView
$content[] = $view; $content[] = $view;
$rows[] = array( $rows[] = $content;
$content,
);
} }
$graph = $this->newGraphView(); $graph = $this->newGraphView();
if ($graph) { foreach ($rows as $idx => $row) {
$idx = 0;
foreach ($rows as $key => $row) {
array_unshift($row, $graph[$idx++]);
$rows[$key] = $row;
}
}
foreach ($rows as $key => $row) {
$cells = array(); $cells = array();
foreach ($row as $cell) {
$cells[] = phutil_tag('td', array(), $cell); if ($graph) {
$cells[] = phutil_tag(
'td',
array(
'class' => 'diffusion-commit-graph-path-cell',
),
$graph[$idx]);
} }
$rows[$key] = phutil_tag('tr', array(), $cells);
$cells[] = phutil_tag(
'td',
array(
'class' => 'diffusion-commit-graph-content-cell',
),
$row);
$rows[$idx] = phutil_tag('tr', array(), $cells);
} }
$table = phutil_tag('table', array(), $rows); $table = phutil_tag(
'table',
array(
'class' => 'diffusion-commit-graph-table',
),
$rows);
return $table; return $table;
} }
@ -275,17 +285,18 @@ final class DiffusionCommitGraphView
return $commit->getCommitData()->getSummary(); return $commit->getCommitData()->getSummary();
} }
private function getCommitURI($commit, $hash) { private function getCommitURI($hash) {
$repository = $this->getRepository(); $repository = $this->getRepository();
if ($repository) { if ($repository) {
return $repository->getCommitURI($hash); return $repository->getCommitURI($hash);
} }
$commit = $this->getCommit($hash);
return $commit->getURI(); return $commit->getURI();
} }
private function getCommitObjectName($commit, $hash) { private function getCommitObjectName($hash) {
$repository = $this->getRepository(); $repository = $this->getRepository();
if ($repository) { if ($repository) {
@ -294,6 +305,7 @@ final class DiffusionCommitGraphView
$is_local = true); $is_local = true);
} }
$commit = $this->getCommit($hash);
return $commit->getDisplayName(); return $commit->getDisplayName();
} }

View file

@ -205,6 +205,7 @@ final class PHUIDiffGraphView extends Phobject {
'diffusion-commit-graph', 'diffusion-commit-graph',
array( array(
'count' => $count, 'count' => $count,
'autoheight' => true,
)); ));
return $graph; return $graph;

View file

@ -237,3 +237,17 @@
border-right: none; border-right: none;
border-color: {$thinblueborder}; border-color: {$thinblueborder};
} }
.diffusion-commit-graph-table td.diffusion-commit-graph-path-cell {
padding: 0 4px 0 0;
}
.diffusion-commit-graph-table td.diffusion-commit-graph-path-cell > canvas {
display: block;
}
.diffusion-commit-graph-date-header {
color: {$darkgreytext};
font-weight: bold;
padding: 4px 0;
}

View file

@ -61,7 +61,13 @@ JX.behavior('diffusion-commit-graph', function(config) {
return (col * cell) + (cell / 2); return (col * cell) + (cell / 2);
}; };
var h = 34; var h;
if (config.autoheight) {
h = JX.Vector.getDim(nodes[ii].parentNode).y;
} else {
h = 34;
}
var w = cell * config.count; var w = cell * config.count;
var canvas = JX.$N('canvas', {width: w, height: h}); var canvas = JX.$N('canvas', {width: w, height: h});
@ -147,7 +153,7 @@ JX.behavior('diffusion-commit-graph', function(config) {
} }
} }
JX.DOM.setContent(nodes[ii], canvas); JX.DOM.replace(nodes[ii], canvas);
} }