From 41a9df405c9f6580c89a64fc2c6eed778c431b1b Mon Sep 17 00:00:00 2001 From: William Moore Date: Mon, 23 Sep 2024 12:18:49 +0100 Subject: [PATCH 1/7] Filter owners and groups dropdown lists --- src/js/views/files.js | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/js/views/files.js b/src/js/views/files.js index 9447f45ad..a350a9fea 100644 --- a/src/js/views/files.js +++ b/src/js/views/files.js @@ -248,15 +248,18 @@ export var FileListView = Backbone.View.extend({ ""; self.$tbody.html(msg); } - _.each(this.model.models, function (file) { - if (file.isVisible(filter)) { - var disabled = currentFileId === file.get('id') ? true: false; - file.set('disabled', disabled); - var e = new FileListItemView({model:file, listview:self}).render().el; - self.$tbody.prepend(e); - } + let visibleFiles = this.model.models.filter(file => file.isVisible(filter)); + _.each(visibleFiles, function (file) { + var disabled = currentFileId === file.get('id') ? true: false; + file.set('disabled', disabled); + var e = new FileListItemView({model:file, listview:self}).render().el; + self.$tbody.prepend(e); }); var owners = this.model.pluck("owner"); + if (filter.group) { + let ownerIds = this.model.models.filter(f => f.get('group').id == filter.group).map(f => f.get('owner').id); + owners = owners.filter(o => ownerIds.includes(o.id)); + } var ownersByName = {}; owners.forEach(function(o){ let name = o.firstName + " " + o.lastName; @@ -274,12 +277,20 @@ export var FileListView = Backbone.View.extend({ var ownersHtml = "
  • -- Show All --
  • "; ownersHtml += "
  • "; _.each(ownersNames, function(name) { - ownersHtml += "
  • " + _.escape(name) + "
  • "; + ownersHtml += `
  • + + + ${_.escape(name)} +
  • `; }); $("#owner-menu").html(ownersHtml); // render groups chooser var groups = this.model.pluck("group"); + if (filter.owner) { + let groupIds = this.model.models.filter(f => f.get('owner').id == filter.owner).map(f => f.get('group').id); + groups = groups.filter(g => groupIds.includes(g.id)); + } var groupsByName = {}; groups.forEach(function (g) { groupsByName[g.name] = g.id; @@ -287,7 +298,11 @@ export var FileListView = Backbone.View.extend({ var groupNames = Object.keys(groupsByName); groupNames.sort(); var groupsHtml = "
  • -- Show All --
  • "; - groupsHtml += groupNames.map(function (name) { return "
  • " + _.escape(name) + "
  • "}).join('\n'); + groupsHtml += groupNames.map(name => `
  • + + + ${_.escape(name)} +
  • `).join('\n'); $("#group-menu").html(groupsHtml); return this; } From 84a09a3e901bd2d52bc3edfb661381903fd75c06 Mon Sep 17 00:00:00 2001 From: William Moore Date: Wed, 27 Nov 2024 16:11:39 +0000 Subject: [PATCH 2/7] Fix filter files by root owner --- src/js/views/files.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/js/views/files.js b/src/js/views/files.js index a350a9fea..5ebc0f336 100644 --- a/src/js/views/files.js +++ b/src/js/views/files.js @@ -44,7 +44,7 @@ export var FigureFile = Backbone.Model.extend({ }, isVisible: function(filter) { - if (filter.owner) { + if (filter.owner !== undefined) { if (this.get('owner').id !== filter.owner) { return false; } @@ -232,7 +232,7 @@ export var FileListView = Backbone.View.extend({ filter = {}, filterVal = this.$fileFilter.val(), currentFileId = this.figureModel.get('fileId'); - if (this.owner && this.owner != -1) { + if (this.owner !== undefined && this.owner != -1) { filter.owner = this.owner; } if (this.group && this.group != -1) { From 34bf0b88b712e8dd42396e6156bd64a4633a4007 Mon Sep 17 00:00:00 2001 From: William Moore Date: Wed, 27 Nov 2024 23:15:00 +0000 Subject: [PATCH 3/7] Show current Group/User filter in column header --- src/index.html | 10 ++++++---- src/js/views/files.js | 6 ++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/index.html b/src/index.html index bce1b5be9..7d9f28b02 100644 --- a/src/index.html +++ b/src/index.html @@ -1082,13 +1082,14 @@ + Owner:
    + Group:
      `; }); $("#owner-menu").html(ownersHtml); + let owner = owners.find(o => o.id == filter.owner); + let ownerName = owner ? `${owner.firstName} ${owner.lastName}`: "Show All"; + $("#selected_owner").html(ownerName); // render groups chooser var groups = this.model.pluck("group"); @@ -304,6 +307,9 @@ export var FileListView = Backbone.View.extend({ ${_.escape(name)} `).join('\n'); $("#group-menu").html(groupsHtml); + let group = groups.find(g => g.id == filter.group); + let groupName = group ? group.name: "Show All"; + $("#selected_group").html(groupName); return this; } }); From 30ddb12f0a82a8400cf20e0fa8c1d85269831b65 Mon Sep 17 00:00:00 2001 From: William Moore Date: Thu, 28 Nov 2024 12:02:15 +0000 Subject: [PATCH 4/7] Css fixes to file dialog to handle long Group/Owner names --- src/index.html | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/index.html b/src/index.html index 7d9f28b02..47f956ad7 100644 --- a/src/index.html +++ b/src/index.html @@ -1019,7 +1019,7 @@

      Legend

      role="dialog" aria-hidden="true" > -