| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <head> | 2 <head> |
| 3 <title>Try Job Dashboard</title> | 3 <title>Try Job Dashboard</title> |
| 4 <meta charset="utf-8"> | 4 <meta charset="utf-8"> |
| 5 <link rel="stylesheet" href="/common.css"> | 5 <link rel="stylesheet" href="/common.css"> |
| 6 <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.
11.1/themes/smoothness/jquery-ui.css"> |
| 6 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
"></script> | 7 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
"></script> |
| 8 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.m
in.js"></script> |
| 7 <script> | 9 <script> |
| 8 function createUrl(parameters) { | 10 function createUrl(parameters) { |
| 9 var params = []; | 11 var params = []; |
| 10 for (var key in parameters) { | 12 for (var key in parameters) { |
| 11 if (parameters[key] != undefined) { | 13 if (parameters[key] != undefined) { |
| 12 params.push(key + '=' + parameters[key]) | 14 params.push(key + '=' + parameters[key]) |
| 13 } | 15 } |
| 14 } | 16 } |
| 15 | 17 |
| 16 if (params.length == 0) { | 18 if (params.length == 0) { |
| 17 return 'try-job-dashboard'; | 19 return 'try-job-dashboard'; |
| 18 } else { | 20 } else { |
| 19 return 'try-job-dashboard?' + params.join('&'); | 21 return 'try-job-dashboard?' + params.join('&'); |
| 20 } | 22 } |
| 21 }; | 23 }; |
| 22 | 24 |
| 23 function requestDataBetweenDateRange(e) { | 25 function requestDataBetweenDateRange(e) { |
| 24 var parameters = {} | 26 var parameters = {} |
| 25 parameters['start_date'] = $('#start_date').val() == 'mm/dd/yyyy' ? undefi
ned : $('#start_date').val(); | 27 parameters['start_date'] = $('#start_date').val() == 'mm/dd/yyyy' ? undefi
ned : $('#start_date').val(); |
| 26 parameters['end_date'] = $('#end_date').val() == 'mm/dd/yyyy' ? undefined
: $('#end_date').val(); | 28 parameters['end_date'] = $('#end_date').val() == 'mm/dd/yyyy' ? undefined
: $('#end_date').val(); |
| 27 newUrl = createUrl(parameters); | 29 newUrl = createUrl(parameters); |
| 28 window.location.replace(newUrl); | 30 window.location.replace(newUrl); |
| 29 e.preventDefault(); | 31 e.preventDefault(); |
| 30 }; | 32 }; |
| 31 | 33 |
| 32 $(document).ready(function() { | 34 $(document).ready(function() { |
| 35 $('#buildbucket-response-dialog').dialog({ |
| 36 autoOpen: false, |
| 37 modal: true, |
| 38 width: 1200, |
| 39 }); |
| 40 $('.show-response').each(function() { |
| 41 $(this).click(function() { |
| 42 var lastBuildbucketResponseRawText = $(this).attr('data-text'); |
| 43 var lastBuildbucketResponseJson = JSON.parse(lastBuildbucketResponseRa
wText); |
| 44 var lastBuildbucketResponseFormattedString = JSON.stringify(lastBuildb
ucketResponseJson, null, 2); |
| 45 $('#buildbucket-response-dialog').html("Note: json fields have been co
nverted to dicts for display purposes." + "<pre>" + lastBuildbucketResponseForma
ttedString + "</pre>") |
| 46 $('#buildbucket-response-dialog').dialog('open'); |
| 47 }) |
| 48 }); |
| 33 $('#submit').click(requestDataBetweenDateRange); | 49 $('#submit').click(requestDataBetweenDateRange); |
| 34 }); | 50 }); |
| 35 </script> | 51 </script> |
| 36 </head> | 52 </head> |
| 37 <body> | 53 <body> |
| 38 <form> | 54 <form> |
| 39 Start Date | 55 Start Date |
| 40 <input type="date" id="start_date" value={{ start_date }}></input> | 56 <input type="date" id="start_date" value={{ start_date }}></input> |
| 41 End Date | 57 End Date |
| 42 <input type="date" id="end_date" value={{ end_date }}></input> | 58 <input type="date" id="end_date" value={{ end_date }}></input> |
| 43 <input type="submit" id="submit"></input> | 59 <input type="submit" id="submit"></input> |
| 44 </form> | 60 </form> |
| 45 <br> | 61 <br> |
| 46 <b>In progress</b> | 62 <b>In progress</b> |
| 47 <div> | 63 <div> |
| 48 {% if try_jobs_in_progress %} | 64 {% if try_jobs_in_progress %} |
| 49 <table> | 65 <table> |
| 50 <tr> | 66 <tr> |
| 51 <th>Master</th> | 67 <th>Master</th> |
| 52 <th>Builder</th> | 68 <th>Builder</th> |
| 53 <th>Build #</th> | 69 <th>Build #</th> |
| 54 <th>Try Job Type</th> | 70 <th>Try Job Type</th> |
| 55 <th>Request Time</th> | 71 <th>Request Time</th> |
| 56 <th>Pending Time</th> | 72 <th>Pending Time</th> |
| 57 <th>Elapsed Time</th> | 73 <th>Elapsed Time</th> |
| 58 <th>Status</th> | 74 <th>Status</th> |
| 59 <th>Try Job URL</th> | 75 <th>Try Job URL</th> |
| 76 <th>Last Buildbucket Response</th> |
| 60 </tr> | 77 </tr> |
| 61 <tbody> | 78 <tbody> |
| 62 {% for try_job_display_data in try_jobs_in_progress %} | 79 {% for try_job_display_data in try_jobs_in_progress %} |
| 63 <tr> | 80 <tr> |
| 64 <td>{{ try_job_display_data.master_name }}</td> | 81 <td>{{ try_job_display_data.master_name }}</td> |
| 65 <td>{{ try_job_display_data.builder_name }}</td> | 82 <td>{{ try_job_display_data.builder_name }}</td> |
| 66 <td> | 83 <td> |
| 67 {% if try_job_display_data.build_number %} | 84 {% if try_job_display_data.build_number %} |
| 68 <a href="/waterfall/build-failure?url=https://build.chromium.
org/p | 85 <a href="/waterfall/build-failure?url=https://build.chromium.
org/p |
| 69 /{{try_job_display_data.master_name}}/builders/{{try_job_display_data.builder_na
me}} | 86 /{{try_job_display_data.master_name}}/builders/{{try_job_display_data.builder_na
me}} |
| 70 /builds/{{try_job_display_data.build_number}}" target="_blank">{{try_job_display
_data.build_number}} | 87 /builds/{{try_job_display_data.build_number}}" target="_blank">{{try_job_display
_data.build_number}} |
| 71 </a> | 88 </a> |
| 72 {% endif %} | 89 {% endif %} |
| 73 </td> | 90 </td> |
| 74 <td>{{ try_job_display_data.try_job_type }}</td> | 91 <td>{{ try_job_display_data.try_job_type }}</td> |
| 75 <td>{{ try_job_display_data.request_time }}</td> | 92 <td>{{ try_job_display_data.request_time }}</td> |
| 76 <td>{{ try_job_display_data.pending_time }}</td> | 93 <td>{{ try_job_display_data.pending_time }}</td> |
| 77 <td>{{ try_job_display_data.elapsed_time }}</td> | 94 <td>{{ try_job_display_data.elapsed_time }}</td> |
| 78 <td>{{ try_job_display_data.status }}</td> | 95 <td>{{ try_job_display_data.status }}</td> |
| 79 <td> | 96 <td> |
| 80 {% if try_job_display_data.try_job_url %} | 97 {% if try_job_display_data.try_job_url %} |
| 81 <a href="{{ try_job_display_data.try_job_url }}" target="_blan
k">link</a> | 98 <a href="{{ try_job_display_data.try_job_url }}" target="_blan
k">link</a> |
| 82 {% endif %} | 99 {% endif %} |
| 83 </td> | 100 </td> |
| 101 <td> |
| 102 <button class="show-response" id="in_progress_response_{{ loop.i
ndex }}" data-text="{{ try_job_display_data.last_buildbucket_response }}">show</
button> |
| 103 </td> |
| 84 </tr> | 104 </tr> |
| 85 {% endfor %} | 105 {% endfor %} |
| 86 </tbody> | 106 </tbody> |
| 87 </table> | 107 </table> |
| 88 {% else %} | 108 {% else %} |
| 89 No try-jobs currently in progress withinin the date range requested | 109 No try-jobs currently in progress withinin the date range requested |
| 90 {% endif %} | 110 {% endif %} |
| 91 </div> | 111 </div> |
| 92 <br> | 112 <br> |
| 93 <b>Try jobs with error</b> | 113 <b>Try jobs with error</b> |
| 94 <div> | 114 <div> |
| 95 {% if try_jobs_with_error %} | 115 {% if try_jobs_with_error %} |
| 96 <table> | 116 <table> |
| 97 <tr> | 117 <tr> |
| 98 <th>Master</th> | 118 <th>Master</th> |
| 99 <th>Builder</th> | 119 <th>Builder</th> |
| 100 <th>Build #</th> | 120 <th>Build #</th> |
| 101 <th>Try Job Type</th> | 121 <th>Try Job Type</th> |
| 102 <th>Request Time</th> | 122 <th>Request Time</th> |
| 103 <th>Pending Time</th> | 123 <th>Pending Time</th> |
| 104 <th>Execution Time</th> | 124 <th>Execution Time</th> |
| 105 <th>Error Message</th> | 125 <th>Error Message</th> |
| 106 <th>Try Job URL</th> | 126 <th>Try Job URL</th> |
| 127 <th>Last Buildbucket Response</th> |
| 107 </tr> | 128 </tr> |
| 108 <tbody> | 129 <tbody> |
| 109 {% for try_job_display_data in try_jobs_with_error %} | 130 {% for try_job_display_data in try_jobs_with_error %} |
| 110 <tr> | 131 <tr> |
| 111 <td>{{ try_job_display_data.master_name }}</td> | 132 <td>{{ try_job_display_data.master_name }}</td> |
| 112 <td>{{ try_job_display_data.builder_name }}</td> | 133 <td>{{ try_job_display_data.builder_name }}</td> |
| 113 <td> | 134 <td> |
| 114 {% if try_job_display_data.build_number %} | 135 {% if try_job_display_data.build_number %} |
| 115 <a href="/waterfall/build-failure?url=https://build.chromium.
org/p | 136 <a href="/waterfall/build-failure?url=https://build.chromium.
org/p |
| 116 /{{try_job_display_data.master_name}}/builders/{{try_job_display_data.builder_na
me}} | 137 /{{try_job_display_data.master_name}}/builders/{{try_job_display_data.builder_na
me}} |
| 117 /builds/{{try_job_display_data.build_number}}" target="_blank">{{try_job_display
_data.build_number}} | 138 /builds/{{try_job_display_data.build_number}}" target="_blank">{{try_job_display
_data.build_number}} |
| 118 </a> | 139 </a> |
| 119 {% endif %} | 140 {% endif %} |
| 120 </td> | 141 </td> |
| 121 <td>{{ try_job_display_data.try_job_type }}</td> | 142 <td>{{ try_job_display_data.try_job_type }}</td> |
| 122 <td>{{ try_job_display_data.request_time }}</td> | 143 <td>{{ try_job_display_data.request_time }}</td> |
| 123 <td>{{ try_job_display_data.pending_time }}</td> | 144 <td>{{ try_job_display_data.pending_time }}</td> |
| 124 <td>{{ try_job_display_data.execution_time }}</td> | 145 <td>{{ try_job_display_data.execution_time }}</td> |
| 125 <td>{{ try_job_display_data.error }}</td> | 146 <td>{{ try_job_display_data.error }}</td> |
| 126 <td> | 147 <td> |
| 127 {% if try_job_display_data.try_job_url %} | 148 {% if try_job_display_data.try_job_url %} |
| 128 <a href="{{ try_job_display_data.try_job_url }}" target="_blan
k">link</a> | 149 <a href="{{ try_job_display_data.try_job_url }}" target="_blan
k">link</a> |
| 129 {% endif %} | 150 {% endif %} |
| 130 </td> | 151 </td> |
| 152 <td> |
| 153 <button class="show-response" id="error_response_{{ loop.index }
}" data-text="{{ try_job_display_data.last_buildbucket_response }}">show</button
> |
| 154 </td> |
| 131 </tr> | 155 </tr> |
| 132 {% endfor %} | 156 {% endfor %} |
| 133 </tbody> | 157 </tbody> |
| 134 </table> | 158 </table> |
| 135 {% else %} | 159 {% else %} |
| 136 No try-jobs were detected to have errors within the date range requested | 160 No try-jobs were detected to have errors within the date range requested |
| 137 {% endif %} | 161 {% endif %} |
| 138 </div> | 162 </div> |
| 139 <br> | 163 <br> |
| 140 <b>Completed</b> | 164 <b>Completed</b> |
| 141 <div> | 165 <div> |
| 142 {% if successfully_completed_try_jobs %} | 166 {% if successfully_completed_try_jobs %} |
| 143 <table> | 167 <table> |
| 144 <tr> | 168 <tr> |
| 145 <th>Master</th> | 169 <th>Master</th> |
| 146 <th>Builder</th> | 170 <th>Builder</th> |
| 147 <th>Build #</th> | 171 <th>Build #</th> |
| 148 <th>Try Job Type</th> | 172 <th>Try Job Type</th> |
| 149 <th>Request Time</th> | 173 <th>Request Time</th> |
| 150 <th>Pending Time</th> | 174 <th>Pending Time</th> |
| 151 <th>Execution Time</th> | 175 <th>Execution Time</th> |
| 152 <th>Culprit Found</th> | 176 <th>Culprit Found</th> |
| 153 <th>Try Job URL</th> | 177 <th>Try Job URL</th> |
| 178 <th>Last Buildbucket Response</th> |
| 154 </tr> | 179 </tr> |
| 155 <tbody> | 180 <tbody> |
| 156 {% for try_job_display_data in successfully_completed_try_jobs %} | 181 {% for try_job_display_data in successfully_completed_try_jobs %} |
| 157 <tr> | 182 <tr> |
| 158 <td>{{ try_job_display_data.master_name }}</td> | 183 <td>{{ try_job_display_data.master_name }}</td> |
| 159 <td>{{ try_job_display_data.builder_name }}</td> | 184 <td>{{ try_job_display_data.builder_name }}</td> |
| 160 <td> | 185 <td> |
| 161 {% if try_job_display_data.build_number %} | 186 {% if try_job_display_data.build_number %} |
| 162 <a href="/waterfall/build-failure?url=https://build.chromium.
org/p | 187 <a href="/waterfall/build-failure?url=https://build.chromium.
org/p |
| 163 /{{try_job_display_data.master_name}}/builders/{{try_job_display_data.builder_na
me}} | 188 /{{try_job_display_data.master_name}}/builders/{{try_job_display_data.builder_na
me}} |
| 164 /builds/{{try_job_display_data.build_number}}" target="_blank">{{try_job_display
_data.build_number}} | 189 /builds/{{try_job_display_data.build_number}}" target="_blank">{{try_job_display
_data.build_number}} |
| 165 </a> | 190 </a> |
| 166 {% endif %} | 191 {% endif %} |
| 167 </td> | 192 </td> |
| 168 <td>{{ try_job_display_data.try_job_type }}</td> | 193 <td>{{ try_job_display_data.try_job_type }}</td> |
| 169 <td>{{ try_job_display_data.request_time }}</td> | 194 <td>{{ try_job_display_data.request_time }}</td> |
| 170 <td>{{ try_job_display_data.pending_time }}</td> | 195 <td>{{ try_job_display_data.pending_time }}</td> |
| 171 <td>{{ try_job_display_data.execution_time }}</td> | 196 <td>{{ try_job_display_data.execution_time }}</td> |
| 172 <td>{{ try_job_display_data.culprit_found }}</td> | 197 <td>{{ try_job_display_data.culprit_found }}</td> |
| 173 <td> | 198 <td> |
| 174 {% if try_job_display_data.try_job_url %} | 199 {% if try_job_display_data.try_job_url %} |
| 175 <a href="{{ try_job_display_data.try_job_url }}" target="_blan
k">link</a> | 200 <a href="{{ try_job_display_data.try_job_url }}" target="_blan
k">link</a> |
| 176 {% endif %} | 201 {% endif %} |
| 177 </td> | 202 </td> |
| 203 <td> |
| 204 <button class="show-response" id="completed_response_{{ loop.ind
ex }}" data-text="{{ try_job_display_data.last_buildbucket_response }}">show</bu
tton> |
| 205 </td> |
| 178 </tr> | 206 </tr> |
| 179 {% endfor %} | 207 {% endfor %} |
| 180 </tbody> | 208 </tbody> |
| 181 </table> | 209 </table> |
| 182 {% else %} | 210 {% else %} |
| 183 No try-jobs have completed within the time range requested | 211 No try-jobs have completed within the time range requested |
| 184 {% endif %} | 212 {% endif %} |
| 185 </div> | 213 </div> |
| 214 <div id="buildbucket-response-dialog" title="Buildbucket response"></div> |
| 186 </body> | 215 </body> |
| OLD | NEW |