All files / app/component/kanban kanban.component.html

7.33% Statements 8/109
6.25% Branches 3/48
0% Functions 0/12
9.21% Lines 7/76

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 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 1614x 16x 4x   4x                                                 4x                                                                                                                                                                                                                                                             16x 4x      
<ng-container *mobxAutorun>
  @if (!error && !ext) {
    <app-loading></app-loading>
  } @else if (error) {
    <div class="error-404" i18n>Not Found</div>
  } @else if (ext) {
    <div class="kanban"
         cdkDropListGroup
         cdkScrollable
         [class.single-column]="(columns.length || 0) + (showColumnBacklog ? 1 : 0) === 1"
         [class.swimlanes]="swimLanes"
         [style.--cols]="columns.length + (showColumnBacklog ? 1 : 0)"
         [class.compact]="store.view.floatingSidebar && store.view.sidebarExpanded">
      <div class="kanban-header"
           style="max-width: 90vw"
           cdkDropList
           [cdkDropListData]="{col: '-'+ext.tag}"
           (cdkDropListDropped)="drop($any($event))"
           [style.grid-column]="'1 / ' + (1 + (swimLanes ? 1 : 0) + (showColumnBacklog ? 1 : 0) + columns.length)">
        <div class="kanban-options">
          <h2><a [routerLink]="['/tag', ext.tag + ext.origin]" [appTitle]="ext">{{ ext.name || '#' + ext.tag }}</a></h2>
          @if (pageControls) {
            <div>
              @if (kanbanConfig.swimLanes?.length) {
                <div class="disable-swim-lanes">
                  <input id="disable-swim-lanes"
                         type="checkbox"
                         [checked]="disableSwimLanes"
                         (input)="disableSwimLanes = !disableSwimLanes">
                  <label for="disable-swim-lanes" i18n>Hide Swim Lanes</label>
                </div>
              }
              <app-page-controls [hideCols]="true"></app-page-controls>
            </div>
          }
        </div>
        <div class="kanban-remove">�️</div>
      </div>
      @if (swimLanes) {
        <div><!-- corner spacer --></div>
      }
      @if (showColumnBacklog) {
        <a class="column-title tag"
           (click)="bookmarks.toggleQuery(store.hotkey ? '!(' + colBacklog + ')' : colBacklog)"
           title="No matching column tag"><span class="filter-toggle">{{ kanbanConfig.columnBacklogTitle || 'Backlog' }}</span></a>
      }
      @for (col of columns; track col) {
        <a class="column-title tag"
           (click)="bookmarks.toggleQuery(store.hotkey ? '!(' + col + ')' : col)"
           [title]="col"><span class="filter-toggle">{{ (exts.getCachedExt(col, ext.origin || '') | async)?.name || '#' + col }}</span></a>
      }
      @if (swimLanes) {
        @for (sl of swimLanes; track sl) {
          <a class="swim-lane-title tag"
             (click)="bookmarks.toggleQuery(store.hotkey ? '!(' + sl + ')' : sl)"
             [title]="sl"><span class="filter-toggle">{{ (exts.getCachedExt(sl, ext.origin || '') | async)?.name || '#' + sl }}</span></a>
          @if (showColumnBacklog) {
            <app-kanban-column cdkDropList
                               cdkScrollable
                               [ext]="ext"
                               [size]="size"
                               [sort]="sort"
                               [filter]="filter"
                               [search]="search"
                               [hideSwimLanes]="disableSwimLanes"
                               [cdkDropListData]="{sl}"
                               (cdkDropListDropped)="drop($any($event))"
                               [updates]="updates"
                               [query]="getQuery({sl})"
                               [addTags]="addingTags({sl})"></app-kanban-column>
          }
          @for (col of columns; track col) {
            <app-kanban-column cdkDropList
                               cdkScrollable
                               [ext]="ext"
                               [size]="size"
                               [sort]="sort"
                               [filter]="filter"
                               [search]="search"
                               [hideSwimLanes]="disableSwimLanes"
                               [cdkDropListData]="{col, sl}"
                               (cdkDropListDropped)="drop($any($event))"
                               [updates]="updates"
                               [query]="getQuery({col, sl})"
                               [addTags]="addingTags({col, sl})"></app-kanban-column>
          }
        }
        @if (showSwimLaneBacklog) {
          <a class="swim-lane-title tag"
             (click)="bookmarks.toggleQuery(store.hotkey ? '!(' + slBacklog + ')' : slBacklog)"
             title="No matching swim lane"><span class="filter-toggle">{{ kanbanConfig.swimLaneBacklogTitle || 'Backlog' }}</span></a>
          @if (showColumnBacklog) {
            <app-kanban-column cdkDropList
                               cdkScrollable
                               [ext]="ext"
                               [size]="size"
                               [sort]="sort"
                               [filter]="filter"
                               [search]="search"
                               [hideSwimLanes]="disableSwimLanes"
                               [cdkDropListData]="{}"
                               (cdkDropListDropped)="drop($any($event))"
                               [updates]="updates"
                               [query]="getQuery({})"
                               [addTags]="addingTags({})"></app-kanban-column>
          }
          @for (col of columns; track col) {
            <app-kanban-column cdkDropList
                               cdkScrollable
                               [ext]="ext"
                               [size]="size"
                               [sort]="sort"
                               [filter]="filter"
                               [search]="search"
                               [hideSwimLanes]="disableSwimLanes"
                               [cdkDropListData]="{col}"
                               (cdkDropListDropped)="drop($any($event))"
                               [updates]="updates"
                               [query]="getQuery({col})"
                               [addTags]="addingTags({col})"></app-kanban-column>
          }
        }
      } @else {
        @if (showColumnBacklog) {
          <app-kanban-column cdkDropList
                             cdkScrollable
                             [ext]="ext"
                             [size]="size"
                             [sort]="sort"
                             [filter]="filter"
                             [search]="search"
                             [hideSwimLanes]="disableSwimLanes"
                             [cdkDropListData]="{}"
                             (cdkDropListDropped)="drop($any($event))"
                             [updates]="updates"
                             [query]="getQuery({})"
                             [addTags]="addingTags({})"></app-kanban-column>
        }
        @for (col of columns; track col) {
          <app-kanban-column cdkDropList
                             cdkScrollable
                             [ext]="ext"
                             [size]="size"
                             [sort]="sort"
                             [filter]="filter"
                             [search]="search"
                             [hideSwimLanes]="disableSwimLanes"
                             [cdkDropListData]="{col}"
                             (cdkDropListDropped)="drop($any($event))"
                             [updates]="updates"
                             [query]="getQuery({col})"
                             [addTags]="addingTags({col})"></app-kanban-column>
        }
      }
    </div>
  }
  @if (pageControls) {
    <app-page-controls></app-page-controls>
  }
</ng-container>