github.com/aminovpavel/nomad@v0.11.8/ui/app/components/lifecycle-chart.js (about)

     1  import Component from '@ember/component';
     2  import { computed } from '@ember/object';
     3  import { sort } from '@ember/object/computed';
     4  
     5  export default Component.extend({
     6    tagName: '',
     7  
     8    tasks: null,
     9    taskStates: null,
    10  
    11    lifecyclePhases: computed('tasks.@each.lifecycle', 'taskStates.@each.state', function() {
    12      const tasksOrStates = this.taskStates || this.tasks;
    13      const lifecycles = {
    14        prestarts: [],
    15        sidecars: [],
    16        mains: [],
    17      };
    18  
    19      tasksOrStates.forEach(taskOrState => {
    20        const task = taskOrState.task || taskOrState;
    21        lifecycles[`${task.lifecycleName}s`].push(taskOrState);
    22      });
    23  
    24      const phases = [];
    25  
    26      if (lifecycles.prestarts.length || lifecycles.sidecars.length) {
    27        phases.push({
    28          name: 'Prestart',
    29          isActive: lifecycles.prestarts.some(state => state.state === 'running'),
    30        });
    31      }
    32  
    33      if (lifecycles.sidecars.length || lifecycles.mains.length) {
    34        phases.push({
    35          name: 'Main',
    36          isActive: lifecycles.mains.some(state => state.state === 'running'),
    37        });
    38      }
    39  
    40      return phases;
    41    }),
    42  
    43    sortedLifecycleTaskStates: sort('taskStates', function(a, b) {
    44      return getTaskSortPrefix(a.task).localeCompare(getTaskSortPrefix(b.task));
    45    }),
    46  
    47    sortedLifecycleTasks: sort('tasks', function(a, b) {
    48      return getTaskSortPrefix(a).localeCompare(getTaskSortPrefix(b));
    49    }),
    50  });
    51  
    52  const lifecycleNameSortPrefix = {
    53    prestart: 0,
    54    sidecar: 1,
    55    main: 2,
    56  };
    57  
    58  function getTaskSortPrefix(task) {
    59    // Prestarts first, then sidecars, then mains
    60    return `${lifecycleNameSortPrefix[task.lifecycleName]}-${task.name}`;
    61  }