@@ -, +, @@ --- 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 %] --