From 3b375e9dc40a2be4482c1af8b66ccadc6774e642 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Fri, 6 Feb 2015 10:34:12 +1030 Subject: [PATCH] These are with the last commit --- ember/app/controllers/index.js | 31 ++++++++++++++++++++++ ember/app/routes/index/index.js | 47 +++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 ember/app/controllers/index.js create mode 100644 ember/app/routes/index/index.js diff --git a/ember/app/controllers/index.js b/ember/app/controllers/index.js new file mode 100644 index 000000000..14bc3d466 --- /dev/null +++ b/ember/app/controllers/index.js @@ -0,0 +1,31 @@ +import Ember from 'ember'; + +import DiscussionResult from '../models/discussion-result'; +import PostResult from '../models/post-result'; +import PaneableMixin from '../mixins/paneable'; + +export default Ember.Controller.extend(Ember.Evented, PaneableMixin, { + needs: ['application', 'composer', 'index/index', 'discussion'], + + index: Ember.computed.alias('controllers.index/index'), + + paneDisabled: Ember.computed.not('index.model.length'), + + actions: { + transitionFromBackButton: function() { + this.transitionToRoute('index'); + }, + + loadMore: function() { + this.get('index').send('loadMore'); + }, + + newDiscussion: function() { + var composer = this.get('controllers.composer'); + composer.set('minimized', false); + composer.set('showing', true); + composer.set('title', 'Discussion Title'); // needs to be editable + composer.set('delegate', this); + } + } +}); diff --git a/ember/app/routes/index/index.js b/ember/app/routes/index/index.js new file mode 100644 index 000000000..f592bf587 --- /dev/null +++ b/ember/app/routes/index/index.js @@ -0,0 +1,47 @@ +import Ember from 'ember'; + +import AddCssClassToBodyMixin from '../../mixins/add-css-class-to-body'; + +export default Ember.Route.extend(AddCssClassToBodyMixin, { + cachedModel: null, + + model: function() { + if (!this.get('cachedModel')) { + this.set('cachedModel', Ember.ArrayProxy.create()); + } + return Ember.RSVP.resolve(this.get('cachedModel')); + }, + + setupController: function(controller, model) { + controller.set('model', model); + + if (!model.get('length')) { + controller.set('resultsLoading', true); + controller.getResults().then(function(results) { + controller + .set('resultsLoading', false) + .set('meta', results.get('meta')) + .set('model.content', results); + }); + } + }, + + deactivate: function() { + this._super(); + this.controllerFor('application').set('backButtonTarget', this.controllerFor('index')); + }, + + actions: { + refresh: function() { + this.set('cachedModel', null); + this.refresh(); + }, + + didTransition: function() { + // @todo only if it's not a new discussion + this.controllerFor('composer').send('minimize'); + this.controllerFor('index').set('paned', false); + this.controllerFor('index').set('paneShowing', false); + } + } +});