<!--
@license
Copyright (C) 2018 The Android Open Source Project

Licensed 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.
-->

<link rel="import" href="/bower_components/polymer/polymer.html">

<link rel="import" href="../../../styles/gr-voting-styles.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../gr-account-label/gr-account-label.html">
<link rel="import" href="../gr-button/gr-button.html">
<link rel="import" href="../gr-icons/gr-icons.html">
<link rel="import" href="../gr-label/gr-label.html">
<link rel="import" href="../gr-rest-api-interface/gr-rest-api-interface.html">

<dom-module id="gr-label-info">
  <template strip-whitespace>
    <style include="gr-voting-styles"></style>
    <style include="shared-styles">
      .placeholder {
        color: var(--deemphasized-text-color);
        padding-top: var(--spacing-xs);
      }
      .hidden {
        display: none;
      }
      .voteChip {
        display: flex;
        justify-content: center;
        margin-right: var(--spacing-s);
        padding: 0;
        @apply --vote-chip-styles;
        border-width: 0;
      }
      .max {
        background-color: var(--vote-color-approved);
      }
      .min {
        background-color: var(--vote-color-rejected);
      }
      .positive {
        background-color: var(--vote-color-recommended);
      }
      .negative {
        background-color: var(--vote-color-disliked);
      }
      .hidden {
        display: none;
      }
      td {
        vertical-align: top;
      }
      tr {
        min-height: var(--line-height-normal);
      }
      gr-button {
        vertical-align: top;
        --gr-button: {
          height: var(--line-height-normal);
          width: var(--line-height-normal);
          padding: 0;
        }
      }
      gr-button[disabled] iron-icon {
        color: var(--border-color);
      }
      gr-account-chip {
        margin-right: var(--spacing-xs);
      }
      iron-icon {
        height: calc(var(--line-height-normal) - 2px);
        width: calc(var(--line-height-normal) - 2px);
      }
      .labelValueContainer:not(:first-of-type) td {
        padding-top: var(--spacing-s);
      }
    </style>
    <table>
      <p class$="placeholder [[_computeShowPlaceholder(labelInfo, change.labels.*)]]">
        No votes.
      </p>
      <template
          is="dom-repeat"
          items="[[_mapLabelInfo(labelInfo, account, change.labels.*)]]"
          as="mappedLabel">
        <tr class="labelValueContainer">
          <td>
            <gr-label
                has-tooltip
                title="[[_computeValueTooltip(labelInfo, mappedLabel.value)]]"
                class$="[[mappedLabel.className]] voteChip">
              [[mappedLabel.value]]
            </gr-label>
          </td>
          <td>
            <gr-account-chip
                account="[[mappedLabel.account]]"
                transparent-background></gr-account-chip>
          </td>
          <td>
            <gr-button
                link
                aria-label="Remove"
                on-click="_onDeleteVote"
                tooltip="Remove vote"
                data-account-id$="[[mappedLabel.account._account_id]]"
                class$="deleteBtn [[_computeDeleteClass(mappedLabel.account, mutable, change)]]">
              <iron-icon icon="gr-icons:delete"></iron-icon>
            </gr-button>
          </td>
        </tr>
      </template>
    </table>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-label-info.js"></script>
</dom-module>
