2017-03-08 14:24:58 +01:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
|
|
<meta charset="utf-8">
|
|
|
|
<title>Bootstrap Skin: Eden</title>
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
|
<link rel="stylesheet" href="css/bootstrap.css" media="screen">
|
|
|
|
<link rel="stylesheet" href="skins/eden.css" media="screen">
|
|
|
|
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
|
|
<link href="css/animate.css" rel="stylesheet">
|
|
|
|
|
|
|
|
<style>
|
|
|
|
.navbar-holder-dark{
|
|
|
|
padding: 20px 20px 200px 20px;
|
|
|
|
background: #333333;
|
|
|
|
}
|
|
|
|
.container {
|
2017-03-08 15:35:17 +01:00
|
|
|
width:1200px;
|
|
|
|
}
|
|
|
|
.pr-title {
|
|
|
|
white-space: nowrap;
|
|
|
|
overflow: hidden;
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
max-width: 350px;
|
2017-03-08 14:24:58 +01:00
|
|
|
}
|
|
|
|
</style>
|
|
|
|
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="container">
|
|
|
|
|
|
|
|
<div class="page-header" id="banner">
|
|
|
|
<div class="row">
|
|
|
|
<h1>Yunohost Pull Requests Dashboard</h1>
|
|
|
|
</div>
|
|
|
|
</div>
|
2017-03-09 01:57:10 +01:00
|
|
|
|
2017-03-08 14:24:58 +01:00
|
|
|
<h3>What should you review ?</h3>
|
|
|
|
|
|
|
|
<div class="row">
|
|
|
|
|
|
|
|
<div class="col-md-offset-3 col-md-6">
|
|
|
|
<div class="bs-component">
|
2017-03-08 18:26:40 +01:00
|
|
|
<ul id="select-team" class="nav nav-pills">
|
2017-03-09 01:57:10 +01:00
|
|
|
<li id="select-team-all" class="active">
|
|
|
|
<a href="javascript:void(0)" onclick="filter('')">All <span class="badge">{{ data.teams.all }}</span></a>
|
2017-03-08 17:31:22 +01:00
|
|
|
</li>
|
2017-03-09 01:57:10 +01:00
|
|
|
<li id="select-team-core"><a href="javascript:void(0)" onclick="filter('team-core')">Core <span class="badge">{{ data.teams.core }}</span></a></li>
|
|
|
|
<li id="select-team-apps"><a href="javascript:void(0)" onclick="filter('team-apps')">Apps <span class="badge">{{ data.teams.apps }}</span></a/li>
|
|
|
|
<li id="select-team-infra"><a href="javascript:void(0)" onclick="filter('team-infra')">Infra / dist<span class="badge">{{ data.teams.infra }}</span></a></li>
|
|
|
|
<li id="select-team-doc" ><a href="javascript:void(0)" onclick="filter('team-doc')">Doc<span class="badge">{{ data.teams.doc }}</span></a></li>
|
2017-03-08 14:24:58 +01:00
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
2017-03-08 18:26:40 +01:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="row">
|
2017-03-08 14:24:58 +01:00
|
|
|
|
|
|
|
<div class="col-md-12">
|
|
|
|
<div>
|
|
|
|
|
|
|
|
|
2017-03-08 18:26:40 +01:00
|
|
|
<table id="thePRlist" class="table table-striped table-responsive">
|
2017-03-08 14:24:58 +01:00
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th></th>
|
|
|
|
<th>Title</th>
|
|
|
|
<th>Created</th>
|
|
|
|
<th>Labels</th>
|
|
|
|
<th>Reviews</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
2017-03-08 17:31:22 +01:00
|
|
|
{% for pr in data.prs %}
|
2017-03-08 18:26:40 +01:00
|
|
|
<tr class="{% for team in pr.teams %}team-{{ team }}{% endfor %}">
|
|
|
|
<td>
|
|
|
|
<center><a class="btn
|
2017-03-08 14:24:58 +01:00
|
|
|
{% if pr.priority >= 100 %}btn-warning{% else %}
|
|
|
|
{% if pr.priority >= 50 %}btn-primary{% else %}
|
|
|
|
{% if pr.priority >= 0 %}btn-info{% else %}
|
|
|
|
{% if pr.priority >= -50 %}btn-default{% else %}
|
|
|
|
btn-link{% endif %}
|
|
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
|
|
{% endif %}"
|
|
|
|
href="{{ pr.url }}">{{ pr.id }}</a></center></td>
|
2017-03-08 15:35:17 +01:00
|
|
|
<td class="pr-title"><strong>{{ pr.title }}</strong></td>
|
2017-03-08 14:24:58 +01:00
|
|
|
<td>{{ pr.createdDaysAgo }} days ago</td>
|
|
|
|
<td>
|
|
|
|
{% for label in pr.labels %}
|
|
|
|
<span class="label
|
|
|
|
{% if label == "important" %}label-danger{%endif%}
|
|
|
|
{% if label == "opinion needed" %}label-warning{%endif%}
|
|
|
|
{% if label == "small decision" %}label-info{%endif%}
|
|
|
|
{% if label == "medium decision" %}label-info{%endif%}
|
|
|
|
{% if label == "big decision" %}label-info{%endif%}
|
|
|
|
{% if label == "work needed" %}label-primary{%endif%}
|
|
|
|
{% if label == "inactive" %}label-default{%endif%}
|
|
|
|
{% if label == "postponed" %}label-default{%endif%}
|
|
|
|
{% if label == "dying" %}label-danger{%endif%}
|
|
|
|
">{{ label }}</span>
|
|
|
|
|
|
|
|
{% endfor %}
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
<span style="border:1px solid black; border-radius:4px; padding-left:2px; padding-right:2px;">foo <span class="text-success">✔</span></span>
|
|
|
|
<span style="border:1px solid black; border-radius:4px; padding-left:2px; padding-right:2px;">bar <span class="text-danger" >✘</span></span>
|
|
|
|
</tr>
|
|
|
|
{% endfor %}
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
2017-03-09 01:57:10 +01:00
|
|
|
|
|
|
|
|
|
|
|
<h3>WTF is this shit? How is priority defined?</h3>
|
|
|
|
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-12">
|
|
|
|
<strong>With labels</strong>
|
|
|
|
<ul>
|
|
|
|
<li>"important" = top priority</li>
|
|
|
|
<li>"opinion-needed" = medium priority</li>
|
|
|
|
<li>"work needed" = low priority</li>
|
|
|
|
<li>"inactive/postponed" = very low priority</li>
|
|
|
|
</ul>
|
|
|
|
<strong>Then with creation time</strong>
|
|
|
|
<p>older PRs have higher priority than newer PR</p>
|
|
|
|
<strong>'Dying' status</strong>
|
|
|
|
<p>A PR is considered "dying" if it has been created more than 60
|
|
|
|
days ago and not updated since 30 days. This is meant to be an incentive to
|
|
|
|
either revive it or flag it as inactive/postponed... 'Dying' PRs
|
|
|
|
have a small boost in priority to be listed first</a>
|
|
|
|
</br>
|
|
|
|
<p>Repos considered for now (completely arbitrary) : [yunohost, yunohost-admin, SSOwat, moulinette, doc, ynh-dev,
|
|
|
|
apps, CI_package_check, example_ynh, package_linter, Simone,
|
|
|
|
project-organization, build.yunohost.org, dynette, YunoPorts,
|
|
|
|
rebuildd, cd_build, install_script]</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2017-03-08 14:24:58 +01:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<footer>
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-lg-12">
|
|
|
|
<hr/>
|
|
|
|
<p>CSS Skin/boilerplate/whatever you call it : <a href="http://scripteden.com/" rel="nofollow">Script Eden</a>.</p>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</footer>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
|
|
|
|
<script src="js/bootstrap.min.js"></script>
|
|
|
|
|
2017-03-08 18:26:40 +01:00
|
|
|
<script>
|
|
|
|
function filter(team) {
|
|
|
|
// Declare variables
|
|
|
|
var input, filter, table, tr, td, i;
|
|
|
|
table = document.getElementById("thePRlist");
|
|
|
|
tr = table.getElementsByTagName("tr");
|
|
|
|
// Loop through all table rows, and hide those who don't match the search query
|
|
|
|
for (i = 0; i < tr.length; i++)
|
|
|
|
{
|
|
|
|
if (team == '') { tr[i].style.display = ""; }
|
|
|
|
else if (tr[i].classList == "") { tr[i].style.display = ""; }
|
|
|
|
else if (tr[i].classList.contains(team)) { tr[i].style.display = ""; }
|
|
|
|
else { tr[i].style.display = "none"; }
|
|
|
|
}
|
|
|
|
|
|
|
|
selector = document.getElementById("select-team");
|
|
|
|
li = selector.getElementsByTagName("li");
|
|
|
|
|
2017-03-09 01:57:10 +01:00
|
|
|
if (team == "") { team = "team-all"; }
|
|
|
|
|
2017-03-08 18:26:40 +01:00
|
|
|
for (i = 0; i < li.length; i++)
|
|
|
|
{
|
|
|
|
if (li[i].getAttribute("id") == "select-".concat(team))
|
|
|
|
{
|
|
|
|
li[i].classList.add("active");
|
|
|
|
}
|
2017-03-09 01:57:10 +01:00
|
|
|
else
|
|
|
|
{
|
|
|
|
li[i].classList.remove("active");
|
|
|
|
}
|
2017-03-08 18:26:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
2017-03-08 14:24:58 +01:00
|
|
|
</body>
|
|
|
|
</html>
|