1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import FilterableList from '~/filterable_list';
export default class GroupFilterableList extends FilterableList {
constructor({ form, filter, holder, store }) {
super(form, filter, holder);
this.store = store;
this.$dropdown = $('.js-group-filter-dropdown-wrap');
}
bindEvents() {
super.bindEvents();
this.onFormSubmitWrapper = this.onFormSubmit.bind(this);
this.onFilterOptionClikWrapper = this.onOptionClick.bind(this);
this.filterForm.addEventListener('submit', this.onFormSubmitWrapper);
this.$dropdown.on('click', 'a', this.onFilterOptionClikWrapper);
}
onFormSubmit(e) {
e.preventDefault();
this.filterResults();
}
onOptionClick(e) {
e.preventDefault();
const currentOption = $.trim(e.currentTarget.text);
this.filterUrl = e.currentTarget.href;
this.$dropdown.find('.dropdown-label').text(currentOption);
this.filterResults(this.filterUrl);
}
preOnFilterSuccess(comingFrom) {
if (comingFrom === 'filter-input') {
this.filterUrl = `${this.filterForm.getAttribute('action')}?${$(this.filterForm).serialize()}`;
}
}
onFilterSuccess(data, xhr) {
super.onFilterSuccess(data);
this.store.setGroups(data);
this.store.storePagination({
'X-Per-Page': xhr.getResponseHeader('X-Per-Page'),
'X-Page': xhr.getResponseHeader('X-Page'),
'X-Total': xhr.getResponseHeader('X-Total'),
'X-Total-Pages': xhr.getResponseHeader('X-Total-Pages'),
'X-Next-Page': xhr.getResponseHeader('X-Next-Page'),
'X-Prev-Page': xhr.getResponseHeader('X-Prev-Page'),
});
}
}
|