.. and few more templates
this is it.
import { Model, prefix, type, attr, hasMany } from 'sofa'; | |
const { | |
computed | |
} = Ember; | |
export default Model.extend({ | |
id: prefix(), | |
name: attr(), | |
rolls: hasMany('roll', { view: 'by-collection', key: 'docId' }), | |
rollsSorting: ['number'], | |
sortedRolls: computed.sort('rolls', 'rollsSorting'), | |
}); |
import { Model, type, prefix, attr, belongsTo } from 'sofa'; | |
import delta from '../util/delta'; | |
const { | |
computed | |
} = Ember; | |
export default Model.extend({ | |
id: prefix(), | |
number: attr(), | |
collection: belongsTo('collection', { inverse: 'images' }), | |
roll: belongsTo('roll', { inverse: 'images' }), | |
prev: delta('roll.sortedImages', -1), | |
next: delta('roll.sortedImages', +1), | |
}); |
import { Model, type, prefix, attr, belongsTo, hasMany } from 'sofa'; | |
import delta from '../util/delta'; | |
const { | |
computed | |
} = Ember; | |
export default Model.extend({ | |
id: prefix(), | |
number: attr(), | |
collection: belongsTo('collection', { inverse: 'rolls' }), | |
images: hasMany('roll-image', { inverse: 'roll', view: 'by-roll', key: 'docId' }), | |
imagesSorting: ['number'], | |
sortedImages: computed.sort('images', 'imagesSorting'), | |
prev: delta('collection.sortedRolls', -1), | |
next: delta('collection.sortedRolls', +1), | |
}); |
import Ember from 'ember'; | |
import config from './config/environment'; | |
var Router = Ember.Router.extend({ | |
location: config.locationType | |
}); | |
Router.map(function() { | |
this.route('collections', function() { | |
this.route('collection', { path: '/:collection_id' }, function() { | |
this.route('rolls', function() { | |
this.route('roll', { path: '/:roll_id'}, function() { | |
this.route('roll-images', function() { | |
this.route('roll-image', { path: '/:roll_image_id'}, function() { | |
}); | |
}); | |
}); | |
}); | |
}); | |
}); | |
}); | |
export default Router; |
import Ember from 'ember'; | |
export default Ember.Route.extend({ | |
beforeModel() { | |
return this.get('store.session').restore(); | |
} | |
}); |
import Ember from 'ember'; | |
export default Ember.Route.extend({ | |
model(params) { | |
return this.get('store.db.main').load('roll-image', params.roll_image_id); | |
} | |
}); |
import Ember from 'ember'; | |
export default Ember.Route.extend({ | |
model(params) { | |
return this.get('store.db.main').load('roll', params.roll_id).then((roll) => { | |
return roll.get('images.promise').then(() => roll); | |
}); | |
} | |
}); |
import Ember from 'ember'; | |
export default Ember.Route.extend({ | |
model(params) { | |
return this.get('store.db.main').load('collection', params.collection_id).then((collection) => { | |
return collection.get('rolls.promise').then(() => collection); | |
}); | |
} | |
}); |
import { Store } from 'sofa'; | |
export default Store.extend({ | |
url: '/api', | |
databaseNameMapping: { | |
main: 'index65_production' | |
}, | |
}); |
import Ember from 'ember'; | |
const { | |
computed | |
} = Ember; | |
// prev-next lookup based on arrayKey and this | |
// | |
export default function(arrayKey, delta) { | |
return computed(arrayKey, function() { | |
let array = this.get(arrayKey); | |
let proxy = array.findBy('content', this); | |
let idx = array.indexOf(proxy); | |
return array.objectAt(idx + delta); | |
}).readOnly(); | |
} |