From 3e58313bde5e3e572d84fe014d9902dfb04712c3 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Thu, 1 Apr 2021 16:49:20 -0400 Subject: Jobs are now inserted into the database when launched. Job listings work. --- captain/external.f90 | 85 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 7 deletions(-) (limited to 'captain/external.f90') diff --git a/captain/external.f90 b/captain/external.f90 index d572a7e..a86bd52 100644 --- a/captain/external.f90 +++ b/captain/external.f90 @@ -28,6 +28,10 @@ contains ! Sleeping 0x1f4a4 res = char(240)//char(159)//char(146)//char(164) + case(JOB_STATUS_PENDING) + ! Envelope 0x2709 + res = char(226)//char(156)//char(137)//" " + end select end function get_status_utf8 @@ -61,7 +65,7 @@ contains last = min(size(jobs), stopindex) end if - if(first < last .and. first < size(jobs)) then + if(first <= last .and. first <= size(jobs)) then nsize = (last-first+1)*(2*PLAYER_NAME_LENGTH + 64) allocate(character(len=nsize) :: res) res = " " @@ -71,7 +75,7 @@ contains call get_player_name(jobs(i)%player, player) write(int_text, '(I8)') jobs(i)%id - link = "=> jobs/"//trim(adjustl(int_text))//".gmi"// & + link = "=> jobs/"//trim(adjustl(int_text))//".gmi "// & trim(get_status_utf8(jobs(i)%status))//" Job "// & trim(adjustl(int_text))//" - "//trim(instruction) @@ -96,17 +100,17 @@ contains function generate_jobs_gemini(req) result(res) use captain_db use server_response + use logging implicit none type(request)::req character(len=:), pointer::res type(job), dimension(:), pointer::jobs - integer::n, i, nsize + integer::n, nsize integer::i_start_jobs, ierr character(len=:), pointer::linklist - character(16)::int_text, int_text2 - + character(64)::dbgstr n = get_jobs_count() if(n == 0) then @@ -134,13 +138,80 @@ contains res = "## Jobs " + write(dbgstr, '(I3,1X,I3)') i_start_jobs, min(i_start_jobs+14, n) + call write_log("Jobs between "//trim(dbgstr)) + linklist => render_jobs_links(jobs, i_start_jobs, min(i_start_jobs+14, n)) - res = res//trim(linklist) + res = trim(res)//trim(linklist) + call write_log(linklist) deallocate(linklist) end if end function generate_jobs_gemini + + function generate_one_job_gemini(req) result(res) + use captain_db + use server_response + implicit none + + type(request), intent(in)::req + character(len=:), pointer::res + + character(4)::status + integer::i, j, job_id + type(job)::one_job + + character(PLAYER_NAME_LENGTH)::player + character(1)::nl = new_line(' ') + + type(task), dimension(:), pointer::tasks + character(16)::task_text, job_text + + res => null() + + i = index(req%location, "/", back=.true.) + j = index(req%location, ".", back=.true.) + + job_text = req%location(i+1:j-1) + read(job_text, *) job_id + one_job = get_job(job_id) + + if(one_job%id >= 0) then + allocate(character(len=1024) :: res) + + status = get_status_utf8(one_job%status) + res = "## Job "//job_text//" - "//status + + call get_player_name(one_job%player, player) + res = trim(res)//nl//nl//"Running on "//trim(player)//nl//"Last update at: "//one_job%time + + res = trim(res)//nl//nl//"### Task Results" + + tasks => get_job_tasks(job_id) + if(associated(tasks)) then + do i = 1, size(tasks) + status = get_status_utf8(tasks(i)%status) + write(task_text, '(I8)') tasks(i)%number + + res = trim(res)//nl//"=> /results/"//trim(job_text)//"-"//trim(adjustl(task_text))//".txt "// & + trim(status)//"Task "//trim(adjustl(task_text)) + + end do + deallocate(tasks) + else + res = trim(res)//nl//nl//"None reported yet" + end if + + else + + allocate(character(len=64) :: res) + write(res, '(A20, 1X, I5)') "No record of:", job_id + + end if + + + end function generate_one_job_gemini function generate_players_gemini() result(res) use captain_db @@ -203,7 +274,7 @@ contains character(len=PLAYER_NAME_LENGTH), dimension(:), pointer::all_players integer::i, j, n_jobs, n_players, nsize - character(len=:), pointer::job_link_text, player_link_text + character(len=:), pointer::job_link_text character(1)::nl = new_line(' ') character(PLAYER_NAME_LENGTH)::player_name character(4)::player_status -- cgit v1.2.3