[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 /** 2 * @provides javelin-behavior-phabricator-line-linker 3 * @requires javelin-behavior 4 * javelin-stratcom 5 * javelin-dom 6 * javelin-history 7 */ 8 9 JX.behavior('phabricator-line-linker', function() { 10 var origin = null; 11 var target = null; 12 var root = null; 13 14 var editor_link = null; 15 try { 16 editor_link = JX.$('editor_link'); 17 } catch (ex) { 18 // Ignore. 19 } 20 21 function getRowNumber(tr) { 22 var th = JX.DOM.find(tr, 'th', 'phabricator-source-line'); 23 return +(th.textContent || th.innerText); 24 } 25 26 JX.Stratcom.listen( 27 'mousedown', 28 'phabricator-source-line', 29 function(e) { 30 if (!e.isNormalMouseEvent()) { 31 return; 32 } 33 origin = e.getNode('tag:tr'); 34 target = origin; 35 root = e.getNode('phabricator-source'); 36 e.kill(); 37 }); 38 39 JX.Stratcom.listen( 40 'click', 41 'phabricator-source-line', 42 function(e) { 43 e.kill(); 44 }); 45 46 var highlight = function(e) { 47 if (!origin || e.getNode('phabricator-source') !== root) { 48 return; 49 } 50 target = e.getNode('tag:tr'); 51 52 var highlighting = false; 53 var source = null; 54 var trs = JX.DOM.scry(root, 'tr'); 55 for (var i = 0; i < trs.length; i++) { 56 if (!highlighting && (trs[i] === origin || trs[i] === target)) { 57 highlighting = true; 58 source = trs[i]; 59 } 60 JX.DOM.alterClass(trs[i], 'phabricator-source-highlight', highlighting); 61 if (trs[i] === (source === origin ? target : origin)) { 62 highlighting = false; 63 } 64 } 65 }; 66 67 JX.Stratcom.listen('mouseover', 'phabricator-source', highlight); 68 69 JX.Stratcom.listen( 70 'mouseup', 71 null, 72 function(e) { 73 if (!origin) { 74 return; 75 } 76 77 highlight(e); 78 79 var o = getRowNumber(origin); 80 var t = getRowNumber(target); 81 var lines = (o == t ? o : Math.min(o, t) + '-' + Math.max(o, t)); 82 var th = JX.DOM.find(origin, 'th', 'phabricator-source-line'); 83 var uri = JX.DOM.find(th, 'a').href; 84 uri = uri.replace(/(.*\$)\d+/, '$1' + lines); 85 origin = null; 86 target = null; 87 e.kill(); 88 JX.History.replace(uri); 89 if (editor_link.href) { 90 editdata = JX.Stratcom.getData(editor_link); 91 editor_link.href = editdata.link_template.replace('%25l', o); 92 } 93 }); 94 95 });
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |