<!--
  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="metron-slider-pane-editable pb-0 d-flex flex-column load-right-to-left custom-dialog2x">

  <div class="container-fluid mb-3">
    <div class="d-flex pb-3">
      <div class="form-title font-weight-bold">Configure Table Columns</div>
      <i class="fa fa-times ml-auto close-button" aria-hidden="true" (click)="goBack()"></i>
    </div>
    <div class="input-group">
      <input class="input flex-fill" data-qe-id="filter-input" type="text" placeholder="Filter list of available fields" #columnFilterInput >
      <div class="input-group-append">
        <button class="btn btn-secondary btn-search-clear" data-qe-id="filter-reset" (click)="clearFilter()"></button>
      </div>
    </div>
  </div>

  <div class="container-fluid pt-0 table-config d-flex flex-wrap overflow-auto">

    <div class="d-flex w-100 justify-content-center align-items-center" *ngIf="!visibleColumns.length">
        <div class="spinner-border text-info" role="status"></div>
        <div class="pt-2"><small>Loading...</small></div>
    </div>

    <table data-qe-id="table-visible" class="configure-table table" *ngIf="visibleColumns.length">
      <thead>
        <tr>
          <th class="main-column" colspan=2> Visible </th>
          <th> Short Name </th>
          <th> Type  </th>
          <th> </th>
          <th> </th>
        </tr>
      </thead>
      <tbody [dragula]="'configure-table'">
        <tr class="background-tiber out-of-dragula">
          <td>
            <button class="btn btn-secondary btn-sm" disabled>remove</button>
          </td>
          <td>
            <span> Score </span>
          </td>
          <td> </td>
          <td> <span> STRING </span></td>
          <td> - </td>
          <td> - </td>
        </tr>
        <tr attr.data-index="{{ i }}" attr.data-qe-id="row-{{ i }}" *ngFor="let column of visibleColumns; let i = index" [ngClass]="{'background-tiber': column.selected}">
          <td>
            <button attr.data-qe-id="remove-btn-{{ i }}" (click)="onColumnRemoved(column)" class="btn btn-secondary btn-sm">remove</button>
          </td>
          <td #element>
            <span attr.data-qe-id="field-label-{{ i }}" [attr.title]="column.columnMetadata.name"> {{ column.columnMetadata.name | centerEllipses }} </span>
          </td>
          <td>
            <input class="input" placeholder="rename" [(ngModel)]="column.displayName">
          </td>
          <td>
            <span class="text-uppercase"> {{ column.columnMetadata.type }} </span>
          </td>
          <td>
            <button id="up-{{ column.columnMetadata.name }}"
                    class="up border-0 p-0"
                    name="Move up"
                    type="button"
                    #moveColUpBtn
                    aria-label="Move column up in display order"
                    (mouseup)="swapUp(i, $event)"
                    (keyup.enter)="swapUp(i, $event)"
                    (keyup.space)="swapUp(i, $event)"
                    [attr.disabled]="i === 0 ? true : null"
                    [ngClass]="{'disabled': i === 0}"></button>
          </td>
          <td>
            <button id="down-{{ column.columnMetadata.name }}"
                    class="down border-0 p-0"
                    name="Move down"
                    type="button"
                    aria-label="Move column down in display order"
                    (click)="swapDown(i)"
                    [attr.disabled]="i + 1 === visibleColumns.length ? true : null"
                    [ngClass]="{'disabled': i + 1 === visibleColumns.length}"></button>
          </td>
        </tr>
      </tbody>
    </table>

    <table data-qe-id="table-available" class="table" *ngIf="availableColumns.length">
      <thead>
        <tr>
          <th class="main-column" colspan=2> Available </th>
          <th> Type  </th>
        </tr>
      </thead>
      <tbody>
        <tr attr.data-qe-id="row-{{ i }}" *ngFor="let column of filteredColumns; let i = index" [ngClass]="{'background-tiber': column.selected}">
          <td>
            <button attr.data-qe-id="add-btn-{{ i }}" (click)="onColumnAdded(column)" class="btn btn-primary btn-sm">add</button>
          </td>
          <td #element>
            <span attr.data-qe-id="field-label-{{ i }}" [attr.title]="column.columnMetadata.name"> {{ column.columnMetadata.name | centerEllipses }} </span>
          </td>
          <td>
            <span class="text-uppercase"> {{ column.columnMetadata.type }} </span>
          </td>
        </tr>
      </tbody>
    </table>
  </div>

  <div class="container-fluid custom-metron-button-bar-2x">
    <button type="submit" data-qe-id="save-table-config" class="btn btn-all_ports" (click)="save()">SAVE</button>
    <button class="btn btn-mine_shaft_2" (click)="goBack()">CANCEL</button>
  </div>
</div>

