[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 /** 2 * @provides javelin-behavior-differential-feedback-preview 3 * @requires javelin-behavior 4 * javelin-stratcom 5 * javelin-dom 6 * javelin-request 7 * javelin-util 8 * phabricator-shaped-request 9 */ 10 11 JX.behavior('differential-feedback-preview', function(config) { 12 13 var action = JX.$(config.action); 14 var content = JX.$(config.content); 15 var previewTokenizers = {}; 16 var field; 17 for (field in config.previewTokenizers) { 18 var tokenizer = JX.$(config.previewTokenizers[field]); 19 previewTokenizers[field] = JX.Stratcom.getData(tokenizer).tokenizer; 20 } 21 22 var callback = function(r) { 23 var preview = JX.$(config.preview); 24 JX.DOM.setContent(preview, JX.$H(r)); 25 JX.Stratcom.invoke('differential-preview-update', null, { 26 container: preview 27 }); 28 }; 29 30 var getdata = function() { 31 var data = { 32 content : content.value, 33 action : action.value 34 }; 35 for (var field in previewTokenizers) { 36 data[field] = JX.keys(previewTokenizers[field].getTokens()).join(','); 37 } 38 return data; 39 }; 40 41 var request = new JX.PhabricatorShapedRequest(config.uri, callback, getdata); 42 var trigger = JX.bind(request, request.trigger); 43 44 JX.DOM.listen(content, 'keydown', null, trigger); 45 JX.DOM.listen(action, 'change', null, trigger); 46 for (field in previewTokenizers) { 47 previewTokenizers[field].listen('change', trigger); 48 } 49 50 request.start(); 51 52 53 function refreshInlinePreview() { 54 new JX.Request(config.inlineuri, function(r) { 55 var inline = JX.$(config.inline); 56 57 JX.DOM.setContent(inline, JX.$H(r)); 58 JX.Stratcom.invoke('differential-preview-update', null, { 59 container: inline 60 }); 61 62 // Go through the previews and activate any "View" links where the 63 // actual comment appears in the document. 64 65 var links = JX.DOM.scry( 66 inline, 67 'a', 68 'differential-inline-preview-jump'); 69 for (var ii = 0; ii < links.length; ii++) { 70 var data = JX.Stratcom.getData(links[ii]); 71 try { 72 JX.$(data.anchor); 73 links[ii].href = '#' + data.anchor; 74 JX.DOM.setContent(links[ii], 'View'); 75 } catch (ignored) { 76 // This inline comment isn't visible, e.g. on some other diff. 77 } 78 } 79 }) 80 .setTimeout(5000) 81 .send(); 82 } 83 84 JX.Stratcom.listen( 85 'differential-inline-comment-update', 86 null, 87 refreshInlinePreview); 88 89 refreshInlinePreview(); 90 });
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 |