| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <div id="nifi-registry-workflow-administration-perspective-buckets-container" class="mat-elevation-z5"> |
| <div fxFlex class="pad-top-md pad-bottom-sm pad-left-md pad-right-md"> |
| <span class="md-card-title">Buckets ({{nfRegistryService.buckets.length}})</span> |
| <div flex class="push-right-sm" fxLayout="row" fxLayoutAlign="end center"> |
| <td-chips class="push-right-sm" |
| [items]="nfRegistryService.autoCompleteBuckets" |
| (add)="nfRegistryService.bucketsSearchAdd($event)" |
| (remove)="nfRegistryService.bucketsSearchRemove($event)"></td-chips> |
| <div matTooltip="{{(!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite) ? 'You do not have permission. Please contact your system administrator.': ''}}"> |
| <button data-automation-id = "new-bucket-button" |
| class="push-top-sm push-right-sm" |
| color="fds-secondary" |
| mat-raised-button |
| [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite" |
| (click)="createBucket()"> |
| New Bucket |
| </button> |
| </div> |
| <button class="push-top-sm" [disabled]="nfRegistryService.isMultiBucketActionsDisabled" color="fds-primary" mat-raised-button [matMenuTriggerFor]="bucketActionMenu"> |
| Actions<i class="fa fa-caret-down" aria-hidden="true"></i> |
| </button> |
| </div> |
| <mat-menu class="fds-primary-dropdown-button-menu" #bucketActionMenu="matMenu" [overlapTrigger]="false"> |
| <button mat-menu-item |
| [disabled]="nfRegistryService.disableMultiBucketDeleteAction" |
| (click)="nfRegistryService.deleteSelectedBuckets()"> |
| <span>Delete</span> |
| </button> |
| </mat-menu> |
| <div id="nifi-registry-workflow-administration-buckets-list-container-column-header" fxLayout="row" |
| fxLayoutAlign="space-between center" class="td-data-table"> |
| <div class="td-data-table-column" (click)="nfRegistryService.sortBuckets(column)" |
| *ngFor="let column of nfRegistryService.bucketColumns" |
| fxFlex="{{column.width}}"> |
| {{column.label}} |
| <i *ngIf="column.active && column.sortable && column.sortOrder === 'ASC'" class="fa fa-caret-up" |
| aria-hidden="true"></i> |
| <i *ngIf="column.active && column.sortable && column.sortOrder === 'DESC'" class="fa fa-caret-down" |
| aria-hidden="true"></i> |
| </div> |
| <div class="td-data-table-column"> |
| <div fxLayout="row" fxLayoutAlign="end center"> |
| <mat-checkbox class="pad-left-sm" [(ngModel)]="nfRegistryService.allBucketsSelected" |
| (checked)="nfRegistryService.allBucketsSelected" |
| (change)="nfRegistryService.toggleBucketsSelectAll()"></mat-checkbox> |
| </div> |
| </div> |
| </div> |
| <div id="nifi-registry-workflow-administration-buckets-list-container"> |
| <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row" |
| [ngClass]="{'nonconfigurable' : row.configurable === false, 'selected-nonconfigurable' : (row.checked === true && row.configurable === false), 'selected' : row.checked === true}" |
| *ngFor="let row of nfRegistryService.filteredBuckets" |
| (click)="row.checked = !row.checked;nfRegistryService.determineAllBucketsSelectedState()"> |
| <div class="td-data-table-cell" *ngFor="let column of nfRegistryService.bucketColumns" |
| fxFlex="{{column.width}}"> |
| <div class="ellipsis" matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}"> |
| {{column.format ? column.format(row[column.name]) : row[column.name]}} |
| </div> |
| </div> |
| <div class="td-data-table-cell"> |
| <div> |
| <div *ngIf="nfRegistryService.bucketActions.length <= 4" fxLayout="row" fxLayoutAlign="end center"> |
| <button (click)="nfRegistryService.executeBucketAction(action, row);row.checked = !row.checked;" |
| *ngFor="let action of nfRegistryService.bucketActions" |
| matTooltip="{{action.tooltip}}" mat-icon-button color="accent" |
| [disabled]="action.disabled(row)"> |
| <i class="{{action.icon}}" aria-hidden="true"></i> |
| </button> |
| <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked" |
| (change)="nfRegistryService.determineAllBucketsSelectedState()" |
| (click)="row.checked = !row.checked;nfRegistryService.determineAllBucketsSelectedState()"></mat-checkbox> |
| </div> |
| <div *ngIf="nfRegistryService.bucketActions.length > 4" fxLayout="row" fxLayoutAlign="end center"> |
| <button (click)="row.checked = !row.checked" matTooltip="Actions" mat-icon-button |
| [matMenuTriggerFor]="bucketTableActionMenu"> |
| <i class="fa fa-ellipsis-h" aria-hidden="true"></i> |
| </button> |
| <mat-menu #bucketTableActionMenu="matMenu" [overlapTrigger]="false"> |
| <button (click)="nfRegistryService.executeBucketAction(action, row);row.checked = !row.checked;" |
| *ngFor="let action of nfRegistryService.bucketActions" |
| matTooltip="{{action.tooltip}}" mat-menu-item |
| [disabled]="action.disabled(row)"> |
| <i class="{{action.icon}}" aria-hidden="true"></i> |
| <span>{{action.name}}</span> |
| </button> |
| </mat-menu> |
| <mat-checkbox [(ngModel)]="row.checked" [checked]="row.checked" |
| (change)="nfRegistryService.determineAllBucketsSelectedState()" |
| (click)="row.checked = !row.checked;nfRegistryService.determineAllBucketsSelectedState()"></mat-checkbox> |
| </div> |
| </div> |
| <div *ngIf="!nfRegistryService.bucketActions" fxLayout="row" fxLayoutAlign="end center"> |
| <mat-checkbox [(ngModel)]="row.checked" [checked]="row.checked" |
| (change)="nfRegistryService.determineAllBucketsSelectedState(row)" |
| (click)="row.checked = !row.checked;nfRegistryService.determineAllBucketsSelectedState()"></mat-checkbox> |
| </div> |
| </div> |
| </div> |
| </div> |
| <div class="mat-padding" *ngIf="nfRegistryService.filteredBuckets.length === 0" layout="row" |
| layout-align="center center"> |
| <h3 data-automation-id="no-buckets-message">No results to display.</h3> |
| </div> |
| </div> |
| </div> |
| <router-outlet></router-outlet> |