Skip to content

Commit

Permalink
fix: Add more constraints for upcoming events (#4977)
Browse files Browse the repository at this point in the history
  • Loading branch information
iamareebjamal authored Sep 4, 2020
1 parent 594d156 commit 326e576
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 16 deletions.
9 changes: 6 additions & 3 deletions app/adapters/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ import ApplicationAdapter from './application';

export default ApplicationAdapter.extend({
buildURL(modelName, id, snapshot, requestType, query) {
let url = this._super(modelName, id, snapshot, requestType, query);
if (requestType === 'updateRecord' && snapshot.adapterOptions && snapshot.adapterOptions.getTrashed) {
url = `${url}?get_trashed=true`;
const url = this._super(modelName, id, snapshot, requestType, query);
if (requestType === 'updateRecord' && snapshot.adapterOptions?.getTrashed) {
return url + '?get_trashed=true';
}
if (query?.upcoming) {
return url + '/upcoming';
}
return url;
}
Expand Down
4 changes: 2 additions & 2 deletions app/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ export default class IndexController extends Controller {

@computed('filteredEvents.[]')
get promotedEvents() {
return this.filteredEvents ? this.filteredEvents.filter(event => {return event.isPromoted}) : null;
return this.filteredEvents?.filter(event => event.isPromoted);
}

@computed('filteredEvents.[]')
get upcomingEvents() {
return this.filteredEvents ? this.filteredEvents.filter(event => {return !event.isPromoted}) : null;
return this.filteredEvents?.filter(event => !event.isPromoted);
}

@action
Expand Down
103 changes: 95 additions & 8 deletions app/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import classic from 'ember-classic-decorator';
import { action } from '@ember/object';
import Route from '@ember/routing/route';
import moment from 'moment';
import { hash } from 'rsvp';

@classic
export default class IndexRoute extends Route {
Expand Down Expand Up @@ -127,26 +128,112 @@ export default class IndexRoute extends Route {

async model(params) {
const filterOptions = this._loadEvents(params, 'filterOptions');

const featuredEventsFilterOptions = this._loadEvents(params, 'filterOptions');
featuredEventsFilterOptions[0].and.push({
filterOptions[0].and.push({
name : 'is-featured',
op : 'eq',
val : true
});

return {
filteredEvents: await this.store.query('event', {
const upcomingEventsFilter = [
{
or: [
{
name : 'is-featured',
op : 'eq',
val : true
},
{
name : 'is-promoted',
op : 'eq',
val : true
},
{
and: [
{
name : 'logo-url',
op : 'ne',
val : null
},
{
name : 'original-image-url',
op : 'ne',
val : null
},
{
name : 'event-topic',
op : 'ne',
val : null
},
{
name : 'event-sub-topic',
op : 'ne',
val : null
},
{
name : 'event-type',
op : 'ne',
val : null
}
]
}
]
}
];

const callForSpeakersFilter = this._loadEvents(params, 'filterOptions');
callForSpeakersFilter[0].and = [
...callForSpeakersFilter[0].and,
...upcomingEventsFilter,
{
name : 'is-sessions-speakers-enabled',
op : 'eq',
val : true
},
{
name : 'speakers-call',
op : 'has',
val : {
name : 'privacy',
op : 'eq',
val : 'public'
}
},
{
name : 'speakers-call',
op : 'has',
val : {
name : 'starts-at',
op : 'le',
val : params.start_date
}
},
{
name : 'speakers-call',
op : 'has',
val : {
name : 'ends-at',
op : 'ge',
val : params.start_date
}
}
];

return hash({
filteredEvents: this.store.query('event', {
upcoming : true,
include : 'event-topic,event-sub-topic,event-type,speakers-call'
}),
featuredEvents: this.store.query('event', {
sort : 'starts-at',
include : 'event-topic,event-sub-topic,event-type,speakers-call',
filter : filterOptions
}),
featuredEvents: await this.store.query('event', {
callForSpeakersEvents: this.store.query('event', {
sort : 'starts-at',
include : 'event-topic,event-sub-topic,event-type,speakers-call',
filter : featuredEventsFilterOptions
filter : callForSpeakersFilter
})
};
});
}

setupController(controller, model) {
Expand Down
6 changes: 3 additions & 3 deletions app/templates/index.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@
{{else}}
<h2 class="main-heading">{{t 'No Upcoming Events Found'}}</h2>
{{/if}}
{{#if this.callForSpeakersEvents}}
{{#if this.model.callForSpeakersEvents}}
<h2 class="main-heading">{{t 'Call for speakers'}}</h2>
<div class="ui stackable three column grid">
{{#each this.callForSpeakersEvents as |event|}}
{{#each this.model.callForSpeakersEvents as |event|}}
<EventCard @event={{event}} @isCFS={{true}} @shareEvent={{action "shareEvent"}} />
{{/each}}
</div>
<div class="ui hidden divider"></div>
{{#if (gt this.callForSpeakersEvents.length 3)}}
{{#if (gt this.model.callForSpeakersEvents.length 3)}}
<div class="ui centered grid">
<div class="row">
<LinkTo @route="explore" @query={{hash cfs='open'}} class="ui blue button">{{t 'Show more calls for speakers'}}</LinkTo>
Expand Down

1 comment on commit 326e576

@vercel
Copy link

@vercel vercel bot commented on 326e576 Sep 4, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.