github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/app/components/fs/browser.js (about)

     1  import Component from '@ember/component';
     2  import { computed } from '@ember/object';
     3  import { filterBy } from '@ember/object/computed';
     4  import { tagName } from '@ember-decorators/component';
     5  import classic from 'ember-classic-decorator';
     6  
     7  @classic
     8  @tagName('')
     9  export default class Browser extends Component {
    10    model = null;
    11  
    12    @computed('model.allocation')
    13    get allocation() {
    14      if (this.model.allocation) {
    15        return this.model.allocation;
    16      } else {
    17        return this.model;
    18      }
    19    }
    20  
    21    @computed('model.allocation')
    22    get taskState() {
    23      if (this.model.allocation) {
    24        return this.model;
    25      }
    26  
    27      return undefined;
    28    }
    29  
    30    @computed('taskState')
    31    get type() {
    32      if (this.taskState) {
    33        return 'task';
    34      } else {
    35        return 'allocation';
    36      }
    37    }
    38  
    39    @filterBy('directoryEntries', 'IsDir') directories;
    40    @filterBy('directoryEntries', 'IsDir', false) files;
    41  
    42    @computed(
    43      'directories',
    44      'directoryEntries.[]',
    45      'files',
    46      'sortDescending',
    47      'sortProperty'
    48    )
    49    get sortedDirectoryEntries() {
    50      const sortProperty = this.sortProperty;
    51  
    52      const directorySortProperty =
    53        sortProperty === 'Size' ? 'Name' : sortProperty;
    54  
    55      const sortedDirectories = this.directories.sortBy(directorySortProperty);
    56      const sortedFiles = this.files.sortBy(sortProperty);
    57  
    58      const sortedDirectoryEntries = sortedDirectories.concat(sortedFiles);
    59  
    60      if (this.sortDescending) {
    61        return sortedDirectoryEntries.reverse();
    62      } else {
    63        return sortedDirectoryEntries;
    64      }
    65    }
    66  }