--- a/cms/app-client/app/routes/application.js Sun Nov 06 03:44:16 2016 +0100
+++ b/cms/app-client/app/routes/application.js Tue Nov 08 01:22:56 2016 +0100
@@ -1,36 +1,23 @@
import Ember from 'ember';
import _ from 'lodash/lodash';
+import RSVP from 'rsvp';
+import ENV from 'app-client/config/environment';
+import URI from 'urijs';
export default Ember.Route.extend({
filter: Ember.inject.service(),
- page: 1,
- limit: 10,
+ constants: Ember.inject.service(),
- documents: [],
- model: Ember.observer('page', function() {
- var self = this;
- var promise = this.store.query('document', {
- page: this.get('page'),
- perpage: this.get('limit')
- });
- promise.then(function(value) {
- if(self.controller) {
- self.controller.set('page', self.get('page'));
- self.controller.set('documents', self.get('documents'));
- }
- self.set('documents', value);
- });
+ model: Ember.observer('page', function(params) {
+ var filterQueryArgs = _.clone(this.get('filter').get('queryParamsValues'));
+ var promise = this.store.query('document', _.merge(filterQueryArgs, {
+ page: params['page'],
+ perpage: this.get('constants').DOCUMENTS_PAGINATION_PERPAGE
+ }));
return promise;
}),
- setupController: function(controller) {
- this._super(...arguments);
- controller.set('page', this.get('page'));
- controller.set('limit', this.get('limit'));
- controller.set('documents', this.get('documents'));
- },
-
/**
Serializes value of the query parameter based on defaultValueType
@method serializeQueryParam
@@ -61,33 +48,51 @@
return this._super(value, urlKey, defaultValueType);
},
+ beforeModel: function(transition) {
+ new RSVP.Promise((resolve) => {
+ // succeed
+ this.get('filter').setProperties(transition['queryParams']);
+ resolve();
+ });
+ return this._super(...arguments);
+ },
+
+ queryParams: Ember.computed('filter', function() {
+ var res = this.get('filter').getRouteQueryParams();
+ res['page'] = { refreshModel: true };
+ res['notice'] = { refreshModel: false };
+ return res;
+ }),
actions: {
- setPageQueryparams: function(type) {
- var page = this.get('page');
- if(type === 'previous') {
- page = page - 1;
- } else if(type === 'next') {
- page = page + 1;
- }
- this.propertyWillChange('page');
- this.set('page', page);
- this.propertyDidChange('page');
- },
-
-
- willTransition: function() {
- // Prevent navigation from removing query parameters
- this.transitionTo({ queryParams: this.controller.get('queryParams') });
- },
-
didTransition: function() {
// Append body classname depending on the route
Ember.$('body').removeClass((this.controller.get('currentPath') || '').replace(/\//g, '-').dasherize());
Ember.run.once(this, function() {
Ember.$('body').addClass((this.controller.get('currentPath') ||'').replace(/\//g, '-').dasherize());
});
+ // change external navigations links
+ if(ENV.APP.navigationLinksSelector) {
+ return new RSVP.Promise((resolve) => {
+ setTimeout(() => {
+ let hash = window.location.hash;
+ if(!hash) {
+ return true;
+ }
+ let uriHash = URI(hash.substr(1));
+ Ember.$(ENV.APP.navigationLinksSelector).each((i, l) => {
+ let uri = URI(Ember.$(l).prop('href'));
+ if(uri.fragment()) {
+ let urifragment = URI(uri.fragment()).search(uriHash.search());
+ Ember.$(l).prop('href', uri.fragment(urifragment.href()).href());
+ }
+ });
+ resolve(true);
+ }, 10);
+ });
+ }
+ return true;
}
}