Skip to content
34 changes: 17 additions & 17 deletions app/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,12 @@ export default class IndexController extends Controller {
event_name = null;
filterDate = null;

@computed('filteredEvents.[]')
@computed('filteredEvents.[]', 'featuredEvents.[]')
get callForSpeakersEvents() {
return this.filteredEvents.filter(event => {
const callForPapers = event.get('speakersCall');
const sessionEnabled = event.isSessionsSpeakersEnabled;
if (!callForPapers || !callForPapers.get('startsAt') || !callForPapers.get('endsAt')) {
return false;
}
const startDateTime = callForPapers.get('startsAt');
const endDateTime = callForPapers.get('endsAt');
const privacyState = callForPapers.get('privacy');
return (moment().isBetween(startDateTime, endDateTime) && (sessionEnabled) && (privacyState === 'public'));
});
}

@computed('filteredEvents.[]')
get featuredEvents() {
return this.filteredEvents ? this.filteredEvents.filter(event => {return event.isFeatured}) : null;
const filteredEventsCfs = this.filteredEvents.filter(isEventCfsOpen);
const featuredEventsCfs = this.featuredEvents.filter(isEventCfsOpen);
const combinedCfsEvents = new Set(filteredEventsCfs.concat(featuredEventsCfs));
return Array.from(combinedCfsEvents);
}

@computed('filteredEvents.[]')
Expand All @@ -48,3 +36,15 @@ export default class IndexController extends Controller {
this.set('isShareModalOpen', true);
}
}

function isEventCfsOpen(event) {
const callForPapers = event.get('speakersCall');
const sessionEnabled = event.isSessionsSpeakersEnabled;
if (!callForPapers || !callForPapers.get('startsAt') || !callForPapers.get('endsAt')) {
return false;
}
const startDateTime = callForPapers.get('startsAt');
const endDateTime = callForPapers.get('endsAt');
const privacyState = callForPapers.get('privacy');
return (moment().isBetween(startDateTime, endDateTime) && (sessionEnabled) && (privacyState === 'public'));
}
14 changes: 14 additions & 0 deletions app/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,18 +127,32 @@ export default class IndexRoute extends Route {

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

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

return {
filteredEvents: await 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', {
sort : 'starts-at',
include : 'event-topic,event-sub-topic,event-type,speakers-call',
filter : featuredEventsFilterOptions
})
};
}

setupController(controller, model) {
super.setupController(...arguments);
controller.set('filteredEvents', model.filteredEvents);
controller.set('featuredEvents', model.featuredEvents);
this.set('controller', controller);
}

Expand Down