Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: introduce new columns for session ratings & switch to ember table #3198

Merged
merged 2 commits into from
Aug 9, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
447 changes: 256 additions & 191 deletions app/controllers/events/view/sessions/list.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions app/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ export default ModelBase.extend({
orders : hasMany('order'),
events : hasMany('event', { inverse: 'user' }),
sessions : hasMany('session'),
feedbacks : hasMany('feedback'),
invoice : hasMany('event-invoice'),
attendees : hasMany('attendee'),
speakers : hasMany('speaker'),
Expand Down
30 changes: 25 additions & 5 deletions app/routes/events/view/sessions/list.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ export default class extends Route.extend(EmberTableRouteMixin) {
} else {
filterOptions = [];
}

let store = this.modelFor('events.view');
filterOptions = this.applySearchFilters(filterOptions, params, searchField);
let queryString = {
include : 'speakers,feedbacks',
Expand All @@ -64,17 +66,35 @@ export default class extends Route.extend(EmberTableRouteMixin) {
'page[number]' : params.page || 1
};
queryString = this.applySortFilters(queryString, params);
let data = (await store.query('sessions', queryString)).toArray();

let store = this.modelFor('events.view');

let queryObject = {
include : 'session',
filter : [
{
name : 'session',
op : 'has',
val : {
name : 'event',
op : 'has',
val : {
name : 'identifier',
op : 'eq',
val : store.id
}
}
}
]
};
let feedbacks = await this.authManager.currentUser.query('feedbacks', queryObject);
return {
data: await store.query('sessions', queryString)
data,
feedbacks
};
}

@action
@action
refreshRoute() {
this.refresh();
}

}
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
<div class="ui {{if device.isMobile 'horizontal' 'vertical'}} compact basic buttons">
{{#if (or (eq record.state 'rejected')(eq record.state 'pending'))}}
{{#if (or (eq extraRecords.status 'rejected')(eq extraRecords.status 'pending'))}}
{{#ui-dropdown class='ui icon right pointing dropdown button'}}
<i class="green checkmark icon"></i>
<div class="menu">
<a role="button" class="item" {{action acceptProposal record true}}>{{t 'With email'}}</a>
<a role="button" class="item" {{action acceptProposal record false}}>{{t 'Without email'}}</a>
<a role="button" class="item" {{action props.actions.acceptProposal record true}}>{{t 'With email'}}</a>
<a role="button" class="item" {{action props.actions.acceptProposal record false}}>{{t 'Without email'}}</a>
</div>
{{/ui-dropdown}}
{{/if}}
{{#if (eq record.state 'accepted')}}
{{#if (eq extraRecords.status 'accepted')}}
{{#ui-dropdown class='ui icon right pointing dropdown button'}}
<i class="blue checkmark icon"></i>
<div class="menu">
<a role="button" class="item" {{action confirmProposal record true}}>{{t 'With email'}}</a>
<a role="button" class="item" {{action confirmProposal record false}}>{{t 'Without email'}}</a>
<a role="button" class="item" {{action props.actions.confirmProposal record true}}>{{t 'With email'}}</a>
<a role="button" class="item" {{action props.actions.confirmProposal record false}}>{{t 'Without email'}}</a>
</div>
{{/ui-dropdown}}
{{/if}}
{{#if (or (eq record.state 'confirmed') (eq record.state 'pending') (eq record.state 'accepted'))}}
{{#if (or (eq extraRecords.status 'confirmed') (eq extraRecords.status 'pending') (eq extraRecords.status 'accepted'))}}
{{#ui-dropdown class='ui icon right pointing dropdown button'}}
<i class="red remove icon"></i>
<div class="menu">
<a role="button" class="item" {{action rejectProposal record true}}>{{t 'With email'}}</a>
<a role="button" class="item" {{action rejectProposal record false}}>{{t 'Without email'}}</a>
<a role="button" class="item" {{action props.actions.rejectProposal record true}}>{{t 'With email'}}</a>
<a role="button" class="item" {{action props.actions.rejectProposal record false}}>{{t 'Without email'}}</a>
</div>
{{/ui-dropdown}}
{{/if}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<span>
{{#if record.isMailSent}}
{{#if record}}
{{t 'Yes'}}
{{else}}
{{t 'No'}}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{{#if record.isLocked}}
{{#ui-popup content=(t 'Unlock Session') class='ui basic button' click=(action unlockSession record) position='left center'}}
{{#if extraRecords.isLocked}}
{{#ui-popup content=(t 'Unlock Session') class='ui basic button' click=(action props.actions.unlockSession record) position='left center'}}
<i class="lock icon"></i>
{{/ui-popup}}
{{else}}
{{#ui-popup content=(t 'Lock Session') class='ui basic button' click=(action lockSession record) position='left center'}}
{{#ui-popup content=(t 'Lock Session') class='ui basic button' click=(action props.actions.lockSession record) position='left center'}}
<i class="unlock icon"></i>
{{/ui-popup}}
{{/if}}
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
{{ui-rating
rating=(if record.averageRating record.averageRating '0')
{{#if (includes props.options.ratedSessions record)}}
{{#each extraRecords.feedbacks as |feedback|}}
{{#if (eq feedback.user.email authManager.currentUser.email)}}
{{ui-rating
initialRating=feedback.rating
rating=feedback.rating
maxRating=5
onRate=(pipe-action (action (mut feedback.rating)) (action props.actions.updateRating feedback.rating feedback))
clearable=true}}
{{/if}}
{{/each}}
{{else}}
{{ui-rating
initialRating=0
rating=extraRecords.rating
maxRating=5
onRate=(pipe-action (action (mut record.averageRating)) (action updateRating record record.averageRating))
onRate=(pipe-action (action (mut extraRecords.rating)) (action props.actions.addRating extraRecords.rating record))
clearable=true}}
{{/if}}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{{get record column.propertyName}}
{{record}}
<div class="hidden ui divider"></div>
<div class="ui horizontal compact basic buttons">
{{#ui-popup content=(t 'View Session') class="{{if device.isMobile 'medium' 'huge'}} ui icon button" click=(action viewSession record.id) position='left center'}}
{{#ui-popup content=(t 'View Session') class="{{if device.isMobile 'medium' 'huge'}} ui icon button" click=(action props.actions.viewSession record) position='left center'}}
<i class="unhide icon"></i>
{{/ui-popup}}
{{#if (not record.isLocked)}}
{{#ui-popup content=(t 'Edit Session') class="{{if device.isMobile 'medium' 'huge'}} ui icon button" click=(action editSession record.id record.event.id) position='left center'}}
{{#if (not extraRecords.isLocked)}}
{{#ui-popup content=(t 'Edit Session') class="{{if device.isMobile 'medium' 'huge'}} ui icon button" click=(action props.actions.editSession record extraRecords.event.id) position='left center'}}
<i class="edit icon"></i>
{{/ui-popup}}
{{/if}}
{{#ui-popup content=(t 'Delete Session') click=(action (confirm (t 'Are you sure you would like to delete this Session?') (action deleteSession record))) class="{{if device.isMobile 'medium' 'huge'}} ui icon button" position='left center'}}
{{#ui-popup content=(t 'Delete Session') click=(action (confirm (t 'Are you sure you would like to delete this Session?') (action props.actions.deleteSession record))) class="{{if device.isMobile 'medium' 'huge'}} ui icon button" position='left center'}}
<i class="trash outline icon"></i>
{{/ui-popup}}
</div>
33 changes: 13 additions & 20 deletions app/templates/events/view/sessions/list.hbs
Original file line number Diff line number Diff line change
@@ -1,23 +1,16 @@
<div class="sixteen wide column">
{{events/events-table
columns=columns
data=model.data
store=model.store
query=model.query
isNotStoreQuery = true
modelName = model.objectType
useNumericPagination=true
showGlobalFilter=true
showPageSize=true
lockSession=(action 'lockSession')
unlockSession=(action 'unlockSession')
deleteSession=(action 'deleteSession')
editSession=(action 'editSession')
viewSession=(action 'viewSession')
acceptProposal=(action 'acceptProposal')
rejectProposal=(action 'rejectProposal')
confirmProposal=(action 'confirmProposal')
updateRating=(action 'updateRating')
customGlobalFilter='title'
{{tables/default columns=columns
rows=model.data
feedbacks=model.feedbacks
currentPage=page
pageSize=per_page
searchQuery=search
sortBy=sort_by
sortDir=sort_dir
metaData=model.meta
filterOptions=filterOptions
widthConstraint="eq-container"
resizeMode="fluid"
fillMode="equal-column"
}}
</div>