totalFiles: 0,
totalDirs: 0,
totalSize: 0,
- filter:''
+ filter:'',
+ sumIsPending:false
},
/**
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();
}
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();
}
totalDirs: 0,
totalFiles: 0,
totalSize: 0,
- filter: this.summary.filter
+ filter: this.summary.filter,
+ sumIsPending: false
};
for (var i = 0; i < files.length; i++) {
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);
},
// 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) {
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 = {
// 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});
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);
+ });
});