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 }