Path: blob/master/webroot/rsrc/js/application/transactions/behavior-show-older-transactions.js
12242 views
/**1* @provides javelin-behavior-phabricator-show-older-transactions2* @requires javelin-behavior3* javelin-stratcom4* javelin-dom5* phabricator-busy6*/78JX.behavior('phabricator-show-older-transactions', function(config) {910function get_hash() {11return window.location.hash.replace(/^#/, '');12}1314function hash_is_hidden() {15var hash = get_hash();16if (!hash) {17return false;18}1920// If the hash isn't purely numeric, ignore it. Comments always have21// numeric hashes. See PHI43 and T12970.22if (!hash.match(/^\d+$/)) {23return false;24}2526var id = 'anchor-'+hash;27try {28JX.$(id);29} catch (not_found_exception) {30return true;31}32return false;33}3435function check_hash() {36if (hash_is_hidden()) {37load_older(load_hidden_hash_callback);38}39}4041function load_older(callback) {42var showOlderBlock = null;43try {44showOlderBlock = JX.DOM.find(45JX.$(config.timelineID),46'div',47'show-older-block');48} catch (not_found_exception) {49// we loaded everything...!50return;51}5253var showOlderLink = JX.DOM.find(54showOlderBlock,55'a',56'show-older-link');57var workflow = fetch_older_workflow(58showOlderLink.href,59callback,60showOlderBlock);61var routable = workflow.getRoutable()62.setPriority(2000)63.setType('workflow');64JX.Router.getInstance().queue(routable);65}6667var show_older = function(swap, r) {68JX.DOM.replace(swap, JX.$H(r.timeline).getFragment());69JX.Stratcom.invoke('resize');70};7172var load_hidden_hash_callback = function(swap, r) {73show_older(swap, r);7475// We aren't actually doing a scroll position because76// `behavior-watch-anchor` will handle that for us.77};7879var load_all_older_callback = function(swap, r) {80show_older(swap, r);81load_older(load_all_older_callback);82};8384var fetch_older_workflow = function(href, callback, swap) {85var params = {86viewData: JX.JSON.stringify(config.viewData)87};8889return new JX.Workflow(href, params)90.setHandler(JX.bind(null, callback, swap));91};9293JX.Stratcom.listen(94'click',95['show-older-block'],96function(e) {97e.kill();98var workflow = fetch_older_workflow(99JX.DOM.find(100e.getNode('show-older-block'),101'a',102'show-older-link').href,103show_older,104e.getNode('show-older-block'));105var routable = workflow.getRoutable()106.setPriority(2000)107.setType('workflow');108JX.Router.getInstance().queue(routable);109});110111JX.Stratcom.listen('hashchange', null, check_hash);112113check_hash();114115new JX.KeyboardShortcut(['@'], 'Show all older changes in the timeline.')116.setGroup('xactions')117.setHandler(JX.bind(null, load_older, load_all_older_callback))118.register();119});120121122