diff --git a/app/controllers/public/sessions.js b/app/controllers/public/sessions.js index 54e9045496e..9c515650c80 100644 --- a/app/controllers/public/sessions.js +++ b/app/controllers/public/sessions.js @@ -6,7 +6,8 @@ import moment from 'moment'; @classic export default class SessionsController extends Controller { - queryParams = ['sort']; + queryParams = ['sort', 'search']; + search = null; sort = 'starts-at'; isTrackVisible = false; timezone = null; diff --git a/app/routes/public/sessions.js b/app/routes/public/sessions.js index dac5ad6c330..e01eb6ba0b9 100644 --- a/app/routes/public/sessions.js +++ b/app/routes/public/sessions.js @@ -16,6 +16,9 @@ export default class SessionsRoute extends Route { }, room: { refreshModel: true + }, + search: { + refreshModel: true } }; @@ -87,6 +90,45 @@ export default class SessionsRoute extends Route { }); } + if (params.search) { + filterOptions.push({ + or: [ + { + name : 'title', + op : 'ilike', + val : `%${params.search}%` + }, + { + name : 'track', + op : 'has', + val : { + name : 'name', + op : 'ilike', + val : `%${params.search}%` + } + }, + { + name : 'microlocation', + op : 'has', + val : { + name : 'name', + op : 'ilike', + val : `%${params.search}%` + } + }, + { + name : 'speakers', + op : 'any', + val : { + name : 'name', + op : 'ilike', + val : `%${params.search}%` + } + } + ] + }); + } + return { event : eventDetails, session : await this.infinity.model('sessions', { diff --git a/app/templates/components/tables/utilities/search-box.hbs b/app/templates/components/tables/utilities/search-box.hbs index 5841cd51960..ca9c4d29211 100644 --- a/app/templates/components/tables/utilities/search-box.hbs +++ b/app/templates/components/tables/utilities/search-box.hbs @@ -1,4 +1,4 @@ -