Blob Blame Raw
{% 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>
              &nbsp;&nbsp;
              {% 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 %}