mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 23:45:44 +07:00
[IMP] runbot: adapt to bootstrap 5.3
The bootstrap version was freezed during a previous migration to avoid loosing to much time adapting the style again to fit the previous look and feel. Anyway, the latest version of bootsrap offers more flexibility about themes, and it could be a good oportunity to modernise a little the runbot interface and answer to long lasting requests. The main part of the adaptation is to tweak colors to match the previous style, and adapt some class in xml views. Some css rules are also tweaked to keep the same looks without the need to rewrite xml views too much, this could be done in a future commit.
This commit is contained in:
parent
0eae784a1e
commit
b7eef565d8
@ -110,7 +110,7 @@
|
||||
<span t-field="pr.source_id.display_name"/>
|
||||
</a>
|
||||
<span t-if="not pr.parent_id"
|
||||
class="badge badge-danger user-select-none"
|
||||
class="badge text-bg-danger user-select-none"
|
||||
title="A detached PR behaves like a non-forward-port, it has to be approved via the mergebot, this is usually caused by the forward-port having been in conflict or updated.">
|
||||
DETACHED (<span t-out="pr.detach_reason" style="white-space: pre-wrap;"/>)
|
||||
</span>
|
||||
|
@ -1211,6 +1211,7 @@ class BuildResult(models.Model):
|
||||
|
||||
if self.global_result in ('skipped', 'killed', 'manually_killed'):
|
||||
return 'killed'
|
||||
return 'default'
|
||||
|
||||
def _github_status(self):
|
||||
"""Notify github of failed/successful builds"""
|
||||
|
10037
runbot/static/src/css/bootstrap.css
vendored
10037
runbot/static/src/css/bootstrap.css
vendored
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,84 @@
|
||||
|
||||
:root {
|
||||
--bs-success-bg-subtle: #dff0d8;
|
||||
--bs-danger-bg-subtle: #f2dede;
|
||||
--bs-warning-bg-subtle: #fff9e6;
|
||||
--bs-info-bg-subtle: #d9edf7;
|
||||
--bs-info-rgb: 23, 162, 184;
|
||||
--gray: #6c757d; /* used for batch limitation */
|
||||
}
|
||||
|
||||
|
||||
.btn-default {
|
||||
--bs-btn-color: #444;
|
||||
--bs-btn-bg: #fff;
|
||||
--bs-btn-border-color: #ccc;
|
||||
--bs-btn-hover-color: #444;
|
||||
--bs-btn-hover-bg: #ccc;
|
||||
--bs-btn-hover-border-color: #ccc;
|
||||
--bs-btn-focus-shadow-rgb: 60, 153, 110;
|
||||
--bs-btn-active-color: #444;;
|
||||
--bs-btn-active-bg: #fff;
|
||||
--bs-btn-active-border-color: #fff;
|
||||
--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
--bs-btn-disabled-color: #444;;
|
||||
--bs-btn-disabled-bg: #fff;
|
||||
--bs-btn-disabled-border-color: #ccc;;
|
||||
}
|
||||
|
||||
.btn-success {
|
||||
--bs-btn-color: #fff;
|
||||
--bs-btn-bg: #198754;
|
||||
--bs-btn-border-color: #198754;
|
||||
--bs-btn-hover-color: #fff;
|
||||
--bs-btn-hover-bg: #157347;
|
||||
--bs-btn-hover-border-color: #146c43;
|
||||
--bs-btn-focus-shadow-rgb: 60, 153, 110;
|
||||
--bs-btn-active-color: #fff;
|
||||
--bs-btn-active-bg: #146c43;
|
||||
--bs-btn-active-border-color: #13653f;
|
||||
--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
--bs-btn-disabled-color: #fff;
|
||||
--bs-btn-disabled-bg: #28a745;
|
||||
--bs-btn-disabled-border-color: #28a745;
|
||||
}
|
||||
|
||||
|
||||
.btn-info {
|
||||
--bs-btn-color: #FFF;
|
||||
--bs-btn-bg: #17a2b8;
|
||||
--bs-btn-border-color: #17a2b8;
|
||||
--bs-btn-hover-color: #FFF;
|
||||
--bs-btn-hover-bg: #31d2f2;
|
||||
--bs-btn-hover-border-color: #25cff2;
|
||||
--bs-btn-focus-shadow-rgb: 11, 172, 204;
|
||||
--bs-btn-active-color: #FFF;
|
||||
--bs-btn-active-bg: #3dd5f3;
|
||||
--bs-btn-active-border-color: #25cff2;
|
||||
--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
|
||||
--bs-btn-disabled-color: #FFF;
|
||||
--bs-btn-disabled-bg: #17a2b8;
|
||||
--bs-btn-disabled-border-color: #17a2b8;
|
||||
}
|
||||
|
||||
.text-bg-info {
|
||||
color: #FFF !important; /* black by default, changes from previous version, color forced to fit with --bs-info-rgb*/
|
||||
}
|
||||
|
||||
.table-responsive {
|
||||
display: block; /* more condensed table, to replace */
|
||||
}
|
||||
|
||||
.table {
|
||||
--bs-table-bg: transparent; /* Forced to white in bootstrap latest version, hides the color of sub builds, batch commits, ...*/
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-size: 0.875rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #212529;
|
||||
text-align: left;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
form {
|
||||
@ -64,17 +137,6 @@ body, .table {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.btn-default {
|
||||
background-color: #fff;
|
||||
color: #444;
|
||||
border-color: #ccc;
|
||||
}
|
||||
|
||||
.btn-default:hover {
|
||||
background-color: #ccc;
|
||||
color: #444;
|
||||
border-color: #ccc;
|
||||
}
|
||||
|
||||
.btn-sm, .btn-group-sm > .btn {
|
||||
padding: 0.25rem 0.5rem;
|
||||
@ -113,26 +175,6 @@ body, .table {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
:root {
|
||||
--info-light: #d9edf7;
|
||||
}
|
||||
|
||||
.bg-success-light {
|
||||
background-color: #dff0d8;
|
||||
}
|
||||
|
||||
.bg-danger-light {
|
||||
background-color: #f2dede;
|
||||
}
|
||||
|
||||
.bg-info-light {
|
||||
background-color: var(--info-light);
|
||||
}
|
||||
|
||||
.bg-warning-light {
|
||||
background-color: #fff9e6;
|
||||
}
|
||||
|
||||
.text-info {
|
||||
color: #096b72 !important;
|
||||
}
|
||||
@ -149,7 +191,7 @@ body, .table {
|
||||
background-color: #aaa;
|
||||
}
|
||||
|
||||
.badge-killed {
|
||||
.text-bg-killed {
|
||||
background-color: #aaa;
|
||||
}
|
||||
|
||||
@ -161,10 +203,6 @@ body, .table {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.badge-light {
|
||||
border: 1px solid #AAA;
|
||||
}
|
||||
|
||||
.slot_button_group {
|
||||
display: flex;
|
||||
padding: 0 1px;
|
||||
|
16964
runbot/static/src/libs/bootstrap/css/bootstrap.css
vendored
16964
runbot/static/src/libs/bootstrap/css/bootstrap.css
vendored
File diff suppressed because it is too large
Load Diff
@ -5,6 +5,7 @@
|
||||
<t t-call="runbot.layout">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<t t-set="batch_class" t-value="'bg-info-subtle' if batch.state=='preparing' else 'bg-success-subtle' if not any(log.level != 'INFO' for log in batch.log_ids) else 'bg-warning-subtle'"/>
|
||||
<table class="table table-stripped">
|
||||
<tr>
|
||||
<td>Bundle</td>
|
||||
@ -32,7 +33,7 @@
|
||||
<td>Last update</td>
|
||||
<td>
|
||||
<t t-esc="batch.last_update"/>
|
||||
<span class="badge badge-info" t-esc="s2human(batch.last_update - batch.create_date)"/>
|
||||
<span class="badge text-bg-info" t-esc="s2human(batch.last_update - batch.create_date)"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr t-if="more and batch.reference_batch_ids">
|
||||
@ -42,9 +43,9 @@
|
||||
<div><a t-attf-href="/runbot/batch/{{reference_batch.id}}"><t t-esc="reference_batch.bundle_id.version_id.name"/> (<t t-esc="reference_batch.id"/>)</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr t-att-class="'bg-info-light' if batch.state=='preparing' else 'bg-success-light' if not any(log.level != 'INFO' for log in batch.log_ids) else 'bg-warning-light'">
|
||||
<td>Commits</td>
|
||||
<td>
|
||||
<tr>
|
||||
<td t-att-class="batch_class" >Commits</td>
|
||||
<td t-att-class="batch_class" >
|
||||
<div t-foreach="batch.commit_link_ids.sorted(key=lambda lc: (lc.commit_id.repo_id.sequence, lc.commit_id.repo_id.id))" t-as="commit_link">
|
||||
<t t-set="commit" t-value="commit_link.commit_id"/>
|
||||
<span/>
|
||||
@ -55,7 +56,7 @@
|
||||
<i class="fa fa-fw fa-clock-o" t-if="commit_link.match_type == 'base_head'" title="This commit is the head of a base branch"/>
|
||||
<span class="label" t-esc="commit.dname"/>
|
||||
</a>
|
||||
<a t-att-href="'https://%s/commit/%s' % (commit_link.branch_id.remote_id.base_url, commit_link.commit_id.name)" class="badge badge-light" title="View Commit on Github"><i class="fa fa-github"/></a>
|
||||
<a t-att-href="'https://%s/commit/%s' % (commit_link.branch_id.remote_id.base_url, commit_link.commit_id.name)" class="badge text-bg-subtle" title="View Commit on Github"><i class="fa fa-github"/></a>
|
||||
<small t-if="commit_link.match_type and commit_link.match_type.startswith('base')">
|
||||
from base:
|
||||
<span t-esc="commit_link.branch_id.name"/>
|
||||
|
@ -10,8 +10,8 @@
|
||||
<h3>
|
||||
<span class="text-muted"><t t-esc="branch.remote_id.short_name"/>:</span><t t-esc="branch.name"/> <i t-if="not branch.alive" title="deleted/closed" class="fa fa-ban text-danger"/>
|
||||
<div class="btn-group" role="group">
|
||||
<a t-att-href="branch.branch_url" class="btn btn-sm text-left" title="View Branch on Github"><i class="fa fa-github"/></a>
|
||||
<a groups="runbot.group_runbot_admin" class="btn btn-sm fa fa-list text-left" t-attf-href="/web/#id={{branch.id}}&view_type=form&model=runbot.branch" target="new" title="View Branch in Backend"/>
|
||||
<a t-att-href="branch.branch_url" class="btn btn-sm text-start" title="View Branch on Github"><i class="fa fa-github"/></a>
|
||||
<a groups="runbot.group_runbot_admin" class="btn btn-sm fa fa-list text-start" t-attf-href="/web/#id={{branch.id}}&view_type=form&model=runbot.branch" target="new" title="View Branch in Backend"/>
|
||||
</div>
|
||||
</h3>
|
||||
</div>
|
||||
@ -30,7 +30,7 @@
|
||||
<small>
|
||||
<div class="btn-toolbar mb-1" role="toolbar">
|
||||
<div class="btn-group btn-group-ssm w-100" role="group">
|
||||
<a t-attf-href="/runbot/bundle/{{branch.bundle_id.id}}" t-esc="branch.bundle_id.name" class="btn btn-default text-left" title="View Bundle Details"/>
|
||||
<a t-attf-href="/runbot/bundle/{{branch.bundle_id.id}}" t-esc="branch.bundle_id.name" class="btn btn-default text-start" title="View Bundle Details"/>
|
||||
</div>
|
||||
</div>
|
||||
</small>
|
||||
|
@ -48,7 +48,7 @@
|
||||
</a>
|
||||
</li>
|
||||
</ol>
|
||||
<span class="btn-group pr-3">
|
||||
<span class="btn-group pe-3">
|
||||
<a t-att-href="prev_ko.build_url" role="button" t-attf-title="Previous ko {{prev_ko.display_name}}"
|
||||
t-attf-class="{{'' if prev_ko else 'disabled '}}btn btn-default fa fa-angle-double-left"></a>
|
||||
<a t-att-href="prev_bu.build_url" role="button" t-attf-title="Previous {{prev_bu.display_name}}"
|
||||
@ -66,7 +66,7 @@
|
||||
<t t-set="build" t-value="build"/>
|
||||
</t>
|
||||
</t>
|
||||
<div t-attf-class="bg-{{rowclass.strip()}}-light {{'col-md-6' if build.children_ids else 'col-md-12'}}">
|
||||
<div t-attf-class="bg-{{rowclass.strip()}}-subtle {{'col-md-6' if build.children_ids else 'col-md-12'}}">
|
||||
<div class="build_details">
|
||||
<!-- Batch/bundles links-->
|
||||
<t t-if="len(bundles) > 1">
|
||||
@ -103,7 +103,7 @@
|
||||
from base branch
|
||||
<br/>
|
||||
</t>
|
||||
<div t-else="" class="ml-3">
|
||||
<div t-else="" class="ms-3">
|
||||
<b>Subject:</b>
|
||||
<t t-esc="build_commit.commit_id.subject"/>
|
||||
<br/>
|
||||
@ -148,7 +148,7 @@
|
||||
<t t-foreach="build.params_id.build_ids" t-as="simbuild">
|
||||
<a t-if="simbuild.id != build.id" t-attf-href="/runbot/build/#{simbuild.id}">
|
||||
<span
|
||||
t-attf-class="badge badge-{{simbuild._get_color_class()}}"
|
||||
t-attf-class="badge text-bg-{{simbuild._get_color_class()}}"
|
||||
t-esc="simbuild.id"/>
|
||||
</a>
|
||||
</t>
|
||||
@ -196,7 +196,7 @@
|
||||
<t t-set="build" t-value="child"/>
|
||||
</t>
|
||||
</t>
|
||||
<tr t-attf-class="bg-{{rowclass.strip()}}-light{{' line-through' if child.orphan_result else ''}}">
|
||||
<tr t-attf-class="bg-{{rowclass.strip()}}-subtle{{' line-through' if child.orphan_result else ''}}">
|
||||
<td>
|
||||
<a t-attf-href="/runbot/{{'batch/%s/' % from_batch.id if from_batch else ''}}build/{{child.id}}">
|
||||
Build
|
||||
@ -223,7 +223,7 @@
|
||||
</t>
|
||||
</td>
|
||||
<td>
|
||||
<span t-attf-class="badge badge-info" t-esc="s2human(child.build_time)"/>
|
||||
<span t-attf-class="badge text-bg-info" t-esc="s2human(child.build_time)"/>
|
||||
</td>
|
||||
<td>
|
||||
<t t-call="runbot.build_button">
|
||||
@ -266,7 +266,7 @@
|
||||
<t t-set="build" t-value="subbuild"/>
|
||||
</t>
|
||||
</t>
|
||||
<td t-attf-class="bg-{{message_class.strip() or logclass}}-light">
|
||||
<td t-attf-class="bg-{{message_class.strip() or logclass}}-subtle">
|
||||
<t t-if="l.type not in ('runbot', 'link', 'markdown')">
|
||||
<t t-if="l.type == 'subbuild'">
|
||||
<a t-attf-href="/runbot/build/{{l.path}}">
|
||||
@ -332,7 +332,7 @@
|
||||
</t>
|
||||
</t>
|
||||
</td>
|
||||
<td t-attf-class="bg-{{message_class.strip() or logclass}}-light">
|
||||
<td t-attf-class="bg-{{message_class.strip() or logclass}}-subtle">
|
||||
<t t-if="l.level in ('CRITICAL', 'ERROR', 'WARNING') and not l.with_context(active_test=False).error_id">
|
||||
<small>
|
||||
<a groups="runbot.group_runbot_admin" t-attf-href="/runbot/parse_log/{{l.id}}" class="sm" title="Parse this log line to follow this error.">
|
||||
@ -353,7 +353,7 @@
|
||||
</t>
|
||||
<tr>
|
||||
<td/><td/><td/>
|
||||
<td t-attf-class="bg-{{'info' if error.active else 'success'}}-light {{size}}" colspan="2">
|
||||
<td t-attf-class="bg-{{'info' if error.active else 'success'}}-subtle {{size}}" colspan="2">
|
||||
This error is already <a href="#" t-attf-title="{{'Was detected by runbot in nightly builds.' if error.active else 'Either the error is not properly fixed or the branch does not contain the fix.'}}"><t t-esc="'known' if error.active else 'fixed'"/></a>.
|
||||
<a groups="runbot.group_user" t-attf-href="/web#id={{l.error_id.id}}&view_type=form&model=runbot.build.error&menu_id={{env['ir.model.data']._xmlid_to_res_id('runbot.runbot_menu_root')}}" title="View in Backend" target="new">
|
||||
<i t-attf-class="fa fa-{{icon}}"/>
|
||||
@ -379,7 +379,7 @@
|
||||
<t t-set="build" t-value="build"/>
|
||||
</t>
|
||||
</t>
|
||||
<tr t-attf-class="bg-{{rowclass.strip()}}-light{{' line-through' if build.orphan_result else ''}}">
|
||||
<tr t-attf-class="bg-{{rowclass.strip()}}-subtle{{' line-through' if build.orphan_result else ''}}">
|
||||
<td>
|
||||
<t t-esc="build.create_date"/>
|
||||
</td>
|
||||
|
@ -29,7 +29,7 @@
|
||||
</div>
|
||||
<div class="col">
|
||||
<t t-foreach="build_error.trigger_ids" t-as="trigger">
|
||||
<span class="badge badge-pill badge-light small"><t t-esc="trigger.name"/></span>
|
||||
<span class="badge text-bg-pill text-bg-info small"><t t-esc="trigger.name"/></span>
|
||||
</t>
|
||||
</div>
|
||||
<div class="col">
|
||||
@ -39,9 +39,9 @@
|
||||
<div class="col">
|
||||
<a t-att-href="build_error.last_seen_build_id.build_url" t-attf-title="View last affected build ({{build_error.last_seen_build_id.id}})"><i class="fa fa-external-link"/></a>
|
||||
<a groups="base.group_user" t-attf-href="/web/#id={{build_error.id}}&view_type=form&model=runbot.build.error&menu_id={{env['ir.model.data']._xmlid_to_res_id('runbot.runbot_menu_root')}}" target="new" title="View in Backend">
|
||||
<span class="badge badge-info" t-esc="build_error.build_count" t-attf-title="This error was seen {{build_error.build_count}} View in backend"/>
|
||||
<span class="badge text-bg-info" t-esc="build_error.build_count" t-attf-title="This error was seen {{build_error.build_count}} View in backend"/>
|
||||
</a>
|
||||
<span groups="!base.group_user" class="badge badge-info" t-esc="build_error.build_count" t-attf-title="This error was seen {{build_error.build_count}}"/>
|
||||
<span groups="!base.group_user" class="badge text-bg-info" t-esc="build_error.build_count" t-attf-title="This error was seen {{build_error.build_count}}"/>
|
||||
<span class="fa fa-random" t-if="build_error.random"/>
|
||||
</div>
|
||||
</div>
|
||||
@ -49,7 +49,7 @@
|
||||
|
||||
<div t-attf-id="collapse{{build_error.id}}" class="collapse" aria-labelledby="headingOne" t-attf-data-parent="#accordion_{{accordion_id}}">
|
||||
<div class="card-body">
|
||||
<pre class="pre-scrollable bg-danger-light"><t t-esc="build_error.content.strip()" /></pre>
|
||||
<pre class="pre-scrollable bg-danger-subtle"><t t-esc="build_error.content.strip()" /></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -79,8 +79,8 @@
|
||||
<t t-if="build_errors">
|
||||
<nav class="navbar navbar-expand-lg navbar-light">
|
||||
<h4 class="d-inline"> All builds errors</h4>
|
||||
<span class="ml-auto">
|
||||
<span class="dropdown mr-auto">
|
||||
<span class="ms-auto">
|
||||
<span class="dropdown me-auto">
|
||||
<a role="button" href="#" class="dropdown-toggle btn btn-secondary" data-toggle="dropdown">
|
||||
Sort By: <t t-esc="request.params.get('sort', '')"/>
|
||||
</a>
|
||||
@ -91,7 +91,7 @@
|
||||
</div>
|
||||
</span>
|
||||
</span>
|
||||
<span class="ml-auto">
|
||||
<span class="ms-auto">
|
||||
<t t-call="website.pager" />
|
||||
</span>
|
||||
</nav>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<div>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="bg-success-light">
|
||||
<div class="bg-success-subtle">
|
||||
<b>Build: </b><a t-attf-href="/runbot/build/{{build.id}}"><t t-esc="build.id"/></a><br/>
|
||||
<t t-if="build.description">
|
||||
<b>Description:</b>
|
||||
@ -25,12 +25,12 @@
|
||||
<a t-attf-href="/runbot/commit/{{build_commit.commit_id.id}}">
|
||||
<t t-esc="build_commit.commit_id.dname"/>
|
||||
</a>
|
||||
<a t-att-href="'https://%s/commit/%s' % (build_commit.branch_id.remote_id.base_url, build_commit.commit_id.name)" class="btn btn-sm text-left" title="View Commit on Github"><i class="fa fa-github"/></a>
|
||||
<a t-att-href="'https://%s/commit/%s' % (build_commit.branch_id.remote_id.base_url, build_commit.commit_id.name)" class="btn btn-sm text-start" title="View Commit on Github"><i class="fa fa-github"/></a>
|
||||
<t t-if="build_commit.match_type in ('default', 'pr_target', 'prefix') ">
|
||||
from base branch
|
||||
<br/>
|
||||
</t>
|
||||
<div t-else="" class="ml-3">
|
||||
<div t-else="" class="ms-3">
|
||||
<b>Subject:</b>
|
||||
<t t-esc="build_commit.commit_id.subject"/>
|
||||
<br/>
|
||||
@ -69,7 +69,7 @@
|
||||
<div class="container-fluid">
|
||||
<nav class="navbar navbar-light">
|
||||
<div class="container">
|
||||
<b>Bundle:</b><t t-esc="bundle.name"/><br/>
|
||||
<b>Bundle:</b><t t-esc="bundle.name"/>
|
||||
<b>Trigger:</b><t t-esc="trigger.name"/>
|
||||
<b>Stat Category:</b>
|
||||
<select id="key_category_selector" class="form-select" aria-label="Stat Category">
|
||||
|
@ -31,8 +31,8 @@
|
||||
<td>
|
||||
<t t-esc="commit.name"/>
|
||||
<div class="btn-group" role="group">
|
||||
<a t-att-href="'' if not reflogs else 'https://%s/commit/%s' % (reflogs[0].branch_id.remote_id.base_url, commit.name)" class="btn btn-sm text-left" title="View Commit on Github"><i class="fa fa-github"/></a>
|
||||
<a groups="runbot.group_runbot_admin" class="btn btn-sm fa fa-list text-left" t-attf-href="/web/#id={{commit.id}}&view_type=form&model=runbot.commit" target="new" title="View Commit in Backend"/>
|
||||
<a t-att-href="'' if not reflogs else 'https://%s/commit/%s' % (reflogs[0].branch_id.remote_id.base_url, commit.name)" class="btn btn-sm text-start" title="View Commit on Github"><i class="fa fa-github"/></a>
|
||||
<a groups="runbot.group_runbot_admin" class="btn btn-sm fa fa-list text-start" t-attf-href="/web/#id={{commit.id}}&view_type=form&model=runbot.commit" target="new" title="View Commit in Backend"/>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -12,7 +12,7 @@
|
||||
<div class="row">
|
||||
<div class='col-md-12'>
|
||||
<div>
|
||||
<span t-attf-class="badge badge-{{pending_level}}">
|
||||
<span t-attf-class="badge text-bg-{{pending_level}}">
|
||||
Pending:
|
||||
<t t-esc="pending_count"/><span title="Assigned build (reserved host)" t-if="pending_assigned_count">(<t t-esc="pending_assigned_count"/>)</span>
|
||||
</span>
|
||||
@ -26,7 +26,7 @@
|
||||
<t t-esc="bundle.name"/>
|
||||
</h4>
|
||||
<t t-foreach="bundle.last_done_batch.slot_ids" t-as="slot">
|
||||
<span t-attf-class="badge badge-{{slot.build_id._get_color_class()}}">
|
||||
<span t-attf-class="badge text-bg-{{slot.build_id._get_color_class()}}">
|
||||
<t t-esc="slot.trigger_id.name"/>
|
||||
</span>
|
||||
</t>
|
||||
@ -87,7 +87,7 @@
|
||||
<t t-if="host.nb_testing > host.nb_worker">
|
||||
<t t-set="klass">danger</t>
|
||||
</t>
|
||||
<span t-attf-class="badge badge-{{klass}}">
|
||||
<span t-attf-class="badge text-bg-{{klass}}">
|
||||
<span t-esc="host.nb_testing"/>
|
||||
/
|
||||
<span t-esc="host.nb_worker"/>
|
||||
@ -105,7 +105,7 @@
|
||||
<t t-set="klass">danger</t>
|
||||
</t>
|
||||
|
||||
<span t-attf-class="badge badge-{{klass}}">
|
||||
<span t-attf-class="badge text-bg-{{klass}}">
|
||||
<span t-esc="succes_time"/>
|
||||
</span>
|
||||
|
||||
@ -117,7 +117,7 @@
|
||||
<t t-set="klass">danger</t>
|
||||
</t>
|
||||
|
||||
<span t-attf-class="badge badge-{{klass}}">
|
||||
<span t-attf-class="badge text-bg-{{klass}}">
|
||||
<span t-esc="start_time"/>
|
||||
</span>
|
||||
|
||||
@ -129,7 +129,7 @@
|
||||
<t t-set="klass">danger</t>
|
||||
</t>
|
||||
|
||||
<span t-attf-class="badge badge-{{klass}}">
|
||||
<span t-attf-class="badge text-bg-{{klass}}">
|
||||
<span t-esc="end_time"/>
|
||||
</span>
|
||||
|
||||
@ -141,7 +141,7 @@
|
||||
<t t-if="abs(cron_time) > 60">
|
||||
<t t-set="klass">danger</t>
|
||||
</t>
|
||||
<span t-attf-class="badge badge-{{klass}}">
|
||||
<span t-attf-class="badge text-bg-{{klass}}">
|
||||
<span t-esc="cron_time"/>
|
||||
</span>
|
||||
|
||||
@ -163,12 +163,12 @@
|
||||
</td>
|
||||
<t t-set="build" t-value="slot.build_id"/>
|
||||
<td>
|
||||
<span t-attf-class="badge badge-{{slot.build_id._get_color_class()}}">
|
||||
<span t-attf-class="badge text-bg-{{slot.build_id._get_color_class()}}">
|
||||
<i t-attf-class="fa fa-{{category.icon}}"/>
|
||||
</span>
|
||||
</td>
|
||||
<td t-foreach="build.children_ids" t-as="child">
|
||||
<span t-attf-class="badge badge-{{slot.build_id._get_color_class()}}">
|
||||
<span t-attf-class="badge text-bg-{{slot.build_id._get_color_class()}}">
|
||||
<t t-esc="child.params_id.config_id.name[:4]"/>
|
||||
</span>
|
||||
</td>
|
||||
@ -246,7 +246,7 @@
|
||||
<b t-esc="bundle.name"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="badge badge-info" t-out="len(builds)"/>
|
||||
<div class="badge text-bg-info" t-out="len(builds)"/>
|
||||
</div>
|
||||
<div class="col-md-9 col-lg-10">
|
||||
<div class="table-responsive">
|
||||
@ -257,7 +257,7 @@
|
||||
<t t-set="build" t-value="build"/>
|
||||
</t>
|
||||
</t>
|
||||
<tr t-attf-class="bg-{{rowclass.strip()}}-light{{'line-through' if build.orphan_result else ''}}">
|
||||
<tr t-attf-class="bg-{{rowclass.strip()}}-subtle {{'line-through' if build.orphan_result else ''}}">
|
||||
<td> Batch: <a t-attf-href="/runbot/batch/{{build.params_id.create_batch_id.id}}"><t t-out="build.params_id.create_batch_id.id"/></a></td>
|
||||
<td><a t-attf-href="/runbot/build/{{build.id}}"><t t-out="build.parent_path"/></a></td>
|
||||
<td t-out="build.local_state"/>
|
||||
|
@ -5,19 +5,17 @@
|
||||
<t t-call='runbot.layout'>
|
||||
<t t-set="nav_form">
|
||||
<form class="form-inline my-2 my-lg-0" role="search" t-att-action="qu(search='')" method="get">
|
||||
<div class="input-group md-form form-sm form-2 pl-0">
|
||||
<div class="input-group md-form form-sm form-2 ps-0">
|
||||
<input class="form-control my-0 py-1" type="text" placeholder="Search" aria-label="Search" name="search" t-att-value="search"/>
|
||||
<div class="input-group-append">
|
||||
<a t-if="has_pr" class="btn btn-primary active input-group-text" title="All" t-att-href="qu(has_pr=None)">
|
||||
<i class="fa fa-github text-grey"/>
|
||||
</a>
|
||||
<a t-else="" class="btn input-group-text" title="Open pull requests" t-att-href="qu(has_pr=1)">
|
||||
<i class="fa fa-github text-grey"/>
|
||||
</a>
|
||||
<button type='submit' class="input-group-text">
|
||||
<i class="fa fa-search text-grey"/>
|
||||
</button>
|
||||
</div>
|
||||
<a t-if="has_pr" class="btn btn-primary active input-group-text" title="All" t-att-href="qu(has_pr=None)">
|
||||
<i class="fa fa-github text-grey"/>
|
||||
</a>
|
||||
<a t-else="" class="btn input-group-text" title="Open pull requests" t-att-href="qu(has_pr=1)">
|
||||
<i class="fa fa-github text-grey"/>
|
||||
</a>
|
||||
<button type='submit' class="input-group-text">
|
||||
<i class="fa fa-search text-grey"/>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</t>
|
||||
@ -64,11 +62,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<div t-if="bundle.host_id">
|
||||
<span class="badge badge-info" t-esc="bundle.host_id.name"></span>
|
||||
<span class="badge text-bg-info" t-esc="bundle.host_id.name"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-9 col-lg-10">
|
||||
<div class="row no-gutters">
|
||||
<div class="row gx-0">
|
||||
<div t-foreach="bundle.last_batchs" t-as="batch" t-attf-class="col-md-6 col-xl-3 {{'d-none d-xl-block' if batch_index > 1 else ''}}">
|
||||
<t t-call="runbot.batch_tile"/>
|
||||
</div>
|
||||
@ -89,14 +87,14 @@
|
||||
<t t-if="batch.state=='done' and any(slot.build_id.global_result in ('ko', 'warn') for slot in batch.slot_ids)" t-set="klass">danger</t>
|
||||
|
||||
<div t-attf-class="batch_tile if more">
|
||||
<div t-attf-class="card bg-{{klass}}-light">
|
||||
<div t-attf-class="card bg-{{klass}}-subtle">
|
||||
<a t-attf-href="/runbot/batch/#{batch.id}" title="View Batch">
|
||||
<div class="batch_header">
|
||||
<span t-attf-class="badge badge-{{'warning' if batch.has_warning else 'light'}}">
|
||||
<span t-attf-class="badge text-bg-{{'warning' if batch.has_warning else 'light'}}">
|
||||
<t t-esc="batch._get_formated_age()"/>
|
||||
<i class="fa fa-exclamation-triangle" t-if="batch.has_warning"/>
|
||||
</span>
|
||||
<span class="float-right header_hover">View batch...</span>
|
||||
<span class="float-end header_hover">View batch...</span>
|
||||
</div>
|
||||
</a>
|
||||
<t t-if="batch.state=='preparing'">
|
||||
@ -114,14 +112,14 @@
|
||||
<div t-if='more' class="batch_commits">
|
||||
<div t-foreach="batch.commit_link_ids.sorted(lambda cl: (cl.commit_id.repo_id.sequence, cl.commit_id.repo_id.id))" t-as="commit_link" class="one_line">
|
||||
|
||||
<a t-attf-href="/runbot/commit/#{commit_link.commit_id.id}" t-attf-class="badge badge-light batch_commit match_type_{{commit_link.match_type}}">
|
||||
<a t-attf-href="/runbot/commit/#{commit_link.commit_id.id}" t-attf-class="badge text-bg-light batch_commit match_type_{{commit_link.match_type}}">
|
||||
<i class="fa fa-fw fa-hashtag" t-if="commit_link.match_type == 'new'" title="This commit is a new head"/>
|
||||
<i class="fa fa-fw fa-link" t-if="commit_link.match_type == 'head'" title="This commit is an existing head from bundle branches"/>
|
||||
<i class="fa fa-fw fa-code-fork" t-if="commit_link.match_type == 'base_match'" title="This commit is matched from a base batch with matching merge_base"/>
|
||||
<i class="fa fa-fw fa-clock-o" t-if="commit_link.match_type == 'base_head'" title="This commit is the head of a base branch"/>
|
||||
<t t-esc="commit_link.commit_id.dname"/>
|
||||
</a>
|
||||
<a t-att-href="'https://%s/commit/%s' % (commit_link.branch_id.remote_id.base_url, commit_link.commit_id.name)" class="badge badge-light" title="View Commit on Github"><i class="fa fa-github"/></a>
|
||||
<a t-att-href="'https://%s/commit/%s' % (commit_link.branch_id.remote_id.base_url, commit_link.commit_id.name)" class="badge text-bg-light" title="View Commit on Github"><i class="fa fa-github"/></a>
|
||||
<span t-esc="commit_link.commit_id.subject"/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<data>
|
||||
<!-- base layout -->
|
||||
<template id="runbot.base_page">
|
||||
<html>
|
||||
<html data-bs-theme="light">
|
||||
<head>
|
||||
<title t-esc="title or 'Runbot'"/>
|
||||
<link rel="stylesheet" type="text/css" href="/runbot/static/src/libs/bootstrap/css/bootstrap.css"/>
|
||||
@ -32,7 +32,7 @@
|
||||
<xpath expr="//body" position="replace">
|
||||
<body>
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-md navbar-light bg-light">
|
||||
<nav class="navbar navbar-expand-md bg-body-tertiary">
|
||||
<a t-if="project" t-att-href="qu(search=search)">
|
||||
<b style="color:#777;">
|
||||
<t t-esc="project.name"/>
|
||||
@ -42,7 +42,7 @@
|
||||
<span class="navbar-toggler-icon"/>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="top_menu_collapse">
|
||||
<ul class="nav navbar-nav ml-auto text-right" id="top_menu">
|
||||
<ul class="nav navbar-nav ms-auto text-end" id="top_menu">
|
||||
<t t-if="projects">
|
||||
<t t-foreach="projects" t-as="l_project">
|
||||
<li class="nav-item">
|
||||
@ -166,7 +166,7 @@
|
||||
|
||||
<template id="runbot.slots_infos" name="Hosts slot nb pending/testing/slots">
|
||||
<a href="/runbot/load_info" class="slots_infos">
|
||||
<span t-attf-class="badge badge-{{pending_level}}">
|
||||
<span t-attf-class="badge text-bg-{{pending_level}}">
|
||||
Pending:
|
||||
<t t-esc="pending_count"/><span title="Assigned build (reserved host)" t-if="pending_assigned_count">(<t t-esc="pending_assigned_count"/>)</span>
|
||||
</span>
|
||||
@ -179,7 +179,7 @@
|
||||
<t t-if="int(testing)/workers > 0.75" t-set="klass">warning</t>
|
||||
<t t-if="int(testing)/workers >= 1" t-set="klass">danger</t>
|
||||
</t>
|
||||
<span t-attf-class="badge badge-{{klass}}">
|
||||
<span t-attf-class="badge text-bg-{{klass}}">
|
||||
Testing:
|
||||
<t t-esc="testing"/>
|
||||
/
|
||||
|
Loading…
Reference in New Issue
Block a user