@@ -4,6 +4,7 @@ import { action, computed } from '@ember/object';
4
4
import Component from '@ember/component' ;
5
5
import { tracked } from '@glimmer/tracking' ;
6
6
import { levels } from 'open-event-frontend/utils/dictionary/levels' ;
7
+ import { languages } from 'open-event-frontend/utils/dictionary/languages' ;
7
8
8
9
@classic
9
10
export default class ScheduleMenuFilter extends Component {
@@ -16,8 +17,11 @@ export default class ScheduleMenuFilter extends Component {
16
17
17
18
@tracked activeTrack = this . router . currentRoute . queryParams . track ? this . router . currentRoute . queryParams . track . split ( ',' ) : [ ] ;
18
19
20
+ @tracked activeLanguage = this . router . currentRoute . queryParams . language ? this . router . currentRoute . queryParams . language . split ( ',' ) : [ ] ;
21
+
19
22
@tracked levels = orderBy ( levels , 'position' ) ;
20
23
24
+ @tracked languageList = [ ] ;
21
25
22
26
@action
23
27
removeActiveSession ( ) {
@@ -29,6 +33,11 @@ export default class ScheduleMenuFilter extends Component {
29
33
this . activeSessionLevel = [ ] ;
30
34
}
31
35
36
+ @action
37
+ removeActiveLanguage ( ) {
38
+ this . activeLanguage = [ ] ;
39
+ }
40
+
32
41
@action
33
42
removeActiveRoom ( ) {
34
43
this . activeRoom = [ ] ;
@@ -90,12 +99,26 @@ export default class ScheduleMenuFilter extends Component {
90
99
this . router . transitionTo ( 'public.sessions' , { queryParams : { 'track' : this . activeTrack } } ) ;
91
100
}
92
101
102
+ @action
103
+ languageFilter ( name ) {
104
+ this . activeLanguage = this . router . currentRoute . queryParams . language ? this . router . currentRoute . queryParams . language . split ( ',' ) : [ ] ;
105
+ if ( this . activeLanguage . includes ( name ) ) {
106
+ this . activeLanguage = this . activeLanguage . filter ( language => language !== name ) ;
107
+ } else {
108
+ this . activeLanguage = [ ...this . activeLanguage , name ] ;
109
+ }
110
+ this . router . transitionTo ( 'public.sessions' , { queryParams : { 'language' : this . activeLanguage } } ) ;
111
+ }
112
+
93
113
@action
94
114
applyFilter ( value , filterType ) {
95
115
const params = this . router . currentRoute . queryParams ;
96
116
if ( ! params . track ) {
97
117
this . activeTrack = [ ] ;
98
118
}
119
+ if ( ! params . language ) {
120
+ this . activeLanguage = [ ] ;
121
+ }
99
122
if ( ! params . room ) {
100
123
this . activeRoom = [ ] ;
101
124
}
@@ -134,4 +157,22 @@ export default class ScheduleMenuFilter extends Component {
134
157
get sessionTypeList ( ) {
135
158
return orderBy ( this . event . sessionTypes . toArray ( ) , [ 'position' ] ) ;
136
159
}
160
+
161
+ async didInsertElement ( ) {
162
+ const response = await this . loader . load ( `/events/${ this . event . id } /sessions/languages` ) ;
163
+ const languageList = [ ] ;
164
+ languages . forEach ( language => {
165
+ response . forEach ( item => {
166
+ if ( item === language . name ) {
167
+ languageList . push ( language ) ;
168
+ }
169
+ } ) ;
170
+ } ) ;
171
+ this . set ( 'languageList' , languageList ) ;
172
+ }
173
+
174
+ @computed ( 'languageList.@each' )
175
+ get languageFilterList ( ) {
176
+ return orderBy ( this . languageList . toArray ( ) , [ 'name' ] ) ;
177
+ }
137
178
}
0 commit comments