Skip to content

Instantly share code, notes, and snippets.

@superlou
Created April 29, 2014 23:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save superlou/ba9fda0f25182743c497 to your computer and use it in GitHub Desktop.
Save superlou/ba9fda0f25182743c497 to your computer and use it in GitHub Desktop.
Computed properties for ember data
var attr = DS.attr;
var belongsTo = DS.belongsTo;
App.Checkout = DS.Model.extend({
book: belongsTo('book'),
patron: belongsTo('patron'),
status: attr(),
closed_at: attr('date'),
created_at: attr('date'),
book_code: function(key, value) {
if (arguments.length > 1) {
var _this = this;
var book = this.get('store').find('book', 'code:' + value)
book.then(function(book) {
_this.set('book', book);
}, function (err) {
_this.set('book', null);
});
}
return this.get('book.code');
}.property('book'),
isFullyLoaded: function() {
if (this.get('book.isLoaded') && this.get('patron.isLoaded')) {
return true;
}
return false;
}.property('book.isLoaded', 'patron.isLoaded'),
isOpen: function() {
return (this.get('status') == "out");
}.property('status'),
duration: function() {
if (this.get('created_at') && this.get('closed_at')) {
var diff = moment.duration(moment(this.get('closed_at')).valueOf() - moment(this.get('created_at')).valueOf());
var dur = moment.duration(diff);
return dur
} else if (this.get('created_at')) {
var diff = moment.duration(moment().valueOf() - moment(this.get('created_at')).valueOf());
var dur = moment.duration(diff);
return dur;
} else {
return null;
}
}.property('created_at', 'closed_at')
});
App.Checkout.reopenClass({
findByInfo: function(book_info, patron_info) {
return this.find('book_info:' + book_info);
}
});
export default App.Checkout;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment