<!--
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">

<dom-module id="gr-comment-list">
  <template>
    <style>
      :host {
        display: block;
      }
      .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;
        white-space: pre-wrap;
        word-wrap: break-word;
      }
    </style>
    <template is="dom-repeat" items="[[_files]]" 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>
          <div class="message">[[comment.message]]</div>
        </div>
      </template>
    </template>
  </template>
  <script src="gr-comment-list.js"></script>
</dom-module>
