Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!-- | 1 <!-- |
| 2 Copyright 2014 The Chromium Authors. All rights reserved. | 2 Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 Use of this source code is governed by a BSD-style license that can be | 3 Use of this source code is governed by a BSD-style license that can be |
| 4 found in the LICENSE file. | 4 found in the LICENSE file. |
| 5 --> | 5 --> |
| 6 | 6 |
| 7 <link rel="import" href="ct-commit.html"> | 7 <link rel="import" href="ct-commit.html"> |
| 8 <link rel="import" href="../bower_components/paper-button/paper-button.html"> | |
| 8 | 9 |
| 9 <polymer-element name="ct-commit-list" attributes="first last commits" noscript> | 10 <polymer-element name="ct-commit-list" attributes="first last commits" noscript> |
| 10 <template> | 11 <template> |
| 11 <style> | 12 <style> |
| 12 :host { | 13 :host { |
| 13 display: block; | 14 display: block; |
| 14 } | 15 } |
| 16 paper-button[repository] { | |
| 17 margin: .5em; | |
| 18 text-transform: lowercase; | |
| 19 } | |
| 20 .repository-info { | |
| 21 display: block; | |
| 22 } | |
| 23 commit-list { | |
| 24 display: block; | |
| 25 padding-left: 1em; | |
| 26 padding-right: 1em; | |
| 27 } | |
| 28 .toggle { | |
| 29 text-decoration: underline; | |
| 30 color: -webkit-link; | |
| 31 } | |
| 32 .toggle > core-icon { | |
| 33 color: black; | |
| 34 } | |
| 15 </style> | 35 </style> |
| 16 <template repeat="{{ repository in commits.commits | _repositories }}"> | 36 <template repeat="{{ repository in commits.commits | _repositories }}"> |
| 17 <template repeat="{{ commit in repository | _commits }}"> | 37 <template if="{{ !_repositoryEmpty(repository) }}"> |
| 18 <ct-commit data="{{ commit }}"></ct-commit> | 38 <div class="repository-info"> |
| 39 <div class="toggle" on-click="{{ _toggleRepository }}" | |
| 40 repository="{{ repository + _range(repository) }}"> | |
| 41 {{ repository }} {{ _range(repository) }} | |
| 42 <core-icon icon="arrow-drop-down"></core-icon> | |
|
ojan
2014/08/12 01:44:23
My previous advice turned out to be wrong I think.
dsinclair
2014/08/15 14:40:05
Done.
| |
| 43 </div> | |
| 44 | |
| 45 <template if="{{ repositoryVisible[repository + _range(repository)] }} "> | |
| 46 <commit-list> | |
| 47 <template repeat="{{ commit in repository | _commits }}"> | |
| 48 <ct-commit data="{{ commit }}"></ct-commit> | |
| 49 </template> | |
| 50 </commit-list> | |
| 51 </template> | |
| 52 </div> | |
| 19 </template> | 53 </template> |
| 20 </template> | 54 </template> |
| 21 </template> | 55 </template> |
| 22 <script> | 56 <script> |
| 23 Polymer({ | 57 Polymer({ |
| 24 commits: null, | 58 commits: null, |
| 25 first: null, | 59 first: null, |
| 26 last: null, | 60 last: null, |
| 61 repositoryVisible: undefined, | |
| 62 | |
| 63 created: function() { | |
| 64 this.repositoryVisible = {}; | |
| 65 }, | |
| 27 | 66 |
| 28 _repositories: function(commits) { | 67 _repositories: function(commits) { |
| 29 if (!commits) | 68 if (!commits) |
| 30 return []; | 69 return []; |
| 31 return Object.keys(commits).sort(); | 70 return Object.keys(commits).sort(); |
| 32 }, | 71 }, |
| 33 | 72 |
| 34 _commits: function(repository) { | 73 _commits: function(repository) { |
| 35 var commits = []; | 74 var commits = []; |
| 36 if (!this.first || !this.last) | 75 if (!this.first || !this.last) |
| 37 return commits; | 76 return commits; |
| 38 | 77 |
| 39 var first = Number(this.first[repository]); | 78 var first = Number(this.first[repository]); |
| 40 var last = Number(this.last[repository]); | 79 var last = Number(this.last[repository]); |
| 41 if (first == last) | 80 if (first == last) |
| 42 return commits; | 81 return commits; |
| 43 | 82 |
| 44 if (first > last) { | 83 if (first > last) { |
| 45 console.warn('Revision range is backwards, which is invalid:', first, last); | 84 console.warn('Revision range is backwards, which is invalid:', first, last); |
| 46 return commits; | 85 return commits; |
| 47 } | 86 } |
| 48 | 87 |
| 49 return this.commits.range(repository, first + 1, last); | 88 return this.commits.range(repository, first + 1, last); |
| 50 }, | 89 }, |
| 90 | |
| 91 _repositoryEmpty: function(repository) { | |
| 92 return this._commits(repository).length === 0; | |
| 93 }, | |
| 94 | |
| 95 _range: function(repository) { | |
| 96 var commits = this._commits(repository); | |
| 97 if (commits.length === 0) | |
| 98 return ""; | |
| 99 return commits.first().revision + " : " + commits.last().revision; | |
| 100 }, | |
| 101 | |
| 102 _toggleRepository: function(event, detail, sender, target) { | |
|
ojan
2014/08/12 01:44:23
I was picturing that this would work more like htt
| |
| 103 var repoName = sender.getAttribute('repository'); | |
| 104 this.repositoryVisible[repoName] = !this.repositoryVisible[repoName]; | |
| 105 } | |
| 51 }); | 106 }); |
| 52 </script> | 107 </script> |
| 53 </polymer-element> | 108 </polymer-element> |
| OLD | NEW |