diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-03-27 14:18:47 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-03-27 14:18:47 +0100 |
commit | 0ecc1c89ad77341c3d178fe4d393b3207849fb60 (patch) | |
tree | 85a3d0aa2a3d6b182d2139dcb556e0676cc69b67 /apps | |
parent | 4d57b7bb3ccee1955e478406f1685efa3034a2f4 (diff) | |
parent | 2b0906cdffb69db3651b42f7cee2e67c7d095475 (diff) | |
download | nextcloud-server-0ecc1c89ad77341c3d178fe4d393b3207849fb60.tar.gz nextcloud-server-0ecc1c89ad77341c3d178fe4d393b3207849fb60.zip |
Merge pull request #15254 from owncloud/fix-14853-master
Adding a pending indicator to the files summary
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files/js/filesummary.js | 38 | ||||
-rw-r--r-- | apps/files/tests/js/filesummarySpec.js | 33 |
2 files changed, 60 insertions, 11 deletions
diff --git a/apps/files/js/filesummary.js b/apps/files/js/filesummary.js index 11cb4f8ee45..a4cefe692a8 100644 --- a/apps/files/js/filesummary.js +++ b/apps/files/js/filesummary.js @@ -40,7 +40,8 @@ totalFiles: 0, totalDirs: 0, totalSize: 0, - filter:'' + filter:'', + sumIsPending:false }, /** @@ -58,7 +59,12 @@ else { this.summary.totalFiles++; } - this.summary.totalSize += parseInt(file.size, 10) || 0; + var size = parseInt(file.size, 10) || 0; + if (size >=0) { + this.summary.totalSize += size; + } else { + this.summary.sumIsPending = true; + } if (!!update) { this.update(); } @@ -78,7 +84,10 @@ else { this.summary.totalFiles--; } - this.summary.totalSize -= parseInt(file.size, 10) || 0; + var size = parseInt(file.size, 10) || 0; + if (size >=0) { + this.summary.totalSize -= size; + } if (!!update) { this.update(); } @@ -103,7 +112,8 @@ totalDirs: 0, totalFiles: 0, totalSize: 0, - filter: this.summary.filter + filter: this.summary.filter, + sumIsPending: false }; for (var i = 0; i < files.length; i++) { @@ -117,7 +127,12 @@ else { summary.totalFiles++; } - summary.totalSize += parseInt(file.size, 10) || 0; + var size = parseInt(file.size, 10) || 0; + if (size >=0) { + summary.totalSize += size; + } else { + summary.sumIsPending = true; + } } this.setSummary(summary); }, @@ -160,7 +175,8 @@ // Substitute old content with new translations $dirInfo.html(n('files', '%n folder', '%n folders', this.summary.totalDirs)); $fileInfo.html(n('files', '%n file', '%n files', this.summary.totalFiles)); - this.$el.find('.filesize').html(OC.Util.humanFileSize(this.summary.totalSize)); + var fileSize = this.summary.sumIsPending ? t('files', 'Pending') : OC.Util.humanFileSize(this.summary.totalSize); + this.$el.find('.filesize').html(fileSize); // Show only what's necessary (may be hidden) if (this.summary.totalDirs === 0) { @@ -194,10 +210,9 @@ var summary = this.summary; var directoryInfo = n('files', '%n folder', '%n folders', summary.totalDirs); var fileInfo = n('files', '%n file', '%n files', summary.totalFiles); - if (this.summary.filter === '') { - var filterInfo = ''; - } else { - var filterInfo = ' ' + n('files', 'matches \'{filter}\'', 'match \'{filter}\'', summary.totalFiles + summary.totalDirs, {filter: summary.filter}); + var filterInfo = ''; + if (this.summary.filter !== '') { + filterInfo = ' ' + n('files', 'matches \'{filter}\'', 'match \'{filter}\'', summary.totalFiles + summary.totalDirs, {filter: summary.filter}); } var infoVars = { @@ -208,7 +223,8 @@ // don't show the filesize column, if filesize is NaN (e.g. in trashbin) var fileSize = ''; if (!isNaN(summary.totalSize)) { - fileSize = '<td class="filesize">' + OC.Util.humanFileSize(summary.totalSize) + '</td>'; + fileSize = summary.sumIsPending ? t('files', 'Pending') : OC.Util.humanFileSize(summary.totalSize); + fileSize = '<td class="filesize">' + fileSize + '</td>'; } var info = t('files', '{dirs} and {files}', infoVars, null, {'escape': false}); diff --git a/apps/files/tests/js/filesummarySpec.js b/apps/files/tests/js/filesummarySpec.js index 4c53b7d8b3a..ae5ff95fc0c 100644 --- a/apps/files/tests/js/filesummarySpec.js +++ b/apps/files/tests/js/filesummarySpec.js @@ -148,4 +148,37 @@ describe('OCA.Files.FileSummary tests', function() { expect(s.summary.totalFiles).toEqual(1); expect(s.summary.totalSize).toEqual(127903); }); + it('properly sum up pending folder sizes after adding', function() { + var s = new FileSummary($container); + s.setSummary({ + totalDirs: 0, + totalFiles: 0, + totalSize: 0 + }); + s.add({type: 'dir', size: -1}); + s.update(); + expect($container.hasClass('hidden')).toEqual(false); + expect($container.find('.info').text()).toEqual('1 folder and 0 files'); + expect($container.find('.filesize').text()).toEqual('Pending'); + expect(s.summary.totalDirs).toEqual(1); + expect(s.summary.totalFiles).toEqual(0); + expect(s.summary.totalSize).toEqual(0); + }); + it('properly sum up pending folder sizes after remove', function() { + var s = new FileSummary($container); + s.setSummary({ + totalDirs: 0, + totalFiles: 0, + totalSize: 0 + }); + s.add({type: 'dir', size: -1}); + s.remove({type: 'dir', size: -1}); + s.update(); + expect($container.hasClass('hidden')).toEqual(true); + expect($container.find('.info').text()).toEqual('0 folders and 0 files'); + expect($container.find('.filesize').text()).toEqual('0 B'); + expect(s.summary.totalDirs).toEqual(0); + expect(s.summary.totalFiles).toEqual(0); + expect(s.summary.totalSize).toEqual(0); + }); }); |