Skip to content

Commit

Permalink
Adding a pending indicator to the files summary - fixes #14853
Browse files Browse the repository at this point in the history
  • Loading branch information
DeepDiver1975 committed Mar 27, 2015
1 parent fc59a37 commit 2b0906c
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 11 deletions.
38 changes: 27 additions & 11 deletions apps/files/js/filesummary.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
totalFiles: 0,
totalDirs: 0,
totalSize: 0,
filter:''
filter:'',
sumIsPending:false
},

/**
Expand All @@ -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();
}
Expand All @@ -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();
}
Expand All @@ -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++) {
Expand All @@ -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);
},
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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 = {
Expand All @@ -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});
Expand Down
33 changes: 33 additions & 0 deletions apps/files/tests/js/filesummarySpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
});

0 comments on commit 2b0906c

Please sign in to comment.