All files / utils/grid-base grid-controller.ts

3.44% Statements 1/29
0% Branches 0/31
0% Functions 0/21
3.44% Lines 1/29

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125      1x                                                                                                                                                                                                                                                  
import { TekGrid } from '../../components/tek-grid/grid';
import { TekTreeGrid } from '../../components/tek-tree-grid/tree-grid';
 
export class GridController {
  private grid!: TekGrid | TekTreeGrid;
 
  constructor(grid: TekGrid | TekTreeGrid) {
    this.grid = grid;
  }
 
  public get gridTitle() {
    return this.grid.title;
  }
 
  public get showAddButton() {
    return this.grid.addButton;
  }
 
  public get showDeleteButton() {
    return this.grid.deleteButton !== 'none';
  }
 
  public get showFilterButton() {
    return this.grid.filterButton;
  }
 
  public get showModalFilterProps() {
    return this.grid.modalFilterProps;
  }
 
  public get showSearchInput() {
    return this.grid.showSearch;
  }
 
  public get showReloadButton() {
    return this.grid.showReload;
  }
 
  public get showDivider2() {
    return (
      this.showReloadButton
      && (this.showLayoutOptionsButton
        || this.showColumnsButton
        || this.showActionsButton
        || this.showExportButton
        || this.showSearchInput)
    );
  }
 
  public get showColumnsButton() {
    return this.grid.columnsButton;
  }
 
  public get columnsButtonIgnore() {
    return this.grid.columnsButtonIgnore;
  }
 
  public get showLayoutOptionsButton() {
    return this.grid.showLayoutOptions;
  }
 
  public get showDivider1() {
    return (
      (this.showAddButton || this.showDeleteButton)
      && (this.showReloadButton
        || this.showLayoutOptionsButton
        || this.showColumnsButton
        || this.showActionsButton
        || this.showExportButton
        || this.showSearchInput)
    );
  }
 
  public get showActionsButton() {
    return this.grid.actions.length > 0;
  }
 
  public get showExportButton() {
    return this.grid.showExport;
  }
 
  public get showActionAndExportButton() {
    return (
      (this.showLayoutOptionsButton || this.showColumnsButton)
      && (this.showActionsButton || this.showExportButton || this.showSearchInput)
    );
  }
 
  public get showDivider3() {
    return (
      (this.showActionsButton || this.showExportButton) && this.showSearchInput
    );
  }
 
  public get isEditing() {
    return this.grid.editing;
  }
 
  public get showEditButtons() {
    return this.isEditing && this.grid.showEditButtons;
  }
 
  public get isNotEditing() {
    return !this.isEditing;
  }
 
  public get disableDeleteButton() {
    Iif (this.grid.deleteButton === 'selection') {
      Iif (this.grid.selectAllPages) {
        const { allSelected, except } = this.grid.selectionState;
        return (allSelected && except.length === this.grid.datasource.total)
        || (!allSelected && except.length === 0);
      }
 
      return this.grid.selectedRows.length === 0;
    }
 
    Iif (this.grid.deleteButton === 'currentRow') {
      return !this.grid.datasource.currentRow[this.grid.datasource.uniqueKey];
    }
 
    return false;
  }
}