Blob Blame Raw
{% extends "repo_master.html" %}

{% block title %}Roadmap - {{
    repo.namespace + '/' if repo.namespace }}{{ repo.name }}{% endblock %}
{% set tag = "home"%}

{% block repo %}
<h3 class="font-weight-bold">
    Roadmap
    <div class="btn-group btn-group-sm float-right" role="group">
    {% if g.authenticated %}
        {% if g.repo_admin %}
        <a href="{{ url_for(
                'ui_ns.view_settings',
                repo=repo.name,
                username=username,
                namespace=repo.namespace) }}#roadmap-tab"
                class="btn btn-outline-primary"
                title="Configure Milestones"
                data-toggle="tooltip">
            <i class="fa fa-cogs fa-fw"></i>
            Configure Milestones
        </a>
        {% endif %}
    {% endif %}
    </div>
</h3>

<div class="row mt-4">
    <div class="col pb-5">
        <div class="list-group">
            <div class="list-group-item bg-light">
                <div class="row">
                    <div class="col">
                        <div class="btn-group">
                            <div class="dropdown">
                            {% if milestones_status_select == 'active' %}
                                <a class="btn btn-sm btn-outline-primary border-0 font-weight-bold dropdown-toggle" href="#" data-toggle="dropdown" id="issue-status-dropdown">
                                    <span class="fa fa-fw fa-map-signs"></span> {{milestones_totals['active']}} Active Milestones
                            {% elif milestones_status_select == 'inactive'%}
                                <a class="btn btn-sm btn-outline-secondary border-0 font-weight-bold dropdown-toggle" href="#" data-toggle="dropdown" id="issue-status-dropdown">
                                    <span class="fa fa-fw fa-map-signs"></span> {{milestones_totals['inactive']}} Inactive Milestones
                            {% elif milestones_status_select == 'all' %}
                                <a class="btn btn-sm btn-outline-secondary border-0 font-weight-bold dropdown-toggle" href="#" data-toggle="dropdown" id="issue-status-dropdown">
                                    <span class="fa fa-fw fa-map-signs"></span> {{milestones_totals['inactive']+milestones_totals['active']}} All Milestones
                            {% endif %}
                                </a>
                                <div class="dropdown-menu">
                                <a class="dropdown-item {% if milestones_status_select == 'active' %}active{%endif%}"
                                        href="{{ url_for('ui_ns.view_roadmap',
                                        repo=repo.name,
                                        username=repo.username if repo.is_fork else None,
                                        namespace=repo.namespace,
                                       status='active',
                                       keyword=keyword,) }}">
                                       {{milestones_totals['active']}} Active Milestones
                                </a>

                                <a class="dropdown-item {% if milestones_status_select == 'inactive' %}active{%endif%}"
                                    href="{{ url_for('ui_ns.view_roadmap',
                                        repo=repo.name,
                                        username=repo.username if repo.is_fork else None,
                                        namespace=repo.namespace,
                                        status='inactive',
                                        keyword=keyword) }}">
                                        {{milestones_totals['inactive']}} Inactive Milestones
                                </a>

                                <a class="dropdown-item {% if milestones_status_select == 'all' %}active{%endif%}"
                                        href="{{ url_for('ui_ns.view_roadmap',
                                        repo=repo.name,
                                        username=repo.username if repo.is_fork else None,
                                        namespace=repo.namespace,
                                       status='all',
                                       keyword=keyword) }}">
                                       {{milestones_totals['inactive']+milestones_totals['active']}} All Milestones
                                </a>
                                </div>
                            </div>
                            <div class="btn-group">
                                <button class="btn btn-sm btn-outline-secondary border-0 dropdown-toggle" data-flip="false" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                <span class="font-weight-bold">Filter{%if keyword %}:{% endif %}
                                </span>

                                    {% if keyword %}
                                    <i class="fa fa-search pl-2 pr-1" title="tagged"></i>
                                    <span>{{ keyword }}</span>
                                    {% endif %}
                                    {% if onlyincomplete == True %}
                                    <i class="fa fa-percent pl-2 pr-1" title="tagged"></i>
                                    <span>only incomplete</span>
                                    {% endif %}
                                </button>
                                <div class="dropdown-menu p-4" aria-labelledby="dropdownMenuButton" id="filters-dropdown">
                                <div>
                                    <form id="filters_form" action="{{ url_for('ui_ns.view_roadmap',
                                        username=username,
                                        namespace=repo.namespace,
                                        repo=repo.name ) }}" method="GET">
                                    <input type="hidden" name="status" value="{{ milestones_status_select or 'all' }}" />

                                    <div class="form-group row mb-1" id="onlyincomplete-filter-group">
                                        <label for="tags" class="col-auto align-self-center pl-1 pr-0"><i class="text-muted fa fa-fw fa-percent"></i> Show Incomplete only</label>
                                        <input type="checkbox" name="onlyincomplete" value="True" {{'checked="checked"' if onlyincomplete}} class="ml-auto mr-1">
                                    </div>

                                    <div class="form-group row mb-2">
                                        <label for="search_pattern" class="col-auto align-self-center pl-1 pr-0"><i class="text-muted fa fa-fw fa-search"></i></label>
                                        <div class="col pl-1">
                                        <input type="text" class="form-control"
                                                name="keyword" placeholder="Search"
                                                value="{{ keyword or '' }}" />
                                        </div>
                                    </div>
                                    {#
                                    <div class="form-group row mb-1" id="milestone-filter-group">
                                        <label for="milestone" class="col-auto align-self-center pl-1 pr-0"><i class="text-muted fa fa-fw fa-map-signs"></i></label>
                                        <div class="col pl-1">
                                        <select name="milestone" id="milestone-selectize" placeholder="Milestone">
                                            <option value=""></option>
                                            <option value="none" {% if no_milestones %}selected="selected"{% endif %}>Milestone unset</option>
                                            {% for stone in repo.milestones %}
                                            {% if loop.first %}
                                                <optgroup label="Active">
                                            {% endif %}
                                            {% if repo.milestones[stone]['active']%}
                                            <option value="{{ stone }}" {% if milestones[0] == stone %}selected="selected"{% endif %}>{{stone}}</option>
                                            {% endif %}
                                            {% if loop.last %}
                                                </optgroup>
                                            {% endif %}
                                            {% endfor %}
                                            {% for stone in repo.milestones %}
                                            {% if loop.first %}
                                                <optgroup label="Inactive">
                                            {% endif %}
                                            {% if not repo.milestones[stone]['active']%}
                                            <option value="{{ stone }}" {% if milestones[0] == stone %}selected="selected"{% endif %}>{{stone}}</option>
                                            {% endif %}
                                            {% if loop.last %}
                                                </optgroup>
                                            {% endif %}
                                            {% endfor %}
                                        </select>
                                        </div>
                                        <div class="col-auto pl-0 pr-1 pt-1">
                                        <i class="fa fa-times fa-fw text-muted" id="milestone-selectize-reset"></i>
                                        </div>
                                    </div>

                                    <div class="form-group row mb-1" id="priority-filter-group">
                                        <label for="priority" class="col-auto align-self-center pl-1 pr-0"><i class="text-muted fa fa-fw fa-bolt"></i></label>
                                        <div class="col pl-1">
                                        <select name="priority" id="priority-selectize" placeholder="Priority">
                                        {% for p in repo.priorities | sort %}
                                            <option value="{{ p }}" {% if p | int == priority | int %}selected="selected"{% endif %}>{{repo.priorities[p | string]}}</option>
                                        {% endfor %}
                                        </select>
                                        </div>
                                        <div class="col-auto pl-0 pr-1 pt-1">
                                        <i class="fa fa-times fa-fw text-muted" id="priority-selectize-reset"></i>
                                        </div>
                                    </div>

                                    <div class="form-group row mb-1" id="assignee-filter-group">
                                        <label for="assignee" class="col-auto align-self-center pl-1 pr-0"><i class="text-muted fa fa-fw fa-user-plus"></i></label>
                                        <div class="col pl-1">
                                        <select name="assignee" id="assignee-selectize" placeholder="Assignee">
                                            {% if assignee %}
                                            <option value="{{assignee}}" selected="selected">{{assignee}}</option>
                                            {% endif %}
                                        </select>
                                        </div>
                                        <div class="col-auto pl-0 pr-1 pt-1">
                                        <i class="fa fa-times fa-fw text-muted" id="assignee-selectize-reset"></i>
                                        </div>
                                    </div>

                                    <div class="form-group row mb-1" id="author-filter-group">
                                        <label for="author" class="col-auto align-self-center pl-1 pr-0"><i class="text-muted fa fa-fw fa-user"></i></label>
                                        <div class="col pl-1">
                                        <select name="author" id="author-selectize" placeholder="Submitted by">
                                            {% if author %}
                                            <option value="{{author}}" selected="selected">{{author}}</option>
                                            {% endif %}
                                        </select>
                                        </div>
                                        <div class="col-auto pl-0 pr-1 pt-1">
                                        <i class="fa fa-times fa-fw text-muted" id="author-selectize-reset"></i>
                                        </div>
                                    </div>#}

                                    <input type="submit" class="btn btn-block btn-primary" value="Apply Filters" />

                                    <a href="{{ url_for('ui_ns.view_roadmap',
                                    repo=repo.name,
                                    username=username,
                                    namespace=repo.namespace,
                                    status=milestones_status_select) }}" class="btn btn-link btn-block">Reset Filters</a>

                                    </form>
                                </div>
                                </div>
                            </div>
                            </div>
                    </div>
                </div>
            </div>
            {% if milestones %}
            {% for milestone in milestones %}
            <a href="{{ url_for(
                'ui_ns.view_milestone',
                repo=repo.name,
                username=repo.username if repo.is_fork else None,
                namespace=repo.namespace,
                milestone=milestone) }}"
                class="list-group-item list-group-item-action">
                <div class="row">
                    <div class="col-6 d-flex justify-content-between align-items-center">
                        <span>
                            <span class="fa fa-fw fa-map-signs"></span>
                            <span class="font-weight-bold">{{milestone}}</span>
                            {% if repo.milestones[milestone]['date'] %}
                                <span class="text-muted pl-3">Due: {{repo.milestones[milestone]['date']}}</span>
                            {% endif %}
                        </span>
                        <span class="font-weight-bold text-muted">
                            <i class="fa fa-fw text-muted fa-exclamation-circle"></i>
                            {{milestones[milestone]['Total']}} issues
                        </span>
                    </div>
                    <div class="col-6">
                        {% if milestones[milestone]['Total'] != 0 %}
                            {% set completed_percentage = (100.0 * (milestones[milestone]['Closed'] / milestones[milestone]['Total'])) %}
                            <div class="progress height-100per"
                                 title="{{completed_percentage|round|int}}% Completed | {{milestones[milestone]['Closed']}} Closed Issues | {{milestones[milestone]['Open']}} Open Issues"
                                 data-toggle="tooltip" data-placement="bottom">
                                <div class="progress-bar bg-primary"
                                    role="progressbar""
                                    data-width="{{completed_percentage|round|int}}%"
                                    aria-valuenow="{{completed_percentage|round|int}}"
                                    aria-valuemin="0"
                                    aria-valuemax="100">
                                </div>
                            </div>
                        {% else %}
                            <div class="progress height-100per ">
                                <div class="progress-bar progress-bar-striped width-100per light_gray_bg"
                                    title="no issues assigned to the {{milestone}} milestone"
                                    data-toggle="tooltip" data-placement="bottom"
                                    role="progressbar"
                                    aria-valuenow="0"
                                    aria-valuemin="0"
                                    aria-valuemax="100">
                                </div>
                            </div>
                        {% endif %}

                    </div>
                </div>
            </a>
            {% endfor %}
            {% else %}
            <div class="list-group-item">
                <div class="row">
                    <div class="col text-center p-5">
                        <h4 class="text-muted">no
                            {% if milestones_status_select == 'inactive' %}completed{% else %}active{% endif %}
                            milestones
                        </h4>
                    </div>
                </div>
            </div>
            {% endif %}
        </div>
    </div>
</div>
{% endblock %}

{% block jscripts %}
{{ super() }}
<script type="text/javascript" nonce="{{ g.nonce }}" src="{{
  url_for('static', filename='tags.js') }}?version={{ g.version}}"></script>

<script type="text/javascript" nonce="{{ g.nonce }}">

function update_progress_bar() {
  $(".progress-bar").each(function(ind, obj) {
    $(obj).css('width', $(obj).attr('data-width'));
  });
}

$(document).ready(function() {
    update_progress_bar();
});
</script>
{% endblock %}