From bbc986be5425c6abdddb6eaab6dca1b5054c43e0 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Mon, 17 May 2021 10:16:40 -0400 Subject: Added pager to jobs list on instructions page as well. --- captain/web.f90 | 56 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 21 deletions(-) (limited to 'captain/web.f90') diff --git a/captain/web.f90 b/captain/web.f90 index c76e053..638e0c3 100644 --- a/captain/web.f90 +++ b/captain/web.f90 @@ -54,23 +54,20 @@ contains end subroutine build_request_object function html_link(link, label) result(res) + use request_utils, only: build_link implicit none character(*), intent(in)::link, label character(len=:), pointer::res - integer::nl - - nl = len_trim(link) + len_trim(label) + len('') - allocate(character(len=nl)::res) - res = ''//trim(label)//'' + res => build_link(link, label, .false.) end function html_link function generate_one_instuction_html(req) result(res) use captain_db use server_response - use request_utils, only: get_status_utf8, render_jobs_links + use request_utils, only: get_status_utf8, render_jobs_links, generate_simple_pager implicit none type(request)::req @@ -81,9 +78,9 @@ contains type(job), dimension(:), pointer::jobs integer, dimension(:), pointer::players character(len=PLAYER_NAME_LENGTH), dimension(:), pointer::all_players - integer::i, j, n_jobs, n_players, nsize + integer::i, j, n_jobs, n_players, nsize, job_start_index - character(len=:), pointer::job_link_text, one_link + character(len=:), pointer::job_link_text, one_link, pager character(1)::nl = new_line(' ') character(PLAYER_NAME_LENGTH)::player_name character(4)::player_status @@ -95,11 +92,24 @@ contains jobs => get_jobs_for_instruction(id_from_req) if(associated(jobs)) then + + if(associated(req%query_string)) then + read(req%query_string, *) job_start_index + else + job_start_index = 1 + end if + n_jobs = size(jobs) - job_link_text => render_jobs_links(jobs, gemini_mode=.false., link_prefix="../") + job_link_text => render_jobs_links(jobs, gemini_mode=.false., & + link_prefix="../", startindex=job_start_index, & + stopindex=min(job_start_index+4, n_jobs)) + else + + job_start_index = 0 n_jobs = 0 job_link_text => null() + end if players => get_instruction_players(id_from_req) @@ -155,8 +165,18 @@ contains if(n_jobs == 0) then res = trim(res)//nl//"None Yet" else + + pager => generate_simple_pager(job_start_index, job_start_index + 4, 5, n_jobs, req%page,.false.) + res = trim(res)//nl//job_link_text + + if(associated(pager)) then + res = trim(res)//nl//pager + deallocate(pager) + end if + deallocate(job_link_text) + end if all_players => get_player_names() @@ -479,7 +499,7 @@ contains function generate_jobs_html(req) result(res) use captain_db use server_response - use request_utils, only: render_jobs_links + use request_utils, only: render_jobs_links, generate_simple_pager use logging implicit none @@ -489,8 +509,7 @@ contains integer::n, nsize integer::i_start_jobs, ierr - character(len=:), pointer::linklist - character(10)::pager + character(len=:), pointer::linklist, pager n = get_jobs_count() if(n == 0) then @@ -522,16 +541,11 @@ contains res = trim(res)//new_line(' ')//trim(linklist) ! Pagers - res = trim(res)//new_line(' ')//"

" - if(i_start_jobs /= 1) then - write(pager, '(I8)') max(i_start_jobs - 15, 1) - res = trim(res)//'<< Newer |' - end if - if(i_start_jobs+14 < n) then - write(pager, '(I8)') i_start_jobs + 15 - res = trim(res)//' Older >>' + pager => generate_simple_pager(i_start_jobs, min(i_start_jobs+14, n), 15, n, req%page, .false.) + if(associated(pager)) then + res = trim(res)//new_line(' ')//pager + deallocate(pager) end if - res = trim(res)//"

" deallocate(linklist) -- cgit v1.2.3