Skip to content

Instantly share code, notes, and snippets.

View poteto's full-sized avatar
🥔
ポテト

lauren poteto

🥔
ポテト
View GitHub Profile
@poteto
poteto / coach.js
Last active August 29, 2015 14:13
import DS from 'ember-data;'
export default DS.Model.extend({
name: DS.attr('string'),
score: DS.attr('number'),
team: DS.belongsTo('team', { async: true }),
players: DS.hasMany('player', { async: true })
});
actions: {
successAction() {
Ember.get(this, 'flashes').success('Success!', 2000);
},
warningAction() {
Ember.get(this, 'flashes').warning('This is a warning message'); // timeout is optional
},
infoAction() {
queue : Ember.A([]),
isEmpty : computed.equal('queue.length', 0),
defaultTimeout : 2000,
success(message, timeout=get(this, 'defaultTimeout')) {
this._addToQueue(message, 'success', timeout);
},
info(message, timeout=get(this, 'defaultTimeout')) {
this._addToQueue(message, 'info', timeout);
},
warning(message, timeout=get(this, 'defaultTimeout')) {
this._addToQueue(message, 'warning', timeout);
addMessage(message, type='info', timeout=get(this, 'defaultTimeout')) {
this._addToQueue(message, type, timeout);
},
clearMessages() {
let flashes = get(this, 'queue');
flashes.clear();
},
_newFlashMessage(service, message, type='info', timeout=get(this, 'defaultTimeout')) {
Ember.assert('Must pass a valid flash service', service);
Ember.assert('Must pass a valid flash message', message);
return FlashMessage.create({
type : type,
message : message,
timeout : timeout,
flashService : service
});
@poteto
poteto / add.js
Last active August 29, 2015 14:14
_addToQueue(message, type, timeout) {
let flashes = get(this, 'queue');
let flash = this._newFlashMessage(this, message, type, timeout);
flashes.pushObject(flash);
},
isSuccess : computed.equal('type', 'success'),
isInfo : computed.equal('type', 'info'),
isWarning : computed.equal('type', 'warning'),
isDanger : computed.equal('type', 'danger'),
defaultTimeout : computed.alias('flashService.defaultTimeout'),
queue : computed.alias('flashService.queue'),
destroyLater: function() {
let defaultTimeout = get(this, 'defaultTimeout');
let timeout = getWithDefault(this, 'timeout', defaultTimeout);
run.later(this, '_destroyMessage', timeout);
}.on('init'),
destroyMessage() {
this._destroyMessage();
},
// private
_destroyMessage() {
set(this, 'isDestroyed', true);
get(this, 'queue').removeObject(this);
}