| <!DOCTYPE html> |
| <!-- |
| Copyright 2016 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| <!-- |
| This template contains HTML for the following things: |
| - A form for creating a new bug for an alert. |
| - A form for choosing an existing bug number for an alert. |
| - A message with a link after creating a new bug. |
| - A "bug created" message with a link after creating a new bug. |
| - Error messages related to the above. |
| --> |
| <html> |
| <head> |
| <style> |
| body { |
| color: #222; |
| font: normal 13px arial, sans-serif; |
| line-height: 1.4; |
| } |
| |
| b { |
| color: #000; |
| } |
| |
| a:visited { |
| color: #61c; |
| } |
| |
| a:link { |
| color: #15c; |
| } |
| |
| .bug-list { |
| /* Note: pop-up window size 600x480 is set in triage-dialog.html. */ |
| box-sizing: border-box; |
| max-width: 550px; |
| overflow-x: visible; |
| } |
| |
| /* Style of the bug list table should fit with the style of the |
| alerts table. See the CSS in alerts-table.html. */ |
| .bug-list td { |
| border: 1px solid #eee; |
| border-bottom: 2px solid #ccc; |
| padding-left: 7px; |
| padding-right: 7px; |
| } |
| |
| .bug-list tr:first-child td { |
| border-top: 0px; |
| } |
| |
| .bug-list tr:last-child td { |
| border-bottom: 0px; |
| } |
| |
| .bug-list td:first-child { |
| border-left: 0px; |
| } |
| |
| .bug-list td:last-child { |
| border-right: 0px; |
| } |
| |
| .bug-list .bug-author { |
| max-width: 60px; |
| overflow: hidden; |
| } |
| |
| .bug-list .bug-summary { |
| max-width: 350px; |
| } |
| |
| /* Color matches that of the color in the alerts table. */ |
| .highlighted { |
| background-color: #f6ebae; |
| border-color: #ebdb84 transparent; |
| z-index: 2; |
| } |
| |
| .bug-closed { |
| text-decoration: line-through; |
| } |
| |
| input[type=text] { |
| background-color: #fff; |
| border: 1px solid #d9d9d9; |
| border-top: 1px solid #c0c0c0; |
| -webkit-border-radius: 1px; |
| border-radius: 1px; |
| box-sizing: border-box; |
| color: #333; |
| height: 29px; |
| line-height: 27px; |
| padding-left: 8px; |
| vertical-align: top; |
| } |
| |
| input[type=checkbox], input[type=radio], .fakecheckbox, .fakeradio { |
| border: 1px solid #c6c6c6; |
| border-radius: 1px; |
| bottom: -1px; |
| box-sizing: border-box; |
| cursor: default; |
| height: 13px; |
| margin: 0; |
| margin-right: 5px; |
| position: relative; |
| width: 13px; |
| -webkit-appearance: none; |
| } |
| |
| input[type=checkbox]:checked::after, .fakecheckbox.checked::after { |
| font-size: 1.3em; |
| content: "✓"; |
| position: absolute; |
| top: -5px; |
| left: -1px; |
| } |
| |
| input[type=submit] { |
| background-color: #4d90fe; |
| background-image: -webkit-linear-gradient(top, #4d90fe, #4787ed); |
| background-image: linear-gradient(to bottom, #4d90fe, #4787ed); |
| border: 1px solid #3079ed; |
| color: #fff; |
| } |
| |
| button { |
| background-color: #f5f5f5; |
| border: 1px solid rgba(0, 0, 0, 0.1); |
| color: #444; |
| background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); |
| background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); |
| } |
| |
| button, input[type=submit] { |
| border-radius: 2px; |
| font-size: 11px; |
| font-weight: bold; |
| height: 27px; |
| line-height: 27px; |
| min-width: 54px; |
| padding: 0px 8px; |
| -webkit-user-select: none; |
| } |
| |
| popup-tooltip { |
| white-space: normal; |
| } |
| |
| </style> |
| </head> |
| <body> |
| {% if error %} |
| <div class="error">{{error}}</div><br><br> |
| <button onclick="window.close()">Close</button> |
| {% elif bug_associate_form %} |
| <form action="/associate_alerts" method="POST"> |
| <input type="hidden" name="keys" value="{{keys}}"> |
| <input type="text" name="bug_id" id="bug_id" |
| required placeholder="Bug ID"><br><br> |
| <input type="submit"> |
| </form> |
| <p>Recent bugs shown below. Click on a bug ID to copy into the form field. |
| Highlighting indicates overlapping revision range.</p> |
| <div class="bug-list"> |
| <table> |
| <thead> |
| <tr> |
| <th class="bug-link">Bug ID</th> |
| <th class="bug-status">Status</th> |
| <th class="bug-author">Author</th> |
| <th class="bug-summary">Summary</th> |
| </tr> |
| </thead> |
| <tbody> |
| {% for bug in bugs %} |
| <tr {% if bug.relevant %} class="highlighted" {% endif %}> |
| <td> |
| <a href="http://crbug.com/{{bug.id}}" |
| data-bugid="{{bug.id}}" |
| target="_blank" |
| class="bug-link bug-{{bug.state}} bug-{{bug.status}}"> |
| {{bug.id}} |
| </a> |
| </td> |
| <td class="bug-status">{{bug.status}}</td> |
| <td class="bug-author">{{bug.author.name}}</td> |
| <td class="bug-summary">{{bug.summary}}</td> |
| </tr> |
| {% endfor %} |
| </tbody> |
| </table> |
| </div> |
| <script> |
| function init() { |
| var bugLinks = document.getElementsByClassName('bug-link'); |
| for (var i = 0; i < bugLinks.length; i++) { |
| bugLinks[i].addEventListener('click', function(e) { |
| var bugId = e.target.getAttribute('data-bugid'); |
| document.getElementById('bug_id').value = bugId; |
| e.preventDefault(); |
| }, true); |
| } |
| } |
| document.addEventListener('DOMContentLoaded', init); |
| </script> |
| {% elif bug_create_form %} |
| <form action="/file_bug" method="POST"> |
| <input type="hidden" name="finish" value="true"> |
| <input type="hidden" name="keys" value="{{keys}}"> |
| <b>Summary:</b><br> |
| <input name="summary" value="{{summary}}" size=83> |
| <br><br> |
| <b>Description:</b><br> |
| <textarea rows=10 cols=60 name="description">{{description}}</textarea> |
| <br><br> |
| <b>Labels:</b><br> |
| {% for label in labels %} |
| <label> |
| <input type="checkbox" checked name="label" value="{{label}}"> |
| {{label}} |
| </label><br> |
| {% endfor %} |
| <br> |
| <b>Components:</b><br> |
| {% for component in components %} |
| <label> |
| <input type="checkbox" checked name="component" value="{{component}}"> |
| {{component}} |
| </label><br> |
| {% endfor %} |
| <b>Owner:</b><br> |
| <input type="text" name="owner" value="{{owner}}"><br><br> |
| <input type="submit"> |
| </form> |
| {% elif confirmation_required %} |
| <p>{{message}}</p> |
| <p>Do you want to continue?</p> |
| <form action="/{{handler}}" method="POST"> |
| <input type="hidden" name="confirm" value="true"> |
| {% for key, value in parameters.iteritems() %} |
| <input type="hidden" name="{{key}}" value="{{value}}"> |
| {% endfor %} |
| <button onclick="window.history.go(-1); return false;">Back</button> |
| <input type="submit" value="Confirm"> |
| </form> |
| {% else %} |
| <script> |
| function postClose() { |
| var data = { |
| 'action': 'bug_create_result', |
| 'bug_id': {{bug_id}}, |
| 'bisect_error': '{{bisect_error}}', |
| 'issue_url': '{{issue_url}}', |
| 'issue_id': '{{issue_id}}', |
| }; |
| window.opener.postMessage(JSON.stringify(data), '*'); |
| window.close(); |
| } |
| window.addEventListener('DOMContentLoaded', postClose, false); |
| </script> |
| {% endif %} |
| </body> |
| </html> |