var blames = null; var codeHeight = 0; window.onMouseDown = function(obj) { if(!obj.target.position) return; showBlameAndRelation(obj.target.position.lineNumber); } window.getRevision = function(blames, line) { let blame = blames[line]; if(!blame) return false; let p_line = parseInt(line); while(!blame.revision) { p_line--; blame = blames[p_line]; } return blame; } /** * 显示关联信息弹窗。 * Show blame info and relations. * * @param int line * @access public * @return void */ function showBlameAndRelation(line) { if(!blames) return; if(pageType == 'diff') line = diffContent.line.new[line -1]; const blame = window.getRevision(blames, line); if(!blame) return; if($('#log').data('line') == line) return; var time = blame.time != 'unknown' ? blame.time : ''; var user = blame.committer != 'unknown' ? blame.committer : ''; var version = blame.revision.toString().substring(0, 10); var content = blameTmpl.replace('%line', line).replace('%time', time).replace('%name', user).replace('%version', version).replace('%comment', blame.message); $('.history').html(content); $('#log').data('line', line); $('#log').css('display', 'flex'); getRelation(blame.revision); } /** * 获取关联信息。 * Get relation by commit. * * @param string $commit * @access public * @return void */ window.getRelation = function(commit) { $('.table-empty-tip').show(); $('#codeContainer').css('height', codeHeight / 5 * 3); var relatedHeight = codeHeight / 5 * 2 - $('#log').height() - 10; $('#related').css('height', relatedHeight); setTimeout(() => { var tabsHeight = $('#relationTabs .nav-tabs').height(); if(!tabsHeight) tabsHeight = 32; $('#relationTabs .tab-content').css('height', relatedHeight - tabsHeight - 8); }, 500); $('#relationTabs ul li').remove(); $('#relationTabs .tab-content .tab-pane').remove(); $.post($.createLink('repo', 'ajaxGetCommitRelation', 'repoID=' + repoID + '&commit=' + commit), function(data) { var titleList = JSON.parse(data).titleList; $.each(titleList, function(i, titleObj) { openTab(titleObj); }); if(titleList.length > 0) { $('.table-empty-tip').hide(); $('#related button').show(); $('#relationTabs ul li a').first().trigger('click'); } else { if(!canLinkStory && !canLinkBug && !canLinkTask) $('#related button').hide(); } arrowTabs('relationTabs', 1); }); globalCommit = commit; var linkStory = $.createLink('repo', 'linkStory', 'repoID=' + repoID + '&commit=' + commit, '', true); var linkBug = $.createLink('repo', 'linkBug', 'repoID=' + repoID + '&commit=' + commit, '', true); var linkTask = $.createLink('repo', 'linkTask', 'repoID=' + repoID + '&commit=' + commit, '', true); $('#linkStory').data('link', linkStory); $('#linkBug').data('link', linkBug); $('#linkTask').data('link', linkTask); $('#related').show(); } /** * 打开关联信息tab。 * Open tab. * * @param object $titleObj * @access public * @return void */ function openTab(titleObj) { var tabTemplate = `