github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/app/components/server-agent-row.js (about) 1 import { inject as service } from '@ember/service'; 2 import { alias } from '@ember/object/computed'; 3 import Component from '@ember/component'; 4 import { computed } from '@ember/object'; 5 import { lazyClick } from '../helpers/lazy-click'; 6 import { 7 classNames, 8 classNameBindings, 9 tagName, 10 } from '@ember-decorators/component'; 11 import classic from 'ember-classic-decorator'; 12 13 @classic 14 @tagName('tr') 15 @classNames('server-agent-row', 'is-interactive') 16 @classNameBindings('isActive:is-active') 17 export default class ServerAgentRow extends Component { 18 // TODO Switch back to the router service once the service behaves more like Route 19 // https://github.com/emberjs/ember.js/issues/15801 20 // router: inject.service('router'), 21 // eslint-disable-next-line ember/no-private-routing-service 22 @service('-routing') _router; 23 @alias('_router.router') router; 24 25 agent = null; 26 27 @computed('agent', 'router.currentURL') 28 get isActive() { 29 // TODO Switch back to the router service once the service behaves more like Route 30 // https://github.com/emberjs/ember.js/issues/15801 31 // const targetURL = this.get('router').urlFor('servers.server', this.get('agent')); 32 // const currentURL = `${this.get('router.rootURL').slice(0, -1)}${this.get('router.currentURL')}`; 33 34 const router = this.router; 35 const targetURL = router.generate('servers.server', this.agent); 36 const currentURL = `${router.get('rootURL').slice(0, -1)}${ 37 router.get('currentURL').split('?')[0] 38 }`; 39 40 // Account for potential URI encoding 41 return currentURL.replace(/%40/g, '@') === targetURL.replace(/%40/g, '@'); 42 } 43 44 goToAgent() { 45 const transition = () => 46 this.router.transitionTo('servers.server', this.agent); 47 lazyClick([transition, event]); 48 } 49 50 click() { 51 this.goToAgent(); 52 } 53 }