cms/app-client/app/routes/application.js
changeset 394 48458e099b05
parent 392 4fbe94af93e8
child 401 9ff56cc0c656
equal deleted inserted replaced
393:5ef3bfef0bff 394:48458e099b05
     1 import Ember from 'ember';
     1 import Ember from 'ember';
     2 import _ from 'lodash/lodash';
     2 import _ from 'lodash/lodash';
       
     3 import RSVP from 'rsvp';
       
     4 import ENV from 'app-client/config/environment';
       
     5 import URI from 'urijs';
     3 
     6 
     4 export default Ember.Route.extend({
     7 export default Ember.Route.extend({
     5 
     8 
     6     filter: Ember.inject.service(),
     9     filter: Ember.inject.service(),
     7     page: 1,
    10     constants: Ember.inject.service(),
     8     limit: 10,
       
     9 
    11 
    10     documents: [],
    12     model: Ember.observer('page', function(params) {
    11     model: Ember.observer('page', function() {
    13         var filterQueryArgs = _.clone(this.get('filter').get('queryParamsValues'));
    12         var self = this;
    14         var promise = this.store.query('document', _.merge(filterQueryArgs, {
    13         var promise = this.store.query('document', {
    15             page: params['page'],
    14             page: this.get('page'),
    16             perpage: this.get('constants').DOCUMENTS_PAGINATION_PERPAGE
    15             perpage: this.get('limit')
    17         }));
    16         });
       
    17         promise.then(function(value) {
       
    18             if(self.controller) {
       
    19                 self.controller.set('page', self.get('page'));
       
    20                 self.controller.set('documents', self.get('documents'));
       
    21             }
       
    22             self.set('documents', value);
       
    23         });
       
    24         return promise;
    18         return promise;
    25     }),
    19     }),
    26 
       
    27     setupController: function(controller) {
       
    28         this._super(...arguments);
       
    29         controller.set('page', this.get('page'));
       
    30         controller.set('limit', this.get('limit'));
       
    31         controller.set('documents', this.get('documents'));
       
    32     },
       
    33 
    20 
    34     /**
    21     /**
    35       Serializes value of the query parameter based on defaultValueType
    22       Serializes value of the query parameter based on defaultValueType
    36       @method serializeQueryParam
    23       @method serializeQueryParam
    37       @param {Object} value
    24       @param {Object} value
    59             return this.get('filter').deserializeQueryParam(value, urlKey, defaultValueType);
    46             return this.get('filter').deserializeQueryParam(value, urlKey, defaultValueType);
    60         }
    47         }
    61         return this._super(value, urlKey, defaultValueType);
    48         return this._super(value, urlKey, defaultValueType);
    62     },
    49     },
    63 
    50 
       
    51     beforeModel: function(transition) {
       
    52         new RSVP.Promise((resolve) => {
       
    53           // succeed
       
    54           this.get('filter').setProperties(transition['queryParams']);
       
    55           resolve();
       
    56         });
       
    57         return this._super(...arguments);
       
    58     },
       
    59 
       
    60     queryParams: Ember.computed('filter', function() {
       
    61         var res = this.get('filter').getRouteQueryParams();
       
    62         res['page'] = { refreshModel: true };
       
    63         res['notice'] = { refreshModel: false };
       
    64         return res;
       
    65     }),
    64 
    66 
    65     actions: {
    67     actions: {
    66 
       
    67         setPageQueryparams: function(type) {
       
    68             var page = this.get('page');
       
    69             if(type === 'previous') {
       
    70                 page = page - 1;
       
    71             } else if(type === 'next') {
       
    72                 page = page + 1;
       
    73             }
       
    74             this.propertyWillChange('page');
       
    75             this.set('page', page);
       
    76             this.propertyDidChange('page');
       
    77         },
       
    78 
       
    79 
       
    80         willTransition: function() {
       
    81             // Prevent navigation from removing query parameters
       
    82             this.transitionTo({ queryParams: this.controller.get('queryParams') });
       
    83         },
       
    84 
    68 
    85         didTransition: function() {
    69         didTransition: function() {
    86             // Append body classname depending on the route
    70             // Append body classname depending on the route
    87             Ember.$('body').removeClass((this.controller.get('currentPath') || '').replace(/\//g, '-').dasherize());
    71             Ember.$('body').removeClass((this.controller.get('currentPath') || '').replace(/\//g, '-').dasherize());
    88             Ember.run.once(this, function() {
    72             Ember.run.once(this, function() {
    89                 Ember.$('body').addClass((this.controller.get('currentPath') ||'').replace(/\//g, '-').dasherize());
    73                 Ember.$('body').addClass((this.controller.get('currentPath') ||'').replace(/\//g, '-').dasherize());
    90             });
    74             });
       
    75             // change external navigations links
       
    76             if(ENV.APP.navigationLinksSelector) {
       
    77                 return new RSVP.Promise((resolve) => {
       
    78                   setTimeout(() => {
       
    79                     let hash = window.location.hash;
       
    80                     if(!hash) {
       
    81                         return true;
       
    82                     }
       
    83                     let uriHash = URI(hash.substr(1));
       
    84                     Ember.$(ENV.APP.navigationLinksSelector).each((i, l) => {
       
    85                         let uri = URI(Ember.$(l).prop('href'));
       
    86                         if(uri.fragment()) {
       
    87                           let urifragment = URI(uri.fragment()).search(uriHash.search());
       
    88                           Ember.$(l).prop('href', uri.fragment(urifragment.href()).href());
       
    89                         }
       
    90                     });
       
    91                     resolve(true);
       
    92                   }, 10);
       
    93                 });
       
    94             }
       
    95             return true;
    91         }
    96         }
    92 
    97 
    93     }
    98     }
    94 
    99 
    95 });
   100 });