Skip to content
This repository was archived by the owner on Feb 9, 2022. It is now read-only.

Commit f2eaf88

Browse files
committed
Attendee grid revamp
added has ticket filter Signed-off-by: smarcet <[email protected]>
1 parent fea0ee0 commit f2eaf88

File tree

3 files changed

+73
-31
lines changed

3 files changed

+73
-31
lines changed

src/actions/attendee-actions.js

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export const setSelectedAll = (value) => (dispatch, getState) => {
6969

7070
export const getAttendees = ( term = null, page = 1, perPage = 10,
7171
order = 'id', orderDir = 1,
72-
statusFilter= null, memberFilter= null
72+
statusFilter= null, memberFilter= null, ticketsFilter = null
7373
) => (dispatch, getState) => {
7474

7575
let { loggedUserState, currentSummitState } = getState();
@@ -102,6 +102,13 @@ export const getAttendees = ( term = null, page = 1, perPage = 10,
102102
filter.push(`has_member==false`)
103103
}
104104

105+
if(ticketsFilter){
106+
if(ticketsFilter == 'HAS_TICKETS')
107+
filter.push(`has_tickets==true`)
108+
if(ticketsFilter == 'HAS_NO_TICKETS')
109+
filter.push(`has_tickets==false`)
110+
}
111+
105112
if(filter.length > 0){
106113
params['filter[]']= filter;
107114
}
@@ -117,7 +124,7 @@ export const getAttendees = ( term = null, page = 1, perPage = 10,
117124
createAction(RECEIVE_ATTENDEES),
118125
`${window.API_BASE_URL}/api/v1/summits/${currentSummit.id}/attendees`,
119126
authErrorHandler,
120-
{page, perPage, order, orderDir, term, statusFilter, memberFilter}
127+
{page, perPage, order, orderDir, term, statusFilter, memberFilter, ticketsFilter}
121128
)(params)(dispatch).then(() => {
122129
dispatch(stopLoading());
123130
}
@@ -127,7 +134,7 @@ export const getAttendees = ( term = null, page = 1, perPage = 10,
127134

128135
export const exportAttendees = ( term = null,
129136
order = 'id', orderDir = 1,
130-
statusFilter= null, memberFilter= null
137+
statusFilter= null, memberFilter= null, ticketsFilter = null
131138
) => (dispatch, getState) => {
132139

133140
let { loggedUserState, currentSummitState } = getState();
@@ -156,6 +163,13 @@ export const exportAttendees = ( term = null,
156163
filter.push(`has_member==false`)
157164
}
158165

166+
if(ticketsFilter){
167+
if(ticketsFilter == 'HAS_TICKETS')
168+
filter.push(`has_tickets==true`)
169+
if(ticketsFilter == 'HAS_NO_TICKETS')
170+
filter.push(`has_tickets==false`)
171+
}
172+
159173
if(filter.length > 0){
160174
params['filter[]']= filter;
161175
}
@@ -383,7 +397,7 @@ const normalizeEntity = (entity) => {
383397
}
384398

385399
export const sendEmails = (currentFlowEvent, selectedAll = false , selectedIds = [],
386-
term = null, statusFilter= null, memberFilter= null
400+
term = null, statusFilter= null, memberFilter= null, ticketsFilter = null
387401
) => (dispatch, getState) => {
388402

389403

@@ -413,6 +427,13 @@ export const sendEmails = (currentFlowEvent, selectedAll = false , selectedIds =
413427
filter.push(`has_member==false`)
414428
}
415429

430+
if(ticketsFilter){
431+
if(ticketsFilter == 'HAS_TICKETS')
432+
filter.push(`has_tickets==true`)
433+
if(ticketsFilter == 'HAS_NO_TICKETS')
434+
filter.push(`has_tickets==false`)
435+
}
436+
416437
if(filter.length > 0){
417438
params['filter[]']= filter;
418439
}

src/pages/attendees/summit-attendees-list-page.js

Lines changed: 45 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class SummitAttendeeListPage extends React.Component {
5151
this.handleChangeFlowEvent = this.handleChangeFlowEvent.bind(this);
5252
this.handleSetMemberFilter = this.handleSetMemberFilter.bind(this);
5353
this.handleSetStatusFilter = this.handleSetStatusFilter.bind(this);
54+
this.handleSetTicketsFilter = this.handleSetTicketsFilter.bind(this);
5455
this.handleExport = this.handleExport.bind(this);
5556
this.state = {
5657
showModal: false,
@@ -60,19 +61,24 @@ class SummitAttendeeListPage extends React.Component {
6061
}
6162

6263
handleExport(ev) {
63-
let {term, order, orderDir, statusFilter, memberFilter} = this.props;
64+
let {term, order, orderDir, statusFilter, memberFilter, ticketsFilter} = this.props;
6465
ev.preventDefault();
65-
this.props.exportAttendees(term, order, orderDir, statusFilter, memberFilter);
66+
this.props.exportAttendees(term, order, orderDir, statusFilter, memberFilter, ticketsFilter);
6667
}
6768

6869
handleSetMemberFilter(newMemberFilter){
69-
let {term, order, page, orderDir, perPage, statusFilter} = this.props;
70-
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, newMemberFilter);
70+
let {term, order, page, orderDir, perPage, statusFilter, ticketsFilter} = this.props;
71+
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, newMemberFilter, ticketsFilter);
72+
}
73+
74+
handleSetTicketsFilter(newTicketsFilter){
75+
let {term, order, page, orderDir, perPage, statusFilter, memberFilter, ticketsFilter} = this.props;
76+
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter, newTicketsFilter, ticketsFilter);
7177
}
7278

7379
handleSetStatusFilter(newStatusFilter){
74-
let {term, order, page, orderDir, perPage, memberFilter} = this.props;
75-
this.props.getAttendees(term, page, perPage, order, orderDir, newStatusFilter, memberFilter);
80+
let {term, order, page, orderDir, perPage, memberFilter, ticketsFilter} = this.props;
81+
this.props.getAttendees(term, page, perPage, order, orderDir, newStatusFilter, memberFilter, ticketsFilter);
7682
}
7783

7884
handleChangeFlowEvent(ev){
@@ -89,6 +95,7 @@ class SummitAttendeeListPage extends React.Component {
8995
term,
9096
memberFilter,
9197
statusFilter,
98+
ticketsFilter,
9299
selectedIds,
93100
currentFlowEvent,
94101
sendEmails
@@ -104,7 +111,7 @@ class SummitAttendeeListPage extends React.Component {
104111
return false;
105112
}
106113

107-
sendEmails(currentFlowEvent, selectedAll , selectedIds, term, statusFilter, memberFilter);
114+
sendEmails(currentFlowEvent, selectedAll , selectedIds, term, statusFilter, memberFilter, ticketsFilter);
108115
}
109116

110117
handleSelected(attendee_id, isSelected){
@@ -127,17 +134,17 @@ class SummitAttendeeListPage extends React.Component {
127134
componentDidMount() {
128135
let {currentSummit} = this.props;
129136
if(currentSummit !== null) {
130-
let {term, order, page, orderDir, perPage, statusFilter, memberFilter} = this.props;
131-
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter);
137+
let {term, order, page, orderDir, perPage, statusFilter, memberFilter, ticketsFilter} = this.props;
138+
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter, ticketsFilter);
132139
}
133140
}
134141

135142
componentWillReceiveProps(newProps) {
136143
let {currentSummit} = this.props;
137144

138145
if (currentSummit !== null && currentSummit.id !== newProps.currentSummit.id) {
139-
let {term, order, page, orderDir, perPage, statusFilter, memberFilter} = this.props;
140-
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter);
146+
let {term, order, page, orderDir, perPage, statusFilter, memberFilter, ticketsFilter} = this.props;
147+
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter, ticketsFilter);
141148
}
142149
}
143150

@@ -170,19 +177,19 @@ class SummitAttendeeListPage extends React.Component {
170177
}
171178

172179
handlePageChange(page) {
173-
let {term, order, orderDir, perPage, statusFilter, memberFilter} = this.props;
174-
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter);
180+
let {term, order, orderDir, perPage, statusFilter, memberFilter, ticketsFilter} = this.props;
181+
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter, ticketsFilter);
175182
}
176183

177184
handleSort(index, key, dir, func) {
178-
let {term, page, perPage, statusFilter, memberFilter} = this.props;
185+
let {term, page, perPage, statusFilter, memberFilter, ticketsFilter} = this.props;
179186
key = (key === 'name') ? 'full_name' : key;
180-
this.props.getAttendees(term, page, perPage, key, dir, statusFilter, memberFilter);
187+
this.props.getAttendees(term, page, perPage, key, dir, statusFilter, memberFilter, ticketsFilter);
181188
}
182189

183190
handleSearch(term) {
184-
let {order, orderDir, page, perPage, statusFilter, memberFilter} = this.props;
185-
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter);
191+
let {order, orderDir, page, perPage, statusFilter, memberFilter, ticketsFilter} = this.props;
192+
this.props.getAttendees(term, page, perPage, order, orderDir, statusFilter, memberFilter, ticketsFilter);
186193
}
187194

188195
handleNewAttendee(ev) {
@@ -209,12 +216,14 @@ class SummitAttendeeListPage extends React.Component {
209216
}
210217

211218
render(){
212-
let {currentSummit, attendees, lastPage, currentPage,
219+
let {currentSummit, attendees,
220+
lastPage, currentPage,
213221
term, order, orderDir, totalAttendees,
214222
selectedIds,
215223
currentFlowEvent,
216224
selectedAll,
217-
statusFilter, memberFilter
225+
statusFilter, memberFilter,
226+
ticketsFilter
218227
} = this.props;
219228
let {showModal, modalSchedule, modalTitle} = this.state;
220229

@@ -255,7 +264,6 @@ class SummitAttendeeListPage extends React.Component {
255264

256265
let flowEventsDDL = [
257266
{label: '-- SELECT EMAIL EVENT --', value: ''},
258-
259267
{label: 'SUMMIT_REGISTRATION__ATTENDEE_TICKET_REGENERATE_HASH', value: 'SUMMIT_REGISTRATION__ATTENDEE_TICKET_REGENERATE_HASH'},
260268
{label: 'SUMMIT_REGISTRATION_INVITE_ATTENDEE_TICKET_EDITION', value: 'SUMMIT_REGISTRATION_INVITE_ATTENDEE_TICKET_EDITION'},
261269
];
@@ -281,7 +289,7 @@ class SummitAttendeeListPage extends React.Component {
281289
</div>
282290
</div>
283291
<div className="row">
284-
<div className="col-md-6">
292+
<div className="col-md-4">
285293
<SegmentedControl
286294
name="memberFilter"
287295
options={[
@@ -290,10 +298,10 @@ class SummitAttendeeListPage extends React.Component {
290298
{ label: "Without IDP Account", value: "HAS_NO_MEMBER",default: memberFilter === "HAS_NO_MEMBER" },
291299
]}
292300
setValue={newValue => this.handleSetMemberFilter(newValue)}
293-
style={{ width: "100%", height:40, color: '#337ab7' }}
301+
style={{ width: "100%", height:40, color: '#337ab7' , fontSize: '10px' }}
294302
/>
295303
</div>
296-
<div className="col-md-6">
304+
<div className="col-md-4">
297305
<SegmentedControl
298306
name="statusFilter"
299307
options={[
@@ -302,12 +310,24 @@ class SummitAttendeeListPage extends React.Component {
302310
{ label: "Incomplete Questions", value: "Incomplete", default: statusFilter === "Incomplete"},
303311
]}
304312
setValue={newValue => this.handleSetStatusFilter(newValue)}
305-
style={{ width: "100%", height:40, color: '#337ab7' }}
313+
style={{ width: "100%", height:40, color: '#337ab7', fontSize: '10px' }}
314+
/>
315+
</div>
316+
<div className="col-md-4">
317+
<SegmentedControl
318+
name="ticketsFilter"
319+
options={[
320+
{ label: "All", value: null, default: ticketsFilter === null},
321+
{ label: "Has Tickets", value: "HAS_TICKETS",default: ticketsFilter === "HAS_TICKETS" },
322+
{ label: "Has No Tickets", value: "HAS_NO_TICKETS",default: ticketsFilter === "HAS_NO_TICKETS" },
323+
]}
324+
setValue={newValue => this.handleSetTicketsFilter(newValue)}
325+
style={{ width: "100%", height:40, color: '#337ab7', fontSize: '10px' }}
306326
/>
307327
</div>
308328
</div>
309329
{attendees.length === 0 &&
310-
<div>{T.translate("attendee_list.no_attendees")}</div>
330+
<div>{T.translate("attendee_list.no_attendees")}</div>
311331
}
312332

313333
<div className={'row'}>

src/reducers/attendees/attendee-list-reducer.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const DEFAULT_STATE = {
3939
selectedAll: false,
4040
statusFilter: null,
4141
memberFilter: null,
42+
ticketsFilter: 'HAS_TICKETS',
4243
};
4344

4445
const attendeeListReducer = (state = DEFAULT_STATE, action) => {
@@ -49,8 +50,8 @@ const attendeeListReducer = (state = DEFAULT_STATE, action) => {
4950
}
5051
break;
5152
case REQUEST_ATTENDEES: {
52-
let {order, orderDir, term, memberFilter, statusFilter} = payload;
53-
return {...state, order, orderDir, term , memberFilter , statusFilter}
53+
let {order, orderDir, term, memberFilter, statusFilter, ticketsFilter} = payload;
54+
return {...state, order, orderDir, term , memberFilter , statusFilter, ticketsFilter}
5455
}
5556
break;
5657
case RECEIVE_ATTENDEES: {

0 commit comments

Comments
 (0)