Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-11-22 12:37:26 +0300
committerGitHub <noreply@github.com>2016-11-22 12:37:26 +0300
commitd886da7a68321e699bb22a38ec9748b983ef290e (patch)
tree389cd3cde7d923f041e63590c59aefc23c478923 /apps
parent3113bcebf33d1859a8d06d6db8cde5620874eca6 (diff)
Skip hidden files when counting visible files in list (#26571)
The file list UI logic that renders the next page doesn't properly exclude hidden files when not shown. This fix makes sure that only rows that are actually visible are counted when rendering a page, this makes sure that the page will always have enough elements displayed.
Diffstat (limited to 'apps')
-rw-r--r--apps/files/js/filelist.js8
-rw-r--r--apps/files/tests/js/filelistSpec.js28
2 files changed, 34 insertions, 2 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 71cecf058ac..82514677453 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -896,7 +896,8 @@
tr,
fileData,
newTrs = [],
- isAllSelected = this.isAllSelected();
+ isAllSelected = this.isAllSelected(),
+ showHidden = this._filesConfig.get('showhidden');
if (index >= this.files.length) {
return false;
@@ -920,7 +921,10 @@
}
newTrs.push(tr);
index++;
- count--;
+ // only count visible rows
+ if (showHidden || !tr.hasClass('hidden-file')) {
+ count--;
+ }
}
// trigger event for newly added rows
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index 90df1ab0a48..259b2ffd37b 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -1119,6 +1119,34 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.files.length).toEqual(65);
expect($('#fileList tr').length).toEqual(20);
});
+ it('renders the full first page despite hidden rows', function() {
+ filesConfig.set('showhidden', false);
+ var files = _.map(generateFiles(0, 23), function(data) {
+ return _.extend(data, {
+ name: '.' + data.name
+ });
+ });
+ // only hidden files + one visible
+ files.push(testFiles[0]);
+ fileList.setFiles(files);
+ expect(fileList.files.length).toEqual(25);
+ // render 24 hidden elements + the visible one
+ expect($('#fileList tr').length).toEqual(25);
+ });
+ it('renders the full first page despite hidden rows', function() {
+ filesConfig.set('showhidden', true);
+ var files = _.map(generateFiles(0, 23), function(data) {
+ return _.extend(data, {
+ name: '.' + data.name
+ });
+ });
+ // only hidden files + one visible
+ files.push(testFiles[0]);
+ fileList.setFiles(files);
+ expect(fileList.files.length).toEqual(25);
+ // render 20 first hidden elements as visible
+ expect($('#fileList tr').length).toEqual(20);
+ });
it('renders the second page when scrolling down (trigger nextPage)', function() {
// TODO: can't simulate scrolling here, so calling nextPage directly
fileList._nextPage(true);