Show:
import Ember from 'ember';
import FdLoadingForTransitionMixin from '../mixins/fd-loading-for-transition';

export default Ember.Route.extend(FdLoadingForTransitionMixin, {
  modelProjection: 'EditFormView',
  modelName: 'fd-generation',

  /**
    A hook you can implement to convert the URL into the model for this route.
    [More info](http://emberjs.com/api/classes/Ember.Route.html#method_model).

    @method model
    @param {Object} params
   */
  model(params) {
    this._super.apply(this, arguments);

    let modelName = this.get('modelName');
    let modelProjName = this.get('modelProjection');

    // :id param defined in router.js
    return this.store.findRecord(modelName, params.id, { projection: modelProjName });
  },

  /**
    A hook you can use to reset controller values either when the model changes or the route is exiting.
    [More info](http://emberjs.com/api/classes/Ember.Route.html#method_resetController).

    @method resetController
    @param {Ember.Controller} controller
    @param {Boolean} isExisting
    @param {Object} transition
   */
  resetController(controller) {
    this._super(...arguments);

    controller.set('generationLog', Ember.A());
    controller.set('modelName', null);
    controller.set('modelProjection', null);
    controller.set('currentGeneration', null);
  },

  /**
    A hook you can use to setup the controller for the current route.
    [More info](http://emberjs.com/api/classes/Ember.Route.html#method_setupController).

    @method setupController
    @param {Ember.Controller} controller
    @param {Object} model
   */
  setupController(controller, model) {
    this._super(...arguments);

    controller.set('modelName', this.get('modelName'));
    controller.set('modelProjection', this.get('modelProjection'));
    controller.set('generationId', Ember.get(this.paramsFor('fd-generation-process-form'), 'id'));
    if (!Ember.isNone(model)) {
      controller.set('generationLog', model.get('stepLogs'));
    }

    controller.generationLogUpdate(5000);
  },
});