summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/files/js/filelist.js9
-rw-r--r--apps/files/tests/js/filelistSpec.js114
2 files changed, 121 insertions, 2 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index b1e7c3f5f8c..086e148e102 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -1566,11 +1566,16 @@
this._sort = sort;
this._sortDirection = (direction === 'desc')?'desc':'asc';
this._sortComparator = function(fileInfo1, fileInfo2) {
- if(fileInfo1.isFavorite && !fileInfo2.isFavorite) {
+ var isFavorite = function(fileInfo) {
+ return fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0;
+ };
+
+ if (isFavorite(fileInfo1) && !isFavorite(fileInfo2)) {
return -1;
- } else if(!fileInfo1.isFavorite && fileInfo2.isFavorite) {
+ } else if (!isFavorite(fileInfo1) && isFavorite(fileInfo2)) {
return 1;
}
+
return direction === 'asc' ? comparator(fileInfo1, fileInfo2) : -comparator(fileInfo1, fileInfo2);
};
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index b7ee9c8554e..ddd9a45d153 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -2476,6 +2476,120 @@ describe('OCA.Files.FileList tests', function() {
sortStub.restore();
});
+ describe('with favorites', function() {
+ it('shows favorite files on top', function() {
+ testFiles.push(new FileInfo({
+ id: 5,
+ type: 'file',
+ name: 'ZZY Before last file in ascending order',
+ mimetype: 'text/plain',
+ mtime: 999999998,
+ size: 9999998,
+ // Tags would be added by TagsPlugin
+ tags: [OC.TAG_FAVORITE],
+ }), new FileInfo({
+ id: 6,
+ type: 'file',
+ name: 'ZZZ Last file in ascending order',
+ mimetype: 'text/plain',
+ mtime: 999999999,
+ size: 9999999,
+ // Tags would be added by TagsPlugin
+ tags: [OC.TAG_FAVORITE],
+ }));
+
+ fileList.setFiles(testFiles);
+
+ // Sort by name in ascending order (default sorting is by name
+ // in ascending order, but setFiles does not trigger a sort, so
+ // the files must be sorted before being set or a sort must be
+ // triggered afterwards by clicking on the header).
+ fileList.$el.find('.column-name .columntitle').click();
+ fileList.$el.find('.column-name .columntitle').click();
+
+ expect(fileList.findFileEl('ZZY Before last file in ascending order').index()).toEqual(0);
+ expect(fileList.findFileEl('ZZZ Last file in ascending order').index()).toEqual(1);
+ expect(fileList.findFileEl('somedir').index()).toEqual(2);
+ expect(fileList.findFileEl('One.txt').index()).toEqual(3);
+ expect(fileList.findFileEl('Three.pdf').index()).toEqual(4);
+ expect(fileList.findFileEl('Two.jpg').index()).toEqual(5);
+
+ // Sort by size in ascending order
+ fileList.$el.find('.column-size .columntitle').click();
+ fileList.$el.find('.column-size .columntitle').click();
+
+ expect(fileList.findFileEl('ZZY Before last file in ascending order').index()).toEqual(0);
+ expect(fileList.findFileEl('ZZZ Last file in ascending order').index()).toEqual(1);
+ expect(fileList.findFileEl('One.txt').index()).toEqual(2);
+ expect(fileList.findFileEl('somedir').index()).toEqual(3);
+ expect(fileList.findFileEl('Two.jpg').index()).toEqual(4);
+ expect(fileList.findFileEl('Three.pdf').index()).toEqual(5);
+
+ // Sort by modification time in ascending order
+ fileList.$el.find('.column-mtime .columntitle').click();
+ fileList.$el.find('.column-mtime .columntitle').click();
+
+ expect(fileList.findFileEl('ZZY Before last file in ascending order').index()).toEqual(0);
+ expect(fileList.findFileEl('ZZZ Last file in ascending order').index()).toEqual(1);
+ expect(fileList.findFileEl('One.txt').index()).toEqual(2);
+ expect(fileList.findFileEl('somedir').index()).toEqual(3);
+ expect(fileList.findFileEl('Three.pdf').index()).toEqual(4);
+ expect(fileList.findFileEl('Two.jpg').index()).toEqual(5);
+ });
+ it('shows favorite files on top also when using descending order', function() {
+ testFiles.push(new FileInfo({
+ id: 5,
+ type: 'file',
+ name: 'AAB Before last file in descending order',
+ mimetype: 'text/plain',
+ mtime: 2,
+ size: 2,
+ // Tags would be added by TagsPlugin
+ tags: [OC.TAG_FAVORITE],
+ }), new FileInfo({
+ id: 6,
+ type: 'file',
+ name: 'AAA Last file in descending order',
+ mimetype: 'text/plain',
+ mtime: 1,
+ size: 1,
+ // Tags would be added by TagsPlugin
+ tags: [OC.TAG_FAVORITE],
+ }));
+
+ fileList.setFiles(testFiles);
+
+ // Sort by name in descending order
+ fileList.$el.find('.column-name .columntitle').click();
+
+ expect(fileList.findFileEl('AAB Before last file in descending order').index()).toEqual(0);
+ expect(fileList.findFileEl('AAA Last file in descending order').index()).toEqual(1);
+ expect(fileList.findFileEl('Two.jpg').index()).toEqual(2);
+ expect(fileList.findFileEl('Three.pdf').index()).toEqual(3);
+ expect(fileList.findFileEl('One.txt').index()).toEqual(4);
+ expect(fileList.findFileEl('somedir').index()).toEqual(5);
+
+ // Sort by size in descending order
+ fileList.$el.find('.column-size .columntitle').click();
+
+ expect(fileList.findFileEl('AAB Before last file in descending order').index()).toEqual(0);
+ expect(fileList.findFileEl('AAA Last file in descending order').index()).toEqual(1);
+ expect(fileList.findFileEl('Three.pdf').index()).toEqual(2);
+ expect(fileList.findFileEl('Two.jpg').index()).toEqual(3);
+ expect(fileList.findFileEl('somedir').index()).toEqual(4);
+ expect(fileList.findFileEl('One.txt').index()).toEqual(5);
+
+ // Sort by modification time in descending order
+ fileList.$el.find('.column-mtime .columntitle').click();
+
+ expect(fileList.findFileEl('AAB Before last file in descending order').index()).toEqual(0);
+ expect(fileList.findFileEl('AAA Last file in descending order').index()).toEqual(1);
+ expect(fileList.findFileEl('Two.jpg').index()).toEqual(2);
+ expect(fileList.findFileEl('Three.pdf').index()).toEqual(3);
+ expect(fileList.findFileEl('somedir').index()).toEqual(4);
+ expect(fileList.findFileEl('One.txt').index()).toEqual(5);
+ });
+ });
});
describe('create file', function() {
var deferredCreate;