mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-26 08:42:41 +01:00
Mobile Differential Diff Review (2-up)
Summary: This does two things - Modernizes Table of Contents - Makes Differential reasonable on mobile I say resonable, as you still have to scroll horizontal to see the entire diff. This is minor as the rest of the page is 100x more useful. A 1-up view would be preferred, but this is still an improvement. Test Plan: Used iOS simulator for browsing diffs. Reviewers: btrahan, epriestley Reviewed By: epriestley Subscribers: epriestley, Korvin, chad Differential Revision: https://secure.phabricator.com/D8681
This commit is contained in:
parent
c6cbff1997
commit
3005b7a7b1
6 changed files with 122 additions and 89 deletions
|
@ -10,7 +10,7 @@ return array(
|
||||||
'core.pkg.css' => 'fb144113',
|
'core.pkg.css' => 'fb144113',
|
||||||
'core.pkg.js' => 'd3fecc57',
|
'core.pkg.js' => 'd3fecc57',
|
||||||
'darkconsole.pkg.js' => 'ca8671ce',
|
'darkconsole.pkg.js' => 'ca8671ce',
|
||||||
'differential.pkg.css' => '3ad9692c',
|
'differential.pkg.css' => 'cc216438',
|
||||||
'differential.pkg.js' => '11a5b750',
|
'differential.pkg.js' => '11a5b750',
|
||||||
'diffusion.pkg.css' => '3783278d',
|
'diffusion.pkg.css' => '3783278d',
|
||||||
'diffusion.pkg.js' => '5b4010f4',
|
'diffusion.pkg.js' => '5b4010f4',
|
||||||
|
@ -55,13 +55,13 @@ return array(
|
||||||
'rsrc/css/application/countdown/timer.css' => '86b7b0a0',
|
'rsrc/css/application/countdown/timer.css' => '86b7b0a0',
|
||||||
'rsrc/css/application/diff/inline-comment-summary.css' => '14a91639',
|
'rsrc/css/application/diff/inline-comment-summary.css' => '14a91639',
|
||||||
'rsrc/css/application/differential/add-comment.css' => 'c478bcaa',
|
'rsrc/css/application/differential/add-comment.css' => 'c478bcaa',
|
||||||
'rsrc/css/application/differential/changeset-view.css' => 'e710a360',
|
'rsrc/css/application/differential/changeset-view.css' => 'd1951f43',
|
||||||
'rsrc/css/application/differential/core.css' => '7ac3cabc',
|
'rsrc/css/application/differential/core.css' => '7ac3cabc',
|
||||||
'rsrc/css/application/differential/results-table.css' => '239924f9',
|
'rsrc/css/application/differential/results-table.css' => '239924f9',
|
||||||
'rsrc/css/application/differential/revision-comment.css' => '48186045',
|
'rsrc/css/application/differential/revision-comment.css' => '48186045',
|
||||||
'rsrc/css/application/differential/revision-history.css' => '0e8eb855',
|
'rsrc/css/application/differential/revision-history.css' => '0e8eb855',
|
||||||
'rsrc/css/application/differential/revision-list.css' => 'f3c47d33',
|
'rsrc/css/application/differential/revision-list.css' => 'f3c47d33',
|
||||||
'rsrc/css/application/differential/table-of-contents.css' => '19566f76',
|
'rsrc/css/application/differential/table-of-contents.css' => '6bf8e1d2',
|
||||||
'rsrc/css/application/diffusion/commit-view.css' => '92d1e8f9',
|
'rsrc/css/application/diffusion/commit-view.css' => '92d1e8f9',
|
||||||
'rsrc/css/application/diffusion/diffusion-icons.css' => '384a0f7d',
|
'rsrc/css/application/diffusion/diffusion-icons.css' => '384a0f7d',
|
||||||
'rsrc/css/application/diffusion/diffusion-source.css' => '66fdf661',
|
'rsrc/css/application/diffusion/diffusion-source.css' => '66fdf661',
|
||||||
|
@ -505,7 +505,7 @@ return array(
|
||||||
'conpherence-notification-css' => '403cf598',
|
'conpherence-notification-css' => '403cf598',
|
||||||
'conpherence-update-css' => '1099a660',
|
'conpherence-update-css' => '1099a660',
|
||||||
'conpherence-widget-pane-css' => '87b12e0c',
|
'conpherence-widget-pane-css' => '87b12e0c',
|
||||||
'differential-changeset-view-css' => 'e710a360',
|
'differential-changeset-view-css' => 'd1951f43',
|
||||||
'differential-core-view-css' => '7ac3cabc',
|
'differential-core-view-css' => '7ac3cabc',
|
||||||
'differential-inline-comment-editor' => 'f2441746',
|
'differential-inline-comment-editor' => 'f2441746',
|
||||||
'differential-results-table-css' => '239924f9',
|
'differential-results-table-css' => '239924f9',
|
||||||
|
@ -513,7 +513,7 @@ return array(
|
||||||
'differential-revision-comment-css' => '48186045',
|
'differential-revision-comment-css' => '48186045',
|
||||||
'differential-revision-history-css' => '0e8eb855',
|
'differential-revision-history-css' => '0e8eb855',
|
||||||
'differential-revision-list-css' => 'f3c47d33',
|
'differential-revision-list-css' => 'f3c47d33',
|
||||||
'differential-table-of-contents-css' => '19566f76',
|
'differential-table-of-contents-css' => '6bf8e1d2',
|
||||||
'diffusion-commit-view-css' => '92d1e8f9',
|
'diffusion-commit-view-css' => '92d1e8f9',
|
||||||
'diffusion-icons-css' => '384a0f7d',
|
'diffusion-icons-css' => '384a0f7d',
|
||||||
'diffusion-source-css' => '66fdf661',
|
'diffusion-source-css' => '66fdf661',
|
||||||
|
|
|
@ -138,6 +138,7 @@ final class DifferentialDiffViewController extends DifferentialController {
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
'title' => pht('Diff View'),
|
'title' => pht('Diff View'),
|
||||||
|
'device' => true,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -447,6 +447,7 @@ final class DifferentialRevisionViewController extends DifferentialController {
|
||||||
array(
|
array(
|
||||||
'title' => $object_id.' '.$revision->getTitle(),
|
'title' => $object_id.' '.$revision->getTitle(),
|
||||||
'pageObjects' => array($revision->getPHID()),
|
'pageObjects' => array($revision->getPHID()),
|
||||||
|
'device' => true,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,7 @@ final class DifferentialDiffTableOfContentsView extends AphrontView {
|
||||||
|
|
||||||
$line_count = $changeset->getAffectedLineCount();
|
$line_count = $changeset->getAffectedLineCount();
|
||||||
if ($line_count == 0) {
|
if ($line_count == 0) {
|
||||||
$lines = null;
|
$lines = '';
|
||||||
} else {
|
} else {
|
||||||
$lines = ' '.pht('(%d line(s))', $line_count);
|
$lines = ' '.pht('(%d line(s))', $line_count);
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ final class DifferentialDiffTableOfContentsView extends AphrontView {
|
||||||
}
|
}
|
||||||
$pchar =
|
$pchar =
|
||||||
($changeset->getOldProperties() === $changeset->getNewProperties())
|
($changeset->getOldProperties() === $changeset->getNewProperties())
|
||||||
? null
|
? ''
|
||||||
: phutil_tag('span', array('title' => pht('Properties Changed')), 'M')
|
: phutil_tag('span', array('title' => pht('Properties Changed')), 'M')
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -150,33 +150,32 @@ final class DifferentialDiffTableOfContentsView extends AphrontView {
|
||||||
'id' => 'differential-mcoverage-'.md5($fname),
|
'id' => 'differential-mcoverage-'.md5($fname),
|
||||||
'class' => 'differential-mcoverage-loading',
|
'class' => 'differential-mcoverage-loading',
|
||||||
),
|
),
|
||||||
(isset($this->visibleChangesets[$id]) ? 'Loading...' : '?'));
|
(isset($this->visibleChangesets[$id]) ?
|
||||||
|
pht('Loading...') : pht('?')));
|
||||||
}
|
}
|
||||||
|
|
||||||
$rows[] = phutil_tag('tr', array(), array(
|
|
||||||
phutil_tag(
|
|
||||||
'td',
|
|
||||||
array('class' => 'differential-toc-char', 'title' => $chartitle),
|
|
||||||
$char),
|
|
||||||
phutil_tag('td', array('class' => 'differential-toc-prop'), $pchar),
|
|
||||||
phutil_tag('td', array('class' => 'differential-toc-ftype'), $desc),
|
|
||||||
phutil_tag(
|
|
||||||
'td',
|
|
||||||
array('class' => 'differential-toc-file'),
|
|
||||||
array($link, $lines)),
|
|
||||||
phutil_tag('td', array('class' => 'differential-toc-cov'), $cov),
|
|
||||||
phutil_tag('td', array('class' => 'differential-toc-mcov'), $mcov),
|
|
||||||
));
|
|
||||||
if ($meta) {
|
if ($meta) {
|
||||||
$rows[] = phutil_tag('tr', array(), array(
|
$meta = phutil_tag(
|
||||||
phutil_tag('td', array('colspan' => 3)),
|
'div',
|
||||||
phutil_tag('td', array('class' => 'differential-toc-meta'), $meta),
|
array(
|
||||||
));
|
'class' => 'differential-toc-meta'
|
||||||
|
),
|
||||||
|
$meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->diff && $this->repository) {
|
if ($this->diff && $this->repository) {
|
||||||
$paths[] =
|
$paths[] =
|
||||||
$changeset->getAbsoluteRepositoryPath($this->repository, $this->diff);
|
$changeset->getAbsoluteRepositoryPath($this->repository, $this->diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$rows[] = array(
|
||||||
|
$char,
|
||||||
|
$pchar,
|
||||||
|
$desc,
|
||||||
|
array($link, $lines, $meta),
|
||||||
|
$cov,
|
||||||
|
$mcov
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$editor_link = null;
|
$editor_link = null;
|
||||||
|
@ -206,37 +205,53 @@ final class DifferentialDiffTableOfContentsView extends AphrontView {
|
||||||
),
|
),
|
||||||
pht('Show All Context'));
|
pht('Show All Context'));
|
||||||
|
|
||||||
$buttons = phutil_tag('tr', array(),
|
$buttons = phutil_tag(
|
||||||
phutil_tag('td', array('colspan' => 7),
|
'div',
|
||||||
array($editor_link, $reveal_link)));
|
array(
|
||||||
|
'class' => 'differential-toc-buttons grouped'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
$editor_link,
|
||||||
|
$reveal_link
|
||||||
|
));
|
||||||
|
|
||||||
$content = hsprintf(
|
$table = id(new AphrontTableView($rows));
|
||||||
'%s'.
|
$table->setHeaders(
|
||||||
'<div class="differential-toc differential-panel">'.
|
array(
|
||||||
'<table>'.
|
'',
|
||||||
'<tr>'.
|
'',
|
||||||
'<th></th>'.
|
'',
|
||||||
'<th></th>'.
|
pht('Path'),
|
||||||
'<th></th>'.
|
|
||||||
'<th>Path</th>'.
|
|
||||||
'<th class="differential-toc-cov">%s</th>'.
|
|
||||||
'<th class="differential-toc-mcov">%s</th>'.
|
|
||||||
'</tr>'.
|
|
||||||
'%s%s'.
|
|
||||||
'</table>'.
|
|
||||||
'</div>',
|
|
||||||
id(new PhabricatorAnchorView())
|
|
||||||
->setAnchorName('toc')
|
|
||||||
->setNavigationMarker(true)
|
|
||||||
->render(),
|
|
||||||
pht('Coverage (All)'),
|
pht('Coverage (All)'),
|
||||||
pht('Coverage (Touched)'),
|
pht('Coverage (Touched)'),
|
||||||
phutil_implode_html("\n", $rows),
|
));
|
||||||
$buttons);
|
$table->setColumnClasses(
|
||||||
|
array(
|
||||||
|
'differential-toc-char center',
|
||||||
|
'differential-toc-prop center',
|
||||||
|
'differential-toc-ftype center',
|
||||||
|
'differential-toc-file wide',
|
||||||
|
'differential-toc-cov',
|
||||||
|
'differential-toc-cov',
|
||||||
|
));
|
||||||
|
$table->setDeviceVisibility(
|
||||||
|
array(
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
));
|
||||||
|
$anchor = id(new PhabricatorAnchorView())
|
||||||
|
->setAnchorName('toc')
|
||||||
|
->setNavigationMarker(true);
|
||||||
|
|
||||||
return id(new PHUIObjectBoxView())
|
return id(new PHUIObjectBoxView())
|
||||||
->setHeaderText(pht('Table of Contents'))
|
->setHeaderText(pht('Table of Contents'))
|
||||||
->appendChild($content);
|
->appendChild($anchor)
|
||||||
|
->appendChild($table)
|
||||||
|
->appendChild($buttons);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function renderRename($display_file, $other_file, $arrow) {
|
private function renderRename($display_file, $other_file, $arrow) {
|
||||||
|
|
|
@ -9,6 +9,10 @@
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.device-phone .differential-changeset {
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
.differential-diff {
|
.differential-diff {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -220,6 +224,12 @@ td.cov-X {
|
||||||
.differential-changeset h1 {
|
.differential-changeset h1 {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
padding: 2px 0 12px 12px;
|
padding: 2px 0 12px 12px;
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.device-phone .differential-changeset h1 {
|
||||||
|
word-break: break-word;
|
||||||
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.differential-reticle {
|
.differential-reticle {
|
||||||
|
@ -301,6 +311,11 @@ td.cov-X {
|
||||||
margin-right: 16px;
|
margin-right: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.device-phone .differential-changeset-buttons {
|
||||||
|
float: none;
|
||||||
|
margin: 0 0 8px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
.differential-changeset-buttons a.button {
|
.differential-changeset-buttons a.button {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
@ -455,3 +470,7 @@ tr.differential-inline-loading {
|
||||||
margin: 0 4px 2px 0;
|
margin: 0 4px 2px 0;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.device-phone .differential-file-icon-header .phui-icon-view {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
|
@ -3,26 +3,40 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.differential-toc-meta {
|
.differential-toc-meta {
|
||||||
color: {$greytext};
|
color: {$lightgreytext};
|
||||||
padding-left: 12px;
|
padding-top: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.differential-toc-char,
|
table.aphront-table-view td.differential-toc-char {
|
||||||
.differential-toc-prop {
|
padding-right: 0;
|
||||||
width: 16px;
|
|
||||||
text-align: center;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: {$darkbluetext};
|
color: {$darkbluetext};
|
||||||
}
|
}
|
||||||
|
|
||||||
.differential-toc-ftype {
|
table.aphront-table-view td.differential-toc-prop {
|
||||||
padding: 0 4px;
|
padding-left: 0;
|
||||||
text-align: center;
|
padding-right: 0;
|
||||||
color: {$greytext};
|
font-weight: bold;
|
||||||
|
color: {$darkbluetext};
|
||||||
|
}
|
||||||
|
|
||||||
|
table.aphront-table-view td.differential-toc-ftype {
|
||||||
|
padding-left: 0;
|
||||||
|
font-weight: bold;
|
||||||
|
color: {$darkbluetext};
|
||||||
}
|
}
|
||||||
|
|
||||||
.differential-toc-file {
|
.differential-toc-file {
|
||||||
color: {$greytext};
|
color: {$lightgreytext};
|
||||||
|
}
|
||||||
|
|
||||||
|
.device-phone .differential-toc-file {
|
||||||
|
word-break: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.differential-toc-cov {
|
||||||
|
color: {$darkbluetext};
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.differential-toc-reveal-all,
|
.differential-toc-reveal-all,
|
||||||
|
@ -36,43 +50,21 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.diff-star-okay {
|
.diff-star-okay {
|
||||||
color: #ff9700;
|
color: {$orange};
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: 'warn' and 'fail' are both red, but we can't make 'warn' yellow since
|
/* TODO: 'warn' and 'fail' are both red, but we can't make 'warn' yellow since
|
||||||
'okay' is a "gold star". */
|
'okay' is a "gold star". */
|
||||||
.diff-star-warn {
|
.diff-star-warn {
|
||||||
color: #aa0000;
|
color: {$red};
|
||||||
}
|
}
|
||||||
|
|
||||||
.diff-star-fail {
|
.diff-star-fail {
|
||||||
color: #aa0000;
|
color: {$red};
|
||||||
}
|
}
|
||||||
|
|
||||||
.diff-star-skip {
|
.diff-star-skip {
|
||||||
color: #ff00aa;
|
color: {$indigo};
|
||||||
}
|
|
||||||
|
|
||||||
.differential-toc table {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.differential-toc table td.differential-toc-cov,
|
|
||||||
.differential-toc table td.differential-toc-mcov {
|
|
||||||
width: 120px;
|
|
||||||
text-align: right;
|
|
||||||
padding-right: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.differential-toc table th {
|
|
||||||
color: {$darkbluetext};
|
|
||||||
padding: 0 4px 4px 0;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.differential-toc table th.differential-toc-cov,
|
|
||||||
.differential-toc table th.differential-toc-mcov {
|
|
||||||
text-align: right;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.differential-toc table td em {
|
.differential-toc table td em {
|
||||||
|
@ -86,3 +78,8 @@
|
||||||
.differential-mcoverage-loading {
|
.differential-mcoverage-loading {
|
||||||
color: {$lightgreytext};
|
color: {$lightgreytext};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.differential-toc-buttons {
|
||||||
|
border-top: 1px solid {$thinblueborder};
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue