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