Skip to content

Commit 961572f

Browse files
feat: Add sort and date params in sessions (#4839)
Co-authored-by: sundaram <[email protected]>
1 parent 9a685be commit 961572f

File tree

14 files changed

+293
-132
lines changed

14 files changed

+293
-132
lines changed

app/components/public/track-item.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import classic from 'ember-classic-decorator';
2+
import { action } from '@ember/object';
3+
import { classNames } from '@ember-decorators/component';
4+
import Component from '@ember/component';
5+
6+
@classic
7+
@classNames('ui', 'segment')
8+
export default class TrackItem extends Component {
9+
hideImage = false;
10+
11+
@action
12+
hideSpeakerImage() {
13+
this.toggleProperty('hideImage');
14+
if (!this.session.speakers.length) {
15+
this.set('hideImage', false);
16+
}
17+
}
18+
}

app/controllers/public/sessions.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
import classic from 'ember-classic-decorator';
2+
import { computed } from '@ember/object';
23
import Controller from '@ember/controller';
4+
import moment from 'moment';
35

46
@classic
5-
export default class SessionsController extends Controller {}
7+
export default class SessionsController extends Controller {
8+
queryParams = ['sort'];
9+
sort = 'starts-at';
10+
isTrackVisible = false;
11+
12+
@computed('model.event.startsAt', 'model.event.endsAt')
13+
get allDates() {
14+
const arr = [];
15+
const difference = (this.model.event.endsAt).diff(this.model.event.startsAt, 'days');
16+
for (let i = 0; i <= Math.abs(difference); i++) {
17+
arr.push(moment.tz(this.model.event.startsAt, this.model.event.timezone).add(i, 'days').toISOString());
18+
}
19+
return arr;
20+
}
21+
}

app/router.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,7 @@ Router.map(function() {
4040
this.route('logout');
4141
this.route('oauth', { path: '/oauth/callback' });
4242
this.route('public', { path: '/e/:event_id' }, function() {
43-
this.route('sessions', function() {
44-
this.route('list', { path: '/:session_status' });
45-
});
43+
this.route('sessions');
4644
this.route('session', function() {
4745
this.route('view', { path: '/:session_id' });
4846
});

app/routes/public/sessions.js

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,82 @@
11
import classic from 'ember-classic-decorator';
22
import Route from '@ember/routing/route';
3+
import moment from 'moment';
34

45
@classic
56
export default class SessionsRoute extends Route {
7+
queryParams = {
8+
date: {
9+
refreshModel: true
10+
},
11+
sort: {
12+
refreshModel: true
13+
}
14+
};
15+
616
titleToken() {
717
return this.l10n.t('Sessions');
818
}
19+
20+
async model(params) {
21+
const eventDetails = this.modelFor('public');
22+
const filterOptions = [
23+
{
24+
and: [
25+
{
26+
name : 'event',
27+
op : 'has',
28+
val : {
29+
name : 'identifier',
30+
op : 'eq',
31+
val : eventDetails.id
32+
}
33+
},
34+
{
35+
or: [
36+
{
37+
name : 'state',
38+
op : 'eq',
39+
val : 'confirmed'
40+
},
41+
{
42+
name : 'state',
43+
op : 'eq',
44+
val : 'accepted'
45+
}
46+
]
47+
}
48+
]
49+
}
50+
];
51+
52+
if (params.date) {
53+
filterOptions.push({
54+
and: [
55+
{
56+
name : 'starts-at',
57+
op : 'ge',
58+
val : moment.tz(params.date, eventDetails.timezone).toISOString()
59+
},
60+
{
61+
name : 'starts-at',
62+
op : 'le',
63+
val : moment.tz(params.date, eventDetails.timezone).add(1, 'days').toISOString()
64+
}
65+
]
66+
});
67+
}
68+
69+
return {
70+
event : eventDetails,
71+
session : await this.infinity.model('session', {
72+
include : 'track,speakers,session-type,microlocation',
73+
filter : filterOptions,
74+
sort : params.sort || 'starts-at',
75+
perPage : 6,
76+
startingPage : 1,
77+
perPageParam : 'page[size]',
78+
pageParam : 'page[number]'
79+
})
80+
};
81+
}
982
}

app/routes/public/sessions/index.js

Lines changed: 0 additions & 10 deletions
This file was deleted.

app/routes/public/sessions/list.js

Lines changed: 0 additions & 85 deletions
This file was deleted.

app/styles/components/all.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
@import 'ui-table';
88
@import 'scheduler';
99
@import 'infinity-loader';
10+
@import 'track-item';

app/styles/components/track-item.scss

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
.tracks {
2+
border-radius: 5px;
3+
}
4+
5+
.vl {
6+
border-left: 1px solid rgba(86, 86, 87, .25);
7+
height: 100%;
8+
left: -3%;
9+
margin-left: -8px;
10+
position: absolute;
11+
top: 0;
12+
}

app/styles/libs/_helpers.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,11 @@ $spacer-heights: 50 100 200 300 400 500 600 700 800 900;
5858
cursor: pointer;
5959
}
6060
}
61+
62+
.d-flex {
63+
display: flex;
64+
}
65+
66+
.d-flex.wrap {
67+
flex-wrap: wrap;
68+
}

app/styles/partials/utils.scss

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232
border-top-left-radius: 0 !important;
3333
}
3434

35+
.mt-8 {
36+
margin-top: 2rem;
37+
}
38+
3539
.mb-8 {
3640
margin-bottom: 2rem;
3741
}
@@ -43,3 +47,11 @@
4347
.m-2 {
4448
margin: .5rem;
4549
}
50+
51+
.mb-2 {
52+
margin-bottom: .5rem !important;
53+
}
54+
55+
.ml-auto {
56+
margin-left: auto !important;
57+
}

0 commit comments

Comments
 (0)