Skip to content

Instantly share code, notes, and snippets.

@tamebadger
Created May 5, 2016 15:44
Show Gist options
  • Save tamebadger/aa1dcf74c9ee4add641abe1d0c07b0da to your computer and use it in GitHub Desktop.
Save tamebadger/aa1dcf74c9ee4add641abe1d0c07b0da to your computer and use it in GitHub Desktop.
Hash Test
import Ember from 'ember';
export default Ember.Controller.extend({
})
import Ember from 'ember';
export default Ember.Controller.extend({
currentlyOpen: null,
actions: {
open(title){
const typeHash = this.get(title)
this.set('currentlyOpen',typeHash)
}
}
});
export default function() {
window.server = this;
this.get('drinks')
this.get('types')
};
import types from './types'
let cloned = types.slice(0)
let drinks = []
let typesWithDrinks = cloned.forEach(type => {
drinks.push(
{title:type.title + ' 1',
dtype:type.title,
size: 'L',
price: 10
})
drinks.push(
{title:type.title + ' 2',
dtype:type.title,
size: 'M',
price: 10
})
drinks.push(
{title:type.title + ' 3',
dtype:type.title,
size: 'S',
price: 10
})
})
export default drinks
import Ember from 'ember'
const inflector = new Ember.Inflector(Ember.Inflector.defaultRules)
let types = [
'Americano',
'Capuccino',
'Drip',
'Espresso',
'Latte',
'Mocha',
'Tea'
]
types = types.map(type => {
return {
title: inflector.pluralize(type.toLowerCase())
}
})
export default types
import { Model } from 'ember-cli-mirage';
export default Model.extend({
});
import { Model } from 'ember-cli-mirage';
export default Model.extend({
});
export default function(server) {
window.server = server;
server.create('drink');
}
export default DS.Model.extend({
title: DS.attr('string'),
dtype: DS.attr('string'),
size: DS.attr('string'),
price: DS.attr('number')
});
export default DS.Model.extend({
title: DS.attr('string')
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none'
});
Router.map(function() {
this.route('types')
this.route('drinks')
this.route('menu')
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.findAll('drink')
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model(){
return Ember.RSVP.hash({
types: this.store.findAll('type'),
drinks: this.store.findAll('drink')
})
},
setupController(controller, model){
this._super(controller, model)
let typeHash = {}
model.types.forEach(type => {
const title = type.get('title')
const drinksByType = model.drinks.filterBy('dtype',title)
typeHash[title] = drinksByType
})
controller.setProperties(typeHash)
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.findAll('type')
}
});
{{link-to 'types' 'types'}}|{{link-to 'drinks' 'drinks'}}|{{link-to 'menu' 'menu'}}<br>
{{outlet}}
Drinks:
<hr/>
<ul>
{{#each model as |drink|}}
<li>{{drink.title}}</li>
{{/each}}
</ul>
{{#each model.types as |drinkType|}}
<button {{action 'open' drinkType.title}}>{{drinkType.title}}</button>
{{/each}}
<hr/>
<ul>
{{#each currentlyOpen as |drink|}}
<li>{{drink.title}} - <br>size:{{input value=drink.size}} <br>price:{{input value=drink.price}}</li>
{{/each}}
</ul>
<hr/>
All Drinks:<br/>
<ul>
{{#each model.drinks as |drink|}}
<li>{{drink.title}}{{drink.size}}{{drink.price}}</li>
{{/each}}
</ul>
Drink Types:
<hr/>
<ul>
{{#each model as |type|}}
<li>{{type.title}}</li>
{{/each}}
</ul>
{
"version": "0.8.0",
"ENV": {
"ember-cli-mirage": {
"enabled": true
}
},
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.5.1",
"ember-data": "2.5.2",
"ember-template-compiler": "2.5.1"
},
"addons": {
"ember-cli-mirage": "0.2.0-beta.8"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment