<!--
@license
Copyright (C) 2016 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="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../../styles/gr-voting-styles.html">
<link rel="import" href="../../core/gr-navigation/gr-navigation.html">
<link rel="import" href="../../plugins/gr-endpoint-decorator/gr-endpoint-decorator.html">
<link rel="import" href="../../plugins/gr-endpoint-param/gr-endpoint-param.html">
<link rel="import" href="../../plugins/gr-external-style/gr-external-style.html">
<link rel="import" href="../../shared/gr-account-chip/gr-account-chip.html">
<link rel="import" href="../../shared/gr-account-link/gr-account-link.html">
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
<link rel="import" href="../../shared/gr-editable-label/gr-editable-label.html">
<link rel="import" href="../../shared/gr-icons/gr-icons.html">
<link rel="import" href="../../shared/gr-limited-text/gr-limited-text.html">
<link rel="import" href="../../shared/gr-linked-chip/gr-linked-chip.html">
<link rel="import" href="../../shared/gr-tooltip-content/gr-tooltip-content.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-change-requirements/gr-change-requirements.html">
<link rel="import" href="../gr-commit-info/gr-commit-info.html">
<link rel="import" href="../gr-reviewer-list/gr-reviewer-list.html">

<dom-module id="gr-change-metadata">
  <template>
    <style include="shared-styles">
      :host {
        display: table;
      }
      section {
        display: table-row;
      }
      section:not(:first-of-type) .title,
      section:not(:first-of-type) .value {
        padding-top: .5em;
      }
      section:not(:first-of-type) {
        margin-top: 1em;
      }
      .title,
      .value {
        display: table-cell;
      }
      .title {
        color: var(--deemphasized-text-color);
        font-weight: var(--font-weight-bold);
        max-width: 20em;
        padding-left: var(--metadata-horizontal-padding);
        padding-right: .5em;
        word-break: break-word;
      }
      .value {
        padding-right: var(--metadata-horizontal-padding);
      }
      gr-change-requirements {
        --requirements-horizontal-padding: var(--metadata-horizontal-padding);
      }
      gr-account-link {
        max-width: 20ch;
        overflow: hidden;
        text-overflow: ellipsis;
        vertical-align: middle;
        white-space: nowrap;
      }
      gr-editable-label {
        max-width: 9em;
      }
      .webLink {
        display: block;
      }
      /* CSS Mixins should be applied last. */
      section.assignee {
        @apply --change-metadata-assignee;
      }
      section.strategy {
        @apply --change-metadata-strategy;
      }
      section.topic {
        @apply --change-metadata-topic;
      }
      gr-account-chip[disabled],
      gr-linked-chip[disabled] {
        opacity: 0;
        pointer-events: none;
      }
      .hashtagChip {
        margin-bottom: .5em;
      }
      #externalStyle {
        display: block;
      }
      .parentList.merge {
        list-style-type: decimal;
        padding-left: 1em;
      }
      .parentList gr-commit-info {
        display: inline-block;
      }
      .hideDisplay,
      #parentNotCurrentMessage {
        display: none;
      }
      .icon {
        margin: -.25em 0;
      }
      .icon.help,
      .icon.notTrusted {
        color: #FFA62F;
      }
      .icon.invalid {
        color: var(--vote-text-color-disliked);
      }
      .icon.trusted {
        color: var(--vote-text-color-recommended);
      }
      .parentList.notCurrent.nonMerge #parentNotCurrentMessage {
        --arrow-color: #ffa62f;
        display: inline-block;
      }
      .separatedSection {
        border-top: 1px solid var(--border-color);
        margin-top: .5em;
        padding: .5em 0;
      }
    </style>
    <gr-external-style id="externalStyle" name="change-metadata">
      <section>
        <span class="title">Updated</span>
        <span class="value">
          <gr-date-formatter
              has-tooltip
              date-str="[[change.updated]]"></gr-date-formatter>
        </span>
      </section>
      <section>
        <span class="title">Owner</span>
        <span class="value">
          <gr-account-link account="[[change.owner]]"></gr-account-link>
          <template is="dom-if" if="[[_pushCertificateValidation]]">
            <gr-tooltip-content
                has-tooltip
                title$="[[_pushCertificateValidation.message]]">
              <iron-icon
                  class$="icon [[_pushCertificateValidation.class]]"
                  icon="[[_pushCertificateValidation.icon]]">
              </iron-icon>
            </gr-tooltip-content>
          </template>
        </span>
      </section>
      <section class$="[[_computeShowRoleClass(change, _CHANGE_ROLE.UPLOADER)]]">
        <span class="title">Uploader</span>
        <span class="value">
          <gr-account-link
              account="[[_getNonOwnerRole(change, _CHANGE_ROLE.UPLOADER)]]"
              ></gr-account-link>
        </span>
      </section>
      <section class$="[[_computeShowRoleClass(change, _CHANGE_ROLE.AUTHOR)]]">
        <span class="title">Author</span>
        <span class="value">
          <gr-account-link
              account="[[_getNonOwnerRole(change, _CHANGE_ROLE.AUTHOR)]]"
              ></gr-account-link>
        </span>
      </section>
      <section class$="[[_computeShowRoleClass(change, _CHANGE_ROLE.COMMITTER)]]">
        <span class="title">Committer</span>
        <span class="value">
          <gr-account-link
              account="[[_getNonOwnerRole(change, _CHANGE_ROLE.COMMITTER)]]"
              ></gr-account-link>
        </span>
      </section>
      <section class="assignee">
        <span class="title">Assignee</span>
        <span class="value">
          <gr-account-list
              max-count="1"
              id="assigneeValue"
              placeholder="Set assignee..."
              accounts="{{_assignee}}"
              change="[[change]]"
              readonly="[[_computeAssigneeReadOnly(_mutable, change)]]"
              allow-any-user></gr-account-list>
        </span>
      </section>
      <template is="dom-if" if="[[_showReviewersByState]]">
        <section>
          <span class="title">Reviewers</span>
          <span class="value">
            <gr-reviewer-list
                change="{{change}}"
                mutable="[[_mutable]]"
                reviewers-only
                max-reviewers-displayed="3"></gr-reviewer-list>
          </span>
        </section>
        <section>
          <span class="title">CC</span>
          <span class="value">
            <gr-reviewer-list
                change="{{change}}"
                mutable="[[_mutable]]"
                ccs-only
                max-reviewers-displayed="3"></gr-reviewer-list>
          </span>
        </section>
      </template>
      <template is="dom-if" if="[[!_showReviewersByState]]">
        <section>
          <span class="title">Reviewers</span>
          <span class="value">
            <gr-reviewer-list
                change="{{change}}"
                mutable="[[_mutable]]"></gr-reviewer-list>
          </span>
        </section>
      </template>
      <section>
        <span class="title">Repo</span>
        <span class="value">
          <a href$="[[_computeProjectURL(change.project)]]">
            <gr-limited-text limit="40" text="[[change.project]]"></gr-limited-text>
          </a>
        </span>
      </section>
      <section>
        <span class="title">Branch</span>
        <span class="value">
          <a href$="[[_computeBranchURL(change.project, change.branch)]]">
            <gr-limited-text limit="40" text="[[change.branch]]"></gr-limited-text>
          </a>
        </span>
      </section>
      <section>
        <span class="title">[[_computeParentsLabel(_currentParents)]]</span>
        <span class="value">
          <ol class$="[[_computeParentListClass(_currentParents, parentIsCurrent)]]">
            <template is="dom-repeat" items="[[_currentParents]]" as="parent">
              <li>
                <gr-commit-info
                    change="[[change]]"
                    commit-info="[[parent]]"
                    server-config="[[serverConfig]]"></gr-commit-info>
                <gr-tooltip-content
                    id="parentNotCurrentMessage"
                    has-tooltip
                    show-icon
                    title$="[[_notCurrentMessage]]"></gr-tooltip-content>
              </li>
            </template>
          </ol>
        </span>
      </section>
      <section class="topic">
        <span class="title">Topic</span>
        <span class="value">
          <template
              is="dom-if"
              if="[[_showTopicChip(change.*, _settingTopic)]]">
            <gr-linked-chip
                text="[[change.topic]]"
                limit="40"
                href="[[_computeTopicURL(change.topic)]]"
                removable="[[!_topicReadOnly]]"
                on-remove="_handleTopicRemoved"></gr-linked-chip>
          </template>
          <template
              is="dom-if"
              if="[[_showAddTopic(change.*, _settingTopic)]]">
            <gr-editable-label
                class="topicEditableLabel"
                label-text="Add a topic"
                value="[[change.topic]]"
                max-length="1024"
                placeholder="[[_computeTopicPlaceholder(_topicReadOnly)]]"
                read-only="[[_topicReadOnly]]"
                on-changed="_handleTopicChanged"></gr-editable-label>
          </template>
        </span>
      </section>
      <section class="strategy" hidden$="[[_computeHideStrategy(change)]]" hidden>
        <span class="title">Strategy</span>
        <span class="value">[[_computeStrategy(change)]]</span>
      </section>
      <template is="dom-if" if="[[serverConfig.note_db_enabled]]">
        <section class="hashtag">
          <span class="title">Hashtags</span>
          <span class="value">
            <template is="dom-repeat" items="[[change.hashtags]]">
              <gr-linked-chip
                  class="hashtagChip"
                  text="[[item]]"
                  href="[[_computeHashtagURL(item)]]"
                  removable="[[!_hashtagReadOnly]]"
                  on-remove="_handleHashtagRemoved">
              </gr-linked-chip>
            </template>
            <template is="dom-if" if="[[!_hashtagReadOnly]]">
              <gr-editable-label
                  uppercase
                  label-text="Add a hashtag"
                  value="{{_newHashtag}}"
                  placeholder="[[_computeHashtagPlaceholder(_hashtagReadOnly)]]"
                  read-only="[[_hashtagReadOnly]]"
                  on-changed="_handleHashtagChanged"></gr-editable-label>
            </template>
          </span>
        </section>
      </template>
      <div class="separatedSection">
        <gr-change-requirements
            change="{{change}}"
            account="[[account]]"
            mutable="[[_mutable]]"></gr-change-requirements>
      </div>
      <section id="webLinks" hidden$="[[!_computeWebLinks(commitInfo, serverConfig)]]">
        <span class="title">Links</span>
        <span class="value">
          <template is="dom-repeat"
              items="[[_computeWebLinks(commitInfo, serverConfig)]]" as="link">
            <a href="[[link.url]]" class="webLink" rel="noopener" target="_blank">
              [[link.name]]
            </a>
          </template>
        </span>
      </section>
      <gr-endpoint-decorator name="change-metadata-item">
        <gr-endpoint-param name="labels" value="[[labels]]"></gr-endpoint-param>
        <gr-endpoint-param name="change" value="[[change]]"></gr-endpoint-param>
        <gr-endpoint-param name="revision" value="[[revision]]"></gr-endpoint-param>
      </gr-endpoint-decorator>
    </gr-external-style>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-change-metadata.js"></script>
</dom-module>
