43 lines
1.5 KiB
JavaScript
43 lines
1.5 KiB
JavaScript
import Mixin from '@ember/object/mixin';
|
|
import { inject as service } from '@ember/service';
|
|
import { alias } from '@ember/object/computed';
|
|
import { computed } from '@ember/object';
|
|
import { getOwner } from '@ember/application';
|
|
|
|
export default Mixin.create({
|
|
toolService: service('tool-service'),
|
|
routeName: alias('router.currentRouteName'),
|
|
'trim-index': true,
|
|
route: computed('routeName', function() {
|
|
let me = this;
|
|
let routeName = me.get('routeName');
|
|
return me.getRoute(me.get('trim-index') ?
|
|
routeName.replace(/\.index$/, '') : routeName);
|
|
}),
|
|
service: computed('routeName', function() {
|
|
return this.getService();
|
|
}),
|
|
params: computed('router.location.lastSetURL', function() {
|
|
let me = this;
|
|
let routeName = me.get('routeName');
|
|
return me.getRouteParams(me.get('trim-index') ?
|
|
routeName.replace(/\.index$/, '') : routeName);
|
|
}),
|
|
getRouteParams(routeName) {
|
|
return this.get('route').paramsFor(routeName);
|
|
},
|
|
getRoute(routeName) {
|
|
return getOwner(this).lookup(
|
|
'route:' + (routeName || this.get('routeName')));
|
|
},
|
|
getParentRouteName(routeName) {
|
|
return routeName.replace(/\.[^\.]+$/, '');
|
|
},
|
|
getService(name) {
|
|
const me = this;
|
|
return name ? me.get('toolService').getServiceByRouteName(name) :
|
|
me.getRoute().get('service') ||
|
|
me.get('toolService').getServiceByRouteName(me.get('routeName'));
|
|
}
|
|
});
|