aboutsummaryrefslogtreecommitdiffstats
path: root/web/js/map-OpenLayers.js
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2018-06-12 17:46:47 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2018-07-03 15:55:52 +0100
commit1b7418e2aec2ce269fde49efcff8493e4e24ad7e (patch)
tree2761dc4196b1c5f306b4e498ee633a5e939f2d9b /web/js/map-OpenLayers.js
parent04e49afc9a7c10405464c62b0cfd6f6c55b286ac (diff)
Only display reports from last 6 months on around.
Add a checkbox to show older reports, plus if we get to the end of the new reports then instead of a Next button show a "show older" button that will reload the current page but with older reports also loaded. Wire it all up into the pushState code as well.
Diffstat (limited to 'web/js/map-OpenLayers.js')
-rw-r--r--web/js/map-OpenLayers.js29
1 files changed, 25 insertions, 4 deletions
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js
index 281940aca..3c9e3fb91 100644
--- a/web/js/map-OpenLayers.js
+++ b/web/js/map-OpenLayers.js
@@ -361,8 +361,14 @@ $.extend(fixmystreet.utils, {
function replace_query_parameter(qs, id, key) {
var value = $('#' + id).val();
+ if ( $('#' + id).prop('type') == 'checkbox' ) {
+ value = $('#' + id).prop('checked') ? '1' : '';
+ } else if (value) {
+ value = (typeof value === 'string') ? value : fixmystreet.utils.array_to_csv_line(value);
+ }
+
if (value) {
- qs[key] = (typeof value === 'string') ? value : fixmystreet.utils.array_to_csv_line(value);
+ qs[key] = value;
} else {
delete qs[key];
}
@@ -387,15 +393,17 @@ $.extend(fixmystreet.utils, {
}
var qs = fixmystreet.utils.parse_query_string();
+ var show_old_reports = '';
var page = $('.pagination:first').data('page');
if (page > 1) {
+ show_old_reports = replace_query_parameter(qs, 'show_old_reports', 'show_old_reports');
qs.p = page;
} else {
delete qs.p;
}
var new_url = update_url(qs);
history.pushState({
- page_change: { 'page': page }
+ page_change: { 'page': page, 'show_old_reports': show_old_reports }
}, null, new_url);
}
@@ -407,10 +415,11 @@ $.extend(fixmystreet.utils, {
var filter_categories = replace_query_parameter(qs, 'filter_categories', 'filter_category');
var filter_statuses = replace_query_parameter(qs, 'statuses', 'status');
var sort_key = replace_query_parameter(qs, 'sort', 'sort');
+ var show_old_reports = replace_query_parameter(qs, 'show_old_reports', 'show_old_reports');
delete qs.p;
var new_url = update_url(qs);
history.pushState({
- filter_change: { 'filter_categories': filter_categories, 'statuses': filter_statuses, 'sort': sort_key }
+ filter_change: { 'filter_categories': filter_categories, 'statuses': filter_statuses, 'sort': sort_key, 'show_old_reports': show_old_reports }
}, null, new_url);
}
@@ -640,11 +649,14 @@ $.extend(fixmystreet.utils, {
$("#filter_categories").on("change.filters", categories_or_status_changed);
$("#statuses").on("change.filters", categories_or_status_changed);
$("#sort").on("change.filters", categories_or_status_changed);
+ $("#show_old_reports").on("change.filters", categories_or_status_changed);
$('.js-pagination').on('change.filters', categories_or_status_changed);
$('.js-pagination').on('click', 'a', function(e) {
e.preventDefault();
var page = $('.pagination:first').data('page');
- if ($(this).hasClass('next')) {
+ if ($(this).hasClass('show_old')) {
+ $("#show_old_reports").prop('checked', true);
+ } else if ($(this).hasClass('next')) {
$('.pagination:first').data('page', page + 1);
} else {
$('.pagination:first').data('page', page - 1);
@@ -655,6 +667,7 @@ $.extend(fixmystreet.utils, {
$("#filter_categories").on("change.user", categories_or_status_changed_history);
$("#statuses").on("change.user", categories_or_status_changed_history);
$("#sort").on("change.user", categories_or_status_changed_history);
+ $("#show_old_reports").on("change.user", categories_or_status_changed_history);
$('.js-pagination').on('click', 'a', page_changed_history);
} else if (fixmystreet.page == 'new') {
drag.activate();
@@ -914,6 +927,9 @@ OpenLayers.Protocol.FixMyStreet = OpenLayers.Class(OpenLayers.Protocol.HTTP, {
options.params[key] = val.join ? fixmystreet.utils.array_to_csv_line(val) : val;
}
});
+ if ( $('#show_old_reports').is(':checked') ) {
+ options.params.show_old_reports = 1;
+ }
var page;
if (this.use_page) {
page = $('.pagination:first').data('page');
@@ -942,6 +958,11 @@ OpenLayers.Format.FixMyStreet = OpenLayers.Class(OpenLayers.Format.JSON, {
var reports_list;
if (typeof(obj.reports_list) != 'undefined' && (reports_list = document.getElementById('js-reports-list'))) {
reports_list.innerHTML = obj.reports_list;
+ if ( $('.item-list--reports').data('show-old-reports') ) {
+ $('#show_old_reports_wrapper').removeClass('hidden');
+ } else {
+ $('#show_old_reports_wrapper').addClass('hidden');
+ }
}
if (typeof(obj.pagination) != 'undefined') {
$('.js-pagination').html(obj.pagination);