62 lines
1.9 KiB
JavaScript
62 lines
1.9 KiB
JavaScript
import Ember from 'ember';
|
|
import BaseListRoute from './base-list';
|
|
|
|
export default BaseListRoute.extend({
|
|
queryParams: {
|
|
search: {
|
|
refreshModel: true
|
|
},
|
|
selectedId: {
|
|
refreshModel: false
|
|
},
|
|
idField: {
|
|
refreshModel: false
|
|
},
|
|
nameField: {
|
|
refreshModel: false
|
|
}
|
|
},
|
|
setupController(controller) {
|
|
controller.set('selectedModel', null);
|
|
this._super(...arguments);
|
|
},
|
|
actions: {
|
|
select(it, selected) {
|
|
let me = this;
|
|
console.info('select: ', it, selected);
|
|
if (selected) {
|
|
me.set('controller.selectedId', it.id);
|
|
me.set('controller.selectedModel', it);
|
|
}
|
|
else {
|
|
me.set('controller.selectedId', '');
|
|
me.set('controller.selectedModel', null);
|
|
}
|
|
},
|
|
submit() {
|
|
let me = this;
|
|
let parentRouteName = me.getParentRouteName();
|
|
const parentModel = me.modelFor(parentRouteName);
|
|
let itId = me.get('controller.selectedId');
|
|
if (itId) {
|
|
let it = me.get('controller.selectedModel');
|
|
if (it) {
|
|
console.info('select: ', it);
|
|
Ember.set(parentModel, me.get('controller.idField'), itId);
|
|
Ember.set(parentModel, me.get('controller.nameField'), it.name);
|
|
}
|
|
}
|
|
// not select
|
|
else {
|
|
Ember.set(parentModel, me.get('controller.idField'), '');
|
|
Ember.set(parentModel, me.get('controller.nameField'), '');
|
|
}
|
|
me.router.transitionTo(parentRouteName);
|
|
}
|
|
},
|
|
getParentRouteName() {
|
|
return this.get('parentRouteName') ||
|
|
this.get('routeName').replace(/\.[^.]+$/, '');
|
|
}
|
|
});
|