Adding a pending indicator to the files summary - fixes #14853

This commit is contained in:
Thomas Müller 2015-03-26 23:30:51 +01:00
parent fc59a37ae7
commit 2b0906cdff
2 changed files with 60 additions and 11 deletions

View file

@ -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});
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});

View file

@ -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);
});
});