Commit 0ecc1c89 authored by Thomas Müller's avatar Thomas Müller
Browse files

Merge pull request #15254 from owncloud/fix-14853-master

Adding a pending indicator to the files summary
parents 4d57b7bb 2b0906cd
...@@ -40,7 +40,8 @@ ...@@ -40,7 +40,8 @@
totalFiles: 0, totalFiles: 0,
totalDirs: 0, totalDirs: 0,
totalSize: 0, totalSize: 0,
filter:'' filter:'',
sumIsPending:false
}, },
/** /**
...@@ -58,7 +59,12 @@ ...@@ -58,7 +59,12 @@
else { else {
this.summary.totalFiles++; 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) { if (!!update) {
this.update(); this.update();
} }
...@@ -78,7 +84,10 @@ ...@@ -78,7 +84,10 @@
else { else {
this.summary.totalFiles--; 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) { if (!!update) {
this.update(); this.update();
} }
...@@ -103,7 +112,8 @@ ...@@ -103,7 +112,8 @@
totalDirs: 0, totalDirs: 0,
totalFiles: 0, totalFiles: 0,
totalSize: 0, totalSize: 0,
filter: this.summary.filter filter: this.summary.filter,
sumIsPending: false
}; };
for (var i = 0; i < files.length; i++) { for (var i = 0; i < files.length; i++) {
...@@ -117,7 +127,12 @@ ...@@ -117,7 +127,12 @@
else { else {
summary.totalFiles++; 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); this.setSummary(summary);
}, },
...@@ -160,7 +175,8 @@ ...@@ -160,7 +175,8 @@
// Substitute old content with new translations // Substitute old content with new translations
$dirInfo.html(n('files', '%n folder', '%n folders', this.summary.totalDirs)); $dirInfo.html(n('files', '%n folder', '%n folders', this.summary.totalDirs));
$fileInfo.html(n('files', '%n file', '%n files', this.summary.totalFiles)); $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) // Show only what's necessary (may be hidden)
if (this.summary.totalDirs === 0) { if (this.summary.totalDirs === 0) {
...@@ -194,10 +210,9 @@ ...@@ -194,10 +210,9 @@
var summary = this.summary; var summary = this.summary;
var directoryInfo = n('files', '%n folder', '%n folders', summary.totalDirs); var directoryInfo = n('files', '%n folder', '%n folders', summary.totalDirs);
var fileInfo = n('files', '%n file', '%n files', summary.totalFiles); var fileInfo = n('files', '%n file', '%n files', summary.totalFiles);
if (this.summary.filter === '') { var filterInfo = '';
var filterInfo = ''; if (this.summary.filter !== '') {
} else { filterInfo = ' ' + n('files', 'matches \'{filter}\'', 'match \'{filter}\'', summary.totalFiles + summary.totalDirs, {filter: summary.filter});
var filterInfo = ' ' + n('files', 'matches \'{filter}\'', 'match \'{filter}\'', summary.totalFiles + summary.totalDirs, {filter: summary.filter});
} }
var infoVars = { var infoVars = {
...@@ -208,7 +223,8 @@ ...@@ -208,7 +223,8 @@
// don't show the filesize column, if filesize is NaN (e.g. in trashbin) // don't show the filesize column, if filesize is NaN (e.g. in trashbin)
var fileSize = ''; var fileSize = '';
if (!isNaN(summary.totalSize)) { 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}); var info = t('files', '{dirs} and {files}', infoVars, null, {'escape': false});
......
...@@ -148,4 +148,37 @@ describe('OCA.Files.FileSummary tests', function() { ...@@ -148,4 +148,37 @@ describe('OCA.Files.FileSummary tests', function() {
expect(s.summary.totalFiles).toEqual(1); expect(s.summary.totalFiles).toEqual(1);
expect(s.summary.totalSize).toEqual(127903); 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);
});
}); });
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment