OLD | NEW |
(Empty) | |
| 1 [# TODO(jrobbins): move this into compiled javascript. ] |
| 2 <script type="text/javascript" nonce="[nonce]"> |
| 3 runOnLoad(function() { |
| 4 var numsGenState = {table_base_id: 'nums_table_'}; |
| 5 var srcGenState = {table_base_id: 'src_table_'}; |
| 6 var alignerRunning = false; |
| 7 var startOver = false; |
| 8 |
| 9 function setLineNumberHeights() { |
| 10 if (alignerRunning) { |
| 11 startOver = true; |
| 12 return; |
| 13 } |
| 14 numsGenState.chunk_id = 0; |
| 15 numsGenState.table = document.getElementById('nums_table_0'); |
| 16 numsGenState.row_num = 0; |
| 17 |
| 18 if (!numsGenState.table) { |
| 19 return; // Silently exit if no file is present. |
| 20 } |
| 21 |
| 22 srcGenState.chunk_id = 0; |
| 23 srcGenState.table = document.getElementById('src_table_0'); |
| 24 srcGenState.row_num = 0; |
| 25 |
| 26 alignerRunning = true; |
| 27 continueToSetLineNumberHeights(); |
| 28 } |
| 29 |
| 30 function rowGenerator(genState) { |
| 31 if (genState.row_num < genState.table.rows.length) { |
| 32 var currentRow = genState.table.rows[[]genState.row_num]; |
| 33 genState.row_num++; |
| 34 return currentRow; |
| 35 } |
| 36 |
| 37 var newTable = document.getElementById( |
| 38 genState.table_base_id + (genState.chunk_id + 1)); |
| 39 if (newTable) { |
| 40 genState.chunk_id++; |
| 41 genState.row_num = 0; |
| 42 genState.table = newTable; |
| 43 return genState.table.rows[[]0]; |
| 44 } |
| 45 |
| 46 return null; |
| 47 } |
| 48 |
| 49 var MAX_ROWS_PER_PASS = 1000; |
| 50 |
| 51 function continueToSetLineNumberHeights() { |
| 52 var rowsInThisPass = 0; |
| 53 var numRow = 1; |
| 54 var srcRow = 1; |
| 55 |
| 56 while (numRow && srcRow && rowsInThisPass < MAX_ROWS_PER_PASS) { |
| 57 numRow = rowGenerator(numsGenState); |
| 58 srcRow = rowGenerator(srcGenState); |
| 59 rowsInThisPass++; |
| 60 |
| 61 if (numRow && srcRow) { |
| 62 if (numRow.offsetHeight != srcRow.offsetHeight) { |
| 63 numRow.firstChild.style.height = srcRow.offsetHeight + 'px'; |
| 64 } |
| 65 } |
| 66 } |
| 67 |
| 68 if (rowsInThisPass >= MAX_ROWS_PER_PASS) { |
| 69 setTimeout(continueToSetLineNumberHeights, 10); |
| 70 } else { |
| 71 alignerRunning = false; |
| 72 if (startOver) { |
| 73 startOver = false; |
| 74 setTimeout(setLineNumberHeights, 500); |
| 75 } |
| 76 } |
| 77 |
| 78 } |
| 79 |
| 80 function initLineNumberHeights() { |
| 81 // Do 2 complete passes, because there can be races |
| 82 // between this code and prettify. |
| 83 startOver = true; |
| 84 setTimeout(setLineNumberHeights, 250); |
| 85 window.addEventListener('resize', setLineNumberHeights); |
| 86 } |
| 87 initLineNumberHeights(); |
| 88 }); |
| 89 </script> |
OLD | NEW |