github.com/hernad/nomad@v1.6.112/ui/app/components/fs/browser.js (about)

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