|
11 | 11 | var $responseModal = $('#response-modal'); |
12 | 12 | var $responseModalTitle = $responseModal.find('#response-title'); |
13 | 13 | var $responseModalBody = $responseModal.find('#response-body'); |
14 | | - var $logRowsContainer = null; |
15 | 14 | var $conflictModal = null; |
16 | 15 |
|
17 | 16 | var $sce = null; |
|
40 | 39 | var $mainLogContainer = $('#main-log-container'); |
41 | 40 | var $mainLogLoadingIndicator = $('#main-log-loading-indicator'); |
42 | 41 |
|
43 | | - $logRowsContainer = $('#log-rows-container'); |
44 | | - |
45 | 42 | $commitModal = $('#commit-modal'); |
46 | 43 | $pullModal = $('#pull-modal'); |
47 | 44 | $pushModal = $('#push-modal'); |
|
90 | 87 | vm.continueMerge = continueMerge; |
91 | 88 | vm.abortMerge = abortMerge; |
92 | 89 | vm.mergeConflictCommitMessage = ''; |
| 90 | + vm.mainSearch = mainSearch; |
93 | 91 |
|
94 | 92 | vm.commitMessage = ''; |
95 | 93 | vm.remote = null; |
|
113 | 111 |
|
114 | 112 | vm.diffOnConflictModal = null; |
115 | 113 |
|
| 114 | + var commitsBackup = null; |
| 115 | + var commitMapBackup = null; |
| 116 | + var graphBackup = null; |
| 117 | + |
116 | 118 | $scope.$on('windowfocus', function() { |
117 | 119 | if(($commitModal.data('bs.modal') || {})._isShown) { |
118 | 120 | // do not refresh when the modal window is open. use the refresh button instead. |
|
140 | 142 |
|
141 | 143 | return; |
142 | 144 |
|
| 145 | + function mainSearch() { |
| 146 | + console.log(vm.mainSearchInp); |
| 147 | + |
| 148 | + var searchText = vm.mainSearchInp; |
| 149 | + |
| 150 | + if(typeof searchText == 'undefined' || searchText.length == 0 || (searchText = searchText.trim()).length == 0) { |
| 151 | + restoreCommits(); |
| 152 | + return; |
| 153 | + } |
| 154 | + |
| 155 | + var shaRegex = /\b[0-9a-f]{5,40}\b/; |
| 156 | + |
| 157 | + if(shaRegex.test(searchText)) { |
| 158 | + // it is probably an SHA. |
| 159 | + repoDetailService.searchForHash(searchText).then(function(commits) { |
| 160 | + vm.commitDetails = null; |
| 161 | + parseCommits(commits); |
| 162 | + vm.commits = commits; |
| 163 | + resetCommitMap(); |
| 164 | + if(commits.length > 0) { |
| 165 | + $timeout(loadGraph); |
| 166 | + } |
| 167 | + return vm.commits; |
| 168 | + }); |
| 169 | + } |
| 170 | + } |
| 171 | + |
| 172 | + /** |
| 173 | + * Stores commits in `commitsBackup` and `commitMapBackup`. Restore using `restoreCommits` |
| 174 | + */ |
| 175 | + function backupCommits() { |
| 176 | + commitsBackup = vm.commits; |
| 177 | + commitMapBackup = vm.commitMap; |
| 178 | + } |
| 179 | + |
| 180 | + /** |
| 181 | + * Restores commits backed up using `backupCommits` |
| 182 | + */ |
| 183 | + function restoreCommits() { |
| 184 | + vm.commits = commitsBackup; |
| 185 | + vm.commitMap = commitMapBackup; |
| 186 | + $timeout(restoreGraph); |
| 187 | + } |
| 188 | + |
| 189 | + function backupGraph() { |
| 190 | + var canvas = document.getElementById('log-graph'); |
| 191 | + |
| 192 | + graphBackup = null; |
| 193 | + graphBackup = new Image(); |
| 194 | + graphBackup.src = canvas.toDataURL("image/png"); |
| 195 | + // graphBackup = document.createElement('canvas'); |
| 196 | + // graphBackup.width = canvas.width; |
| 197 | + // graphBackup.height = canvas.height; |
| 198 | + |
| 199 | + //var graphBackupCtx = graphBackup.getContext('2D'); |
| 200 | + //graphBackupCtx.drawImage(canvas, 0, 0); |
| 201 | + } |
| 202 | + |
| 203 | + function restoreGraph() { |
| 204 | + // $('#graph-container').append('<canvas id="log-graph"></canvas>'); |
| 205 | + var canvas = document.getElementById('log-graph'); |
| 206 | + canvas.width = graphBackup.width; |
| 207 | + canvas.height = graphBackup.height; |
| 208 | + |
| 209 | + var varWidth = canvas.width.toString() + 'px'; |
| 210 | + var ctx = canvas.getContext('2d'); |
| 211 | + |
| 212 | + $('#graph-container').css('flex', '0 0 ' + varWidth); |
| 213 | + $('#log-rows-container').css('width', 'calc(100% - '+ varWidth +')'); |
| 214 | + |
| 215 | + ctx.drawImage(graphBackup, 0, 0); |
| 216 | + } |
| 217 | + |
143 | 218 | function abortMerge() { |
144 | 219 | return repoDetailService.abortMerge().then(function(d) { |
145 | 220 | if(!d.errorCode) { |
|
382 | 457 | function loadGraph() { |
383 | 458 | setGraphInfo(); |
384 | 459 | var $graphContainer = $('#graph-container'); |
| 460 | + var $logRowsContainer = $('#log-rows-container'); |
385 | 461 | var varWidth = (((vm.maxX + 1) * logGraphDefaults.distanceBetweenBranches) + logGraphDefaults.distanceBetweenBranches).toString() + 'px'; |
386 | 462 | $graphContainer.css('flex', '0 0 ' + varWidth); |
387 | 463 | $logRowsContainer.css('width', 'calc(100% - '+ varWidth +')'); |
388 | | - $graphContainer.empty().append('<canvas id="log-graph" height="'+ $graphContainer.height() +'" width="'+ $graphContainer.width() +'"></canvas>'); |
| 464 | + // $graphContainer.empty().append('<canvas id="log-graph" height="'+ $graphContainer.height() +'" width="'+ $graphContainer.width() +'"></canvas>'); |
| 465 | + var $canvas = $('#log-graph').attr({ |
| 466 | + width: $graphContainer.width(), |
| 467 | + height: $graphContainer.height() |
| 468 | + }); |
389 | 469 |
|
390 | 470 | var graph = document.getElementById('log-graph'); |
391 | 471 | var ctx = graph.getContext("2d"); |
|
785 | 865 | noMoreCommits = true; |
786 | 866 | } |
787 | 867 | else { |
788 | | - $timeout(loadGraph); |
| 868 | + $timeout(loadGraph).then(function() { |
| 869 | + backupGraph(); |
| 870 | + }); |
789 | 871 | } |
790 | 872 | }); |
791 | 873 | } |
|
804 | 886 | parseCommits(commits); |
805 | 887 | vm.commits = commits; |
806 | 888 | resetCommitMap(); |
807 | | - $timeout(loadGraph); |
| 889 | + backupCommits(); |
| 890 | + $timeout(loadGraph).then(function() { |
| 891 | + backupGraph(); |
| 892 | + }); |
808 | 893 | return vm.commits; |
809 | 894 | }); |
810 | 895 | } |
|
822 | 907 | Array.prototype.push.apply(vm.commits, commits); |
823 | 908 |
|
824 | 909 | resetCommitMap(); |
| 910 | + |
| 911 | + backupCommits(); |
| 912 | + |
825 | 913 | return vm.commits; |
826 | 914 | }); |
827 | 915 | } |
|
894 | 982 |
|
895 | 983 | function setGraphInfo() { |
896 | 984 | var commits = vm.commits; |
| 985 | + |
| 986 | + if(commits.length == 0) { |
| 987 | + return; |
| 988 | + } |
| 989 | + |
897 | 990 | var openBranches = []; |
898 | 991 | var branchLevel = 0; |
899 | 992 |
|
|
1213 | 1306 | this.skipRebase = skipRebase; |
1214 | 1307 | this.mergeIntoCurrent = mergeIntoCurrent; |
1215 | 1308 | this.abortMerge = abortMerge; |
| 1309 | + this.searchForHash = searchForHash; |
1216 | 1310 |
|
1217 | 1311 | return; |
1218 | 1312 |
|
| 1313 | + function searchForHash(hash) { |
| 1314 | + return $http.post('/repo/' + repoName + '/searchforhash', {hash: hash}).then(function(res) { |
| 1315 | + return res.data; |
| 1316 | + }); |
| 1317 | + } |
| 1318 | + |
1219 | 1319 | function abortMerge() { |
1220 | 1320 | return $http.post('/repo/' + repoName + '/abortmerge').then(function(res) { |
1221 | 1321 | return res.data; |
|
0 commit comments