From 3086cbf4e7ef82916874b70b772d86cc4b97c3ad Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Fri, 10 Dec 2021 16:33:05 -0500 Subject: [PATCH 1/4] refactor: use resource filter store in projects route --- ui/desktop/app/routes/scopes/scope/projects.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ui/desktop/app/routes/scopes/scope/projects.js b/ui/desktop/app/routes/scopes/scope/projects.js index 1f4387f70..1a92b91a8 100644 --- a/ui/desktop/app/routes/scopes/scope/projects.js +++ b/ui/desktop/app/routes/scopes/scope/projects.js @@ -19,6 +19,7 @@ export default class ScopesScopeProjectsRoute extends Route { // =services @service session; + @service resourceFilterStore; // =methods @@ -34,8 +35,12 @@ export default class ScopesScopeProjectsRoute extends Route { * @return {Promise{ScopeModel}} */ model() { - return this.store - .query('scope', { recursive: true, scope_id: 'global' }) - .filter(({ isProject }) => isProject); + const { id: scope_id } = this.modelFor('scopes.scope'); + const projects = this.resourceFilterStore.queryBy( + 'scope', + { type: 'project' }, + { recursive: true, scope_id } + ); + return projects; } } From 88bb34828b7f7e9d2879d05bfd386f41ca21e8ed Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Fri, 10 Dec 2021 17:29:50 -0500 Subject: [PATCH 2/4] feature: initial project filtering UX in desktop sessions --- .../routes/scopes/scope/projects/sessions.js | 15 +++++++++-- .../scopes/scope/projects/sessions/index.hbs | 27 +++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/ui/desktop/app/routes/scopes/scope/projects/sessions.js b/ui/desktop/app/routes/scopes/scope/projects/sessions.js index 12618d741..78e57fe1b 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/sessions.js +++ b/ui/desktop/app/routes/scopes/scope/projects/sessions.js @@ -23,6 +23,12 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { defaultValue: ['active','pending', 'canceling'] }) status; + @resourceFilter({ + allowed: (route) => route.modelFor('scopes.scope.projects'), + serialize: ({ id }) => id, + findBySerialized: ({ id }, value) => id === value + }) project; + /** * A simple Ember Concurrency-based polling task that refreshes the route * every POLL_TIMEOUT_SECONDS seconds. This is necessary to display changes @@ -53,14 +59,19 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { /** * Loads all sessions under the current scope and encapsulates them into * an array of objects filtering to current user - * @return {Promise{[{session: SessionModel, target: TargetModel}]}} + * @return {Promise{SessionModel[]}} */ async model() { const { status } = this; const { id: scope_id } = this.modelFor('scopes.scope'); const { user_id } = this.session.data.authenticated; + const projects = this.project || []; await this.store.query('target', { recursive: true, scope_id }); - return await this.resourceFilterStore.queryBy('session', { user_id , status }, { + return await this.resourceFilterStore.queryBy('session', { + user_id, + status, + scope_id: projects.map(({ id }) => id) + }, { recursive: true, scope_id }); diff --git a/ui/desktop/app/templates/scopes/scope/projects/sessions/index.hbs b/ui/desktop/app/templates/scopes/scope/projects/sessions/index.hbs index 798489e7e..a47e6d7a6 100644 --- a/ui/desktop/app/templates/scopes/scope/projects/sessions/index.hbs +++ b/ui/desktop/app/templates/scopes/scope/projects/sessions/index.hbs @@ -49,6 +49,33 @@ {{/with}} + {{#with + (resource-filter 'scopes.scope.projects.sessions' 'project') + as |filter| + }} + + + + + + + + {{/with}} + {{#if (has-resource-filter-selections 'scopes.scope.projects.sessions' 'type' From 7b594ca9061e94c7ba22ffdd9facf44f8dd33ee0 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Mon, 13 Dec 2021 13:34:28 -0500 Subject: [PATCH 3/4] chore: allow bexpr filtering of scope mocks --- addons/api/mirage/config.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/api/mirage/config.js b/addons/api/mirage/config.js index da0632da8..3ec44c437 100644 --- a/addons/api/mirage/config.js +++ b/addons/api/mirage/config.js @@ -26,16 +26,18 @@ export default function () { this.get( '/scopes', - ({ scopes }, { queryParams: { scope_id, recursive } }) => { + ({ scopes }, { queryParams: { scope_id, recursive, filter } }) => { + let resultSet; // Default parent scope is global if (!scope_id) scope_id = 'global'; if (recursive && scope_id === 'global') { - return scopes.all(); + resultSet = scopes.all(); } else { - return scopes.where((scope) => { + resultSet = scopes.where((scope) => { return scope.scope ? scope.scope.id === scope_id : false; }); } + return resultSet.filter(makeBooleanFilter(filter)); } ); this.post('/scopes', function ({ scopes }) { From d1fdfb249605111dd90235b623960dff9f104af9 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Mon, 13 Dec 2021 13:50:40 -0500 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=F0=9F=90=9B=20tweak=20helper=20usag?= =?UTF-8?q?e=20to=20include=20both=20filters?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/desktop/app/routes/scopes/scope/projects/sessions.js | 1 + .../app/templates/scopes/scope/projects/sessions/index.hbs | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ui/desktop/app/routes/scopes/scope/projects/sessions.js b/ui/desktop/app/routes/scopes/scope/projects/sessions.js index 78e57fe1b..506af23c0 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/sessions.js +++ b/ui/desktop/app/routes/scopes/scope/projects/sessions.js @@ -121,5 +121,6 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { @action clearAllFilters() { this.status = []; + this.project = []; } } diff --git a/ui/desktop/app/templates/scopes/scope/projects/sessions/index.hbs b/ui/desktop/app/templates/scopes/scope/projects/sessions/index.hbs index a47e6d7a6..cd89ff073 100644 --- a/ui/desktop/app/templates/scopes/scope/projects/sessions/index.hbs +++ b/ui/desktop/app/templates/scopes/scope/projects/sessions/index.hbs @@ -14,7 +14,7 @@ (or @model (has-resource-filter-selections - 'scopes.scope.projects.sessions' 'type' + 'scopes.scope.projects.sessions' 'status' 'project' ) ) }} @@ -78,7 +78,7 @@ {{#if (has-resource-filter-selections - 'scopes.scope.projects.sessions' 'type' + 'scopes.scope.projects.sessions' 'status' 'project' ) }} {{else if (has-resource-filter-selections - 'scopes.scope.projects.sessions' 'type' + 'scopes.scope.projects.sessions' 'status' 'project' )}}