| OLD | NEW |
| 1 <!-- Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 <!-- Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| 2 Use of this source code is governed by a BSD-style license that can be | 2 Use of this source code is governed by a BSD-style license that can be |
| 3 found in the LICENSE file. --> | 3 found in the LICENSE file. --> |
| 4 | 4 |
| 5 <link rel="import" href="cr-patchset-title-dialog.html"> | 5 <link rel="import" href="cr-patchset-edit-dialog.html"> |
| 6 | 6 |
| 7 <polymer-element name="cr-patchset-header" attributes="patchset"> | 7 <polymer-element name="cr-patchset-header" attributes="patchset"> |
| 8 <template> | 8 <template> |
| 9 <style> | 9 <style> |
| 10 :host { | 10 :host { |
| 11 display: block; | 11 display: block; |
| 12 background: #F6F6F6; | 12 background: #F6F6F6; |
| 13 border-bottom: 1px solid #ebebeb; | 13 border-bottom: 1px solid #ebebeb; |
| 14 display: flex; | 14 display: flex; |
| 15 padding: 0.5em 16px; | 15 padding: 0.5em 16px; |
| 16 position: relative; | 16 position: relative; |
| 17 } | 17 } |
| 18 | 18 |
| 19 .patchset-title { | 19 .patchset-title { |
| 20 display: flex; | 20 display: flex; |
| 21 font-weight: bold; | 21 font-weight: bold; |
| 22 flex: 1; | 22 flex: 1; |
| 23 } | 23 } |
| 24 | 24 |
| 25 .patchset-actions, | 25 .patchset-actions, |
| 26 .patchset-comments, | 26 .patchset-comments, |
| 27 .patchset-date { | 27 .patchset-date { |
| 28 margin-left: 8px; | 28 margin-left: 8px; |
| 29 } | 29 } |
| 30 </style> | 30 </style> |
| 31 <div class="patchset-title"> | 31 <div class="patchset-title"> |
| 32 Patch {{ patchset.sequence }}<template if="{{ patchset.title }}">: {
{ patchset.title }}</template> | 32 Patch {{ patchset.sequence }}<template if="{{ patchset.title }}">: {
{ patchset.title }}</template> |
| 33 </div> | 33 </div> |
| 34 <div class="patchset-actions"> | |
| 35 <template if="{{ userIsOwner }}"> | |
| 36 <cr-action on-tap="{{ showEditTitleDialog }}">Edit</cr-action> | |
| 37 </template> | |
| 38 </div> | |
| 39 <div class="patchset-comments"> | 34 <div class="patchset-comments"> |
| 40 {{ patchset.messageCount - patchset.draftCount | pluralize("comment"
) }} | 35 {{ patchset.messageCount - patchset.draftCount | pluralize("comment"
) }} |
| 41 <template if="{{ patchset.draftCount }}"> | 36 <template if="{{ patchset.draftCount }}"> |
| 42 <template if="{{ patchset.messageCount - patchset.draftCount }}"
>,</template> | 37 <template if="{{ patchset.messageCount - patchset.draftCount }}"
>,</template> |
| 43 {{ patchset.draftCount | pluralize("draft") }} | 38 {{ patchset.draftCount | pluralize("draft") }} |
| 44 </template> | 39 </template> |
| 45 </div> | 40 </div> |
| 46 <div class="patchset-date">{{ patchset.created | formatDate }}</div> | 41 <div class="patchset-date">{{ patchset.created | formatDate }}</div> |
| 42 <div class="patchset-actions"> |
| 43 <template if="{{ userIsOwner }}"> |
| 44 <cr-action on-tap="{{ showEditDialog }}">Edit</cr-action> |
| 45 </template> |
| 46 </div> |
| 47 </template> | 47 </template> |
| 48 <script> | 48 <script> |
| 49 Polymer("cr-patchset-header", { | 49 Polymer("cr-patchset-header", { |
| 50 patchset: null, | 50 patchset: null, |
| 51 userIsOwner: false, | 51 userIsOwner: false, |
| 52 domReady: function() { | 52 domReady: function() { |
| 53 this.userIsOwner = this.patchset.issue.owner.isCurrentUser(); | 53 this.userIsOwner = this.patchset.issue.owner.isCurrentUser(); |
| 54 }, | 54 }, |
| 55 pluralize: function(count, text) { | 55 pluralize: function(count, text) { |
| 56 if (!count) | 56 if (!count) |
| 57 return ""; | 57 return ""; |
| 58 if (count == 1) | 58 if (count == 1) |
| 59 return count + " " + text; | 59 return count + " " + text; |
| 60 return count + " " + text.pluralize(); | 60 return count + " " + text.pluralize(); |
| 61 }, | 61 }, |
| 62 formatDate: function(date) { | 62 formatDate: function(date) { |
| 63 if (!date) | 63 if (!date) |
| 64 return ""; | 64 return ""; |
| 65 return date.relative(); | 65 return date.relative(); |
| 66 }, | 66 }, |
| 67 showEditTitleDialog: function(event) { | 67 showEditDialog: function(event) { |
| 68 // Don't collapse the patchset. | 68 // Don't collapse the patchset. |
| 69 event.stopPropagation(); | 69 event.stopPropagation(); |
| 70 var dialog = document.createElement("cr-patchset-title-dialog"); | 70 var dialog = document.createElement("cr-patchset-edit-dialog"); |
| 71 dialog.patchset = this.patchset; | 71 dialog.patchset = this.patchset; |
| 72 dialog.addEventListener("close", function() { | 72 dialog.addEventListener("close", function() { |
| 73 dialog.remove(); | 73 dialog.remove(); |
| 74 }); | 74 }); |
| 75 document.body.appendChild(dialog); | 75 // TODO(esprehn): This is a hack, we need to be a child of the |
| 76 // issue to dispatch a "refresh-issue" event. Instead we should |
| 77 // stop using that event and use a real data model API that |
| 78 // components interact with like <cr-datasource>. |
| 79 var dialogs = document.querySelector("html /deep/ cr-issue::shad
ow #dialogs"); |
| 80 dialogs.appendChild(dialog); |
| 76 dialog.showModal(); | 81 dialog.showModal(); |
| 77 }, | 82 }, |
| 78 }); | 83 }); |
| 79 </script> | 84 </script> |
| 80 </polymer-element> | 85 </polymer-element> |
| OLD | NEW |