Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 var currentEntry; | |
|
kasperl
2014/03/13 07:39:58
Copyright notice?
| |
| 2 | |
|
kasperl
2014/03/13 07:39:58
It would be helpful to have a comment that explain
| |
| 3 var installedServerResults = false; | |
| 4 | |
| 5 var isDisplayingResults = false; | |
| 6 | |
| 7 (function() { | |
| 8 "use strict"; | |
| 9 function hasModifier(/*KeyboardEvent*/ event) { | |
| 10 return event.getModifierState("Alt") || | |
| 11 event.getModifierState("AltGraph") || | |
| 12 event.getModifierState("CapsLock") || | |
| 13 event.getModifierState("Control") || | |
| 14 event.getModifierState("Fn") || | |
| 15 event.getModifierState("Meta") || | |
| 16 event.getModifierState("NumLock") || | |
| 17 event.getModifierState("ScrollLock") || | |
| 18 event.getModifierState("Scroll") || | |
| 19 event.getModifierState("Win") || | |
| 20 event.getModifierState("Shift") || | |
| 21 event.getModifierState("SymbolLock") || | |
| 22 event.getModifierState("OS"); | |
| 23 } | |
| 24 function onKeydown(/*KeyboardEvent*/ event) { | |
| 25 if (!isDisplayingResults) { | |
| 26 isDisplayingResults = true; | |
| 27 document.querySelector('.dart-code-completion').style.display = 'block'; | |
| 28 installedServerResults = true; | |
| 29 window.setTimeout(installServerResults, getRandomInt(1080, 2000)); | |
| 30 return; | |
| 31 } | |
| 32 if (!installedServerResults) { | |
| 33 installedServerResults = true; | |
| 34 window.setTimeout(installServerResults, getRandomInt(1080, 2000)); | |
| 35 } | |
| 36 var keyCode = event.keyCode; | |
| 37 var keyIdentifier = event.keyIdentifier; | |
| 38 var modifier = hasModifier(event); | |
| 39 if (!modifier) { | |
| 40 if (keyCode === 40) return moveActive(event, 1); | |
| 41 if (keyCode === 38) return moveActive(event, -1); | |
| 42 } | |
| 43 if (modifier) { | |
| 44 if (keyCode === 40) return selectServerResults(event); | |
| 45 } | |
| 46 console.log([keyCode, keyIdentifier, modifier]); | |
| 47 console.dir(event); | |
| 48 } | |
| 49 function moveActive(/*KeyboardEvent*/ event, /*int*/ distance) { | |
| 50 var entries = document.querySelectorAll('.dart-static>.dart-entry'); | |
| 51 var activeIndex = -1; | |
| 52 for (var i = 0; i < entries.length; i++) { | |
| 53 if (entries[i].classList.contains('active')) { | |
| 54 activeIndex = i; | |
| 55 break; | |
| 56 } | |
| 57 } | |
| 58 var newIndex = activeIndex + distance; | |
| 59 if (0 <= newIndex && newIndex < entries.length) { | |
| 60 var newEntry = entries[newIndex]; | |
| 61 currentEntry = newEntry; | |
| 62 } | |
| 63 if (0 <= newIndex && activeIndex !== -1) { | |
| 64 entries[activeIndex].classList.remove('active'); | |
| 65 } | |
| 66 var serverResults = document.querySelectorAll('.dart-server>.dart-entry'); | |
| 67 var serverResultCount = serverResults.length; | |
| 68 if (serverResultCount > 0) { | |
| 69 var cr = currentEntry.getBoundingClientRect(); | |
| 70 var sr = document.querySelector('.dart-static').getBoundingClientRect(); | |
| 71 if (cr.bottom - sr.top > sr.height) { | |
|
kasperl
2014/03/13 07:39:58
One of these comparisons use > and the other >=. I
| |
| 72 if (cr.top - sr.top >= sr.height) { | |
| 73 var entry = serverResults[0]; | |
| 74 entry.parentNode.removeChild(entry); | |
| 75 currentEntry.parentNode.insertBefore(entry, currentEntry); | |
| 76 currentEntry = entry; | |
| 77 serverResultCount--; | |
| 78 } else { | |
| 79 console.log(cr.bottom - sr.top); | |
| 80 } | |
| 81 document.querySelector('.dart-static').style.height = | |
| 82 String((cr.bottom - sr.top)) + "px"; | |
|
kasperl
2014/03/13 07:39:58
No need to use String() here. If either the left o
| |
| 83 } else { | |
| 84 currentEntry.scrollIntoView(false); | |
| 85 } | |
| 86 } else { | |
| 87 currentEntry.scrollIntoView(false); | |
| 88 } | |
| 89 if (serverResultCount === 0) { | |
| 90 // document.querySelector('.dart-static').classList.remove('dart-limited-h eight'); | |
|
kasperl
2014/03/13 07:39:58
Long line. Maybe explain why this is commented out
| |
| 91 // document.querySelector('.dart-static').style.height = ''; | |
| 92 document.querySelector('.dart-server').style.display = 'none'; | |
| 93 } | |
| 94 if (currentEntry != null) { | |
| 95 currentEntry.classList.add('active'); | |
| 96 } | |
| 97 } | |
| 98 function selectServerResults(/*KeyboardEvent*/ event) { | |
| 99 var entries = document.querySelectorAll('.dart-static>.dart-entry.active'); | |
| 100 for (var i = 0; i < entries.length; i++) { | |
| 101 entries[i].classList.remove('active'); | |
| 102 } | |
| 103 return moveActive(event, 4); | |
| 104 } | |
| 105 function installServerResults() { | |
| 106 var mockServerResults = document.querySelectorAll('.mock-data>.dart-entry'); | |
| 107 var results = document.querySelector('.dart-server'); | |
| 108 results.style.display = 'block'; | |
| 109 for (var i = 0; i < mockServerResults.length; i++) { | |
| 110 var result = mockServerResults[i]; | |
| 111 result.parentNode.removeChild(result); | |
| 112 results.appendChild(result); | |
| 113 } | |
| 114 } | |
| 115 function getRandomInt(min, max) { | |
| 116 return Math.floor(Math.random() * (max - min + 1)) + min; | |
| 117 } | |
| 118 document.body.addEventListener('keydown', onKeydown); | |
| 119 })(); | |
| OLD | NEW |