Skip to content

Instantly share code, notes, and snippets.

@tarmann
Created July 5, 2017 11:03
Show Gist options
  • Save tarmann/29d815851781e786c0feb683ffadfb3a to your computer and use it in GitHub Desktop.
Save tarmann/29d815851781e786c0feb683ffadfb3a to your computer and use it in GitHub Desktop.
Player
import Ember from 'ember';
export default Ember.Component.extend({
init(){
this._super(...arguments);
this.set('state', 'stopped');
},
didStateChanged: Ember.observer('state', function(){
console.log('didStateChanged', this.get('state'));
if(this.get('state') === 'playing'){
this.play();
}
if(this.get('state') === 'stopped'){
this.stop();
}
if(this.get('state') === 'replay'){
this.stop();
this.reset();
this.play();
// Ember.run.next(() => this.notifyPropertyChange('state'));
}
}),
didTimeChanged: Ember.observer('time', function(){
if(this.get('time') === 10){
this.stop();
}
}),
reset(){
this.set('time', 0);
},
play(){
this.set('state', 'playing');
if( this.get('interval') ){
clearTimeout( this.get('interval') );
}
this.set('interval', setInterval(() => {
this.incrementProperty('time')
}, 1000));
},
stop(){
this.set('state', 'stopped');
clearTimeout( this.get('interval') );
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
play(){
this.set('state', 'playing');
},
stop(){
this.set('state', 'stopped');
},
replay(){
this.set('state', 'replay');
},
playClip(start,end){
this.set('timeStart', start);
this.set('timeEnd', end);
this.set('state', 'replay');
}
}
});
{{my-player timeStart=0 timeEnd=30 state=(mut state) time=(mut time)}}
{{input type="range" min=timeMin max=timeEnd value=time}}
<button {{action "play"}}>Play</button>
<button {{action "stop"}}>Stop</button>
<button {{action "replay"}}>Replay</button>
<p> Start: {{input value=timeStart}} </p>
<p> End: {{input value=timeEnd}} </p>
<hr>
<button {{action "playClip" 5 15}}> Clip 1 </button>
<button {{action "playClip" 20 23}}> Clip 2 </button>
<button {{action "playClip" 40 45}}> Clip 3 </button>
import Ember from 'ember';
export default function destroyApp(application) {
Ember.run(application, 'destroy');
}
import Resolver from '../../resolver';
import config from '../../config/environment';
const resolver = Resolver.create();
resolver.namespace = {
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix
};
export default resolver;
import Ember from 'ember';
import Application from '../../app';
import config from '../../config/environment';
const { run } = Ember;
const assign = Ember.assign || Ember.merge;
export default function startApp(attrs) {
let application;
let attributes = assign({rootElement: "#test-root"}, config.APP);
attributes = assign(attributes, attrs); // use defaults, but you can override;
run(() => {
application = Application.create(attributes);
application.setupForTesting();
application.injectTestHelpers();
});
return application;
}
import resolver from './helpers/resolver';
import {
setResolver
} from 'ember-qunit';
setResolver(resolver);
{
"version": "0.12.1",
"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.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment