| <!-- |
| 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 fxFill> |
| <div fxLayout="row" fxLayoutAlign="space-between center" class="pad-top-sm pad-bottom-md pad-left-md pad-right-md"> |
| <span class="md-card-title">{{nfRegistryService.bucket.name}}</span> |
| <button mat-icon-button data-automation-id="nf-registry-manage-bucket-close-side-nav" (click)="closeSideNav()"> |
| <mat-icon color="primary">close</mat-icon> |
| </button> |
| </div> |
| <div class="sidenav-content"> |
| <div class="pad-left-md pad-right-md" flex fxLayoutAlign="start center"> |
| <mat-input-container flex> |
| <input #bucketnameInput |
| data-automation-id="nf-registry-manage-bucket-input-name" |
| matInput |
| [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite" |
| placeholder="Identity/Bucket Name" |
| value="{{nfRegistryService.bucket.name}}" |
| [(ngModel)]="bucketname"> |
| </mat-input-container> |
| <button [disabled]="nfRegistryService.bucket.name === bucketname" |
| (click)="updateBucketName(bucketnameInput.value)" |
| data-automation-id="nf-registry-manage-bucket-save-side-nav" |
| class="input-button" |
| color="fds-regular" |
| mat-raised-button> |
| Save |
| </button> |
| </div> |
| <div class="pad-top-md pad-left-md pad-right-md"> |
| <div class="pad-bottom-sm"> |
| <span class="md-card-title">Bundle Settings</span> |
| </div> |
| <div> |
| <mat-checkbox #bundleRedeployCheckbox |
| [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite" |
| [(ngModel)]="allowBundleRedeploy" |
| (change)="toggleBucketBundleRedeploy($event)"> |
| Allow bundle overwrite<i matTooltip="Allows released bundles in this bucket to be overwritten" class="pad-left-sm fa fa-question-circle-o help-icon"></i> |
| </mat-checkbox> |
| </div> |
| </div> |
| <div *ngIf="!nfRegistryService.currentUser.anonymous || nfRegistryService.currentUser.resourcePermissions.policies.canRead" class="pad-top-md pad-left-md pad-right-md"> |
| <div flex fxLayout="row" fxLayoutAlign="space-between center"> |
| <span class="md-card-title">Policies ({{userIdentitiesWithPolicies.length + groupIdentitiesWithPolicies.length}})</span> |
| <button color="fds-secondary" |
| [disabled]="nfRegistryService.currentUser.anonymous || !canEditBucketPolicies() || !nfRegistryService.currentUser.resourcePermissions.tenants.canRead" |
| mat-raised-button |
| (click)="addPolicy()"> |
| New Policy |
| </button> |
| </div> |
| <div id="nifi-registry-manage-bucket-list-container-column-header" fxLayout="row" |
| fxLayoutAlign="space-between center" class="td-data-table"> |
| <div class="td-data-table-column" (click)="sortBuckets(column)" |
| *ngFor="let column of bucketPoliciesColumns" |
| 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> |
| </div> |
| <div id="nifi-registry-manage-bucket-list-container"> |
| <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row" |
| [ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredGroupPermsData" |
| (click)="row.checked = !row.checked"> |
| <div class="td-data-table-cell" *ngFor="let column of bucketPoliciesColumns" |
| fxFlex="{{column.width}}"> |
| <div class="ellipsis" |
| matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}"> |
| <i *ngIf="column.name === 'identity'" class="fa fa-users push-right-sm" |
| aria-hidden="true"></i>{{column.format ? column.format(row[column.name]) : |
| row[column.name]}} |
| </div> |
| </div> |
| <div class="td-data-table-cell"> |
| <button (click)="editPolicy(row);row.checked = !row.checked;" |
| [disabled]="!canEditBucketPolicies()" |
| matTooltip="'Edit user policies of this bucket'" mat-icon-button color="accent"> |
| <i class="fa fa-pencil" aria-hidden="true"></i> |
| </button> |
| <button (click)="removePolicyFromBucket(row);row.checked = !row.checked;" |
| [disabled]="!canEditBucketPolicies()" |
| matTooltip="'Remove group policies from bucket'" mat-icon-button color="accent"> |
| <i class="fa fa-trash" aria-hidden="true"></i> |
| </button> |
| </div> |
| </div> |
| <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row" |
| [ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredUserPermsData" |
| (click)="row.checked = !row.checked"> |
| <div class="td-data-table-cell" *ngFor="let column of bucketPoliciesColumns" |
| 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"> |
| <button (click)="editPolicy(row);row.checked = !row.checked;" |
| matTooltip="'Edit user policies of this bucket'" mat-icon-button color="accent" |
| [disabled]="!canEditBucketPolicies()"> |
| <i class="fa fa-pencil" aria-hidden="true"></i> |
| </button> |
| <button (click)="removePolicyFromBucket(row);row.checked = !row.checked;" |
| matTooltip="'Remove user policies from this bucket'" mat-icon-button color="accent" |
| [disabled]="!canEditBucketPolicies()"> |
| <i class="fa fa-trash" aria-hidden="true"></i> |
| </button> |
| </div> |
| </div> |
| <div class="mat-padding" |
| *ngIf="filteredUserPermsData.length === 0 && filteredGroupPermsData.length === 0" |
| layout="row" |
| layout-align="center center"> |
| <h3>No results to display.</h3> |
| </div> |
| </div> |
| </div> |
| <div class="pad-top-md pad-left-md pad-right-md"> |
| <div class="pad-bottom-sm"> |
| <span class="md-card-title">About</span> |
| </div> |
| <div> |
| <span class="field-header">Bucket Identifier</span> |
| <div> |
| <span class="ellipsis" matTooltip="{{nfRegistryService.bucket.identifier}}">{{nfRegistryService.bucket.identifier}}</span> |
| </div> |
| </div> |
| </div> |
| </div> |
| <button id="nf-registry-workflow-bucket-permissions-side-nav-container" class="push-right-md" mat-raised-button |
| color="fds-primary" |
| (click)="closeSideNav()">Close |
| </button> |
| </div> |