diff --git a/app/controllers/events/view/tickets/access-codes/list.js b/app/controllers/events/view/tickets/access-codes/list.js index 74a4465b43e..8e3b643a8db 100644 --- a/app/controllers/events/view/tickets/access-codes/list.js +++ b/app/controllers/events/view/tickets/access-codes/list.js @@ -1,68 +1,85 @@ import Controller from '@ember/controller'; +import { computed, action } from '@ember/object'; +import EmberTableControllerMixin from 'open-event-frontend/mixins/ember-table-controller'; -export default Controller.extend({ - columns: [ - { - propertyName : 'code', - title : 'Access Code' - }, - { - propertyName : 'accessUrl', - title : 'Access Code URL', - template : 'components/ui-table/cell/events/view/tickets/access-codes/cell-url', - disableSorting : true - }, - { - propertyName : 'valid-till', - title : 'Validity', - template : 'components/ui-table/cell/cell-validity' - }, - { - propertyName : 'is-active', - title : 'Status', - template : 'components/ui-table/cell/cell-label' - }, - { - title : 'Actions', - template : 'components/ui-table/cell/events/view/tickets/access-codes/cell-actions', - disableSorting : true, - disableFiltering : true - } - ], - actions: { - deleteAccessCode(accessCode) { - this.set('isLoading', true); - accessCode.destroyRecord() - .then(() => { - this.model.reload(); - this.notify.success(this.l10n.t('Access Code has been deleted successfully.')); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred.')); - }) - .finally(() => { - this.set('isLoading', false); - }); - }, - toggleStatus(accessCode) { - this.set('isLoading', true); - accessCode.toggleProperty('isActive'); - accessCode.save() - .then(() => { - this.notify.success(this.l10n.t('Access Code has been updated successfully.')); - this.send('refreshRoute'); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred.')); - }) - .finally(() => { - this.set('isLoading', false); - }); - }, +export default class extends Controller.extend(EmberTableControllerMixin) { + @computed() + get columns() { + return [ + { + name : 'Access Code', + valuePath : 'code' + }, + { + name : 'Access Code URL', + valuePath : 'accessUrl', + cellComponent : 'ui-table/cell/events/view/tickets/access-codes/cell-url', + disableSorting : true + }, + { + name : 'Validity', + valuePath : 'validFrom', + extraValuePaths : ['validTill'], + cellComponent : 'ui-table/cell/cell-validity' + }, + { + name : 'Status', + valuePath : 'isActive', + extraValuePaths : ['isExpired'], + cellComponent : 'ui-table/cell/cell-label' + }, + { + name : 'Actions', + cellComponent : 'ui-table/cell/events/view/tickets/access-codes/cell-actions', + valuePath : 'id', + extraValuePaths : ['isActive', 'isExpired'], + actions : { + deleteAccessCode : this.deleteAccessCode.bind(this), + toggleStatus : this.toggleStatus.bind(this), + editAccessCode : this.editAccessCode.bind(this) + } + } + ]; + } + + @action + deleteAccessCode(access_id) { + this.set('isLoading', true); + let accessCode = this.store.peekRecord('accessCode', access_id, { backgroundReload: false }); + accessCode.destroyRecord() + .then(() => { + this.notify.success(this.l10n.t('Access Code has been deleted successfully.')); + this.refreshModel.bind(this)(); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred.')); + }) + .finally(() => { + this.set('isLoading', false); + }); + } + @action + toggleStatus(access_id) { + this.set('isLoading', true); + let accessCode = this.store.peekRecord('accessCode', access_id, { backgroundReload: false }); + accessCode.toggleProperty('isActive'); + accessCode.save() + .then(() => { + this.notify.success(this.l10n.t('Access Code has been updated successfully.')); + this.refreshModel.bind(this)(); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred.')); + }) + .finally(() => { + this.set('isLoading', false); + }); + } + @action editAccessCode(id) { this.transitionToRoute('events.view.tickets.access-codes.edit', id); } - } -}); + +} diff --git a/app/controllers/events/view/tickets/discount-codes/list.js b/app/controllers/events/view/tickets/discount-codes/list.js index cc398aca241..3ada0ded4fb 100644 --- a/app/controllers/events/view/tickets/discount-codes/list.js +++ b/app/controllers/events/view/tickets/discount-codes/list.js @@ -1,73 +1,93 @@ import Controller from '@ember/controller'; -export default Controller.extend({ - columns: [ - { - propertyName : 'code', - title : 'Discount code' - }, - { - propertyName : 'discount-url', - template : 'components/ui-table/cell/events/view/tickets/discount-codes/cell-url', - title : 'Discount code URL', - disableSorting : true - }, - { - propertyName : 'value', - template : 'components/ui-table/cell/events/view/tickets/discount-codes/cell-value', - title : 'Discount Per Ticket' - }, - { - propertyName : 'valid-till', - template : 'components/ui-table/cell/events/view/tickets/discount-codes/cell-validity', - title : 'Validity' - }, - { - propertyName : 'is-active', - template : 'components/ui-table/cell/events/view/tickets/discount-codes/cell-status', - title : 'Status', - disableSorting : true - }, - { - title : 'Actions', - template : 'components/ui-table/cell/events/view/tickets/discount-codes/cell-actions', - disableSorting : true - } - ], +import { computed, action } from '@ember/object'; +import EmberTableControllerMixin from 'open-event-frontend/mixins/ember-table-controller'; - actions: { - deleteDiscountCode(discountCode) { - this.set('isLoading', true); - discountCode.destroyRecord() - .then(() => { - this.model.reload(); - this.notify.success(this.l10n.t('Discount Code has been deleted successfully.')); - }) - .catch(() => { - this.notify.error(this.l10n.t('An unexpected error has occurred.')); - }) - .finally(() => { - this.set('isLoading', false); - }); - }, - toggleStatus(discountCode) { - this.set('isLoading', true); - discountCode.toggleProperty('isActive'); - discountCode.save() - .then(() => { - this.notify.success(this.l10n.t('Discount Code has been updated successfully.')); - this.send('refreshRoute'); - }) - .catch(() => { - discountCode.toggleProperty('isActive'); - this.notify.error(this.l10n.t('An unexpected error has occurred.')); - }) - .finally(() => { - this.set('isLoading', false); - }); - }, - editDiscountCode(id) { - this.transitionToRoute('events.view.tickets.discount-codes.edit', id); - } + +export default class extends Controller.extend(EmberTableControllerMixin) { + @computed() + get columns() { + return [ + { + name : 'Discount code', + valuePath : 'code' + }, + { + name : 'Discount code URL', + valuePath : 'discountUrl', + cellComponent : 'ui-table/cell/events/view/tickets/discount-codes/cell-url' + }, + { + name : 'Discount Per Ticket', + valuePath : 'value', + extraValuePaths : ['type', 'event'], + cellComponent : 'ui-table/cell/events/view/tickets/discount-codes/cell-value' + }, + { + name : 'Validity', + valuePath : 'validTill', + cellComponent : 'ui-table/cell/events/view/tickets/discount-codes/cell-validity' + }, + { + name : 'Status', + valuePath : 'isActive', + extraValuePaths : ['isExpired'], + cellComponent : 'ui-table/cell/events/view/tickets/discount-codes/cell-status' + }, + { + name : 'Actions', + valuePath : 'id', + extraValuePaths : ['isActive', 'isExpired'], + cellComponent : 'ui-table/cell/events/view/tickets/discount-codes/cell-actions', + actions : { + deleteDiscountCode : this.deleteDiscountCode.bind(this), + toggleStatus : this.toggleStatus.bind(this), + editDiscountCode : this.editDiscountCode.bind(this) + } + } + ]; } -}); + + @action + deleteDiscountCode(discount_id) { + this.set('isLoading', true); + let discountCode = this.store.peekRecord('discountCode', discount_id, { backgroundReload: false }); + discountCode.destroyRecord() + .then(() => { + this.notify.success(this.l10n.t('Discount Code has been deleted successfully.')); + this.refreshModel.bind(this)(); + }) + .catch(() => { + this.notify.error(this.l10n.t('An unexpected error has occurred.')); + }) + .finally(() => { + this.set('isLoading', false); + }); + } + + @action + toggleStatus(discount_id) { + this.set('isLoading', true); + let discountCode = this.store.peekRecord('discountCode', discount_id, { backgroundReload: false }); + discountCode.toggleProperty('isActive'); + discountCode.save() + .then(() => { + this.notify.success(this.l10n.t('Discount Code has been updated successfully.')); + this.refreshModel.bind(this)(); + }) + .catch(e => { + console.warn(e); + this.notify.error(this.l10n.t('An unexpected error has occurred.')); + }) + .finally(() => { + this.set('isLoading', false); + }); + } + + @action + editDiscountCode(id) { + this.transitionToRoute('events.view.tickets.discount-codes.edit', id); + } + + +} diff --git a/app/routes/events/view/tickets/access-codes/list.js b/app/routes/events/view/tickets/access-codes/list.js index 42730d9c346..6e99b0b46d4 100644 --- a/app/routes/events/view/tickets/access-codes/list.js +++ b/app/routes/events/view/tickets/access-codes/list.js @@ -1,7 +1,8 @@ import Route from '@ember/routing/route'; +import EmberTableRouteMixin from 'open-event-frontend/mixins/ember-table-route'; import moment from 'moment'; -export default Route.extend({ +export default class extends Route.extend(EmberTableRouteMixin) { titleToken() { switch (this.get('params.access_status')) { case 'active': @@ -11,9 +12,11 @@ export default Route.extend({ case 'expired': return this.l10n.t('Expired'); } - }, + } + async model(params) { let filterOptions = []; + const searchField = 'code'; if (params.access_status === 'active') { filterOptions = [ { @@ -60,26 +63,15 @@ export default Route.extend({ filterOptions = []; } - let queryObject = { - filter : filterOptions, - 'page[size]' : 10 + filterOptions = this.applySearchFilters(filterOptions, params, searchField); + let queryString = { + filter : filterOptions, + 'page[size]' : params.per_page || 10, + 'page[number]' : params.page || 1 }; - let store = this.modelFor('events.view'); - - let data = await store.query('accessCodes', queryObject); + queryString = this.applySortFilters(queryString, params); - return { - data, - store, - query : queryObject, - objectType : 'accessCodes' - }; - }, - - actions: { - refreshRoute() { - this.refresh(); - } + return this.asArray(this.modelFor('events.view').query('accessCodes', queryString)); } -}); +} diff --git a/app/routes/events/view/tickets/discount-codes/list.js b/app/routes/events/view/tickets/discount-codes/list.js index 331b92cb839..c5f2fc4a886 100644 --- a/app/routes/events/view/tickets/discount-codes/list.js +++ b/app/routes/events/view/tickets/discount-codes/list.js @@ -1,7 +1,8 @@ import Route from '@ember/routing/route'; +import EmberTableRouteMixin from 'open-event-frontend/mixins/ember-table-route'; import moment from 'moment'; -export default Route.extend({ +export default class extends Route.extend(EmberTableRouteMixin) { titleToken() { switch (this.get('params.discount_status')) { case 'active': @@ -11,10 +12,11 @@ export default Route.extend({ case 'expired': return this.l10n.t('Expired'); } - }, + } async model(params) { this.set('params', params); let filterOptions = []; + const searchField = 'code'; if (params.discount_status === 'active') { filterOptions = [ { @@ -61,26 +63,15 @@ export default Route.extend({ filterOptions = []; } - let queryObject = { - filter : filterOptions, - 'page[size]' : 10 + filterOptions = this.applySearchFilters(filterOptions, params, searchField); + let queryString = { + filter : filterOptions, + 'page[size]' : params.per_page || 10, + 'page[number]' : params.page || 1 }; - let store = this.modelFor('events.view'); - - let data = await store.query('discountCodes', queryObject); + queryString = this.applySortFilters(queryString, params); - return { - data, - store, - query : queryObject, - objectType : 'discountCodes' - }; - }, - - actions: { - refreshRoute() { - this.refresh(); - } + return this.asArray(this.modelFor('events.view').query('discountCodes', queryString)); } -}); +} diff --git a/app/templates/components/ui-table/cell/cell-label.hbs b/app/templates/components/ui-table/cell/cell-label.hbs index 4e5493652b2..06dc84b66b5 100644 --- a/app/templates/components/ui-table/cell/cell-label.hbs +++ b/app/templates/components/ui-table/cell/cell-label.hbs @@ -1,8 +1,8 @@ - {{#if record.isExpired}} + {{#if extraRecords.isExpired}} {{t 'Expired'}} {{else}} - {{#if record.isActive}} + {{#if record}} {{t 'Active'}} {{else}} {{t 'Inactive'}} diff --git a/app/templates/components/ui-table/cell/cell-validity.hbs b/app/templates/components/ui-table/cell/cell-validity.hbs index 36640ad5e4c..d9bfa7ca235 100644 --- a/app/templates/components/ui-table/cell/cell-validity.hbs +++ b/app/templates/components/ui-table/cell/cell-validity.hbs @@ -1,5 +1,5 @@ - {{moment-format record.validFrom 'MMMM DD, YYYY - h:mm A'}} + {{moment-format record 'MMMM DD, YYYY - h:mm A'}}
To
- {{moment-format record.validTill 'MMMM DD, YYYY - h:mm A'}} + {{moment-format extraRecords.validTill 'MMMM DD, YYYY - h:mm A'}}
diff --git a/app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-actions.hbs b/app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-actions.hbs index 47d5884c21b..7fbb8dcb2a4 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-actions.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-actions.hbs @@ -1,19 +1,19 @@
- {{#ui-popup content=(t 'Edit') click=(action editAccessCode record.id) class='ui icon button' position='left center'}} + {{#ui-popup content=(t 'Edit') click=(action props.actions.editAccessCode record) class='ui icon button' position='left center'}} {{/ui-popup}} - {{#if (not record.isExpired)}} - {{#if record.isActive}} - {{#ui-popup content=(t 'Deactivate') click=(action toggleStatus record) class='ui icon button' position='left center'}} + {{#if (not extraRecords.isExpired)}} + {{#if extraRecords.isActive}} + {{#ui-popup content=(t 'Deactivate') click=(action props.actions.toggleStatus record) class='ui icon button' position='left center'}} {{/ui-popup}} {{else}} - {{#ui-popup content=(t 'Activate') click=(action toggleStatus record) class='ui icon button' position='left center'}} + {{#ui-popup content=(t 'Activate') click=(action props.actions.toggleStatus record) class='ui icon button' position='left center'}} {{/ui-popup}} {{/if}} {{/if}} - {{#ui-popup content=(t 'Delete') click=(action (confirm (t 'Are you sure you would like to delete this Access Code?') (action deleteAccessCode record))) class='ui icon button' position='left center'}} + {{#ui-popup content=(t 'Delete') click=(action (confirm (t 'Are you sure you would like to delete this Access Code?') (action props.actions.deleteAccessCode record))) class='ui icon button' position='left center'}} {{/ui-popup}}
diff --git a/app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-url.hbs b/app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-url.hbs index 951c8d457c2..aacb37b3069 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-url.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/access-codes/cell-url.hbs @@ -1 +1 @@ - {{record.accessUrl}} + {{record}} diff --git a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions.hbs b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions.hbs index 6afbfee7b63..a7e4ba20b5d 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions.hbs @@ -1,19 +1,19 @@
- {{#ui-popup content=(t 'Edit') click=(action editDiscountCode record.id) class='ui icon button' position='left center'}} + {{#ui-popup content=(t 'Edit') click=(action props.actions.editDiscountCode record) class='ui icon button' position='left center'}} {{/ui-popup}} - {{#if (not record.isExpired)}} - {{#if record.isActive}} - {{#ui-popup content=(t 'Deactivate') click=(action (confirm (t 'Are you sure you would like to deactivate this Discount Code?') (action toggleStatus record))) class='ui icon button' position='left center'}} + {{#if (not extraRecords.isExpired)}} + {{#if extraRecords.isActive}} + {{#ui-popup content=(t 'Deactivate') click=(action (confirm (t 'Are you sure you would like to deactivate this Discount Code?') (action props.actions.toggleStatus record))) class='ui icon button' position='left center'}} {{/ui-popup}} {{else}} - {{#ui-popup content=(t 'Activate') click=(action (confirm (t 'Are you sure you would like to activate this Discount Code?') (action toggleStatus record))) class='ui icon button' position='left center'}} + {{#ui-popup content=(t 'Activate') click=(action (confirm (t 'Are you sure you would like to activate this Discount Code?') (action props.actions.toggleStatus record))) class='ui icon button' position='left center'}} {{/ui-popup}} {{/if}} {{/if}} - {{#ui-popup content=(t 'Delete') click=(action (confirm (t 'Are you sure you would like to delete this Discount Code?') (action deleteDiscountCode record))) class='ui icon button' position='left center'}} + {{#ui-popup content=(t 'Delete') click=(action (confirm (t 'Are you sure you would like to delete this Discount Code?') (action props.actions.deleteDiscountCode record))) class='ui icon button' position='left center'}} {{/ui-popup}}
diff --git a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-status.hbs b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-status.hbs index 4e5493652b2..06dc84b66b5 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-status.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-status.hbs @@ -1,8 +1,8 @@ - {{#if record.isExpired}} + {{#if extraRecords.isExpired}} {{t 'Expired'}} {{else}} - {{#if record.isActive}} + {{#if record}} {{t 'Active'}} {{else}} {{t 'Inactive'}} diff --git a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-url.hbs b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-url.hbs index 850df6f947c..aacb37b3069 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-url.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-url.hbs @@ -1 +1 @@ - {{record.discountUrl}} + {{record}} diff --git a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-validity.hbs b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-validity.hbs index 9aaed8552bd..491c3c00fd3 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-validity.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-validity.hbs @@ -1,3 +1,3 @@ - {{moment-format record.validTill 'MMMM Do YYYY, h:mm a'}} + {{moment-format record 'MMMM Do YYYY, h:mm a'}} diff --git a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-value.hbs b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-value.hbs index f741314b6ed..4a576c7769c 100644 --- a/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-value.hbs +++ b/app/templates/components/ui-table/cell/events/view/tickets/discount-codes/cell-value.hbs @@ -1,7 +1,7 @@ - {{#if (eq record.type 'percent')}} - {{format-number record.value}}{{t '%'}} - {{else if (eq record.type 'amount')}} - {{t currency-symbol record.event.paymentCurrency }}{{format-number record.value}} + {{#if (eq extraRecords.type 'percent')}} + {{format-number record}}{{t '%'}} + {{else if (eq extraRecords.type 'amount')}} + {{t currency-symbol extraRecords.event.paymentCurrency }}{{format-number record}} {{/if}} diff --git a/app/templates/events/view/tickets/access-codes/list.hbs b/app/templates/events/view/tickets/access-codes/list.hbs index bdccd2d1aaf..b708637f9fc 100644 --- a/app/templates/events/view/tickets/access-codes/list.hbs +++ b/app/templates/events/view/tickets/access-codes/list.hbs @@ -1,16 +1,15 @@
- {{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 - deleteAccessCode=(action 'deleteAccessCode') - toggleStatus=(action 'toggleStatus') - editAccessCode=(action 'editAccessCode') - customGlobalFilter='code' + {{tables/default columns=columns + rows=model.data + 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" }}
diff --git a/app/templates/events/view/tickets/discount-codes/list.hbs b/app/templates/events/view/tickets/discount-codes/list.hbs index 05f64b7997e..b708637f9fc 100644 --- a/app/templates/events/view/tickets/discount-codes/list.hbs +++ b/app/templates/events/view/tickets/discount-codes/list.hbs @@ -1,16 +1,15 @@
- {{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 - deleteDiscountCode=(action 'deleteDiscountCode') - toggleStatus=(action 'toggleStatus') - editDiscountCode=(action 'editDiscountCode') - customGlobalFilter='code' + {{tables/default columns=columns + rows=model.data + 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" }}
diff --git a/tests/integration/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions-test.js b/tests/integration/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions-test.js index b372a9caff5..dbaf90de7c0 100644 --- a/tests/integration/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions-test.js +++ b/tests/integration/components/ui-table/cell/events/view/tickets/discount-codes/cell-actions-test.js @@ -5,13 +5,16 @@ import { render } from '@ember/test-helpers'; module('Integration | Component | ui table/cell/events/view/tickets/discount codes/cell actions', function(hooks) { setupIntegrationTest(hooks); - + const props = { + actions: { + deleteDiscountCode : () => {}, + editDiscountCode : () => {}, + toggleStatus : () => {} + } + }; test('it renders', async function(assert) { - this.set('deleteDiscountCode', () => {}); - this.set('editDiscountCode', () => {}); - this.set('toggleStatus', () => {}); - await render(hbs`{{ui-table/cell/events/view/tickets/discount-codes/cell-actions - deleteDiscountCode=(action deleteDiscountCode) editDiscountCode=(action editDiscountCode) toggleStatus=(action toggleStatus)}}`); + this.set('props', props); + await render(hbs`{{ui-table/cell/events/view/tickets/discount-codes/cell-actions props=props}}`); assert.ok(this.element.textContent.trim().includes('')); });