From 1dbacaa5d1994eebf9df41355dd549fd7a72d616 Mon Sep 17 00:00:00 2001 From: Tamara Fleisher Date: Fri, 27 Jul 2012 12:50:17 -0700 Subject: [PATCH] history of all recent files. display path if filename is the same. --- diff/css/style.css | 102 ++++++++++++++++++------ diff/img/arrow-l.jpeg | Bin 0 -> 1301 bytes diff/img/arrow-r.jpeg | Bin 0 -> 1282 bytes diff/js/background.js | 4 + diff/js/diff.js | 54 +++++++++---- diff/js/filesystem.js | 177 +++++++++++++++++++++++++++++++---------- diff/main.html | 19 +---- diff/manifest.json | 1 + diff/tests/.DS_Store | Bin 0 -> 6148 bytes diff/tests/patch.patch | 70 ++++++++++++++++ diff/tests/t1.txt | 134 ------------------------------- diff/tests/t2.txt | 129 ------------------------------ 12 files changed, 335 insertions(+), 355 deletions(-) create mode 100644 diff/img/arrow-l.jpeg create mode 100644 diff/img/arrow-r.jpeg create mode 100644 diff/tests/.DS_Store create mode 100644 diff/tests/patch.patch delete mode 100644 diff/tests/t1.txt delete mode 100644 diff/tests/t2.txt diff --git a/diff/css/style.css b/diff/css/style.css index 42faed89..88ad135a 100644 --- a/diff/css/style.css +++ b/diff/css/style.css @@ -83,7 +83,8 @@ body { font-size: 14px; font-weight: normal; margin-left: 5px; - width: 200px; + overflow: hidden; + width: 310px; text-align: left; } @@ -145,6 +146,7 @@ body { font-weight: normal; margin: 0px; margin-bottom: 4px; + overflow: hidden; padding: 2px 40px 2px 12px; position: relative; } @@ -157,6 +159,23 @@ body { -webkit-transition: background 0s; } +.menulist .menulistitem .delete { + background: url('../img/x.png') center no-repeat; + background-size: auto 15px; + cursor: default; + filter: alpha(opacity=70); + height: 10px; + opacity: 0.7; + position: absolute; + right: 5px; + top: 10px; + width: 10px; +} + +.menulist .menulistitem .delete:hover { + opacity: 1; +} + input[type=text] { background-color: #fff; border: 1px solid #d9d9d9; @@ -331,7 +350,6 @@ input[type=text].form-error{ padding: 0 10px; position: absolute; text-align: center; - top: 46px; transition: opacity 0.13s; -webkit-transition: opacity 0.13s; white-space: nowrap; @@ -396,6 +414,10 @@ input[type=text].form-error{ width: 24px; } +#left-side .tooltip.new-diff { + top: 42px; +} + #left-side #prev-chunk { background: url('../img/arrow-up.jpg') center no-repeat; background-size: auto 20px; @@ -408,8 +430,12 @@ input[type=text].form-error{ } #left-side .tooltip.prev-chunk { - left: 13px; - top: 105px; + left: 0px; + top: 110px; +} + +#left-side .tooltip.prev-chunk .pointer { + left: 23px; } #left-side #next-chunk { @@ -423,11 +449,15 @@ input[type=text].form-error{ width: 20px; } -#left-side .tooltip.prev-chunk { - left: 13px; +#left-side .tooltip.next-chunk { + left: 0px; top: 135px; } +#left-side .tooltip.next-chunk .pointer { + left: 23px; +} + #left-side #expand-all, #left-side #collapse-all { cursor: pointer; @@ -443,18 +473,26 @@ input[type=text].form-error{ } #left-side .tooltip.expand-all { - top: 65px; + top: 73px; left: 0px; } +#left-side .tooltip.expand-all .pointer { + left: 15px; +} + #left-side #collapse-all { background: url('../img/minus_all.png') center no-repeat; left: 21px; } #left-side .tooltip.collapse-all { - top: 65px; - left: 23px; + top: 73px; + left: 18px; +} + +#left-side .tooltip.collapse-all .pointer { + left: 15px; } #left-side #expand-all.disabled, @@ -477,31 +515,31 @@ input[type=text].form-error{ width: 30px; } -#check-container { - border-right: 2px solid #666; -} - -#arrow-container::-webkit-scrollbar { +#arrow-container::-webkit-scrollbar, +#check-container::-webkit-scrollbar { display: none; } #arrow-container .arrow { background: url('../img/arrow-right.png') center no-repeat; - background-size: auto 95px; + background-size: auto 85px; height: 16px; opacity: 0; } #check-container .check { - background: url('../img/checkmark.png') center no-repeat; - background-size: auto 16px; - height: 16px; + background: url('../img/arrow-left.png') center no-repeat; + background-size: auto 85px; + height: 20px; + margin-left: 5px; + margin-bottom: -4px; opacity: 0; } #arrow-container .undo, #check-container .undo, -#arrow-container .holder { +#arrow-container .holder, +#check-container .holder { background: url('../img/undo.svg') right no-repeat; height: 16px; opacity: 0; @@ -545,6 +583,11 @@ div.file-name { padding-top: 15px; } +span.file-name-info { + color: #777; + font-size: 11px; +} + .file-diff, textarea { background: #fff; @@ -563,13 +606,11 @@ textarea { width: 100%; } -#file0-container .file-diff::-webkit-scrollbar, -#file1-container .file-diff::-webkit-scrollbar { +#file0-container .file-diff::-webkit-scrollbar { display: none; } -#file0-container .file-diff, -#file1-container .file-diff { +#file0-container .file-diff { border-right: 1px solid #999; } @@ -590,10 +631,16 @@ div.button.save { .tooltip.save { right: 0px; + top: 39px; +} + +.tooltip.save .pointer { + left: 43px; } .tooltip.edit { right: 55px; + top: 39px; } div.button.done { @@ -760,6 +807,15 @@ div.button.done { background: none; } +#file0-container .file-diff div.correct span.ins { + display: block; + background: none; +} + +#file0-container .file-diff div.correct span.del { + display: none; +} + .file-diff div.correct span { background: none; } diff --git a/diff/img/arrow-l.jpeg b/diff/img/arrow-l.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..fa9822d8606be22b0f3aee60545046e40e6eddf1 GIT binary patch literal 1301 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 literal 0 HcmV?d00001 diff --git a/diff/js/background.js b/diff/js/background.js index 24065ab0..4c80630f 100644 --- a/diff/js/background.js +++ b/diff/js/background.js @@ -11,4 +11,8 @@ function onLaunched(launchData) { }); } +chrome.runtime.onInstalled.addListener(function() { + chrome.storage.local.set({}); +}); + chrome.experimental.app.onLaunched.addListener(onLaunched); diff --git a/diff/js/diff.js b/diff/js/diff.js index 5c0cf21f..b9e0e35e 100644 --- a/diff/js/diff.js +++ b/diff/js/diff.js @@ -17,10 +17,10 @@ $(document).ready(function() { var buttons = [ '#new-diff', '#save', '#edit', - // '#expand-all', - // '#collapse-all', - // '#next-chunk', - // '#prev-chunk' + '#expand-all', + '#collapse-all', + '#next-chunk', + '#prev-chunk' ]; for (var i = 0; i < buttons.length; i++) { @@ -100,7 +100,7 @@ $(document).ready(function() { function keyboardShortcut(event) { if (event.which == 74) selectNextChunk(); - else if (event.which == 75) + else if (evenjjkt.which == 75) selectPrevChunk(); else if ((event.which == 76) && (selectedChunk > 0) && (selectedChunk <= totalChunks)) @@ -129,8 +129,10 @@ function getText(fileNum) { && !$(lines[i]).hasClass('hidden')) { var line = $(lines[i]).children(); for (var j = 0; j < line.length; j++) { - if ($(lines[i]).hasClass('left')) { - if (!$(line[j]).hasClass('ins')) + if ($(lines[i]).hasClass('merged')) { + if (fileNum == 1 && !$(line[j]).hasClass('ins')) + text += $(line[j]).html(); + if (fileNum == 0 && !$(line[j]).hasClass('del')) text += $(line[j]).html(); } else { if (fileNum == 0 && !$(line[j]).hasClass('ins')) @@ -218,6 +220,12 @@ function computeDiff(file1, file2) { } } +function patchToFile2(file1, patchText) { + var patches = dmp.patch_fromText(patchText); + var patchData = dmp.patch_apply(patches, file1); + return patchData[0]; +} + function createHtmlLines(diffs) { var pattern_amp = /&/g; var pattern_lt = / div').each(function() { if (!isBlankLine(this, realLineNum)) { - $(this).html('
' + $(this).html() + '
'); + $(this).html('
' + $(this).html() + '
'); $(this).prepend('
' + lineNum + '
'); if ($(this).parent().hasClass('0')) $(this).prepend('
'); @@ -620,10 +634,10 @@ function moveChunk(chunkNum) { for (var i = 0; i < lines1.length; i++) { var realLineNum = getRealLine(lines1[i]); var text = ''; - if ($('.file-diff.0 .' + realLineNum).children('.text.right').length > 0) + if ($('.file-diff.0 .' + realLineNum).children('.text.orig').length > 0) text = $('.file-diff.0 .' + realLineNum + ' > div.text').html(); - var div = '
' + text + '
'; - $('.file-diff.1 > .' + realLineNum + ' > .text.right').addClass('hidden'); + var div = '
' + text + '
'; + $('.file-diff.1 > .' + realLineNum + ' > .text.orig').addClass('hidden'); $('.file-diff.1 > .' + realLineNum).append(div); $('.file-diff.0 > .' + realLineNum).addClass('fix'); $('.file-diff.1 > .' + realLineNum).addClass('fix'); @@ -650,8 +664,8 @@ function undoMoveChunk(chunkNum) { var lines2 = $('.file-diff.1').children('div.' + chunkNum); for (var i = 0; i < lines1.length; i++) { var lineNum = getRealLine(lines1[i]); - $('.file-diff.1 > .' + lineNum + ' > .text.right').removeClass('hidden'); - $('.file-diff.1 > .' + lineNum + ' > .left').remove(); + $('.file-diff.1 > .' + lineNum + ' > .text.orig').removeClass('hidden'); + $('.file-diff.1 > .' + lineNum + ' > .merged').remove(); $('.file-diff.0 > .' + lineNum).removeClass('fix'); $('.file-diff.1 > .' + lineNum).removeClass('fix'); } @@ -677,6 +691,12 @@ function checkRight(chunkNum) { var lines2 = $('.file-diff.1').children('div.' + chunkNum); for (var i = 0; i < lines1.length; i++) { var realLineNum = getRealLine(lines1[i]); + var text = ''; + if ($('.file-diff.1 .' + realLineNum).children('.text.orig').length > 0) + text = $('.file-diff.1 .' + realLineNum + ' > div.text').html(); + var div = '
' + text + '
'; + $('.file-diff.0 > .' + realLineNum + ' > .text.orig').addClass('hidden'); + $('.file-diff.0 > .' + realLineNum).append(div); $('.file-diff.0 > .' + realLineNum).addClass('correct'); $('.file-diff.1 > .' + realLineNum).addClass('correct'); } @@ -690,6 +710,8 @@ function checkRight(chunkNum) { $('#num-diffs').html(numChunks + ' conflict'); else $('#num-diffs').html(numChunks + ' conflicts'); + var text = getText(0); + saveFile(text, 'file0.txt'); var num = parseInt(chunkNum.slice(6)); if (selectedChunk == num) selectNextChunk(); @@ -700,6 +722,8 @@ function undoCheckRight(chunkNum) { var lines2 = $('.file-diff.1').children('div.' + chunkNum); for (var i = 0; i < lines1.length; i++) { var lineNum = getRealLine(lines1[i]); + $('.file-diff.0 > .' + lineNum + ' > .text.orig').removeClass('hidden'); + $('.file-diff.0 > .' + lineNum + ' > .merged').remove(); $('.file-diff.0 > .' + lineNum).removeClass('correct'); $('.file-diff.1 > .' + lineNum).removeClass('correct'); } @@ -714,6 +738,8 @@ function undoCheckRight(chunkNum) { $('#num-diffs').html(numChunks + ' conflict'); else $('#num-diffs').html(numChunks + ' conflicts'); + var text = getText(0); + saveFile(text, 'file0.txt'); var num = parseInt(chunkNum.slice(6)); selectChunk(num); } diff --git a/diff/js/filesystem.js b/diff/js/filesystem.js index 28bc7858..f930548e 100644 --- a/diff/js/filesystem.js +++ b/diff/js/filesystem.js @@ -6,7 +6,7 @@ var FILE_SIZE = 1024 * 1024; var displayNames = [null, null]; -var paths = [null, null]; +var paths = {}; var fileEntries = [null, null]; var texts = [null, null]; var urlNum = null; @@ -110,21 +110,34 @@ $(document).ready(function() { function registerMenulistitemClicks() { $('li.menulistitem').click(function() { - if (!$(this).hasClass('selected')) { - var fileNum = $(this).parent().attr('class').split(' ')[1]; - var fileName = $(this).text(); + if ($(this).hasClass('choose-new-file')) { + var fileNum = parseInt($(this).parent().attr('class').split(' ')[1]); + selectFile(fileNum, true); + } + else if (!$(this).hasClass('selected')) { + var fileNum = parseInt($(this).parent().attr('class').split(' ')[1]); + var fileName = $(this).children('.file-name').text(); $(this).parent().children('li.menulistitem').removeClass('selected'); $(this).addClass('selected'); displayNames[fileNum] = fileName; - texts[fileNum] = fileHistory[fileName]; + texts[fileNum] = fileHistory[paths[fileName]]; + setFileName(fileNum); saveFile(texts[fileNum], 'file' + fileNum + '.txt'); - saveFile(displayNames[fileNum], 'name' + fileNum + '.txt'); - submitDiffs(); + saveFile(paths[displayNames[fileNum]], 'name' + fileNum + '.txt'); + computeDiff(texts[0], texts[1]); } - console.log($('.menulist').hasClass('shown')); - console.log($(this).parent().hasClass('shown')); $('.menulist').removeClass('shown'); - console.log($('.menulist').hasClass('shown')); + }); + + $('li.menulistitem .delete').click(function() { + var name = $(this).parent().children('.file-name').text(); + var path = paths[name]; + delete fileHistory[path]; + chrome.storage.local.set({'fileHistory': fileHistory}); + $('li.menulistitem').each(function() { + if ($(this).children('.file-name').text() == name) + $(this).remove(); + }) }); } @@ -139,11 +152,13 @@ function selectURL() { function(text) { var urlSecs = url.split('/'); displayNames[urlNum] = urlSecs[urlSecs.length-1]; + paths[displayNames[urlNum]] = url; badURL = false; texts[urlNum] = text; + rememberFile(fileNum); var name = 'file' + urlNum + '.txt'; saveFile(text, name); - saveFile(displayNames[urlNum], 'name' + urlNum + '.txt'); + saveFile(paths[displayNames[urlNum]], 'name' + urlNum + '.txt'); }, 'html' ); @@ -152,12 +167,14 @@ function selectURL() { } } -function selectFile(fileNum) { +function selectFile(fileNum, chooseNew) { chrome.fileSystem.chooseFile({'type': 'openFile'}, function(fileEntry) { fileEntries[fileNum] = fileEntry; chrome.fileSystem.getDisplayPath(fileEntry, function(path) { - path = path.split('/'); - displayNames[fileNum] = path[path.length - 1]; + var pathList = path.split('/'); + var l = pathList.length - 1; + displayNames[fileNum] = pathList[l]; + paths[displayNames[fileNum]] = path; $('.modal-dialog.new-diff .file-name.' + fileNum).text(displayNames[fileNum]); fileEntries[fileNum].file(function(file) { var reader = new FileReader(); @@ -168,8 +185,10 @@ function selectFile(fileNum) { texts[fileNum] = this.result; rememberFile(fileNum); var name = 'file' + fileNum + '.txt'; - saveFile(this.result, name); - saveFile(displayNames[fileNum], 'name' + fileNum + '.txt'); + saveFile(texts[fileNum], name); + saveFile(paths[displayNames[fileNum]], 'name' + fileNum + '.txt'); + if (chooseNew) + chooseNewFile(fileNum); }; reader.readAsText(file); }, errorHandler); @@ -177,36 +196,89 @@ function selectFile(fileNum) { }); } -function rememberFile(fileNum) { - fileHistory[displayNames[fileNum]] = texts[fileNum]; - $('ul.menulist.' + fileNum + ' .menulistitem').removeClass('selected'); - $('ul.menulist.' + fileNum).append(''); - $('ul.menulist.' + ((fileNum + 1) % 2)).append(''); - registerMenulistitemClicks(); +function getExtension(fileName) { + var parts = fileName.split('.'); + return parts[parts.length - 1]; } -function selectRememberedFile(fileNum, fileName) { - texts[fileNum] = fileHistory[fileName]; - displayNames[fileNum] = fileName; - submitDiffs(); +function isPatch(fileName) { + return getExtension(fileName).toLowerCase() == 'patch'; +} + +function addToMenulistDisplayed(listNum, displayNum, selected) { + var name = displayNames[displayNum]; + var path = paths[displayNames[displayNum]].split('/').slice(-5, -2).join('/'); + $('ul.menulist.' + listNum).append( + ''); +} + +function addToMenulist(path) { + var pathSecs = path.split('/'); + var name = pathSecs[pathSecs.length - 1]; + var displayPath = pathSecs.slice(-5, -2).join('/'); + paths[name] = path; + for (var listNum = 0; listNum < 2; listNum++) { + $('ul.menulist.' + listNum).append( + ''); + } +} + +function setFileName(fileNum) { + var name = displayNames[fileNum]; + var path = paths[displayNames[fileNum]].split('/').slice(-5, -2).join('/'); + $('#file' + fileNum + '-container .label.file-name').html( + '' + name + '' + + ' - ' + path + ''); } function createDropdown() { - for (var i = 0; i < 2; i++) { - $('ul.menulist.' + i).append('' - + ''); + $('ul.menulist').html(''); + for (path in fileHistory) { + if (path == paths[displayNames[0]]) { + addToMenulistDisplayed(0, 0, 'selected'); + addToMenulistDisplayed(0, 1, ''); + } + else if (path == paths[displayNames[1]]) { + addToMenulistDisplayed(1, 0, ''); + addToMenulistDisplayed(1, 1, 'selected'); + } + else { + addToMenulist(path); + } } registerMenulistitemClicks(); } +function rememberFile(fileNum) { + fileHistory[paths[displayNames[fileNum]]] = texts[fileNum]; + chrome.storage.local.set({'fileHistory': fileHistory}); + $('ul.menulist.' + fileNum + ' .menulistitem').removeClass('selected'); + addToMenulistDisplayed(fileNum, fileNum, 'selected'); + addToMenulistDisplayed(((fileNum + 1) % 2), fileNum, ''); + registerMenulistitemClicks(); +} + +function selectRememberedFile(fileNum, fileName) { + texts[fileNum] = fileHistory[paths[fileName]]; + displayNames[fileNum] = fileName; + submitDiffs(); +} + function submitDiffs() { if (texts[0] && texts[1] && !badURL) { - $('.file-name.0').text(displayNames[0]); - $('.file-name.1').text(displayNames[1]); + setFileName(0); + setFileName(1); + if (isPatch(displayNames[1])) { + texts[1] = patchToFile2(texts[0], texts[1]); + rememberFile(1); + saveFile(texts[1], 'file1.txt'); + } computeDiff(texts[0], texts[1]); $('.modal-dialog.new-diff .close-button').click(); $('.button.edit').removeClass('hidden'); @@ -222,6 +294,24 @@ function submitDiffs() { } } +function chooseNewFile(fileNum) { + setFileName(fileNum); + if (texts[0] && texts[1]) { + if ((fileNum == 1) && isPatch(displayNames[1])) { + texts[1] = patchToFile2(texts[0], texts[1]); + rememberFile(1); + saveFile(texts[1], 'file1.txt'); + } + computeDiff(texts[0], texts[1]); + } + else + $('.file-diff.' + fileNum).text(texts[fileNum]); + if (fileNum == 1) { + $('.button.edit').removeClass('hidden'); + $('.button.save').removeClass('hidden'); + } +} + function saveFile(content, fileName) { window.webkitRequestFileSystem( window.PERSISTENT, @@ -263,10 +353,13 @@ function readFile(fileName, fileNum) { var reader = new FileReader(); reader.onloadend = function(e) { texts[fileNum] = this.result; - fileHistory[displayNames[fileNum]] = texts[fileNum]; if (texts[0] && texts[1]) { - createDropdown(); - computeDiff(texts[0], texts[1]); + chrome.storage.local.get(function(items) { + for (key in items['fileHistory']) + fileHistory[key] = items['fileHistory'][key]; + createDropdown(); + computeDiff(texts[0], texts[1]); + }); } }; reader.readAsText(file); @@ -284,8 +377,12 @@ function readFileName(fileName, fileNum) { fileEntry.file(function(file) { var reader = new FileReader(); reader.onloadend = function(e) { - displayNames[fileNum] = this.result; - $('.file-name.' + fileNum).text(displayNames[fileNum]); + path = this.result; + var pathList = path.split('/'); + var l = pathList.length - 1; + displayNames[fileNum] = pathList[l]; + paths[displayNames[fileNum]] = path; + setFileName(fileNum); readFile('file' + fileNum + '.txt', fileNum); }; reader.readAsText(file); diff --git a/diff/main.html b/diff/main.html index b9098288..7f58b6fe 100644 --- a/diff/main.html +++ b/diff/main.html @@ -51,21 +51,15 @@ No File Selected ​​​​​​​​​​​ -
+
@@ -73,15 +67,12 @@ No File Selected ​​​​​​​​​​​ - - - + @@ -91,8 +82,6 @@
-
-
diff --git a/diff/manifest.json b/diff/manifest.json index d811693f..01014b3b 100644 --- a/diff/manifest.json +++ b/diff/manifest.json @@ -10,6 +10,7 @@ } }, "permissions": ["experimental", + "storage", "unlimitedStorage", "fileSystem", "fileSystemWrite", diff --git a/diff/tests/.DS_Store b/diff/tests/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0