1cca7abcab
This is extracted from #8094, where I have run into some snags. Since these ESLint fixes aren’t actually connected to the Ember 3.16 update but involve changes to many files, we might as well address them separately. Where possible I fixed the problems but in cases where a fix seemed too involved, I added per-line or -file exceptions.
89 lines
2.4 KiB
JavaScript
89 lines
2.4 KiB
JavaScript
/* eslint-disable ember/no-observers */
|
|
import Controller from '@ember/controller';
|
|
import { inject as service } from '@ember/service';
|
|
import { computed, observer } from '@ember/object';
|
|
import { computed as overridable } from 'ember-overridable-computed';
|
|
import { alias } from '@ember/object/computed';
|
|
import { task } from 'ember-concurrency';
|
|
import Sortable from 'nomad-ui/mixins/sortable';
|
|
import { lazyClick } from 'nomad-ui/helpers/lazy-click';
|
|
import { watchRecord } from 'nomad-ui/utils/properties/watch';
|
|
|
|
export default Controller.extend(Sortable, {
|
|
token: service(),
|
|
|
|
queryParams: {
|
|
sortProperty: 'sort',
|
|
sortDescending: 'desc',
|
|
},
|
|
|
|
sortProperty: 'name',
|
|
sortDescending: false,
|
|
|
|
listToSort: alias('model.states'),
|
|
sortedStates: alias('listSorted'),
|
|
|
|
// Set in the route
|
|
preempter: null,
|
|
|
|
error: overridable(() => {
|
|
// { title, description }
|
|
return null;
|
|
}),
|
|
|
|
network: alias('model.allocatedResources.networks.firstObject'),
|
|
|
|
services: computed('model.taskGroup.services.@each.name', function() {
|
|
return this.get('model.taskGroup.services').sortBy('name');
|
|
}),
|
|
|
|
onDismiss() {
|
|
this.set('error', null);
|
|
},
|
|
|
|
watchNext: watchRecord('allocation'),
|
|
|
|
observeWatchNext: observer('model.nextAllocation.clientStatus', function() {
|
|
const nextAllocation = this.model.nextAllocation;
|
|
if (nextAllocation && nextAllocation.content) {
|
|
this.watchNext.perform(nextAllocation);
|
|
} else {
|
|
this.watchNext.cancelAll();
|
|
}
|
|
}),
|
|
|
|
stopAllocation: task(function*() {
|
|
try {
|
|
yield this.model.stop();
|
|
// Eagerly update the allocation clientStatus to avoid flickering
|
|
this.model.set('clientStatus', 'complete');
|
|
} catch (err) {
|
|
this.set('error', {
|
|
title: 'Could Not Stop Allocation',
|
|
description: 'Your ACL token does not grant allocation lifecycle permissions.',
|
|
});
|
|
}
|
|
}),
|
|
|
|
restartAllocation: task(function*() {
|
|
try {
|
|
yield this.model.restart();
|
|
} catch (err) {
|
|
this.set('error', {
|
|
title: 'Could Not Restart Allocation',
|
|
description: 'Your ACL token does not grant allocation lifecycle permissions.',
|
|
});
|
|
}
|
|
}),
|
|
|
|
actions: {
|
|
gotoTask(allocation, task) {
|
|
this.transitionToRoute('allocations.allocation.task', task);
|
|
},
|
|
|
|
taskClick(allocation, task, event) {
|
|
lazyClick([() => this.send('gotoTask', allocation, task), event]);
|
|
},
|
|
},
|
|
});
|