From 597a2b61e2a6a0f9f6c50e4a9095e7cf50012642 Mon Sep 17 00:00:00 2001 From: Airistotal Date: Wed, 17 Jun 2015 16:01:45 -0500 Subject: [PATCH 1/8] Added pagintation to Jobs_per_month_all --- .../webapps/reports/controllers/jobs.py | 26 ++++++++++- templates/sorting_base.mako | 4 +- .../reports/jobs_specified_month_all.mako | 44 ++++++++++++++++++- 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/lib/galaxy/webapps/reports/controllers/jobs.py b/lib/galaxy/webapps/reports/controllers/jobs.py index de3edcb1ead..6cd17b807d7 100644 --- a/lib/galaxy/webapps/reports/controllers/jobs.py +++ b/lib/galaxy/webapps/reports/controllers/jobs.py @@ -5,6 +5,7 @@ from galaxy.web.base.controller import BaseUIController, web from galaxy import model, util from galaxy.web.framework.helpers import grids from galaxy.model.orm import and_, not_, or_ +from math import ceil import pkg_resources pkg_resources.require( "SQLAlchemy >= 0.4" ) import sqlalchemy as sa @@ -250,6 +251,7 @@ class Jobs( BaseUIController, ReportQueryBuilder ): Queries the DB for all jobs in given month, defaults to current month. """ message = '' + PageSpec = namedtuple('PageSpec', ['entries', 'offset', 'page', 'pages_found']) params = util.Params( kwd ) monitor_email = params.get( 'monitor_email', 'monitor@bx.psu.edu' ) @@ -258,6 +260,22 @@ class Jobs( BaseUIController, ReportQueryBuilder ): order = specs.order arrow = specs.arrow _order = specs.exc_order + + if "entries" in kwd: + entries = int(kwd.get( 'entries' )) + else: + entries = 4 + limit = entries * 3 + + if "offset" in kwd: + offset = int(kwd.get( 'offset' )) + else: + offset = 0 + + if "page" in kwd: + page = int(kwd.get( 'page' )) + else: + page = 1 # In case we don't know which is the monitor user we will query for all jobs monitor_user_id = get_monitor_id( trans, monitor_email ) @@ -278,7 +296,9 @@ class Jobs( BaseUIController, ReportQueryBuilder ): model.Job.table.c.create_time < end_date ), from_obj=[ model.Job.table ], group_by=[ 'date' ], - order_by=[ _order ] ) + order_by=[ _order ], + offset=offset, + limit=limit) jobs = [] for row in month_jobs.execute(): @@ -287,6 +307,9 @@ class Jobs( BaseUIController, ReportQueryBuilder ): row.total_jobs, row.date ) ) + + pages_found = ceil(len(jobs)/float(entries)) + page_specs = PageSpec(entries, offset, page, pages_found) return trans.fill_template( '/webapps/reports/jobs_specified_month_all.mako', order=order, arrow=arrow, @@ -294,6 +317,7 @@ class Jobs( BaseUIController, ReportQueryBuilder ): month_label=month_label, year_label=year_label, month=month, + page_specs=page_specs, jobs=jobs, is_user_jobs_only=monitor_user_id, message=message ) diff --git a/templates/sorting_base.mako b/templates/sorting_base.mako index c02597ad29a..47a13ab177b 100644 --- a/templates/sorting_base.mako +++ b/templates/sorting_base.mako @@ -3,8 +3,10 @@ if sort_id == test_id: if order == "asc": tool_order = "desc" - else: + elif order == "desc": tool_order = "asc" + else: + tool_order = "default" else: tool_order = "default" %> diff --git a/templates/webapps/reports/jobs_specified_month_all.mako b/templates/webapps/reports/jobs_specified_month_all.mako index 7cfd0b1eaf8..f5137b2c373 100644 --- a/templates/webapps/reports/jobs_specified_month_all.mako +++ b/templates/webapps/reports/jobs_specified_month_all.mako @@ -11,6 +11,36 @@ ${get_css()}
+ +
+
↤
+ %for x in range(-2,3): + <% + page = int(page_specs.page) + x + pages_found = int(page_specs.pages_found) + %> + %if page > 0: + %if x == 0: +
${page}
+ %elif page < page_specs.page + pages_found: + <% + entries = page_specs.entries + offset = page_specs.entries * (page - 1) + %> +
${get_sort_url(sort_id, "default", sort_id, 'jobs', 'specified_month_all', str(page), page=page, entries=entries, offset=offset)}
+ %endif + %endif + %endfor +
↦
+

Jobs for ${month_label} ${year_label}

Click job count to see the day's details
@@ -35,8 +65,15 @@ ${get_css()} %endif - <% ctr = 0 %> + <% + ctr = 0 + entries = 1 + %> %for job in jobs: + %if entries > page_specs.entries: + <%break%> + %endif + %if ctr % 2 == 1: %else: @@ -46,7 +83,10 @@ ${get_css()} - <% ctr += 1 %> + <% + ctr += 1 + entries += 1 + %> %endfor %endif
${month_label} ${job[1]}, ${year_label} ${job[2]}
From 4db40ff6b505dba663bbf381161d58374ce617dd Mon Sep 17 00:00:00 2001 From: Airistotal Date: Thu, 18 Jun 2015 13:43:16 -0500 Subject: [PATCH 2/8] Added pagination to jobs_specified_month_all --- .../webapps/reports/controllers/jobs.py | 6 +- templates/page_base.mako | 122 ++++++++++++++++++ .../reports/jobs_specified_month_all.mako | 45 ++----- 3 files changed, 138 insertions(+), 35 deletions(-) create mode 100644 templates/page_base.mako diff --git a/lib/galaxy/webapps/reports/controllers/jobs.py b/lib/galaxy/webapps/reports/controllers/jobs.py index 6cd17b807d7..66ad748ebaf 100644 --- a/lib/galaxy/webapps/reports/controllers/jobs.py +++ b/lib/galaxy/webapps/reports/controllers/jobs.py @@ -260,12 +260,12 @@ class Jobs( BaseUIController, ReportQueryBuilder ): order = specs.order arrow = specs.arrow _order = specs.exc_order - + if "entries" in kwd: entries = int(kwd.get( 'entries' )) else: entries = 4 - limit = entries * 3 + limit = entries * 4 if "offset" in kwd: offset = int(kwd.get( 'offset' )) @@ -308,7 +308,7 @@ class Jobs( BaseUIController, ReportQueryBuilder ): row.date ) ) - pages_found = ceil(len(jobs)/float(entries)) + pages_found = ceil(len(jobs) / float(entries)) page_specs = PageSpec(entries, offset, page, pages_found) return trans.fill_template( '/webapps/reports/jobs_specified_month_all.mako', order=order, diff --git a/templates/page_base.mako b/templates/page_base.mako new file mode 100644 index 00000000000..5097ee3cd56 --- /dev/null +++ b/templates/page_base.mako @@ -0,0 +1,122 @@ +<%def name="get_page_url( sort_id, order, *args, **kwargs )"> + ${kwargs.get("page")} + + +<%def name="get_pages( sort_id, order, page_specs, *args, **kwargs )"> + ## Creates the page buttons + ${get_page_script()} + ${get_page_css()} + +
+
↞
+ %for x in range(-2,3): + <% + page = int(page_specs.page) + x + pages_found = int(page_specs.pages_found) + %> + %if page > 0: + %if x == 0: +
${page}
+ %elif page < page_specs.page + pages_found: + <% + entries = page_specs.entries + offset = page_specs.entries * (page - 1) + %> + %if x == -2 and page > 1: +
...
+ %endif +
${get_page_url( sort_id, order, *args, page=page, offset=offset, entries=entries )}
+ %if x == 2 and pages_found == 4: +
...
+ %endif + %endif + %endif + %endfor +
↠
+


+ + +<%def name="get_page_css()"> + + + +<%def name="get_page_script()"> + + diff --git a/templates/webapps/reports/jobs_specified_month_all.mako b/templates/webapps/reports/jobs_specified_month_all.mako index f5137b2c373..f7cd82e097e 100644 --- a/templates/webapps/reports/jobs_specified_month_all.mako +++ b/templates/webapps/reports/jobs_specified_month_all.mako @@ -1,6 +1,7 @@ <%inherit file="/base.mako"/> <%namespace file="/message.mako" import="render_msg" /> <%namespace file="/sorting_base.mako" import="get_sort_url, get_css" /> +<%namespace file="/page_base.mako" import="get_pages" /> %if message: ${render_msg( message, 'done' )} @@ -11,43 +12,23 @@ ${get_css()}
- -
-
↤
- %for x in range(-2,3): - <% - page = int(page_specs.page) + x - pages_found = int(page_specs.pages_found) - %> - %if page > 0: - %if x == 0: -
${page}
- %elif page < page_specs.page + pages_found: - <% - entries = page_specs.entries - offset = page_specs.entries * (page - 1) - %> -
${get_sort_url(sort_id, "default", sort_id, 'jobs', 'specified_month_all', str(page), page=page, entries=entries, offset=offset)}
- %endif - %endif - %endfor -
↦
-
-

Jobs for ${month_label} ${year_label}

-
Click job count to see the day's details
+ + + + + +
+ ${get_pages( sort_id, order, page_specs, 'jobs', 'specified_month_all' )} + +

Jobs for ${month_label} ${year_label}

+
Click job count to see the day's details
+
%if len( jobs ) == 0: %else: + +
There are no jobs for ${month_label} ${year_label}
Day ${get_sort_url(sort_id, order, 'date', 'jobs', 'specified_month_all', 'Date')} From f6baadbefa742907e9e43f3e02b9ac44f0b51a1e Mon Sep 17 00:00:00 2001 From: Airistotal Date: Fri, 19 Jun 2015 15:56:51 -0500 Subject: [PATCH 3/8] Added the ability to choose the amount of rows desired --- .../webapps/reports/controllers/jobs.py | 11 +- templates/page_base.mako | 171 ++++++++++++++++-- .../reports/jobs_specified_month_all.mako | 13 ++ 3 files changed, 170 insertions(+), 25 deletions(-) diff --git a/lib/galaxy/webapps/reports/controllers/jobs.py b/lib/galaxy/webapps/reports/controllers/jobs.py index 66ad748ebaf..7f840fac263 100644 --- a/lib/galaxy/webapps/reports/controllers/jobs.py +++ b/lib/galaxy/webapps/reports/controllers/jobs.py @@ -264,7 +264,7 @@ class Jobs( BaseUIController, ReportQueryBuilder ): if "entries" in kwd: entries = int(kwd.get( 'entries' )) else: - entries = 4 + entries = 50 limit = entries * 4 if "offset" in kwd: @@ -638,15 +638,6 @@ class Jobs( BaseUIController, ReportQueryBuilder ): job=job, message=message ) - @web.expose - def test( self, trans, **kwd ): - message = '' - order = "asc" - - return trans.fill_template( '/webapps/reports/test.mako', - order=order, - message=message ) - # ---- Utility methods ------------------------------------------------------- diff --git a/templates/page_base.mako b/templates/page_base.mako index 5097ee3cd56..ea236f39de9 100644 --- a/templates/page_base.mako +++ b/templates/page_base.mako @@ -2,6 +2,11 @@ ${kwargs.get("page")} +<%! + def get_raw_url(sort_id, order, *args, **kwargs): + return h.url_for( controller=args[0], action=args[1], sort_id=sort_id, order=order, **kwargs ) +%> + <%def name="get_pages( sort_id, order, page_specs, *args, **kwargs )"> ## Creates the page buttons ${get_page_script()} @@ -37,6 +42,9 @@ <%def name="get_page_css()"> + <%doc> + Page Styling + + + <%doc> + Entry Styling + + <%def name="get_page_script()"> diff --git a/templates/webapps/reports/jobs_specified_month_all.mako b/templates/webapps/reports/jobs_specified_month_all.mako index f7cd82e097e..d6f1ee1e96d 100644 --- a/templates/webapps/reports/jobs_specified_month_all.mako +++ b/templates/webapps/reports/jobs_specified_month_all.mako @@ -21,6 +21,19 @@ ${get_css()}

Jobs for ${month_label} ${year_label}

Click job count to see the day's details
+
+ + + Max items: + + + +
+
From 465661bc2c01a3d955d795e64e4b8693244618f9 Mon Sep 17 00:00:00 2001 From: Airistotal Date: Fri, 19 Jun 2015 16:43:02 -0500 Subject: [PATCH 4/8] Small aesthetic changes and refactoring --- templates/page_base.mako | 31 ++++++++++++++----- .../reports/jobs_specified_month_all.mako | 22 ++++--------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/templates/page_base.mako b/templates/page_base.mako index ea236f39de9..76f4490ec79 100644 --- a/templates/page_base.mako +++ b/templates/page_base.mako @@ -1,3 +1,7 @@ +<%doc> + This file defines methods for displaying information about pagination + + <%def name="get_page_url( sort_id, order, *args, **kwargs )"> ${kwargs.get("page")} @@ -38,7 +42,23 @@ %endif %endfor
↠
-

+ + + +<%def name="get_entry_selector(controller, action, entries, sort_id, order)"> +
+
+ + + Max items: + + + + +
<%def name="get_page_css()"> @@ -90,7 +110,7 @@ } #formHeader > tbody > tr { - vertical-align: bottom; + vertical-align: middle; } @@ -98,16 +118,13 @@ Entry Styling