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 }