github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/app/controllers/variables/variable/index.js (about)

     1  import Controller from '@ember/controller';
     2  import { set, action } from '@ember/object';
     3  import { task } from 'ember-concurrency';
     4  import { inject as service } from '@ember/service';
     5  import { tracked } from '@glimmer/tracking';
     6  
     7  export default class VariablesVariableIndexController extends Controller {
     8    queryParams = ['view'];
     9  
    10    @service router;
    11    queryParams = ['sortProperty', 'sortDescending'];
    12  
    13    @tracked sortProperty = 'key';
    14    @tracked sortDescending = true;
    15  
    16    get sortedKeyValues() {
    17      const sorted = this.model.keyValues.sortBy(this.sortProperty);
    18      return this.sortDescending ? sorted : sorted.reverse();
    19    }
    20  
    21    @tracked isDeleting = false;
    22  
    23    @action
    24    onDeletePrompt() {
    25      this.isDeleting = true;
    26    }
    27  
    28    @action
    29    onDeleteCancel() {
    30      this.isDeleting = false;
    31    }
    32  
    33    @task(function* () {
    34      try {
    35        yield this.model.deleteRecord();
    36        yield this.model.save();
    37        if (this.model.parentFolderPath) {
    38          this.router.transitionTo('variables.path', this.model.parentFolderPath);
    39        } else {
    40          this.router.transitionTo('variables');
    41        }
    42        this.flashMessages.add({
    43          title: 'Variable deleted',
    44          message: `${this.model.path} successfully deleted`,
    45          type: 'success',
    46          destroyOnClick: false,
    47          timeout: 5000,
    48        });
    49      } catch (err) {
    50        this.flashMessages.add({
    51          title: `Error deleting ${this.model.path}`,
    52          message: err,
    53          type: 'error',
    54          destroyOnClick: false,
    55          sticky: true,
    56        });
    57      }
    58    })
    59    deleteVariableFile;
    60  
    61    //#region Code View
    62    /**
    63     * @type {"table" | "json"}
    64     */
    65    @tracked
    66    view = 'table';
    67  
    68    toggleView() {
    69      if (this.view === 'table') {
    70        this.view = 'json';
    71      } else {
    72        this.view = 'table';
    73      }
    74    }
    75    //#endregion Code View
    76  
    77    get shouldShowLinkedEntities() {
    78      return (
    79        this.model.pathLinkedEntities?.job ||
    80        this.model.pathLinkedEntities?.group ||
    81        this.model.pathLinkedEntities?.task
    82      );
    83    }
    84  
    85    toggleRowVisibility(kv) {
    86      set(kv, 'isVisible', !kv.isVisible);
    87    }
    88  }