<!--
  ~ 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 class="manage-roles base-retreat">
  <div class="sub-nav">
    <div matTooltip="Only admin can add group."
         matTooltipPosition="above"
         [matTooltipDisabled]="healthStatus?.admin"
    >
      <button mat-raised-button class="butt add-group" (click)="stepperView = !stepperView" [disabled]="!healthStatus?.admin"
              >
        <i class="material-icons">people_outline</i>Add group
      </button>
    </div>
    <div></div>
  </div>

  <mat-card *ngIf="stepperView" class="m-top-10">
    <mat-horizontal-stepper #stepper class="stepper ani">
      <mat-step [completed]='false'>
        <ng-template matStepLabel>Groups</ng-template>
        <div class="inner-step mat-reset">
          <input [validator]="groupValidation()" type="text" placeholder="Enter group name" [(ngModel)]="setupGroup"
            #setupGroupName="ngModel">
          <div class="error" *ngIf="setupGroupName.errors?.patterns && setupGroupName.dirty">Group name can only
            contain letters, numbers, hyphens and '_'.</div>
          <div class="error" *ngIf="setupGroupName.errors?.duplicate && setupGroupName.dirty">Group name already
            exists.</div>
          <div class="error" *ngIf="setupGroupName.errors?.long">Group name cannot be longer than {{maxGroupLength}} characters.</div>
        </div>
        <div class="text-center m-bott-10">
          <button mat-raised-button (click)="resetDialog()" class="butt">Cancel</button>
          <button mat-raised-button
                  matStepperNext class="butt"
                  [disabled]="!setupGroup || setupGroupName.errors?.long || setupGroupName.errors?.duplicate || setupGroupName.errors?.patterns"
          >
            Next
            <i class="material-icons arrow-icon">keyboard_arrow_right</i>
          </button>
        </div>
      </mat-step>

      <mat-step [completed]='false'>
        <ng-template matStepLabel>Users</ng-template>
        <div class="inner-step mat-reset">
          <input type="text" placeholder="Enter user login" [(ngModel)]="setupUser">
        </div>
        <div class="text-center m-bott-10">
          <button mat-raised-button matStepperPrevious class="butt"><i
              class="material-icons arrow-icon">keyboard_arrow_left</i>Back</button>
          <button mat-raised-button (click)="resetDialog()" class="butt">Cancel</button>
          <button mat-raised-button matStepperNext class="butt">Next<i
              class="material-icons arrow-icon">keyboard_arrow_right</i></button>
        </div>
      </mat-step>

      <mat-step [completed]='false'>
        <ng-template matStepLabel>Roles</ng-template>
        <div class="inner-step mat-reset roles">
          <div class="selector-wrapper">
            <multi-level-select-dropdown
              (selectionChange)="onUpdate($event)"
              name="roles"
              [items]="rolesList"
              [model]="setupRoles"
              [isAdmin]="healthStatus?.admin"
            >
            </multi-level-select-dropdown>
          </div>
        </div>
        <div class="text-center m-bott-10">
          <button mat-raised-button matStepperPrevious class="butt"><i
              class="material-icons arrow-icon">keyboard_arrow_left</i>Back</button>
          <button mat-raised-button (click)="resetDialog()" class="butt">Cancel</button>
          <button mat-raised-button (click)="manageAction('create', 'group')" class="butt butt-success"
            [disabled]="!setupGroup || setupGroupName.errors?.patterns || setupGroupName.errors?.duplicate || !setupRoles.length">Create</button>
        </div>
      </mat-step>

    </mat-horizontal-stepper>
  </mat-card>
  <mat-divider></mat-divider>

  <div *ngIf="groupsData.length" class="ani">
    <table mat-table [dataSource]="groupsData" class="projects-table mat-elevation-z6">
      <ng-container matColumnDef="name">
        <th mat-header-cell *matHeaderCellDef class="name"> Group name </th>
        <td mat-cell *matCellDef="let element" class="name">
          <div class="d-flex">
            <span
              class="ellipsis" 
              [matTooltip]="element.group"
              matTooltipPosition="above"
              [matTooltipClass]="'full-size-tooltip'">
              {{element.group}}
            </span>
          </div>
        </td>
      </ng-container>

      <ng-container matColumnDef="roles">
        <th mat-header-cell *matHeaderCellDef class="roles"> Roles </th>
        <td mat-cell *matCellDef="let element" class="roles">
          <div class="inner-step mat-reset">
              <multi-level-select-dropdown
                (selectionChange)="onUpdate($event)"
                [type]="element.group"
                [items]="rolesList"
                [model]="element.selected_roles"
                [isAdmin]="healthStatus?.admin"
              >
              </multi-level-select-dropdown>
          </div>
        </td>
      </ng-container>

      <ng-container matColumnDef="users">
        <th mat-header-cell *matHeaderCellDef class="users"> Users </th>
        <td mat-cell *matCellDef="let element" class="users-list ani">
          <mat-form-field class="chip-list">
            <input #user matInput placeholder="Enter user login" pattern="[@.-_0-9a-zA-Z]"
                   (keydown.enter)="addUser(user, element);" (keyup)="checkIfUserAdded(element, user.value)">
            <button mat-icon-button matSuffix (click)="addUser(user, element); user.value = ''" [disabled]="element.isUserAdded">
              <mat-icon matTooltip="User is already added to this group" matTooltipPosition="above" [matTooltipDisabled]="!element.isUserAdded">person_add</mat-icon>
            </button>
          </mat-form-field>
          <div class="list-selected list-container ani">
            <div class="scrolling">
              <mat-chip-list [disabled]="true">
                <mat-chip
                  *ngFor="let user of element.users"
                  [matTooltip]="user"
                  matTooltipPosition="above"
                  matTooltipClass="mat-tooltip-for-users"
                  class="ellipsis"
                >
                  {{ user }}
                  <a class="material-icons" (click)="removeUser(element.users, user)">clear</a>
                </mat-chip>
              </mat-chip-list>
            </div>
          </div>
        </td>
      </ng-container>

      <ng-container matColumnDef="actions">
        <th mat-header-cell *matHeaderCellDef class="actions"></th>
        <td mat-cell *matCellDef="let element" class="actions">
          <div class="actions-wrapper">
            <span class="action-disabled"
              matTooltip="Only admin can delete group."
              matTooltipPosition="above"
              [matTooltipDisabled]="healthStatus?.admin"
            >
              <span
                (click)="manageAction('delete', 'group', element)"
                class="reset ani"
                [ngClass]="{ 'not-allowed' : !healthStatus?.admin}"

              >
              <mat-icon >delete_forever</mat-icon>
            </span>
            </span>

            <span class="apply ani big-icon" matTooltip="Group cannot be updated without any selected role"
              matTooltipPosition="above" [matTooltipDisabled]="element.selected_roles.length > 0"
              [ngClass]="{ 'not-allowed' : !element.selected_roles.length || isGroupChanded(element)}"
              (click)="manageAction('update', 'group', element)">
              <mat-icon [ngClass]="{'big-icon': !isGroupChanded(element) && element.selected_roles.length}">done</mat-icon>
            </span>
          </div>
        </td>
      </ng-container>

      <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
      <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
    </table>
  </div>

  <inform-message [message]="noPermissionMessage" *ngIf="!healthStatus?.admin && healthStatus?.projectAdmin && !groupsData.length"></inform-message>
</div>
