|
Ryan Lerch |
1cdcf9 |
{% extends "repo_master.html" %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% block title %}Roadmap - {{
|
|
Ryan Lerch |
1cdcf9 |
repo.namespace + '/' if repo.namespace }}{{ repo.name }}{% endblock %}
|
|
Ryan Lerch |
1cdcf9 |
{% set tag = "home"%}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% block repo %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
Roadmap
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% if g.authenticated %}
|
|
Ryan Lerch |
1cdcf9 |
{% if g.repo_admin %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
'ui_ns.view_settings',
|
|
Ryan Lerch |
1cdcf9 |
repo=repo.name,
|
|
Ryan Lerch |
1cdcf9 |
username=username,
|
|
Ryan Lerch |
1cdcf9 |
namespace=repo.namespace) }}#roadmap-tab"
|
|
Ryan Lerch |
b4021a |
class="btn btn-outline-primary"
|
|
Ryan Lerch |
b4021a |
title="Configure Milestones"
|
|
Ryan Lerch |
b4021a |
data-toggle="tooltip">
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
Configure Milestones
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% endif %}
|
|
Ryan Lerch |
1cdcf9 |
{% endif %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1370a4 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{% if milestones_status_select == 'active' %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{{milestones_totals['active']}} Active Milestones
|
|
Ryan Lerch |
b4021a |
{% elif milestones_status_select == 'inactive'%}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{{milestones_totals['inactive']}} Inactive Milestones
|
|
Ryan Lerch |
b4021a |
{% elif milestones_status_select == 'all' %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{{milestones_totals['inactive']+milestones_totals['active']}} All Milestones
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
href="{{ url_for('ui_ns.view_roadmap',
|
|
Ryan Lerch |
b4021a |
repo=repo.name,
|
|
Ryan Lerch |
b4021a |
username=repo.username if repo.is_fork else None,
|
|
Ryan Lerch |
b4021a |
namespace=repo.namespace,
|
|
Ryan Lerch |
b4021a |
status='active',
|
|
Ryan Lerch |
b4021a |
keyword=keyword,) }}">
|
|
Ryan Lerch |
b4021a |
{{milestones_totals['active']}} Active Milestones
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
href="{{ url_for('ui_ns.view_roadmap',
|
|
Ryan Lerch |
b4021a |
repo=repo.name,
|
|
Ryan Lerch |
b4021a |
username=repo.username if repo.is_fork else None,
|
|
Ryan Lerch |
b4021a |
namespace=repo.namespace,
|
|
Ryan Lerch |
b4021a |
status='inactive',
|
|
Ryan Lerch |
b4021a |
keyword=keyword) }}">
|
|
Ryan Lerch |
b4021a |
{{milestones_totals['inactive']}} Inactive Milestones
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
href="{{ url_for('ui_ns.view_roadmap',
|
|
Ryan Lerch |
b4021a |
repo=repo.name,
|
|
Ryan Lerch |
b4021a |
username=repo.username if repo.is_fork else None,
|
|
Ryan Lerch |
b4021a |
namespace=repo.namespace,
|
|
Ryan Lerch |
b4021a |
status='all',
|
|
Ryan Lerch |
b4021a |
keyword=keyword) }}">
|
|
Ryan Lerch |
b4021a |
{{milestones_totals['inactive']+milestones_totals['active']}} All Milestones
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<button aria-expanded="false" aria-haspopup="true" class="btn btn-sm btn-outline-secondary border-0 dropdown-toggle" data-flip="false" data-toggle="dropdown" id="dropdownMenuButton" type="button"></button>
|
|
Ryan Lerch |
b4021a |
Filter{%if keyword %}:{% endif %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{% if keyword %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{{ keyword }}
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
{% if onlyincomplete == True %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
only incomplete
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
username=username,
|
|
Ryan Lerch |
b4021a |
namespace=repo.namespace,
|
|
Ryan Lerch |
b4021a |
repo=repo.name ) }}" method="GET">
|
|
Ryan Lerch |
b4021a |
<input name="status" type="hidden" value="{{ milestones_status_select or 'all' }}">
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<label class="col-auto align-self-center pl-1 pr-0" for="tags"> Show Incomplete only</label>
|
|
Ryan Lerch |
b4021a |
<input '="" class="ml-auto mr-1" if="" name="onlyincomplete" onlyincomplete}}="" type="checkbox" value="True" {{'checked="checked">
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<label class="col-auto align-self-center pl-1 pr-0" for="search_pattern"></label>
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
name="keyword" placeholder="Search"
|
|
Ryan Lerch |
b4021a |
value="{{ keyword or '' }}" />
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{#
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<label class="col-auto align-self-center pl-1 pr-0" for="milestone"></label>
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<select id="milestone-selectize" name="milestone" placeholder="Milestone"></select>
|
|
Ryan Lerch |
b4021a |
<option value=""></option>
|
|
Ryan Lerch |
b4021a |
<option %}="" %}selected="selected" endif="" if="" no_milestones="" value="none" {%="">Milestone unset</option>
|
|
Ryan Lerch |
b4021a |
{% for stone in repo.milestones %}
|
|
Ryan Lerch |
b4021a |
{% if loop.first %}
|
|
Ryan Lerch |
b4021a |
<optgroup label="Active"></optgroup>
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
{% if repo.milestones[stone]['active']%}
|
|
Ryan Lerch |
b4021a |
<option %}="" %}selected="selected" endif="" if="" milestones[0]="=" stone="" value="{{ stone }}" {%="">{{stone}}</option>
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
{% if loop.last %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
{% endfor %}
|
|
Ryan Lerch |
b4021a |
{% for stone in repo.milestones %}
|
|
Ryan Lerch |
b4021a |
{% if loop.first %}
|
|
Ryan Lerch |
b4021a |
<optgroup label="Inactive"></optgroup>
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
{% if not repo.milestones[stone]['active']%}
|
|
Ryan Lerch |
b4021a |
<option %}="" %}selected="selected" endif="" if="" milestones[0]="=" stone="" value="{{ stone }}" {%="">{{stone}}</option>
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
{% if loop.last %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
{% endfor %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<label class="col-auto align-self-center pl-1 pr-0" for="priority"></label>
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<select id="priority-selectize" name="priority" placeholder="Priority"></select>
|
|
Ryan Lerch |
b4021a |
{% for p in repo.priorities | sort %}
|
|
Ryan Lerch |
b4021a |
<option %}="" %}selected="selected" endif="" if="" int="=" p="" priority="" value="{{ p }}" {%="" |="">{{repo.priorities[p | string]}}</option>
|
|
Ryan Lerch |
b4021a |
{% endfor %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<label class="col-auto align-self-center pl-1 pr-0" for="assignee"></label>
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<select id="assignee-selectize" name="assignee" placeholder="Assignee"></select>
|
|
Ryan Lerch |
b4021a |
{% if assignee %}
|
|
Ryan Lerch |
b4021a |
<option selected="selected" value="{{assignee}}">{{assignee}}</option>
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<label class="col-auto align-self-center pl-1 pr-0" for="author"></label>
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<select id="author-selectize" name="author" placeholder="Submitted by"></select>
|
|
Ryan Lerch |
b4021a |
{% if author %}
|
|
Ryan Lerch |
b4021a |
<option selected="selected" value="{{author}}">{{author}}</option>
|
|
Ryan Lerch |
b4021a |
{% endif %}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
#}
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
<input class="btn btn-block btn-primary" type="submit" value="Apply Filters">
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
repo=repo.name,
|
|
Ryan Lerch |
b4021a |
username=username,
|
|
Ryan Lerch |
b4021a |
namespace=repo.namespace,
|
|
Ryan Lerch |
b4021a |
status=milestones_status_select) }}" class="btn btn-link btn-block">Reset Filters
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
b4021a |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% if milestones %}
|
|
Ryan Lerch |
1cdcf9 |
{% for milestone in milestones %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
'ui_ns.view_milestone',
|
|
Ryan Lerch |
1cdcf9 |
repo=repo.name,
|
|
Pierre-Yves Chibon |
4a2cf2 |
username=repo.username if repo.is_fork else None,
|
|
Ryan Lerch |
1cdcf9 |
namespace=repo.namespace,
|
|
Ryan Lerch |
1cdcf9 |
milestone=milestone) }}"
|
|
Ryan Lerch |
1cdcf9 |
class="list-group-item list-group-item-action">
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{{milestone}}
|
|
Ryan Lerch |
1cdcf9 |
{% if repo.milestones[milestone]['date'] %}
|
|
Ryan Lerch |
1cdcf9 |
Due: {{repo.milestones[milestone]['date']}}
|
|
Ryan Lerch |
1cdcf9 |
{% endif %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{{milestones[milestone]['Total']}} issues
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% if milestones[milestone]['Total'] != 0 %}
|
|
Ryan Lerch |
1cdcf9 |
{% set completed_percentage = (100.0 * (milestones[milestone]['Closed'] / milestones[milestone]['Total'])) %}
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Ryan Lerch |
1cdcf9 |
title="{{completed_percentage|round|int}}% Completed | {{milestones[milestone]['Closed']}} Closed Issues | {{milestones[milestone]['Open']}} Open Issues"
|
|
Ryan Lerch |
1cdcf9 |
data-toggle="tooltip" data-placement="bottom">
|
|
Ryan Lerch |
1cdcf9 |
|
|
Pierre-Yves Chibon |
3ff704 |
role="progressbar""
|
|
Pierre-Yves Chibon |
3ff704 |
data-width="{{completed_percentage|round|int}}%"
|
|
Ryan Lerch |
1cdcf9 |
aria-valuenow="{{completed_percentage|round|int}}"
|
|
Ryan Lerch |
1cdcf9 |
aria-valuemin="0"
|
|
Ryan Lerch |
1cdcf9 |
aria-valuemax="100">
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% else %}
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Ryan Lerch |
1cdcf9 |
title="no issues assigned to the {{milestone}} milestone"
|
|
Ryan Lerch |
1cdcf9 |
data-toggle="tooltip" data-placement="bottom"
|
|
Ryan Lerch |
1cdcf9 |
role="progressbar"
|
|
Ryan Lerch |
1cdcf9 |
aria-valuenow="0"
|
|
Ryan Lerch |
1cdcf9 |
aria-valuemin="0"
|
|
Ryan Lerch |
1cdcf9 |
aria-valuemax="100">
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% endif %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% endfor %}
|
|
Ryan Lerch |
1cdcf9 |
{% else %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
no
|
|
Ryan Lerch |
1cdcf9 |
{% if milestones_status_select == 'inactive' %}completed{% else %}active{% endif %}
|
|
Ryan Lerch |
1cdcf9 |
milestones
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% endif %}
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
|
|
Ryan Lerch |
1cdcf9 |
{% endblock %}
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Pierre-Yves Chibon |
3ff704 |
{% block jscripts %}
|
|
Pierre-Yves Chibon |
3ff704 |
{{ super() }}
|
|
Julen Landa Alustiza |
1177b4 |
|
|
Julen Landa Alustiza |
1177b4 |
url_for('static', filename='tags.js') }}?version={{ g.version}}">
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Pierre-Yves Chibon |
3ff704 |
<script nonce="{{ g.nonce }}" type="text/javascript"></script>
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Pierre-Yves Chibon |
3ff704 |
function update_progress_bar() {
|
|
Pierre-Yves Chibon |
3ff704 |
$(".progress-bar").each(function(ind, obj) {
|
|
Pierre-Yves Chibon |
3ff704 |
$(obj).css('width', $(obj).attr('data-width'));
|
|
Pierre-Yves Chibon |
3ff704 |
});
|
|
Pierre-Yves Chibon |
3ff704 |
}
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Pierre-Yves Chibon |
3ff704 |
$(document).ready(function() {
|
|
Pierre-Yves Chibon |
3ff704 |
update_progress_bar();
|
|
Pierre-Yves Chibon |
3ff704 |
});
|
|
Pierre-Yves Chibon |
3ff704 |
|
|
Pierre-Yves Chibon |
3ff704 |
{% endblock %}
|