Skip to content

Commit 29c89ba

Browse files
author
Hieu Lam - TMA
authored
feature-8996: On the ticket page for organizers create filters or ena… (#9067)
* feature-8996: On the ticket page for organizers create filters or enable search for ticket name, date of sale, and price * feature-8996: On the ticket page for organizers create filters or enable search for ticket name, date of sale, and price * feature-8996: On the ticket page for organizers create filters or enable search for ticket name, date of sale, and price
1 parent ea5cb09 commit 29c89ba

File tree

4 files changed

+75
-7
lines changed

4 files changed

+75
-7
lines changed

app/components/forms/wizard/sessions-speakers-step.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -337,11 +337,11 @@ export default Component.extend(EventWizardMixin, FormMixin, {
337337
if (this.data.event.sessionTypes && !this.data.event.sessionTypes.length) {
338338
this.data.event.sessionTypes.addObject(this.store.createRecord('session-type'));
339339
}
340-
340+
341341
if (this.data.event.tracks && !this.data.event.tracks.length) {
342342
this.data.event.tracks.addObject(this.store.createRecord('track'));
343343
}
344-
344+
345345
if (this.data.event.microlocations && !this.data.event.microlocations.length) {
346346
this.data.event.microlocations.addObject(this.store.createRecord('microlocation'));
347347
}
@@ -350,11 +350,11 @@ export default Component.extend(EventWizardMixin, FormMixin, {
350350
if (this.data.event.sessionTypes && this.data.event.sessionTypes.length) {
351351
this.data.event.sessionTypes.clear();
352352
}
353-
353+
354354
if (this.data.event.tracks && this.data.event.tracks.length) {
355355
this.data.event.tracks.clear();
356356
}
357-
357+
358358
if (this.data.event.microlocations && this.data.event.microlocations.length) {
359359
this.data.event.microlocations.clear();
360360
}

app/components/nav-bar.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,15 @@ export default class NavBar extends Component {
3535
}
3636
return !(String(this.session.currentRouteName).includes('explore'));
3737
}
38+
3839
@computed('session.currentRouteName')
3940
get isNotPublicPageRoute() {
4041
if (this.isGroupRoute) {
4142
return true;
4243
}
4344
return !(String(this.session.currentRouteName).includes('public'));
4445
}
46+
4547
@computed('session.currentRouteName')
4648
get isNotOrderPageRoute() {
4749
if (this.isGroupRoute) {

app/mixins/ember-table-route.js

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,62 @@ export default Mixin.create({
7272
};
7373
}
7474
return resolved;
75-
}
76-
75+
},
7776

77+
applySearchFiltersExtend(options, params, searchFields) {
78+
if (!Array.isArray(searchFields)) {
79+
searchFields = [searchFields];
80+
}
81+
let filters = options;
82+
if (searchFields.length > 1) {
83+
filters = [];
84+
options.pushObject({ or: filters });
85+
}
86+
for (let searchField of searchFields) {
87+
const findIndex = searchField.includes('__');
88+
if (!findIndex) {
89+
searchField = kebabCase(searchField);
90+
if (params.search) {
91+
filters.pushObject({
92+
name : searchField,
93+
op : 'ilike',
94+
val : `%${params.search}%`
95+
});
96+
} else {
97+
filters.removeObject({
98+
name : searchField,
99+
op : 'ilike',
100+
val : `%${params.search}%`
101+
});
102+
}
103+
} else {
104+
const splitField = searchField.split('__');
105+
let condition = 'ilike';
106+
let value = `%${params.search}%`;
107+
const specialField = ['price'];
108+
if (specialField.indexOf(splitField[1]) !== -1) {
109+
if (isNaN(params.search)) {
110+
continue;
111+
}
112+
condition = 'eq';
113+
value = params.search;
114+
}
115+
const filter = {
116+
name : splitField[0],
117+
op : 'has',
118+
val : {
119+
name : splitField[1],
120+
op : condition,
121+
val : value
122+
}
123+
};
124+
if (params.search) {
125+
filters.pushObject(filter);
126+
} else {
127+
filters.removeObject(filter);
128+
}
129+
}
130+
}
131+
return options;
132+
}
78133
});

app/routes/events/view/tickets/attendees/list.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,18 @@ export default class extends Route.extend(EmberTableRouteMixin) {
5555
}
5656
];
5757
}
58-
filterOptions = this.applySearchFilters(filterOptions, params, ['firstname', 'lastname', 'email']);
58+
filterOptions = this.applySearchFiltersExtend(
59+
filterOptions,
60+
params,
61+
[
62+
'firstname',
63+
'lastname',
64+
'email',
65+
'ticket__name',
66+
'ticket__price',
67+
'order__identifier'
68+
]);
69+
5970

6071
let queryString = {
6172
include : 'user,order',

0 commit comments

Comments
 (0)