Index: foo/test.js |
diff --git a/foo/test.js b/foo/test.js |
deleted file mode 100644 |
index bd27485040923622564df212a44414a55a6b1700..0000000000000000000000000000000000000000 |
--- a/foo/test.js |
+++ /dev/null |
@@ -1,301 +0,0 @@ |
-data = null; |
-idx = 0; |
- |
-nextUpdateId = 0; |
- |
-urlHolder = document.querySelector('#url-holder'); |
-dataTable = document.querySelector('#data-table'); |
-$dataRows = null; |
- |
-baseImage = document.querySelector('#base-img'); |
-distilledImage = document.querySelector('#distilled-img'); |
-imageHolder = document.querySelector('#image-holder'); |
- |
-goodButton = document.querySelector('#good'); |
-badButton = document.querySelector('#bad'); |
-resetButton = document.querySelector('#reset'); |
-poorButton = document.querySelector('#poor'); |
-errorButton = document.querySelector('#error'); |
- |
-function changeIndex(newIndex) { |
- var oldIndex = idx; |
- idx = Math.max(0, Math.min(data.length - 1, newIndex)); |
- showImage(idx); |
- $dataRows.eq(oldIndex).removeClass('active'); |
- var $currentRow = $dataRows.eq(idx); |
- $currentRow.addClass('active'); |
- $currentRow[0].scrollIntoViewIfNeeded(); |
- $('.current-position').text(idx + 1); |
-} |
- |
-function recordValue(v) { |
- var e = data[idx]; |
- e['good'] = v; |
- updateTableRow(idx); |
- sendUpdate(e, function() { |
- changeIndex(idx + 1); |
- }); |
-} |
- |
-function recordGood() { |
- recordValue(1); |
-} |
- |
-function recordBad() { |
- recordValue(0); |
-} |
- |
-function recordError() { |
- recordValue(-1); |
-} |
- |
-function resetEntry() { |
- var e = data[idx]; |
- delete e['good'] |
- updateTableRow(idx); |
- sendUpdate(e, function() { |
- }); |
-} |
- |
-function sendMessage(type, message, callback) { |
- $.ajax({ |
- 'type': type, |
- 'url': '/message', |
- 'contentType': 'application/json', |
- 'processData': false, |
- 'data': JSON.stringify(message), |
- 'error': function(response, status) { |
- console.log('wtf response: ', response, status); |
- }, |
- 'success': function(response) { |
- console.log('response: ', response); |
- callback(response); |
- }, |
- 'dataType': 'json', |
- }); |
-} |
- |
-function sendUpdate(e, callback) { |
- sendMessage( |
- 'POST', |
- { |
- 'action': 'update', |
- 'data': e, |
- }, |
- callback); |
-} |
- |
-function back() { |
- changeIndex(idx - 1); |
-} |
- |
-function skip() { |
- changeIndex(idx + 1); |
-} |
- |
-poorButton.onclick = function() { recordValue(2); } |
-goodButton.onclick = recordGood |
-badButton.onclick = recordBad |
-resetButton.onclick = resetEntry |
-errorButton.onclick = recordError |
-$('.right-caret').click(skip); |
-$('.left-caret').click(back); |
- |
-function showImage(i) { |
- goodButton.disabled = false; |
- badButton.disabled = false; |
- var e = data[i] |
- baseImage.src = '/images/' + e['screenshot'].replace(/.*\//, '') |
- distilledImage.src = '/images/' + e['distilled'].replace(/.*\//, '') |
- urlHolder.innerText = e['url'] |
- urlHolder.href = e['url'] |
- imageHolder.classList.remove('bad'); |
- imageHolder.classList.remove('good'); |
- imageHolder.classList.remove('error'); |
- imageHolder.classList.remove('poor'); |
- if (typeof e['good'] != 'undefined') { |
- imageHolder.classList.add( |
- e['good'] == 1 |
- ? 'good' |
- : e['good'] == -1 |
- ? 'error' |
- : e['good'] == 2 |
- ? 'poor' |
- : 'bad'); |
- } |
-} |
- |
-function updateTableRow(i) { |
- var row = dataTable.querySelectorAll('tr')[i]; |
- row.classList.remove('good'); |
- row.classList.remove('bad'); |
- row.classList.remove('error'); |
- row.classList.remove('poor'); |
- var e = data[i]; |
- if (typeof e['good'] != 'undefined') { |
- row.classList.add( |
- e['good'] == 1 |
- ? 'good' |
- : e['good'] == -1 |
- ? 'error' |
- : e['good'] == 2 |
- ? 'poor' |
- : 'bad'); |
- } |
- if (i == idx) { |
- // forces ui update |
- changeIndex(idx); |
- } |
-} |
- |
-function createTable() { |
- var dataRows = []; |
- for (var i = 0; i < data.length; i++) { |
- row = document.createElement('tr'); |
- cell = document.createElement('td'); |
- row.appendChild(cell); |
- cell.appendChild(document.createTextNode(data[i]['url'])); |
- dataTable.appendChild(row); |
- dataRows.push(row); |
- } |
- |
- $dataRows = $(dataRows); |
- |
- $dataRows.each(function(i, r) { |
- $(r).click(function() { |
- console.log(i); |
- // forces ui update |
- changeIndex(i); |
- }); |
- }) |
-} |
- |
-function setData(d, i) { |
- var needsTable = data == null; |
- data = d; //.slice(0, 100); |
- $('.total-entries').text(data.length); |
- if (needsTable) { |
- createTable(); |
- } |
- for (var i = 0; i < data.length; i++) { |
- updateTableRow(i); |
- } |
-} |
- |
-function handleVisibilityChange() { |
- if (!document.hidden) sendGetUpdates(1000); |
-} |
- |
-function getData() { |
- sendMessage( |
- 'POST', |
- { |
- 'action': 'getData' |
- }, |
- function(rsp) { |
- document.addEventListener('visibilitychange', handleVisibilityChange, false); |
- var data = rsp['response']['data']; |
- nextUpdateId = rsp['response']['nextId']; |
- setData(data); |
- var startIndex = parseInt(window.location.hash.substr(1)) - 1; |
- if (isNaN(startIndex)) { |
- startIndex = 0; |
- } |
- changeIndex(startIndex); |
- sendGetUpdates(1000); |
- } |
- ); |
-} |
- |
- |
-getUpdatesSent = false; |
-function sendGetUpdates(delay) { |
- if (document.hidden) return; |
- if (getUpdatesSent) return; |
- getUpdatesSent = true; |
- setTimeout(function() { getUpdates(delay); }, delay); |
-} |
- |
-function getUpdates(delay) { |
- $.ajax({ |
- 'type': 'GET', |
- 'url': '/getupdates?nextId=' + nextUpdateId, |
- 'contentType': 'application/json', |
- 'processData': false, |
- 'error': function(response, status) { |
- console.log('xx: wtf response: ', response, status); |
- }, |
- 'success': function(rawResponse) { |
- getUpdatesSent = false; |
- var response = rawResponse['response']; |
- nextUpdateId = response['nextId']; |
- if (response['data'] != null) { |
- setData(response['data']); |
- } else if (response['updates'] != null) { |
- updates = response['updates']; |
- for (var i = 0; i < updates.length; i++) { |
- var u = updates[i]; |
- var idx = u['index']; |
- var entry = u['entry']; |
- var curr = data[idx]; |
- if (curr['url'] != entry['url']) { |
- console.error(curr, entry); |
- } |
- data[idx] = entry; |
- updateTableRow(idx); |
- } |
- nextUpdateId = nextUpdateId; |
- delay = 1000; |
- } else { |
- delay = Math.min(30 * 1000, 1.5 * delay); |
- } |
- console.log('xx: response: ', response, delay); |
- sendGetUpdates(delay); |
- }, |
- 'dataType': 'json', |
- }); |
-} |
- |
-logkeys = false |
-$(document).ready(function(){ |
- getData(); |
- $(document).keypress(function(e){ |
- if (logkeys) { |
- console.log(e) |
- } |
- switch (e.which) { |
- case 93: // / |
- case 47: // ] |
- recordValue(2); |
- break; |
- case 42: // * |
- case 48: // 0 |
- recordError(); |
- break; |
- case 43: // + |
- case 61: // = |
- recordGood(); |
- break; |
- case 45: // - |
- recordBad(); |
- break; |
- } |
- }); |
- $(document).keydown(function(e) { |
- switch (e.which) { |
- case 37: // <-- |
- case 39: // >-- |
- e.preventDefault(); |
- } |
- }); |
- $(document).keyup(function(e){ |
- switch (e.which) { |
- case 37: // <-- |
- back(); |
- break; |
- case 39: // >-- |
- skip(); |
- break; |
- } |
- }); |
-}); |