{% extends "repo_master.html" %}
{% block title %}Roadmap - {{
repo.namespace + '/' if repo.namespace }}{{ repo.name }}{% endblock %}
{% set tag = "home"%}
{% block repo %}
{% macro render_issue_list(issues, title, id, milestone, total) %}
<div class="card m-t-1">
<div class="card-block">
<table id="pagure-issues-list-{{ id }}" class="table table-hover table-striped m-b-0 milestone-table">
<thead class="thead-default">
<tr>
<th>{{ title }}
<span style="font-weight:normal">
{% if milestone and milestone in repo.milestones and repo.milestones[milestone]['date'] %}
(Due: {{
repo.milestones[milestone]['date'] }})
{% endif %} ({{ issues | length }} {%
if total %}of {{ total }}{% endif %})</span>
</th>
<th class="open_date">Opened</th>
{% if status and status|lower == 'closed' %}
<th class="close_date">Closed</th>
{% else %}
<th class="mod_date">Modified</th>
{% endif %}
<th class="priority">
Priority
</th>
<th class="assigned">
Assignee
</th>
<th class="issue_status">Status</th>
</tr>
</thead>
<tfoot></tfoot>
<tbody>
{% for issue in issues |sort(attribute='sortable_priority') %}
{% if status is none or status|lower == 'all' or issue.status == status %}
<tr {% if issue.status == 'Closed' %}class="text-muted"{% endif %}>
<td>
<span class="label label-default">#{{ issue.id }}</span>
{% if issue.private %}
<span class="oi red-icon" data-glyph="lock-locked" title="Private issue"></span>
{% endif %}
<a {% if issue.status == 'Closed' %}class="text-muted"{% endif %} href="{{ url_for(
'ui_ns.view_issue',
repo=repo.name,
username=username,
namespace=repo.namespace,
issueid=issue.id) }}">
{{ issue.title | noJS("img") | safe }}
</a>
{% if issue.comments | count > 0 %}
<span class="text-muted">
<span class="oi" data-glyph="comment-square"
title="Comments on the ticket"></span>
{{ issue.comments | count }}
</span>
{% endif %}
{% for tag in issue.tags %}
<span class="label label-info"
style="background-color:{{ tag.tag_color
}}">{{ tag.tag }}</span>
{% endfor %}
</td>
<td class="td-open_date nowrap">
<span title="{{ issue.date_created | format_datetime}}">{{
issue.date_created | humanize }}</span>
</td>
<td class="td-mod_date nowrap">
{% if status and status|lower == 'closed' %}
<span title="{{
issue.closed_at | format_datetime
if issue.closed_at
}}">{{
issue.closed_at | humanize }}</span>
{% else %}
<span title="{{ issue.last_updated | format_datetime}}">{{
issue.last_updated | humanize }}</span>
{% endif %}
</td>
<td class="td-priority nowrap">
{% if issue.priority %}
{{ repo.priorities[issue.priority | string] }}
{% endif %}
</td>
<td class="nowrap">
{% if issue.assignee %}
{{ issue.assignee.default_email | avatar(16) | safe }}
{{ issue.assignee.user }}
{% else %}
<span class="text-muted">unassigned</span>
{% endif %}
</td>
<td class="nowrap">
<span class="label {%
if issue.status != 'Open' -%}label-danger{%
else %}label-success{% endif %}">{{ issue.status }}</span>
</td>
</tr>
{% endif %}
{% else %}
<tr>
<td colspan="5" class="noresult">No issues found</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endmacro %}
<h2>
Milestone Roadmap
<div class="btn-group btn-group-sm pull-xs-right" role="group">
<a href="{{ url_for(
'ui_ns.view_issues',
repo=repo.name,
username=username,
namespace=repo.namespace) }}"
class="btn btn-secondary btn-sm">List
</a>
{% if g.repo.reports %}
<a class="btn btn-primary btn-sm dropdown-toggle"
type="button" id="dropdownMenu1" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
Report
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenu1">
{% for report in repo.reports %}
<a class="dropdown-item" href="{{ url_for(
'ui_ns.view_report', namespace=repo.namespace,
username=username, repo=repo.name, report=report) }}">
<small>Report: {{ report }}</small>
</a>
{% endfor %}
</div>
{% endif %}
</div>
</h2>
<hr />
<section id="flags">
<span class="btn-group btn-group-sm issues-tagbar" role="group">
<span class="oi m-l-2 btn btn-nopad" title="Status"></span>
<a class="btn {%
if status|lower in ['open', 'true'] %}btn-primary{%
else %}btn-secondary{%
endif %} btn-sm" href="{{ url_for('ui_ns.view_roadmap',
repo=repo.name,
username=username,
namespace=repo.namespace,
milestone=requested_stones,
all_stones=all_stones,
tag=tags) }}" title="Filter issues by status">Open</a>
<a class="btn {%
if status|lower in ['closed', 'false'] %}btn-primary{%
else %}btn-secondary{%
endif %} btn-sm" href="{{ url_for('ui_ns.view_roadmap',
repo=repo.name,
username=username,
namespace=repo.namespace,
tag=tags,
milestone=requested_stones,
all_stones=all_stones,
status='Closed') }}" title="Filter issues by status">Closed</a>
<a class="btn {%
if status|lower in ['all', 'none'] %}btn-primary{%
else %}btn-secondary{%
endif %} btn-sm" href="{{ url_for('ui_ns.view_roadmap',
repo=repo.name,
username=username,
namespace=repo.namespace,
tag=tags,
milestone=requested_stones,
all_stones=all_stones,
status='all') }}" title="Filter issues by status">All</a>
</span>
<span class="btn-group btn-group-sm issues-tagbar" role="group">
<span class="oi m-l-2 btn btn-nopad" title="Status"></span>
<a class="btn {%
if not all_stones and not no_stones %}btn-primary{%
else %}btn-secondary{%
endif %} btn-sm" href="{{ url_for('ui_ns.view_roadmap',
repo=repo.name,
username=username,
namespace=repo.namespace,
tag=tags,
status=status) }}" title="Only display active milestone tags">Active Milestones</a>
<a class="btn {%
if all_stones %}btn-primary{%
else %}btn-secondary{%
endif %} btn-sm" href="{{ url_for('ui_ns.view_roadmap',
repo=repo.name,
username=username,
namespace=repo.namespace,
tag=tags,
all_stones=true,
status=status) }}" title="Display all milestone tags">All Milestones</a>
<a class="btn {%
if no_stones %}btn-primary{%
else %}btn-secondary{%
endif %} btn-sm" href="{{ url_for('ui_ns.view_roadmap',
repo=repo.name,
username=username,
namespace=repo.namespace,
tag=tags,
no_stones=true,
status=status) }}" title="Display issues with no milestone set">No Milestone</a>
</span>
<span class="btn-group btn-group-sm issues-tagbar" role="group" aria-label="Basic example">
{% if milestones %}
<span class="oi m-l-2 btn btn-nopad" data-glyph="target" title="Milestones"></span>
{% for stone in milestones %}
<a class="btn btn-secondary btn-sm{%
if stone in requested_stones %} active {% endif %}"
href="{{ url_for(
'ui_ns.view_roadmap',
repo=repo.name,
username=username,
namespace=repo.namespace,
milestone=stone | add_or_remove(requested_stones[:]),
tag=tags,
all_stones=all_stones,
no_stones=no_stones,
status=status) }}"
title="Filter issues by milestone">
{{ stone }}</a>
{% endfor %}
</span>
{% endif %}
<span class="btn-group btn-group-sm issues-tagbar" role="group" aria-label="Basic example">
<span class="oi m-l-2 btn btn-nopad" data-glyph="tag" title="Tags"></span>
{% for tag in tag_list %}
<a class="btn btn-secondary btn-sm {% if tag in tags %}active{% endif %}"
href="{{ url_for('ui_ns.view_roadmap',
repo=repo.name,
username=username,
namespace=repo.namespace,
status=status,
tag=tag | add_or_remove(tags[:]),
all_stones=all_stones,
no_stones=no_stones,
milestone=requested_stones) }}"
title="Filter issues by tag">
{{ tag }}</a>
{% endfor %}
</span>
</section>
{% if not issues %}
<div class="card-block">
<tr>
<td colspan="5" class="noresult"><b><i>No issues found</i></b></td>
</tr>
</div>
{% endif %}
{% if no_stones %}
{{ render_issue_list(
issues, title='No Milestone',
id='no_stones', milestone=None) }}
{% endif %}
{% for milestone in milestones %}
{% if not milestone.endswith('_total') %}
{{ render_issue_list(
issues[milestone], title=milestone,
id=loop.index, milestone=milestone,
total=issues[milestone + '_total']) }}
{% endif %}
{% endfor %}
{% endblock %}
{% block jscripts %}
{{ super() }}
{% endblock %}