<!--
Copyright (C) 2015 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="../../shared/gr-linked-text/gr-linked-text.html">

<dom-module id="gr-comment-list">
  <template>
    <style>
      :host {
        display: block;
        font-family: var(--monospace-font-family);
      }
      .file {
        border-top: 1px solid #ddd;
        font-weight: bold;
        margin: 10px 0 3px;
        padding: 10px 0 5px;
      }
      .container {
        display: flex;
        margin: 5px 0;
      }
      .lineNum {
        margin-right: .35em;
        min-width: 7em;
      }
      .message {
        flex: 1;
      }
    </style>
    <template is="dom-repeat" items="[[_computeFilesFromComments(comments)]]" as="file">
      <div class="file">
        <a href$="[[_computeFileDiffURL(file, changeNum, patchNum)]]">[[file]]</a>:
      </div>
      <template is="dom-repeat"
                items="[[_computeCommentsForFile(comments, file)]]" as="comment">
        <div class="container">
          <a class="lineNum"
             href$="[[_computeDiffLineURL(file, changeNum, comment.patch_set, comment)]]">
             <span hidden$="[[!comment.line]]">
               <span>[[_computePatchDisplayName(comment)]]</span>
               Line <span>[[comment.line]]</span>:
             </span>
             <span hidden$="[[comment.line]]">
               File comment:
             </span>
          </a>
          <gr-linked-text class="message"
              pre
              content="[[comment.message]]"
              config="[[projectConfig.commentlinks]]"></gr-linked-text>
        </div>
      </template>
    </template>
  </template>
  <script src="gr-comment-list.js"></script>
</dom-module>
