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  }