Skip to content

Commit c9838d8

Browse files
author
vrana
committed
Don't reload page after clicking on Diffusion line link
Summary: For a single line, I can use the right click. But for highlighting multiple lines, I have to wait for page reload. It would be nice to track this in history but that's more involved. This is actually maybe better behavior. Test Plan: Clicked on the line link, dragged and dropped on it. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D5172
1 parent 14569ae commit c9838d8

File tree

5 files changed

+41
-21
lines changed

5 files changed

+41
-21
lines changed

scripts/celerity_mapper.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
'javelin-behavior-phabricator-search-typeahead',
5151
'javelin-behavior-konami',
5252
'javelin-behavior-aphlict-dropdown',
53+
'javelin-behavior-history-install',
5354

5455
'javelin-behavior-phabricator-active-nav',
5556
'javelin-behavior-phabricator-nav',

src/infrastructure/celerity/CelerityStaticResourceResponse.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ public function renderHTMLFooter() {
149149
'refresh-csrf',
150150
'aphront-basic-tokenizer',
151151
'dark-console',
152+
'history-install',
152153
);
153154

154155
$higher_priority_behaviors = array_select_keys(

src/view/page/PhabricatorStandardPageView.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ protected function willRenderPage() {
153153
Javelin::initBehavior('aphront-form-disable-on-submit');
154154
Javelin::initBehavior('toggle-class', array());
155155
Javelin::initBehavior('konami', array());
156+
Javelin::initBehavior('history-install');
156157

157158
$current_token = null;
158159
if ($user) {
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* @provides javelin-behavior-history-install
3+
* @requires javelin-behavior
4+
* javelin-history
5+
*/
6+
7+
JX.behavior('history-install', function() {
8+
JX.History.install();
9+
});

webroot/rsrc/js/application/diffusion/behavior-line-linker.js

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* @requires javelin-behavior
44
* javelin-stratcom
55
* javelin-dom
6-
* javelin-uri
6+
* javelin-history
77
*/
88

99
JX.behavior('diffusion-line-linker', function() {
@@ -31,28 +31,34 @@ JX.behavior('diffusion-line-linker', function() {
3131
});
3232

3333
JX.Stratcom.listen(
34-
'mouseover',
35-
'diffusion-source',
34+
'click',
35+
'diffusion-line-link',
3636
function(e) {
37-
if (!origin || e.getNode('diffusion-source') !== root) {
38-
return;
39-
}
40-
target = e.getNode('tag:tr');
37+
e.kill();
38+
});
4139

42-
var highlighting = false;
43-
var source = null;
44-
var trs = JX.DOM.scry(root, 'tr');
45-
for (var i = 0; i < trs.length; i++) {
46-
if (!highlighting && (trs[i] === origin || trs[i] === target)) {
47-
highlighting = true;
48-
source = trs[i];
49-
}
50-
JX.DOM.alterClass(trs[i], 'highlighted', highlighting);
51-
if (trs[i] === (source === origin ? target : origin)) {
52-
highlighting = false;
53-
}
40+
var highlight = function(e) {
41+
if (!origin || e.getNode('diffusion-source') !== root) {
42+
return;
43+
}
44+
target = e.getNode('tag:tr');
45+
46+
var highlighting = false;
47+
var source = null;
48+
var trs = JX.DOM.scry(root, 'tr');
49+
for (var i = 0; i < trs.length; i++) {
50+
if (!highlighting && (trs[i] === origin || trs[i] === target)) {
51+
highlighting = true;
52+
source = trs[i];
5453
}
55-
});
54+
JX.DOM.alterClass(trs[i], 'highlighted', highlighting);
55+
if (trs[i] === (source === origin ? target : origin)) {
56+
highlighting = false;
57+
}
58+
}
59+
};
60+
61+
JX.Stratcom.listen('mouseover', 'diffusion-source', highlight);
5662

5763
JX.Stratcom.listen(
5864
'mouseup',
@@ -62,6 +68,8 @@ JX.behavior('diffusion-line-linker', function() {
6268
return;
6369
}
6470

71+
highlight(e);
72+
6573
var o = getRowNumber(origin);
6674
var t = getRowNumber(target);
6775
var lines = (o == t ? o : Math.min(o, t) + '-' + Math.max(o, t));
@@ -72,7 +80,7 @@ JX.behavior('diffusion-line-linker', function() {
7280
origin = null;
7381
target = null;
7482
e.kill();
75-
JX.$U(uri).go();
83+
JX.History.replace(uri);
7684
});
7785

7886
});

0 commit comments

Comments
 (0)