@@ -, +, @@
---
circ/curbside_pickups.pl | 6 +-
.../prog/en/modules/circ/curbside_pickups.tt | 98 +++++++++++++------
2 files changed, 75 insertions(+), 29 deletions(-)
--- a/circ/curbside_pickups.pl
+++ a/circ/curbside_pickups.pl
@@ -30,7 +30,9 @@ use Koha::Patrons;
my $input = CGI->new;
my $op = $input->param('op') || 'list';
-my $tab = $input->param('tab'),
+my $tab = $input->param('tab');
+my $auto_refresh = $input->param('auto_refresh');
+my $refresh_delay = $input->param('refresh_delay');
my @messages;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
@@ -151,6 +153,8 @@ $template->param(
messages => \@messages,
op => $op,
tab => $tab,
+ auto_refresh => $auto_refresh,
+ refresh_delay => $refresh_delay,
policy => Koha::CurbsidePickupPolicies->find({ branchcode => $branchcode }),
curbside_pickups => Koha::CurbsidePickups->search(
{
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/curbside_pickups.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/curbside_pickups.tt
@@ -125,6 +125,24 @@
[% END %]
+
+
[% SET to_be_staged = curbside_pickups.filter_by_to_be_staged %]
[% SET staged_and_ready = curbside_pickups.filter_by_staged_and_ready %]
[% SET patron_outside = curbside_pickups.filter_by_patron_outside %]
@@ -174,12 +192,6 @@
[% ELSE %]
[% END %]
-
-
[% IF to_be_staged.count %]
@@ -235,13 +247,6 @@
[% ELSE %]
[% END %]
-
-
[% IF staged_and_ready.count %]
@@ -310,13 +315,6 @@
[% ELSE %]
[% END %]
-
-
[% IF patron_outside.count %]
@@ -385,13 +383,6 @@
[% ELSE %]
[% END %]
-
-
[% IF delivered_today.count %]
@@ -540,7 +531,6 @@
slots_per_day[day].push(slot);
});
-
$(document).ready(function() {
$('#schedule-pickup-tab').on('click', function() {
@@ -668,7 +658,59 @@
});
}
+ $("#pickup-tabs a[data-toggle='tab']").on("shown.bs.tab", function (e) {
+ $("#current-tab").val($(this).attr('href').substring(1)); // Remove #
+ });
+ $("#auto_refresh,#refresh_delay").on("change", function(){
+ set_interval_if_needed();
+ });
+
+ set_interval_if_needed();
+
});
+
+ let refresh_interval_id = 0;
+ let countdown_interval_id = 0;
+ function set_interval(refresh_delay_ms){
+ clear_intervals();
+ let next_refresh = new Date();
+ next_refresh.setSeconds(next_refresh.getSeconds() + refresh_delay_ms / 1000);
+
+ countdown_interval_id = setInterval(function() {
+ const now = new Date().getTime();
+ const seconds = Math.floor(( next_refresh - now + 1 ) / 1000);
+ if ( seconds > 0 ) {
+ $("#refresh_info").text(_("Refresh in %s seconds").format(seconds));
+ } else {
+ $("#refresh_info").text(""); // In case something is going wrong
+ }
+ }, 1000);
+
+ setInterval(function() {
+ $(".refresh-form:visible").submit();
+ }, refresh_delay_ms);
+ }
+ function clear_intervals(){
+ if (refresh_interval_id) {
+ clearInterval(refresh_interval_id);
+ refresh_interval_id = 0;
+ }
+ if (countdown_interval_id) {
+ clearInterval(countdown_interval_id);
+ countdown_interval_id = 0;
+ }
+ }
+
+ function set_interval_if_needed(){
+ const refresh_delay = $("#refresh_delay").val();
+ const auto_refresh = $("#auto_refresh").is(":checked");
+
+ if (auto_refresh && refresh_delay){
+ set_interval(refresh_delay * 1000);
+ } else {
+ clear_intervals();
+ }
+ }
[% END %]
--