<!DOCTYPE html> <html> <head> <style> body { font-family: Verdana, sans-serif; margin: 0px; padding: 0px; } #bubbleContainer { display: inline-block; white-space: nowrap; } .status { display: block; float: left; margin: 1px; padding: 1px 2px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; border: 1px solid #AAA; background-color: white; font-size: 11px; cursor: pointer; } .none { cursor: auto; } .pass { background-color: #8FDF5F; border: 1px solid #4F8530; } .fail { background-color: #E98080; border: 1px solid #A77272; } .pending { background-color: #FFFC6C; border: 1px solid #C5C56D; } .error { background-color: #E0B0FF; border: 1px solid #ACA0B3; } .queue_position { font-size: 9px; } </style> <script> function statusDetail(patch_id) { top.location = "/patch/" + patch_id } window.addEventListener("message", function(e) { if (e.data == 'containerMetrics') { e.source.postMessage({'width': bubbleContainer.offsetWidth, 'height': bubbleContainer.offsetHeight}, e.origin); } else console.log("Unknown postMessage: " + e.data); }, false); </script> </head> <body> <div id="bubbleContainer"> {% for bubble in bubbles %} <div class="status {{ bubble.state }}"{% if bubble.status %} onclick="statusDetail({{ bubble.attachment_id }})" title="{{ bubble.status.date|timesince }} ago"{% endif %}> {{ bubble.name }} {% if bubble.queue_position %} <span class="queue_position">#{{ bubble.queue_position }}</span> {% endif %} </div> {% endfor %} </div> </body> </html>