open-nomad/ui/app/components/job-client-status-row.js

90 lines
2.2 KiB
JavaScript

import EmberObject from '@ember/object';
import Component from '@glimmer/component';
export default class ClientRow extends Component {
// Attribute set in the template as @onClick.
onClick() {}
get row() {
return this.args.row.model;
}
get shouldDisplayAllocationSummary() {
return this.args.row.model.jobStatus !== 'notScheduled';
}
get allocationSummaryPlaceholder() {
switch (this.args.row.model.jobStatus) {
case 'notScheduled':
return 'Not Scheduled';
default:
return '';
}
}
get humanizedJobStatus() {
switch (this.args.row.model.jobStatus) {
case 'notScheduled':
return 'not scheduled';
default:
return this.args.row.model.jobStatus;
}
}
get jobStatusClass() {
switch (this.args.row.model.jobStatus) {
case 'notScheduled':
return 'not-scheduled';
default:
return this.args.row.model.jobStatus;
}
}
get allocationContainer() {
const statusSummary = {
queuedAllocs: 0,
completeAllocs: 0,
failedAllocs: 0,
runningAllocs: 0,
startingAllocs: 0,
lostAllocs: 0,
};
switch (this.args.row.model.jobStatus) {
case 'notSchedule':
break;
case 'queued':
statusSummary.queuedAllocs = this.args.row.model.allocations.length;
break;
case 'starting':
statusSummary.startingAllocs = this.args.row.model.allocations.length;
break;
default:
for (const alloc of this.args.row.model.allocations) {
switch (alloc.clientStatus) {
case 'running':
statusSummary.runningAllocs++;
break;
case 'lost':
statusSummary.lostAllocs++;
break;
case 'failed':
statusSummary.failedAllocs++;
break;
case 'complete':
statusSummary.completeAllocs++;
break;
case 'starting':
statusSummary.startingAllocs++;
break;
}
}
}
const Allocations = EmberObject.extend({
...statusSummary,
});
return Allocations.create();
}
}