 06015e39b1
			
		
	
	06015e39b1
	
	
	
		
			
			+ Fix issue where the proper Shady DOM helper was not being used to add the anchors to the DOM [1]. [1]: https://www.polymer-project.org/1.0/docs/devguide/local-dom.html#dom-api Bug: Issue 3839 Change-Id: Ia2cc41d9b5eb96491dbe8380be53a4fba4c17388
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!--
 | |
| 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="gr-message.html">
 | |
| 
 | |
| <dom-module id="gr-messages-list">
 | |
|   <template>
 | |
|     <style>
 | |
|       :host {
 | |
|         display: block;
 | |
|       }
 | |
|       h3 {
 | |
|         margin-bottom: .35em;
 | |
|       }
 | |
|       h3,
 | |
|       gr-message {
 | |
|         padding: 0 var(--default-horizontal-margin);
 | |
|       }
 | |
|       .highlighted {
 | |
|         animation: 3s fadeOut;
 | |
|       }
 | |
|       @keyframes fadeOut {
 | |
|         0% { background-color: #fff9c4; }
 | |
|         100% { background-color: #fff; }
 | |
|       }
 | |
|     </style>
 | |
|     <h3>Messages</h3>
 | |
|     <template is="dom-repeat" items="[[messages]]" as="message">
 | |
|       <gr-message change-num="[[changeNum]]"
 | |
|                   message="[[message]]"
 | |
|                   comments="[[_computeCommentsForMessage(comments, message, index)]]"
 | |
|                   project-config="[[projectConfig]]"
 | |
|                   on-scroll-to="_handleScrollTo"
 | |
|                   data-message-id$="[[message.id]]"></gr-message>
 | |
|     </template>
 | |
|   </template>
 | |
|   <script>
 | |
|   (function() {
 | |
|     'use strict';
 | |
| 
 | |
|     Polymer({
 | |
|       is: 'gr-messages-list',
 | |
| 
 | |
|       properties: {
 | |
|         changeNum: Number,
 | |
|         messages: {
 | |
|           type: Array,
 | |
|           value: function() { return []; },
 | |
|         },
 | |
|         comments: Object,
 | |
|         projectConfig: Object,
 | |
|         topMargin: Number,
 | |
|       },
 | |
| 
 | |
|       scrollToMessage: function(messageID) {
 | |
|         var el = this.$$('[data-message-id="' + messageID + '"]');
 | |
|         if (!el) { return; }
 | |
| 
 | |
|         el.expanded = true;
 | |
|         var top = el.offsetTop;
 | |
|         for (var offsetParent = el.offsetParent;
 | |
|              offsetParent;
 | |
|              offsetParent = offsetParent.offsetParent) {
 | |
|           top += offsetParent.offsetTop;
 | |
|         }
 | |
|         window.scrollTo(0, top - this.topMargin);
 | |
|         this._highlightEl(el);
 | |
|       },
 | |
| 
 | |
|       _highlightEl: function(el) {
 | |
|         var highlightedEls =
 | |
|             Polymer.dom(this.root).querySelectorAll('.highlighted');
 | |
|         for (var i = 0; i < highlightedEls.length; i++) {
 | |
|           highlightedEls[i].classList.remove('highlighted');
 | |
|         }
 | |
|         function handleAnimationEnd() {
 | |
|           el.removeEventListener('animationend', handleAnimationEnd);
 | |
|           el.classList.remove('highlighted');
 | |
|         }
 | |
|         el.addEventListener('animationend', handleAnimationEnd);
 | |
|         el.classList.add('highlighted');
 | |
|       },
 | |
| 
 | |
|       _handleScrollTo: function(e) {
 | |
|         this.scrollToMessage(e.detail.message.id);
 | |
|       },
 | |
| 
 | |
|       _computeCommentsForMessage: function(comments, message, index) {
 | |
|         var comments = comments || {};
 | |
|         var messages = this.messages || [];
 | |
|         var msgComments = {};
 | |
|         var mDate = util.parseDate(message.date);
 | |
|         var nextMDate;
 | |
|         if (index < messages.length - 1) {
 | |
|           nextMDate = util.parseDate(messages[index + 1].date);
 | |
|         }
 | |
|         for (var file in comments) {
 | |
|           var fileComments = comments[file];
 | |
|           for (var i = 0; i < fileComments.length; i++) {
 | |
|             var cDate = util.parseDate(fileComments[i].updated);
 | |
|             if (cDate >= mDate) {
 | |
|               if (nextMDate && cDate >= nextMDate) {
 | |
|                 continue;
 | |
|               }
 | |
|               msgComments[file] = msgComments[file] || [];
 | |
|               msgComments[file].push(fileComments[i]);
 | |
|             }
 | |
|           }
 | |
|         }
 | |
|         return msgComments;
 | |
|       },
 | |
| 
 | |
|     });
 | |
|   })();
 | |
|   </script>
 | |
| </dom-module>
 |