Page MenuHomePhabricator

D19314.diff
No OneTemporary

D19314.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -119,7 +119,7 @@
'rsrc/css/font/font-lato.css' => 'c7ccd872',
'rsrc/css/font/phui-font-icon-base.css' => '870a7360',
'rsrc/css/layout/phabricator-filetree-view.css' => 'b912ad97',
- 'rsrc/css/layout/phabricator-source-code-view.css' => 'af54e277',
+ 'rsrc/css/layout/phabricator-source-code-view.css' => 'a526a787',
'rsrc/css/phui/button/phui-button-bar.css' => 'f1ff5494',
'rsrc/css/phui/button/phui-button-simple.css' => '8e1baf68',
'rsrc/css/phui/button/phui-button.css' => '1863cc6e',
@@ -390,7 +390,7 @@
'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'f01586dc',
'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '1db13e70',
'rsrc/js/application/drydock/drydock-live-operation-status.js' => '901935ef',
- 'rsrc/js/application/files/behavior-document-engine.js' => '6760beb4',
+ 'rsrc/js/application/files/behavior-document-engine.js' => '0333c0b6',
'rsrc/js/application/files/behavior-icon-composer.js' => '8499b6ab',
'rsrc/js/application/files/behavior-launch-icon-composer.js' => '48086888',
'rsrc/js/application/harbormaster/behavior-harbormaster-log.js' => '191b4909',
@@ -604,7 +604,7 @@
'javelin-behavior-diffusion-jump-to' => '73d09eef',
'javelin-behavior-diffusion-locate-file' => '6d3e1947',
'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc',
- 'javelin-behavior-document-engine' => '6760beb4',
+ 'javelin-behavior-document-engine' => '0333c0b6',
'javelin-behavior-doorkeeper-tag' => '1db13e70',
'javelin-behavior-drydock-live-operation-status' => '901935ef',
'javelin-behavior-durable-column' => '2ae077e1',
@@ -780,7 +780,7 @@
'phabricator-search-results-css' => '505dd8cf',
'phabricator-shaped-request' => '7cbe244b',
'phabricator-slowvote-css' => 'a94b7230',
- 'phabricator-source-code-view-css' => 'af54e277',
+ 'phabricator-source-code-view-css' => 'a526a787',
'phabricator-standard-page-view' => '34ee718b',
'phabricator-textareautils' => '320810c8',
'phabricator-title' => '485aaa6c',
@@ -909,6 +909,11 @@
'javelin-behavior',
'javelin-uri',
),
+ '0333c0b6' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-stratcom',
+ ),
'040fce04' => array(
'javelin-behavior',
'javelin-request',
@@ -1398,11 +1403,6 @@
'javelin-json',
'phuix-form-control-view',
),
- '6760beb4' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-stratcom',
- ),
'680ea2c8' => array(
'javelin-install',
'javelin-dom',
diff --git a/src/applications/diffusion/controller/DiffusionBlameController.php b/src/applications/diffusion/controller/DiffusionBlameController.php
--- a/src/applications/diffusion/controller/DiffusionBlameController.php
+++ b/src/applications/diffusion/controller/DiffusionBlameController.php
@@ -80,7 +80,9 @@
$handles = $viewer->loadHandles($handle_phids);
+
$map = array();
+ $epochs = array();
foreach ($identifiers as $identifier) {
$revision_id = idx($revision_map, $identifier);
if ($revision_id) {
@@ -173,23 +175,34 @@
$info = array(
$info,
- ' / ',
+ " \xC2\xB7 ",
$revision_link,
);
}
+ $epoch = $commit->getEpoch();
+ $epochs[] = $epoch;
+
$data = array(
'skip' => $skip_link,
'info' => hsprintf('%s', $info),
+ 'epoch' => $epoch,
);
$map[$identifier] = $data;
}
+ $epoch_min = min($epochs);
+ $epoch_max = max($epochs);
+
return id(new AphrontAjaxResponse())->setContent(
array(
'blame' => $blame,
'map' => $map,
+ 'epoch' => array(
+ 'min' => $epoch_min,
+ 'max' => $epoch_max,
+ ),
));
}
diff --git a/webroot/rsrc/css/layout/phabricator-source-code-view.css b/webroot/rsrc/css/layout/phabricator-source-code-view.css
--- a/webroot/rsrc/css/layout/phabricator-source-code-view.css
+++ b/webroot/rsrc/css/layout/phabricator-source-code-view.css
@@ -85,11 +85,18 @@
}
.phabricator-source-blame-info {
- color: {$lightgreytext};
white-space: nowrap;
min-width: 130px;
border-right: 1px solid {$paste.border};
padding-right: 8px;
+
+ vertical-align: middle;
+ color: #ffffff;
+}
+
+.phabricator-source-blame-info a {
+ color: {$darkbluetext};
+ text-shadow: 1px 1px rgba(0, 0, 0, 0.111);
}
.phabricator-source-blame-skip a {
@@ -98,14 +105,19 @@
padding: 2px 8px;
}
+.phabricator-source-blame-skip a .phui-icon-view {
+ color: {$darkbluetext};
+}
+
.device-desktop .phabricator-source-blame-skip a:hover {
background: {$bluebackground};
}
.phabricator-source-blame-author {
display: inline-block;
+ vertical-align: middle;
padding: 0;
- margin: 2px 6px -4px 8px;
+ margin: 0 6px 0 8px;
width: 16px;
height: 16px;
background-size: 100% 100%;
diff --git a/webroot/rsrc/js/application/files/behavior-document-engine.js b/webroot/rsrc/js/application/files/behavior-document-engine.js
--- a/webroot/rsrc/js/application/files/behavior-document-engine.js
+++ b/webroot/rsrc/js/application/files/behavior-document-engine.js
@@ -293,7 +293,6 @@
function renderBlame(row, blame) {
var spec = blame.map[row.commit];
-
var info = null;
var skip = null;
@@ -309,6 +308,53 @@
if (row.info) {
JX.DOM.setContent(row.info, info);
}
+
+ var epoch_range = (blame.epoch.max - blame.epoch.min);
+
+ var epoch_value;
+ if (!epoch_range) {
+ epoch_value = 1;
+ } else {
+ epoch_value = (spec.epoch - blame.epoch.min) / epoch_range;
+ }
+
+ var h_min = 0.04;
+ var h_max = 0.44;
+ var h = h_min + ((h_max - h_min) * epoch_value);
+
+ var s = 0.44;
+
+ var v_min = 0.92;
+ var v_max = 1.00;
+ var v = v_min + ((v_max - v_min) * epoch_value);
+
+ row.info.style.background = getHSV(h, s, v);
+ }
+
+ function getHSV(h, s, v) {
+ var r, g, b, i, f, p, q, t;
+
+ i = Math.floor(h * 6);
+ f = h * 6 - i;
+ p = v * (1 - s);
+ q = v * (1 - f * s);
+ t = v * (1 - (1 - f) * s);
+
+ switch (i % 6) {
+ case 0: r = v, g = t, b = p; break;
+ case 1: r = q, g = v, b = p; break;
+ case 2: r = p, g = v, b = t; break;
+ case 3: r = p, g = q, b = v; break;
+ case 4: r = t, g = p, b = v; break;
+ case 5: r = v, g = p, b = q; break;
+ }
+
+ r = Math.round(r * 255);
+ g = Math.round(g * 255);
+ b = Math.round(b * 255);
+
+
+ return 'rgb(' + r + ', ' + g + ', ' + b + ')';
}
if (!statics.initialized) {

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 18, 9:05 PM (10 h, 50 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7010597
Default Alt Text
D19314.diff (6 KB)

Event Timeline