From 18ed76d93d83f38f870d0ffa0e9a6b4915c7c039 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Jan 12 2017 15:36:17 +0000 Subject: Issue 1711 - Improve Issue roadmap page The roapmap page appears to have been started, but not finished. Certain features did not work, like sorting on tags (tags were previosuly being treated as milestones). This fix now makes it possible to isolate individual milestones, status, and tags. All three can be combined to create a new report. Each criteria is clicked to select and deselect. The layout of the page has also been improved to be more consistent, and uniform https://pagure.io/pagure/issue/1711 --- diff --git a/pagure/templates/roadmap.html b/pagure/templates/roadmap.html index 88d33f5..0825134 100644 --- a/pagure/templates/roadmap.html +++ b/pagure/templates/roadmap.html @@ -9,7 +9,7 @@

- {{ issues|count }} Milestones + Milestone Roadmap +
Milestones:  + + {% for stone in allmilestones|sort %} + {% if stone in requested_stones %} + + {{ stone }} + {% else %} + + {{ stone }} + {% endif %} + {% endfor %} + +
+
Status:  {% if not status %} Open - All {% else %} - Open All {% endif %} - +
+ +
Tags:  {% for tag in tag_list %} - {% if tag.tag in tags %} - + {% if tag in tags %} + {% else %} - + {% endif %} - - {{ tag.tag }} + {{ tag }} {% endfor %} - +
+
{% for milestone in milestones %}
-
-
- Milestone: {{ milestone }} - {% if repo.milestones[milestone] %} - - Due: {{ repo.milestones[milestone] }} - - {% endif %} -
-
-
- - +
+ + + + + {% if status and status|lower != 'open' %} + + {% else %} + + {% endif %} + + {% if not status or status|lower == 'open' %} + + {% endif %} + {% if repo.milestones[milestone] %} + + Due: {{ repo.milestones[milestone] }} + + {% endif %} + + + - {% for issue in issues[milestone] |sort(attribute='priority') %} + {% for issue in issues[milestone] |sort(attribute='priority') %} + {% if status is none or (status and issue.status == 'Open') %} + + + {% endif %} {% else %} @@ -195,6 +266,12 @@
Milestone: {{ milestone }}OpenedClosedModified + Priority (reset) + + Assignee (reset) + Status
#{{ issue.id }} - {% if status and status != 'Open' %} + {% if status is none or status != 'Open' %} {{issue.status}} + issue.close_status|lower == 'invalid' %}label-danger{% + elif issue.close_status|lower == 'fixed' %}label-success{% + elif issue.close_status|lower == 'insufficient data' %}label-warning{% + elif issue.close_status|lower == 'duplicate' %}label-default{% + elif issue.close_status %}label-default{% + endif %}">{{issue.close_status}} {% endif %} {% if issue.private %} @@ -163,6 +230,10 @@ {{ issue.date_created | humanize}} + {{ + issue.last_updated | humanize}} + - {% if issue.status != 'Open' %} - {{ issue.status }} + {% if issue.assignee %} + {{ issue.assignee.default_email | avatar(16) | safe }} + {{ issue.assignee.user }} {% else %} - {% if issue.assignee %} - {{ issue.assignee.default_email | avatar(16) | safe }} - {{ issue.assignee.user }} - {% else %} - unassigned - {% endif %} + unassigned {% endif %} + {{ issue.status }} +
No issues found
+{% else %} +
+ + No issues found + +
{% endfor %} {% endblock %} {% block jscripts %} diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py index 4ce8d5d..e192a7e 100644 --- a/pagure/ui/issues.py +++ b/pagure/ui/issues.py @@ -686,6 +686,7 @@ def view_roadmap(repo, username=None, namespace=None): if status.lower() == 'all': status = None milestone = flask.request.args.getlist('milestone', None) + tags = flask.request.args.getlist('tag', None) repo = flask.g.repo @@ -701,12 +702,17 @@ def view_roadmap(repo, username=None, namespace=None): if flask.g.repo_admin: private = None + requested_stones = None + if milestone is not None: + requested_stones = milestone milestones = milestone or list(repo.milestones.keys()) + all_milestones = list(repo.milestones.keys()) issues = pagure.lib.search_issues( SESSION, repo, milestones=milestones, + tags=tags, private=private, ) @@ -732,12 +738,10 @@ def view_roadmap(repo, username=None, namespace=None): if not active: del milestone_issues[key] - if milestone: - for mlstone in milestone: - if mlstone not in milestone_issues: - milestone_issues[mlstone] = [] - - tag_list = pagure.lib.get_tags_of_project(SESSION, repo) + all_tags = pagure.lib.get_tags_of_project(SESSION, repo) + tag_list = [] + for tag in all_tags: + tag_list.append(tag.tag) reponame = pagure.get_repo_path(repo) repo_obj = pygit2.Repository(reponame) @@ -755,8 +759,10 @@ def view_roadmap(repo, username=None, namespace=None): tag_list=tag_list, status=status, milestones=milestones_ordered, + requested_stones=requested_stones, + allmilestones=all_milestones, issues=milestone_issues, - tags=milestone, + tags=tags, )