Skip to content

Instantly share code, notes, and snippets.

@chrism
chrism / async-helper.js
Created May 19, 2015 17:21
Example of acceptance test waiting for Youtube player
import Ember from 'ember';
export default Ember.Test.registerAsyncHelper('waitForYoutube', function(app){
return new Ember.Test.promise(function(resolve) {
// inform the test framework that there is an async operation in progress,
// so it shouldn't consider the test complete
Ember.Test.adapter.asyncStart();
var player = app.__container__.lookup('component:youtube-player').createPlayer();
@chrism
chrism / utils.preload-images.js
Created May 26, 2015 15:21
Preloading images using Ember.JS util
import Ember from 'ember';
var Promise = Ember.RSVP.Promise;
export default function preloadImages(...urls) {
let promises = urls.map(url => {
return new Promise((resolve, reject) => {
let image = new Image();
image.onload = resolve;
image.onerror = reject;
image.src = url;
@chrism
chrism / gist:0ec270cbb5f133b99a63
Created August 18, 2015 19:43
For converting wma into mp3 using ffmpeg
for f in *.wma; do ffmpeg -i "$f" -ab 128k "${f%.wma}.mp3" -ab 128K; done
@chrism
chrism / application.route.js
Last active November 8, 2015 18:08 — forked from Gaurav0/application.route.js
Mockjax Sample
import Ember from 'ember';
export default Ember.Route.extend({
init() {
this._super(...arguments);
$.mockjax({
url: '/api/mock',
responseText: {
text: "someText"
filteredOwners: Ember.computed('petName', '[email protected].{id, name}', function() {
var petName = this.get('petName');
return DS.PromiseArray.create({
promise: Ember.RSVP.filter(this.get('model').toArray(), owner => {
return owner.get('pets').then(pets => {
return pets.isAny('name', petName);
});
})
});
@chrism
chrism / adapters.application.js
Last active July 27, 2019 18:43
Filtering Async hasMany Relationships
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
namespace: 'api',
//coalesceFindRequests: true
});
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['petName'],
petName: null,
filteredOwners: Ember.computed('petName', '[email protected].[]', function() {
let petName = this.get('petName');
return DS.PromiseArray.create({
<h3>All Owners</h3>
<ul>
{{#each model as |owner|}}
<li>
{{owner.name}}
<ul>
{{#each owner.pets as |pet|}}
<li>{{#link-to 'index' (query-params petName=pet.name)}}{{pet.name}}{{/link-to}}</li>
{{/each}}
</ul>
// models/parent.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
children: DS.hasMany('child')
});
// this was possible
// models/parent.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
children: DS.hasMany('child')
});
// now we need to use this approach