Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | {% load static %} |
Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 2 | {% load humanize %} |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 3 | {% load project_url_tag %} |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 4 | <script src="{% static 'js/mrbsection.js' %}"></script> |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 5 | |
| 6 | {% if mru %} |
| 7 | {% if mrb_type == 'project' %} |
| 8 | <h2> |
| 9 | Latest project builds |
| 10 | |
| 11 | {% if project.is_default %} |
| 12 | <span class="glyphicon glyphicon-question-sign get-help heading-help" data-original-title="Builds in this project cannot be started from Toaster: they are started from the command line"></span> |
| 13 | {% endif %} |
| 14 | </h2> |
| 15 | {% else %} |
| 16 | <div class="page-header"> |
| 17 | <h1>Latest builds</h1> |
| 18 | </div> |
| 19 | {% endif %} |
| 20 | |
| 21 | <div id="latest-builds"> |
| 22 | {% for build in mru %} |
| 23 | <div data-latest-build-result="{{build.id}}" class="alert build-result {% if build.outcome == build.SUCCEEDED %}alert-success{% elif build.outcome == build.FAILED %}alert-danger{% else %}alert-info{% endif %}"> |
| 24 | <!-- project title --> |
| 25 | {% if mrb_type != 'project' %} |
| 26 | <div class="row project-name"> |
| 27 | <div class="col-md-12"> |
| 28 | <small> |
| 29 | <a class="alert-link text-uppercase" href="{% project_url build.project %}"> |
| 30 | {{build.project.name}} |
| 31 | </a> |
| 32 | </small> |
| 33 | </div> |
| 34 | </div> |
| 35 | {% endif %} |
| 36 | |
| 37 | <div class="row" data-role="build-status-container"> |
| 38 | <div class="col-md-12"> |
| 39 | Loading... |
| 40 | </div> |
| 41 | </div> |
| 42 | </div> |
| 43 | {% endfor %} |
| 44 | </div> |
| 45 | {% endif %} |
| 46 | |
| 47 | <!-- build main template --> |
| 48 | <script id="build-template" type="text/x-jsrender"> |
| 49 | <div class="col-md-3"> |
| 50 | <!-- only show link for completed builds --> |
| 51 | <%if state == 'Succeeded' || state == 'Failed'%> |
| 52 | <a class="alert-link" href="<%:dashboard_url%>"> |
| 53 | <span data-toggle="tooltip" data-role="targets-text" title="Recipes: <%:targets%>"> |
| 54 | <%:targets_abbreviated%> |
| 55 | </span> |
| 56 | </a> |
| 57 | <%else targets_abbreviated !== ''%> |
| 58 | <span data-toggle="tooltip" data-role="targets-text" title="Recipes: <%:targets%>"> |
| 59 | <%:targets_abbreviated%> |
| 60 | </span> |
| 61 | <%else%> |
| 62 | Fetching recipe names... |
| 63 | <%/if%> |
| 64 | </div> |
| 65 | |
| 66 | <div data-build-state="<%:state%>"> |
Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 67 | <%if state == 'Cloning'%> |
| 68 | <%include tmpl='#cloning-repos-build-template'/%> |
| 69 | <%else state == 'Parsing'%> |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 70 | <%include tmpl='#parsing-recipes-build-template'/%> |
| 71 | <%else state == 'Queued'%> |
| 72 | <%include tmpl='#queued-build-template'/%> |
| 73 | <%else state == 'Succeeded' || state == 'Failed'%> |
| 74 | <%include tmpl='#succeeded-or-failed-build-template'/%> |
| 75 | <%else state == 'Cancelling'%> |
| 76 | <%include tmpl='#cancelling-build-template'/%> |
| 77 | <%else state == 'Starting'%> |
| 78 | <%include tmpl='#starting-template'/%> |
| 79 | <%else state == 'In Progress'%> |
| 80 | <%include tmpl='#in-progress-build-template'/%> |
| 81 | <%else state == 'Cancelled'%> |
| 82 | <%include tmpl='#cancelled-build-template'/%> |
| 83 | <%/if%> |
| 84 | </div> |
| 85 | </script> |
| 86 | |
| 87 | <!-- queued build --> |
| 88 | <script id="queued-build-template" type="text/x-jsrender"> |
| 89 | <div class="col-md-5"> |
| 90 | <span class="glyphicon glyphicon-question-sign get-help get-help-blue" |
| 91 | title="This build is waiting for the build directory to become available"> |
| 92 | </span> |
| 93 | |
| 94 | Build queued |
| 95 | </div> |
| 96 | |
| 97 | <div class="col-md-4"> |
| 98 | <!-- cancel button --> |
| 99 | <%include tmpl='#cancel-template'/%> |
| 100 | </div> |
| 101 | </script> |
| 102 | |
Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 103 | <!-- cloning repos build --> |
| 104 | <script id="cloning-repos-build-template" type="text/x-jsrender"> |
| 105 | <!-- progress bar and parse completion percentage --> |
| 106 | <div data-role="build-status" class="col-md-4 col-md-offset-1 progress-info"> |
| 107 | <!-- progress bar --> |
| 108 | <div class="progress"> |
| 109 | <div id="repos-cloned-percentage-bar-<%:id%>" |
| 110 | style="width: <%:repos_cloned_percentage%>%;" |
| 111 | class="progress-bar"> |
| 112 | </div> |
| 113 | </div> |
| 114 | </div> |
| 115 | |
| 116 | <div class="col-md-4 progress-info"> |
| 117 | <!-- parse completion percentage --> |
| 118 | <span class="glyphicon glyphicon-question-sign get-help get-help-blue" |
| 119 | title="Toaster is cloning the repos required for your build"> |
| 120 | </span> |
| 121 | |
Brad Bishop | 1a4b7ee | 2018-12-16 17:11:34 -0800 | [diff] [blame^] | 122 | Cloning <span id="repos-cloned-percentage-<%:id%>"><%:repos_cloned_percentage%></span>% complete <span id="repos-cloned-progressitem-<%:id%>">(<%:progress_item%>)</span> |
Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 123 | |
| 124 | <%include tmpl='#cancel-template'/%> |
| 125 | </div> |
| 126 | </script> |
| 127 | |
Patrick Williams | c0f7c04 | 2017-02-23 20:41:17 -0600 | [diff] [blame] | 128 | <!-- parsing recipes build --> |
| 129 | <script id="parsing-recipes-build-template" type="text/x-jsrender"> |
| 130 | <!-- progress bar and parse completion percentage --> |
| 131 | <div data-role="build-status" class="col-md-4 col-md-offset-1 progress-info"> |
| 132 | <!-- progress bar --> |
| 133 | <div class="progress"> |
| 134 | <div id="recipes-parsed-percentage-bar-<%:id%>" |
| 135 | style="width: <%:recipes_parsed_percentage%>%;" |
| 136 | class="progress-bar"> |
| 137 | </div> |
| 138 | </div> |
| 139 | </div> |
| 140 | |
| 141 | <div class="col-md-4 progress-info"> |
| 142 | <!-- parse completion percentage --> |
| 143 | <span class="glyphicon glyphicon-question-sign get-help get-help-blue" |
| 144 | title="BitBake is parsing the layers required for your build"> |
| 145 | </span> |
| 146 | |
| 147 | Parsing <span id="recipes-parsed-percentage-<%:id%>"><%:recipes_parsed_percentage%></span>% complete |
| 148 | |
| 149 | <%include tmpl='#cancel-template'/%> |
| 150 | </div> |
| 151 | </script> |
| 152 | |
| 153 | <!-- in progress build; tasks still starting --> |
| 154 | <script id="starting-template" type="text/x-jsrender"> |
| 155 | <div class="col-md-5"> |
| 156 | <span class="glyphicon glyphicon-question-sign get-help get-help-blue" |
| 157 | title="This build is waiting for tasks to start"> |
| 158 | </span> |
| 159 | |
| 160 | Tasks starting... |
| 161 | </div> |
| 162 | |
| 163 | <div class="col-md-4"> |
| 164 | <!-- cancel button --> |
| 165 | <%include tmpl='#cancel-template'/%> |
| 166 | </div> |
| 167 | </script> |
| 168 | |
| 169 | <!-- in progress build; at least one task finished --> |
| 170 | <script id="in-progress-build-template" type="text/x-jsrender"> |
| 171 | <!-- progress bar and task completion percentage --> |
| 172 | <div data-role="build-status" class="col-md-4 col-md-offset-1 progress-info"> |
| 173 | <!-- progress bar --> |
| 174 | <div class="progress" id="build-pc-done-title-<%:id%>"> |
| 175 | <div id="build-pc-done-bar-<%:id%>" |
| 176 | style="width: <%:tasks_complete_percentage%>%;" |
| 177 | class="progress-bar"> |
| 178 | </div> |
| 179 | </div> |
| 180 | </div> |
| 181 | |
| 182 | <div class="col-md-4 progress-info"> |
| 183 | <!-- task completion percentage --> |
| 184 | <span id="build-pc-done-<%:id%>"><%:tasks_complete_percentage%></span>% of |
| 185 | tasks complete |
| 186 | |
| 187 | <!-- cancel button --> |
| 188 | <%include tmpl='#cancel-template'/%> |
| 189 | </div> |
| 190 | </script> |
| 191 | |
| 192 | <!-- cancelling build --> |
| 193 | <script id="cancelling-build-template" type="text/x-jsrender"> |
| 194 | <div class="col-md-9"> |
| 195 | Cancelling the build ... |
| 196 | </div> |
| 197 | </script> |
| 198 | |
| 199 | <!-- succeeded or failed build --> |
| 200 | <script id="succeeded-or-failed-build-template" type="text/x-jsrender"> |
| 201 | <!-- completed_on --> |
| 202 | <div class="col-md-2"> |
| 203 | <%:completed_on%> |
| 204 | </div> |
| 205 | |
| 206 | <!-- errors --> |
| 207 | <div class="col-md-2"> |
| 208 | <%if errors%> |
| 209 | <span class="glyphicon glyphicon-minus-sign"></span> |
| 210 | <a href="<%:dashboard_errors_url%>" class="alert-link"> |
| 211 | <%:errors%> error<%:errors_pluralise%> |
| 212 | </a> |
| 213 | <%/if%> |
| 214 | </div> |
| 215 | |
| 216 | <!-- warnings --> |
| 217 | <div class="col-md-2"> |
| 218 | <%if warnings%> |
| 219 | <span class="glyphicon glyphicon-warning-sign build-warnings"></span> |
| 220 | <a href="<%:dashboard_warnings_url%>" class="alert-link build-warnings"> |
| 221 | <%:warnings%> warning<%:warnings_pluralise%> |
| 222 | </a> |
| 223 | <%/if%> |
| 224 | </div> |
| 225 | |
| 226 | <!-- build time --> |
| 227 | <div class="col-md-3"> |
| 228 | Build time: |
| 229 | |
| 230 | <span data-role="data-recent-build-buildtime-field"> |
| 231 | <%if state == 'Succeeded'%> |
| 232 | <a class="alert-link" href="<%:buildtime_url%>"><%:buildtime%></a> |
| 233 | <%else%> |
| 234 | <%:buildtime%> |
| 235 | <%/if%> |
| 236 | </span> |
| 237 | |
| 238 | <!-- rebuild button --> |
| 239 | <%include tmpl='#rebuild-template'/%> |
| 240 | </div> |
| 241 | </script> |
| 242 | |
| 243 | <!-- cancelled build --> |
| 244 | <script id="cancelled-build-template" type="text/x-jsrender"> |
| 245 | <!-- build cancelled message --> |
| 246 | <div class="col-md-6"> |
| 247 | Build cancelled |
| 248 | </div> |
| 249 | |
| 250 | <!-- rebuild button --> |
| 251 | <div class="col-md-3"> |
| 252 | <%include tmpl='#rebuild-template'/%> |
| 253 | </div> |
| 254 | </script> |
| 255 | |
| 256 | <!-- rebuild button or no rebuild icon --> |
| 257 | <script id="rebuild-template" type="text/x-jsrender"> |
| 258 | <%if is_default_project_build%> |
| 259 | <!-- no rebuild info icon --> |
| 260 | <span class="pull-right glyphicon glyphicon-question-sign get-help <%if state == 'Succeeded'%>get-help-green<%else state == 'Failed'%>get-help-red<%else%>get-help-blue<%/if%>" |
| 261 | title="Builds in this project cannot be started from Toaster: they are started from the command line"> |
| 262 | </span> |
| 263 | <%else%> |
| 264 | <!-- rebuild button --> |
| 265 | <span class="rebuild-btn alert-link <%if state == 'Success'%>success<%else state == 'Failed'%>danger<%else%>info<%/if%> pull-right" |
| 266 | data-request-url="<%:rebuild_url%>" data-target='<%:build_targets_json%>'> |
| 267 | <span class="glyphicon glyphicon-repeat"></span> |
| 268 | Rebuild |
| 269 | </span> |
| 270 | <%/if%> |
| 271 | </script> |
| 272 | |
| 273 | <!-- cancel button or no cancel icon --> |
| 274 | <script id="cancel-template" type="text/x-jsrender"> |
| 275 | <%if is_default_project_build%> |
| 276 | <!-- no cancel icon --> |
| 277 | <span class="glyphicon glyphicon-question-sign get-help get-help-blue pull-right" title="Builds in this project cannot be cancelled from Toaster: they can only be cancelled from the command line"></span> |
| 278 | <%else%> |
| 279 | <!-- cancel button --> |
| 280 | <span class="cancel-build-btn pull-right alert-link" |
| 281 | data-buildrequest-id="<%:buildrequest_id%>" data-request-url="<%:cancel_url%>"> |
| 282 | <span class="glyphicon glyphicon-remove-circle"></span> |
| 283 | Cancel |
| 284 | </span> |
| 285 | <%/if%> |
| 286 | </script> |
| 287 | |
Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 288 | <script> |
| 289 | $(document).ready(function () { |
| 290 | var ctx = { |
| 291 | mrbType : "{{mrb_type}}", |
| 292 | } |
| 293 | |
| 294 | try { |
| 295 | mrbSectionInit(ctx); |
| 296 | } catch (e) { |
| 297 | document.write("Sorry, An error has occurred loading this page"); |
| 298 | console.warn(e); |
| 299 | } |
| 300 | }); |
| 301 | </script> |