{% extends "base.html" %} {% block title %}Jobs - IceProd{% end %} {% block page_title %}Jobs{% end %} {% block body %} {% if (current_user) %} {% end %} {% for j in jobs %} {% if (current_user) %} {% end %} {% end %}
Job Index Status Status Changed
{{ jobs[j]['job_index'] }} {{ jobs[j]['status'] }} {{ jobs[j]['status_changed'] }}{% if jobs[j]['status'] in states.job_prev_statuses(states.JOB_STATUS_START) %} {% end %} {% if jobs[j]['status'] in states.job_prev_statuses('suspended') %} {% end %}
{% end %} {% block body_scripts %} {% if (current_user) %} {% module SecureScript(content=f""" var rest_api = '{ rest_api }'; const passkey = "{ passkey }"; const dataset_id = "{ list(jobs.values())[0]['dataset_id'] if jobs else '' }"; const job_ids_on_page = [{ ','.join('"' + jobs[j]['job_id'] + '"' for j in jobs) }]; """) %} {% module SecureScript(content=""" function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function service_worker(action, job_ids) { try { const url = '/actions/job_status'; const args = { dataset_id: dataset_id, action: action, job_ids: job_ids, }; const ret = await fetch_json('POST', url, args, passkey); if ('error' in ret) { message_alert('error - '+ret['error']); return false; } const id = ret['result']; while (true) { await sleep(1000); const url = '/actions/job_status/'+id; const ret = await fetch_json('GET', url, null, passkey); if (ret['status'] == 'error') { if ('error_message' in ret) { message_alert('error - '+ret['error_message']); } else { message_alert('error - '+action+' failed'); } return false; } else if (ret['status'] == 'complete') { message('complete'); break; } else if ('payload' in ret && 'progress' in ret['payload']) { message('progress - '+ret['payload']['progress']+'%') } } } catch(err) { message_alert('error - '+err); return false; } reload(); return true; } async function job_reset(job_ids) { return await service_worker('reset', job_ids) } async function job_hard_reset(job_ids) { return await service_worker('hard_reset', job_ids) } async function job_suspend(job_ids) { return await service_worker('suspend', job_ids) } """) %} {% end %} {% end %}