<!--
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 ellipsis"><i class="fa fa-users push-right-sm" aria-hidden="true"></i>{{nfRegistryService.group.identity}}</span>
        <button mat-icon-button (click)="closeSideNav()">
            <mat-icon color="primary">close</mat-icon>
        </button>
    </div>
    <div class="sidenav-content">
        <div class="pad-bottom-md pad-left-md pad-right-md" flex fxLayoutAlign="start center">
            <mat-input-container flex>
                <input #groupnameInput matInput
                       [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || !nfRegistryService.group.configurable"
                       placeholder="Identity/Group Name"
                       value="{{nfRegistryService.group.identity}}"
                       [(ngModel)]="_groupname">
            </mat-input-container>
            <button [disabled]="nfRegistryService.group.identity === _groupname || !nfRegistryService.group.configurable"
                    (click)="updateGroupName(groupnameInput.value)"
                    class="input-button"
                    color="fds-regular"
                    mat-raised-button>
                Save
            </button>
        </div>
        <div class="pad-bottom-md pad-left-md pad-right-md" flex fxLayout="column" fxLayoutAlign="space-between start">
            <div>
            <span class="header">Special Privileges
                <i matTooltip="Additional permissions that allow a user to manage or access certain aspects of the registry."
                   class="pad-left-sm fa fa-question-circle-o help-icon"></i>
            </span>
            </div>
            <mat-checkbox [disabled]="!canEditSpecialPrivileges()"
                          [checked]="nfRegistryService.group.resourcePermissions.buckets.canRead && nfRegistryService.group.resourcePermissions.buckets.canWrite && nfRegistryService.group.resourcePermissions.buckets.canDelete"
                          (change)="toggleGroupManageBucketsPrivileges($event)">
            <span class="description">Can manage buckets<i
                    matTooltip="Allow a user to manage all buckets in the registry, as well as provide the user access to all buckets from a connected system (e.g., NiFi)."
                    class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>
            </mat-checkbox>
            <div flex fxLayout="row" fxLayoutAlign="space-around center">
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canRead"
                              (change)="toggleGroupManageBucketsPrivileges($event, 'read')">
                    <span class="description">Read</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canWrite"
                              (change)="toggleGroupManageBucketsPrivileges($event, 'write')">
                    <span class="description">Write</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canDelete"
                              (change)="toggleGroupManageBucketsPrivileges($event, 'delete')">
                    <span class="description">Delete</span>
                </mat-checkbox>
            </div>
            <mat-checkbox [disabled]="!canEditSpecialPrivileges()"
                          [checked]="nfRegistryService.group.resourcePermissions.tenants.canRead && nfRegistryService.group.resourcePermissions.tenants.canWrite && nfRegistryService.group.resourcePermissions.tenants.canDelete"
                          (change)="toggleGroupManageTenantsPrivileges($event)">
            <span class="description">Can manage users<i
                    matTooltip="Allow a user to manage all registry users and groups."
                    class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>
            </mat-checkbox>
            <div flex fxLayout="row" fxLayoutAlign="space-around center">
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canRead"
                              (change)="toggleGroupManageTenantsPrivileges($event, 'read')">
                    <span class="description">Read</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canWrite"
                              (change)="toggleGroupManageTenantsPrivileges($event, 'write')">
                    <span class="description">Write</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canDelete"
                              (change)="toggleGroupManageTenantsPrivileges($event, 'delete')">
                    <span class="description">Delete</span>
                </mat-checkbox>
            </div>
            <mat-checkbox [disabled]="!canEditSpecialPrivileges()"
                          [checked]="nfRegistryService.group.resourcePermissions.policies.canRead && nfRegistryService.group.resourcePermissions.policies.canWrite && nfRegistryService.group.resourcePermissions.policies.canDelete"
                          (change)="toggleGroupManagePoliciesPrivileges($event)">
            <span class="description">Can manage policies<i
                    matTooltip="Allow a user to grant all registry users read, write, and delete permission to a bucket."
                    class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>
            </mat-checkbox>
            <div flex fxLayout="row" fxLayoutAlign="space-around center">
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.policies.canRead"
                              (change)="toggleGroupManagePoliciesPrivileges($event, 'read')">
                    <span class="description">Read</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.policies.canWrite"
                              (change)="toggleGroupManagePoliciesPrivileges($event, 'write')">
                    <span class="description">Write</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.policies.canDelete"
                              (change)="toggleGroupManagePoliciesPrivileges($event, 'delete')">
                    <span class="description">Delete</span>
                </mat-checkbox>
            </div>
            <mat-checkbox [disabled]="!canEditSpecialPrivileges()"
                          [checked]="nfRegistryService.group.resourcePermissions.proxy.canRead && nfRegistryService.group.resourcePermissions.proxy.canWrite && nfRegistryService.group.resourcePermissions.proxy.canDelete"
                          (change)="toggleGroupManageProxyPrivileges($event)">
            <span class="description">Can proxy user requests<i
                    matTooltip="Allow a connected system (e.g., NiFi) to process requests of authorized users of that system."
                    class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>
            </mat-checkbox>
            <div flex fxLayout="row" fxLayoutAlign="space-around center">
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.proxy.canRead"
                              (change)="toggleGroupManageProxyPrivileges($event, 'read')">
                    <span class="description">Read</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.proxy.canWrite"
                              (change)="toggleGroupManageProxyPrivileges($event, 'write')">
                    <span class="description">Write</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.group.resourcePermissions.proxy.canDelete"
                              (change)="toggleGroupManageProxyPrivileges($event, 'delete')">
                    <span class="description">Delete</span>
                </mat-checkbox>
            </div>
        </div>
        <mat-button-toggle-group name="nifi-registry-manage-group-perspective" class="pad-left-md tab-toggle-group">
            <mat-button-toggle [checked]="manageGroupPerspective === 'membership'"
                               value="membership"
                               class="uppercase"
                               (change)="manageGroupPerspective = 'membership'"
                               i18n="User membership tab, group management sidenav|View the users that belong to this group.@@nf-admin-group-management-sidenav-membership-tab-title">
                Membership
            </mat-button-toggle>
        </mat-button-toggle-group>
        <div *ngIf="manageGroupPerspective === 'membership'">
            <div *ngIf="nfRegistryService.group.users" class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">
                <div flex fxLayout="row" fxLayoutAlign="space-between center">
                    <span class="md-card-title">Membership ({{nfRegistryService.group.users.length}})</span>
                    <button color="fds-secondary"
                            [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || !nfRegistryService.group.configurable"
                            mat-raised-button
                            (click)="addUsersToGroup()">
                        Add Users
                    </button>
                </div>
                <div id="nifi-registry-group-membership-list-container-column-header" fxLayout="row"
                     fxLayoutAlign="space-between center" class="td-data-table">
                    <div class="td-data-table-column" (click)="sortUsers(column)"
                         *ngFor="let column of usersColumns"
                         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>
                <div id="nifi-registry-group-membership-list-container">
                    <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"
                         [ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredUsers"
                         (click)="row.checked = !row.checked">
                        <div class="td-data-table-cell" *ngFor="let column of usersColumns"
                             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>
                                <button (click)="removeUserFromGroup(row);row.checked = !row.checked;"
                                        [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || !nfRegistryService.group.configurable"
                                        matTooltip="'Remove user from group'" mat-icon-button color="accent">
                                    <i class="fa fa-trash" aria-hidden="true"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="mat-padding" *ngIf="nfRegistryService.group.users.length === 0" layout="row"
                     layout-align="center center">
                    <h3>This group does not have any users yet.</h3>
                </div>
            </div>
        </div>
    </div>
    <button id="nf-registry-user-permissions-side-nav-container" class="push-right-md" mat-raised-button
            color="fds-primary"
            (click)="closeSideNav()">Close
    </button>
</div>
