summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/templates/project.html
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/templates/project.html')
-rw-r--r--bitbake/lib/toaster/toastergui/templates/project.html62
1 files changed, 45 insertions, 17 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/project.html b/bitbake/lib/toaster/toastergui/templates/project.html
index 6a812834d3..a8f2d6ad4f 100644
--- a/bitbake/lib/toaster/toastergui/templates/project.html
+++ b/bitbake/lib/toaster/toastergui/templates/project.html
@@ -9,6 +9,7 @@ vim: expandtab tabstop=2
9 9
10{% block projectinfomain %} 10{% block projectinfomain %}
11<script src="{% static "js/angular.min.js" %}"></script> 11<script src="{% static "js/angular.min.js" %}"></script>
12<script src="{% static "js/angular-animate.min.js" %}"></script>
12<script src="{% static "js/angular-cookies.min.js" %}"></script> 13<script src="{% static "js/angular-cookies.min.js" %}"></script>
13<script src="{% static "js/ui-bootstrap-tpls-0.11.0.js" %}"></script> 14<script src="{% static "js/ui-bootstrap-tpls-0.11.0.js" %}"></script>
14 15
@@ -105,19 +106,21 @@ vim: expandtab tabstop=2
105 </form> 106 </form>
106 </div> 107 </div>
107 108
109 <a id="buildslist"></a>
108 <h2 class="air" ng-if="builds.length">Latest builds</h2> 110 <h2 class="air" ng-if="builds.length">Latest builds</h2>
109 111 <div class="animate-repeat alert" ng-repeat="b in builds track by b.id" ng-class="{'queued':'alert-info', 'deleted':'alert-info', 'in progress': 'alert-info', 'failed':'alert-error', 'completed':{'In Progress':'alert-info', 'Succeeded':'alert-success', 'Failed':'alert-error'}[b.build[0].status]}[b.status]">
110 <div class="alert" ng-repeat="b in builds" ng-class="{'queued':'alert-info', 'deleted':'alert-info', 'in progress': 'alert-info', 'failed':'alert-error', 'completed':{'In Progress':'alert-info', 'Succeeded':'alert-success', 'Failed':'alert-error'}[b.build[0].status]}[b.status]" >
111 <div class="row-fluid"> 112 <div class="row-fluid">
112 <switch ng-switch="b.status"> 113 <switch ng-switch="b.status">
114
113 <case ng-switch-when="failed"> 115 <case ng-switch-when="failed">
114 <div class="lead span3"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div> 116 <div class="lead span3"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span></div>
115 <div class="row-fluid"> 117 <div class="row-fluid">
116 <div class="air well" ng-repeat="e in b.errors"> 118 <div class="air well" ng-repeat="e in b.errors">
117 {[e.type]}: <pre>{[e.msg]}</pre> 119 Error type {[e.type]}: <pre>{[e.msg]}</pre>
118 </div> 120 </div>
119 </div> 121 </div>
120 </case> 122 </case>
123
121 <case ng-switch-when="queued"> 124 <case ng-switch-when="queued">
122 <div class="lead span5"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div> 125 <div class="lead span5"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div>
123 <div class="span4 lead" >Build queued 126 <div class="span4 lead" >Build queued
@@ -125,6 +128,7 @@ vim: expandtab tabstop=2
125 </div> 128 </div>
126 <button class="btn pull-right btn-info" ng-click="buildCancel(b.id)">Cancel</button> 129 <button class="btn pull-right btn-info" ng-click="buildCancel(b.id)">Cancel</button>
127 </case> 130 </case>
131
128 <case ng-switch-when="created"> 132 <case ng-switch-when="created">
129 <div class="lead span3"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div> 133 <div class="lead span3"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div>
130 <div class="span6" > 134 <div class="span6" >
@@ -132,35 +136,56 @@ vim: expandtab tabstop=2
132 </div> 136 </div>
133 <button class="btn pull-right btn-info" ng-click="buildCancel(b.id)">Cancel</button> 137 <button class="btn pull-right btn-info" ng-click="buildCancel(b.id)">Cancel</button>
134 </case> 138 </case>
139
135 <case ng-switch-when="deleted"> 140 <case ng-switch-when="deleted">
136 <div class="lead span3"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div> 141 <div class="lead span3"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div>
137 <div class="span6" id="{[b.id]}-deleted" > 142 <div class="span6" id="{[b.id]}-deleted" >
138 <span class="lead">Build deleted</span> 143 <span class="lead">Build deleted</span>
139 </div> 144 </div>
140 <button class="btn pull-right btn-info" ng-click="builds.splice(builds.indexOf(b), 1)">Close</button> 145 <button class="btn pull-right btn-info" ng-click="buildDelete(b.id)">Close</button>
141 </case> 146 </case>
147
148
142 <case ng-switch-when="in progress"> 149 <case ng-switch-when="in progress">
143 <div class="lead span3"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div> 150 <switch ng-switch="b.build.length">
144 <div class="span4" > 151 <case ng-switch-when="0">
145 <div class="progress" style="margin-top:5px;" data-toggle="tooltip" tooltip="{[b.build[0].completeper]}% of tasks complete"> 152 <div class="lead span5"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div>
146 <div style="width: {[b.build[0].completeper]}%;" class="bar"></div> 153 <div class="span4 lead">
154 Checking out layers
147 </div> 155 </div>
148 </div> 156 </case>
149 <div class="lead pull-right">ETA: at {[b.build[0].eta|date:"shortDate"]}</div> 157 <case ng-switch-default="">
158 <div class="lead span3"> <span ng-repeat="t in b.targets" ng-include src="'target_display'"></span> </div>
159 <div class="span4 offset1" >
160 <div class="progress" style="margin-top:5px;" data-toggle="tooltip" tooltip="{[b.build[0].completeper]}% of tasks complete">
161 <div style="width: {[b.build[0].completeper]}%;" class="bar"></div>
162 </div>
163 </div>
164 <div class="text-right lead">ETA: {[b.build[0].eta|date:"HH:mm:ss"]}</div>
165 </case>
150 </case> 166 </case>
167
168
151 <case ng-switch-when="completed"> 169 <case ng-switch-when="completed">
152 <div class="lead span3"><a href="{[b.build[0].build_page_url]}"><span ng-repeat="t in b.targets" ng-include src="'target_display'"></span></a></div> 170 <div class="lead span3"><a href="{[b.build[0].build_page_url]}"><span ng-repeat="t in b.targets" ng-include src="'target_display'"></span></a></div>
153 <div class="span2 lead"> 171 <div class="span2 lead">
154 {[b.build[0].completed_on|date:'dd/MM/yy HH:mm']} 172 <ngif ng-if="b.build[0].completed_on - todaydate > 0">
173 {[b.build[0].completed_on|date:'HH:mm']}
174 </ngif>
175 <ngif ng-if="b.build[0].completed_on - todaydate < 0">
176 {[b.build[0].completed_on|date:'dd/MM/yy HH:mm']}
177 </ngif>
155 </div> 178 </div>
156 <div class="span2"><span><a href="{[b.build[0].build_page_url]}#errors" class="lead error" ng-if="b.build[0].errors">{[b.build[0].errors]}</a></span></div> 179 <div class="span2"><span><a href="{[b.build[0].build_page_url]}#errors" class="lead error" ng-if="b.build[0].errors">{[b.build[0].errors]}</a></span></div>
157 <div class="span2"><span><a href="{[b.build[0].build_page_url]}#warnings" class="lead warning" ng-if="b.build[0].warnings">{[b.build[0].warnings]}</a></span></div> 180 <div class="span2"><span><a href="{[b.build[0].build_page_url]}#warnings" class="lead warning" ng-if="b.build[0].warnings">{[b.build[0].warnings]}</a></span></div>
158 <div> <span class="lead">Build time: {[b.build[0].build_time|timediff]}</span> 181 <div> <span class="lead">Build time: <a href="{[b.build[0].build_time_page_url]}">{[b.build[0].build_time|timediff]}</a></span>
159 <button class="btn pull-right" ng-class="{'Succeeded': 'btn-success', 'Failed': 'btn-danger'}[b.build[0].status]" 182 <button class="btn pull-right" ng-class="{'Succeeded': 'btn-success', 'Failed': 'btn-danger'}[b.build[0].status]"
160 ng-click="targetExistingBuild(b.targets)">Run again</button> 183 ng-click="targetExistingBuild(b.targets)">Run again</button>
161 184
162 </div> 185 </div>
163 </case> 186 </case>
187
188
164 <case ng-switch-default=""> 189 <case ng-switch-default="">
165 <div>FIXME!</div> 190 <div>FIXME!</div>
166 </case> 191 </case>
@@ -206,7 +231,7 @@ vim: expandtab tabstop=2
206 </form> 231 </form>
207 <p><a href="{% url 'layers' %}">View all layers</a> | <a href="{% url 'importlayer' %}">Import layer</a></p> 232 <p><a href="{% url 'layers' %}">View all layers</a> | <a href="{% url 'importlayer' %}">Import layer</a></p>
208 <ul class="unstyled configuration-list"> 233 <ul class="unstyled configuration-list">
209 <li ng-repeat="l in layers"> 234 <li ng-repeat="l in layers track by l.id" class="animate-repeat">
210 <a href="{[l.layerdetailurl]}" target="_#" class="layer-info" data-toggle="tooltip" tooltip="{[l.branch.layersource]} | {[l.branch.name]}">{[l.name]} </a> 235 <a href="{[l.layerdetailurl]}" target="_#" class="layer-info" data-toggle="tooltip" tooltip="{[l.branch.layersource]} | {[l.branch.name]}">{[l.name]} </a>
211 <i class="icon-trash" ng-click="layerDel(l.id)" tooltip="Delete"></i> 236 <i class="icon-trash" ng-click="layerDel(l.id)" tooltip="Delete"></i>
212 </li> 237 </li>
@@ -221,8 +246,8 @@ vim: expandtab tabstop=2
221 <i class="icon-question-sign get-help heading-help" title="What you build, often a recipe producing a root file system file (an image). Something like <code>core-image-minimal</code> or <code>core-image-sato</code>"></i> 246 <i class="icon-question-sign get-help heading-help" title="What you build, often a recipe producing a root file system file (an image). Something like <code>core-image-minimal</code> or <code>core-image-sato</code>"></i>
222 </h3> 247 </h3>
223 <form ng-submit="targetNamedBuild()" class="input-append"> 248 <form ng-submit="targetNamedBuild()" class="input-append">
224 <input type="text" class="input-xlarge" placeholder="Type the target(s) you want to build" autocomplete="off" data-minLength="1" ng-model="targetName" typeahead="e.name for e in getSuggestions('targets', $viewValue)|filter:$viewValue" typeahead-template-url="suggestion_details" ng-disabled="!layers.length"> 249 <input type="text" class="input-xlarge" placeholder="Type the target(s) you want to build" autocomplete="off" data-minLength="1" ng-model="targetName1" typeahead="e.name for e in getSuggestions('targets', $viewValue)|filter:$viewValue" typeahead-template-url="suggestion_details" ng-disabled="!layers.length">
225 <button type="submit" id="build-button" class="btn btn-primary" ng-disabled="!targetName.length"> 250 <button type="submit" id="build-button" class="btn btn-primary" ng-disabled="!targetName1.length">
226 Build </button> 251 Build </button>
227 {% csrf_token %} 252 {% csrf_token %}
228 </form> 253 </form>
@@ -343,13 +368,16 @@ angular.element(document).ready(function() {
343 scope.machine = {{machine|safe}}; 368 scope.machine = {{machine|safe}};
344 scope.releases = {{releases|safe}}; 369 scope.releases = {{releases|safe}};
345 370
371 var now = (new Date()).getTime();
372 scope.todaydate = now - (now % 86400000);
373
346 scope.zone1alerts = []; 374 scope.zone1alerts = [];
347 scope.zone2alerts = []; 375 scope.zone2alerts = [];
348 scope.zone3alerts = []; 376 scope.zone3alerts = [];
349 377
350 scope.mostBuiltTargets = {}; 378 scope.mostBuiltTargets = {};
351 379
352 scope.executeCommands(); 380 scope.updateDisplayWithCommands();
353 scope.validateData(); 381 scope.validateData();
354 382
355 scope.$digest(); 383 scope.$digest();